F-027 A6 — worker MCP client with the run token (rest of #406)
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
/mcpwith the run token. It implements core'sPersonalToolHost/PersonalToolSessionseam (app/packages/core/src/personal-runs/ports.ts): the tool list is exactly the run's switch-derived list (A2),callgoes to/mcpwith 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,closeends the token. The worker composition passestoolstocreatePersonalRunProcessorand the server composition passestoolTurnstopersonalRunUseCases; 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.tsandports.tsas 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
serverand a run onruntimewith 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 callingflux_get_docgets the S6 refusal, aserverrequest 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.toolCallingand 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_reachedtoday; 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.
maxRunMicrosin 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
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di ColdPhase/flux
-
good first issue
Difficoltà 2/5 1-3 ore Idoneità per principianti 86/100
I maintainer di solito rispondono entro 1 giorno
-
good first issue
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
I maintainer di solito rispondono entro 1 giorno
-
good first issue
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
I maintainer di solito rispondono entro 1 giorno
-
good first issue
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
I maintainer di solito rispondono entro 1 giorno
-
Live platform rows: Firefox Join fails at ICE on native Linux Docker (child of #63 AC-3)Forse già presa @Zamojski5 l’ha presa oggi. Aperta
ColdPhase/flux#496 · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di ColdPhase/flux
Issue simili
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 85/100
-
area:cowork area:desktop documentation enhancement platform:macos
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
anthropics/claude-code#101720 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 77/100
apache/rocketmq-dashboard#6610 ·
I maintainer di solito rispondono entro 3 giorni
-
Add: MS NOWApertacheck:passed streams:add
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
I maintainer di solito rispondono entro 1 giorno
-
Global update drops overrideAccess, so Local API updateGlobal fails filterOptions validation (3.90 regression)Forse già presa @PINYOPATTANAWASANPORN l’ha presa oggi. Apertaarea: core Bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
payloadcms/payload#18674 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno