Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

F-027 A6 — worker MCP client with the run token (rest of #406)

Aperta
#484 0 commenti 0 reazioni 1 assegnatario Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

@Zamojski5 ci sta già lavorando.

Dal 11/10/2026.

Valutazione

Questa issue non è ancora stata valutata.

Descrizione

Rest of #406 (slice A6 of F-027, founder direction 2026-10-09). Carries every part of #406 that the first pull request of #406 does not deliver. #406 stays open until this issue and that pull request are both accepted.

Depends on. A2 (the run token, inside #280), which depends on A1 (#457). Nothing here starts before the run token is on main.

Remaining scope (unchanged from #406)

  • The worker as an MCP client of /mcp with the run token. It implements core's PersonalToolHost / PersonalToolSession seam (app/packages/core/src/personal-runs/ports.ts): the tool list is exactly the run's switch-derived list (A2), call goes to /mcp with the run token so S6 enforcement, result caps, place checks, the mode and the change log live in one place, a refused call is an error result, close ends the token. The worker composition passes tools to createPersonalRunProcessor and the server composition passes toolTurns to personalRunUseCases; until both are composed every run stays one request.
  • Files. app/apps/worker/src/personal-runs/, app/apps/server/src/personal-runs/, app/packages/core/src/personal-runs/processor.ts and ports.ts as needed.
  • Migration. None expected; reserve on #153 if run accounting needs a column (see the two items below).

Remaining criteria (text unchanged)

Delivered in part by the first pull request of #406 (fake provider and fake tool session; the real /mcp route is not called there): AST-8.1, AST-8.2, AST-8.3. Still owed here: the same three through the real /mcp route and the run token, plus all of AST-3.2, the server part of AST-4.2 and AST-9.1.

  • AST-3.2 A run on server and a run on runtime with the same switches list
    the same tools and get the same refusals (app test with a fake provider and a fake
    CLI, both calling /mcp). Conversation-Off cases submit an explicit owner request
    and bounded selected text, with distinct canaries in unselected initiating-thread
    history, another conversation and another area/project. Assert the supplied data
    is present but all canaries are absent from provider input and CLI results;
    native/direct projections, tool calls and aggregate search cannot bypass S6.
    Own-agent unit creation uses the same verified run adapter and refusals in both
    engines; ordinary external/native/local callers retain the root/child fence,
    cannot select this adapter by input/label and cannot acquire run authority.
    Catalog/schema fixtures must prove both engines receive the same run-private
    projection and validated input actually reaches the adapter. Ordinary external
    schemas/descriptions still require their bootstrap runtime/grant; extra purpose/
    actor fields, fake authority IDs and cross-purpose cached descriptors cannot
    select or fall back into the private path. Owner Apply uses the saved intent,
    never an expired run token or the model's current tool input.
  • AST-4.2 With Read and edit the Wiki off, a run lists no Wiki tool, a fake
    CLI calling flux_get_doc gets the S6 refusal, a server request contains no
    Wiki text (asserted on the fake provider's input), and untyped search is refused.
  • AST-8.1 Each provider adapter passes a recorded-fixture test of one tool call
    and its result in that provider's wire format (no real account or key).
  • AST-8.2 A fake provider that keeps calling tools stops at the turn cap and at the
    money reservation, with committed changes kept and the cost never above the
    reservation (app test).
  • AST-8.3 A model marked without tool support gets one request with no tools and
    cannot change anything (app test).
  • AST-9.1 A seeded DM, private sketch and other-project canary never reach a fake
    provider's input or a fake CLI's MCP results, for interactive, scheduled and
    reaction runs (app test).

AST-3.2 parity also covers, per the A6 slice text: Conversation-Off input/history/native projection and held-delivery canaries, A3/A4's identical handoff authority and refusals, the private schema/catalog and the versioned owner-Apply saved-intent mapping.

Open items the first pull request names and leaves here

  • The owner's mark for a model without tool calling, persisted, and the account row's copy "This model can answer but can't make changes" (AST-8). The first part only reads PersonalConnection.toolCalling and a dated table of models Flux knows cannot call tools; no column exists yet.
  • "Limit reached". A run that hits its turn cap, its money reservation, one request's input bound or the clock ends cap_reached today; the web copy of that status still says "today's cap". The plain words and the list of kept changes belong to the run's message (A4); a distinct status needs a migration.
  • OpenAI models that need the Responses API for tool calling (OpenAI's function-calling guide, read 2026-10-11: GPT-6 Astra, GPT-6.1 Sol). Flux speaks Chat Completions to OpenAI, so they are marked without tool calling today; AST-8 allows "OpenAI Responses or Chat tools".
  • Gemini thought signatures. The field name on a tool call of Gemini's OpenAI-compatible endpoint was not confirmed from Google's pages on 2026-10-11; the adapter echoes unknown fields of a tool call unchanged.
  • Consent disclosure. maxRunMicros in the status disclosure still shows one request; with turns it should show the run's reservation.

Rules: Docker tests with fakes/mocks only (no real vendor account, key or spend); UX reviewed against F-027's journeys by an independent evaluator in the running app.

Lingua principale
TypeScript
Stelle
3
Fork
0
Merge medio
15h 9m
PR unite (30g)
244

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di ColdPhase/flux

Tutte le issue di ColdPhase/flux

Issue simili

Altre issue su TypeScript

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.