initializeAndValidate() is a no-op for extension sessions via joinSession()
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
- Funzionalità
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Tranquilla
- Stack tecnologico
- typescript
- Ambito
- api, developer-experience
Direzione di ricerca
Inizia dall’implementazione della classe base e dal commento in rpc.ts:9235, quindi segui session.rpc.tools.initializeAndValidate per le sessioni create tramite joinSession(). Riproduci il flusso di abilitazione di MCP, attendi mcp_server_status_changed e verifica che l’elenco degli strumenti attivi venga ricostruito durante lo stesso turno, anziché solo dopo tools_changed_notice.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Summary
session.rpc.tools.initializeAndValidate() is callable from extensions that join sessions via joinSession(), but it behaves as a no-op — returning {} instantly without rebuilding the LLM's tool list. This prevents extensions from refreshing the tool list mid-turn after dynamically enabling/disabling MCP servers.
Expected Behavior
After an extension calls rpc.mcp.enable({ serverName }) and the MCP server connects (confirmed via mcp_server_status_changed event), calling initializeAndValidate() should rebuild the LLM's active tool list so that newly available tools are usable in the same turn.
Actual Behavior
initializeAndValidate()returns{}in ~29ms (consistent with the base-class no-op documented inrpc.ts:9235: "Default base-class implementation is a no-op for sessions that don't support tool validation")- Tools only become available via
tools_changed_notice, which fires exclusively between turns - Extensions have no mechanism to trigger a mid-turn tool list rebuild
Diagnostic Evidence
Built a diagnostic tool (mcp_api_probe) inside an extension to test the full rpc.tools namespace:
session.rpc.tools exists: true
.initializeAndValidate: function ← callable but no-op
.getCurrentMetadata: undefined ← not available
.handlePendingToolCall: function
all keys: [handlePendingToolCall, initializeAndValidate]
Full enable+verify cycle (mail MCP):
[17:08:09.150Z] calling rpc.mcp.enable...
[17:08:11.261Z] rpc.mcp.enable resolved
status events received: 2 — both "connected"
tools_updated events received: 0
[17:08:16.274Z] calling tools.initializeAndValidate()...
[17:08:17.126Z] initializeAndValidate returned: {}
Result: tools NOT visible same-turn
Live test results across 3 MCP servers:
| MCP Server | Connected? | Tools Same-Turn? | Appeared Via |
|---|---|---|---|
| ✅ | ❌ | tools_changed_notice (next turn) | |
| workiq | ✅ | ❌ | tools_changed_notice (~90s) |
| s360-breeze | ✅ | ❌ | tools_changed_notice (~90s) |
Request
Make initializeAndValidate() functional for extension sessions via joinSession(), or provide an alternative API (e.g., session.rpc.tools.rebuild()) that extensions can call to force a mid-turn tool list rebuild after MCP enable/disable operations.
Use Case
Constellation — a Copilot CLI extension that manages MCP server profiles for token optimization (saves 16K-33K tokens/turn by only loading needed MCPs). Everything works except tools require a wasted turn after each load.
Related: Feature request also filed on github/copilot-cli.
Environment
- Copilot CLI v1.0.56-1
@github/copilot-sdk/extensionviajoinSession()- OS: Windows 11
- Lingua principale
- TypeScript
- Stelle
- 10.5k
- Fork
- 1.5k
- Merge medio
- 1g 7h
- PR unite (30g)
- 98
Preparare l'ambiente
Avvia il container di sviluppo del progetto nel browser, con il tuo account GitHub.
- Nessun Dockerfile né 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 github/copilot-sdk
-
Clarify SDK architecture and in-process runtime transportForse già presa @KalebCole l’ha presa 2 giorni fa. Apertadocumentation
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 92/100
github/copilot-sdk#2804 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Python ModelLimits drops max_output_tokens from model metadataForse già presa @HDMowri l’ha presa 4 giorni fa. Apertabug
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
github/copilot-sdk#2798 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
github/copilot-sdk#2793 ·
I maintainer di solito rispondono entro 1 giorno
-
agentic-workflows
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
github/copilot-sdk#2782 ·
I maintainer di solito rispondono entro 1 giorno
-
Rust: subagent lifecycle hooks are logged as unknownForse già presa @hackberry-lab l’ha presa 6 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
github/copilot-sdk#2781 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di github/copilot-sdk
Issue simili
-
Add: CanalPlusSport8SK.skApertacheck:passed streams:add
Difficoltà 2/5 1-3 ore Idoneità per principianti 66/100
I maintainer di solito rispondono entro 1 giorno
-
[Bug] The shared instance selector's placeholder and no-match text ignore the display languageForse già presa Una pull request collegata a questa issue è aperta o già unita. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 90/100
apache/rocketmq-dashboard#5561 ·
I maintainer di solito rispondono entro 3 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
CopilotKit/OpenDots#69 ·
I maintainer di solito rispondono entro 1 giorno
-
sendDefaultPii is reported as deprecated on ReactNativeOptions although dataCollection is hiddenApertaBug React-Native Waiting for: Product Owner
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
getsentry/sentry-react-native#6830 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
OSCI'26
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
GauravKarakoti/SecureFlow#1215 ·
I maintainer di solito rispondono entro 1 giorno