executeTool rejects top-level intent that its sibling callMcpTool accepts
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 48/100
- Tipo di issue
- Bug
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Attiva
- Stack tecnologico
- typescript
- Ambito
- backend-api-design, tooling
Direzione di ricerca
Read packages/junior/src/chat/tool-support/catalog-tool-call.ts and compare the input contracts in packages/junior/src/chat/tools/execute-tool.ts and chat/tools/skill/call-mcp-tool.ts. Then locate the existing primary test for catalog tool calls and check how it covers top-level intent and parameters outside arguments. Done means the dispatcher envelope is documented consistently or the difference is explained, the test covers the chosen behavior, and scheduling eval runs show no rejected executeTool shapes.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Problem
The model often sends executeTool calls in a shape that the runtime rejects. Each rejection wastes one tool call. In the recurring-slot scheduling eval (#2413), that matters, because the case has a 60s idle limit and a tool-call budget.
Two shapes show up:
- A top-level
intentkey next totool_nameandarguments. - Catalog tool parameters at the top level instead of under
arguments.
Both are rejected by resolveCatalogToolCall() in packages/junior/src/chat/tool-support/catalog-tool-call.ts with executeTool arguments must be nested under arguments, not top-level fields: ....
Evidence
- In about 98 recent live behavioral runs of the Google scheduling cases, 22
executeToolcalls were rejected for their argument shape. The count is from an agent that read the eval transcripts on evals.sentry.dev. It is not re-counted here. - One example: run
e3899820, recurring-slot case. The firstgoogle_findMeetingTimescall failed because the model putintentinside theexecuteToolinput.
Likely cause (inference, not confirmed)
The two dispatcher tools have different input contracts:
callMcpTool(chat/tools/skill/call-mcp-tool.ts) accepts a top-levelintent. Its extra-key check allowstool_name,argumentsandintent.searchMcpToolsalso takes a top-levelintent.executeTool(chat/tools/execute-tool.ts) is.strict()and allows onlytool_nameandarguments.
The model sees both dispatchers in the same turn. It is plausible that it carries intent over from callMcpTool to executeTool. This issue does not prove that; a check of which calls carried intent versus nested parameters would.
Options
- Make the two dispatchers take the same envelope. Either
executeToolaccepts an optionalintent(and passes it where it is useful, such as auth prompts), or neither does. - Keep
executeToolstrict, but make the rejection cheaper: the error could name the corrected call shape.
Do not change eval messages, checks or timeouts to hide this. Fix it in the tool contract.
Done when
- The two dispatchers have one documented argument envelope, or the difference is deliberate and explained beside the code.
- The existing primary test for catalog tool calls covers the chosen behavior.
- A live behavioral run of the scheduling cases shows no rejected
executeToolshapes.
Refs #2413.
via David Cramer.
--
- Lingua principale
- TypeScript
- Stelle
- 385
- Fork
- 42
- Merge medio
- 9h 32m
- PR unite (30g)
- 350
Preparare l'ambiente
- Include un Dockerfile o un file Docker Compose
- Nessun 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 getsentry/junior
-
documentation
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 64/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
getsentry/junior#335 · 1 reazione ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di getsentry/junior
Issue simili
-
docker infra P1 security size:S
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
josephfung/curia#2408 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
ehmpathy/rhachet-roles-ehmpathy#1231 ·
I maintainer di solito rispondono entro 1 giorno
-
enhancement good first issue help wanted
Difficoltà 2/5 Mezza giornata Idoneità per principianti 70/100
danielw-sudo/agentuto#32 ·
I maintainer di solito rispondono entro 1 giorno
-
type:docs
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
nightgauge/nightgauge#2836 ·
I maintainer di solito rispondono entro 1 giorno