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

initializeAndValidate() is a no-op for extension sessions via joinSession()

Aperta
#1,496 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

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

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

enhancement

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 in rpc.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
mail ✅ ❌ 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/extension via joinSession()
  • OS: Windows 11
Lingua principale
TypeScript
Stelle
10.5k
Fork
1.5k
Merge medio
1g 7h
PR unite (30g)
98

Preparare l'ambiente

Apri in Codespaces

Avvia il container di sviluppo del progetto nel browser, con il tuo account GitHub.

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 github/copilot-sdk

Tutte le issue di github/copilot-sdk

Issue simili

Altre issue su TypeScript

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.