@openeryc/pi-coding-agent 0.75.53 → 0.75.55

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/dist/cli.d.ts.map +1 -1
  3. package/dist/cli.js +4 -0
  4. package/dist/cli.js.map +1 -1
  5. package/dist/core/agent-session.d.ts +4 -2
  6. package/dist/core/agent-session.d.ts.map +1 -1
  7. package/dist/core/agent-session.js +30 -30
  8. package/dist/core/agent-session.js.map +1 -1
  9. package/dist/core/mcp/client.d.ts +16 -7
  10. package/dist/core/mcp/client.d.ts.map +1 -1
  11. package/dist/core/mcp/client.js +135 -107
  12. package/dist/core/mcp/client.js.map +1 -1
  13. package/dist/core/mcp/manager.d.ts +12 -1
  14. package/dist/core/mcp/manager.d.ts.map +1 -1
  15. package/dist/core/mcp/manager.js +88 -34
  16. package/dist/core/mcp/manager.js.map +1 -1
  17. package/dist/core/mcp/types.d.ts +0 -13
  18. package/dist/core/mcp/types.d.ts.map +1 -1
  19. package/dist/core/mcp/types.js.map +1 -1
  20. package/dist/core/package-manager.d.ts.map +1 -1
  21. package/dist/core/package-manager.js +3 -1
  22. package/dist/core/package-manager.js.map +1 -1
  23. package/dist/core/session-manager.d.ts.map +1 -1
  24. package/dist/core/session-manager.js +1 -1
  25. package/dist/core/session-manager.js.map +1 -1
  26. package/dist/modes/interactive/interactive-mode.d.ts +18 -0
  27. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  28. package/dist/modes/interactive/interactive-mode.js +360 -427
  29. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  30. package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
  31. package/dist/modes/rpc/rpc-client.js +5 -1
  32. package/dist/modes/rpc/rpc-client.js.map +1 -1
  33. package/dist/utils/sleep.d.ts.map +1 -1
  34. package/dist/utils/sleep.js +7 -3
  35. package/dist/utils/sleep.js.map +1 -1
  36. package/dist/utils/tools-manager.d.ts.map +1 -1
  37. package/dist/utils/tools-manager.js.map +1 -1
  38. package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
  39. package/examples/extensions/custom-provider-anthropic/package.json +1 -1
  40. package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  41. package/examples/extensions/sandbox/package-lock.json +2 -2
  42. package/examples/extensions/sandbox/package.json +1 -1
  43. package/examples/extensions/with-deps/package-lock.json +2 -2
  44. package/examples/extensions/with-deps/package.json +1 -1
  45. package/npm-shrinkwrap.json +12 -12
  46. package/package.json +4 -4
@@ -659,32 +659,14 @@ export class AgentSession {
659
659
  const disabledSkills = new Set(this.settingsManager.getDisabledSkills());
660
660
  const activeSkills = loadedSkills.filter((s) => !disabledSkills.has(s.name) && !s.disableModelInvocation);
661
661
  const loadedContextFiles = this._resourceLoader.getAgentsFiles().agentsFiles;
662
- // Collect MCP tools grouped by server name
663
- // Uses the label field (mcp.<server>.<tool>) for reliable server name extraction
664
- const mcpTools = [];
665
- const mcpServerMap = new Map();
666
- for (const name of validToolNames) {
667
- if (!name.startsWith("mcp_"))
668
- continue;
669
- const def = this._toolDefinitions.get(name);
670
- if (!def)
671
- continue;
672
- // Extract server name from label (mcp.<server>.<tool>)
673
- const label = def.definition.label ?? "";
674
- const labelParts = label.split(".");
675
- const serverName = labelParts.length >= 3 ? labelParts.slice(1, -1).join(".") : label;
676
- const desc = def.definition.description || `Tool from MCP server "${serverName}"`;
677
- const existing = mcpServerMap.get(serverName);
678
- if (existing) {
679
- existing.push({ name, description: desc });
680
- }
681
- else {
682
- mcpServerMap.set(serverName, [{ name, description: desc }]);
683
- }
684
- }
685
- for (const [serverName, tools] of mcpServerMap) {
686
- mcpTools.push({ serverName, tools });
687
- }
662
+ // Collect MCP tool descriptions grouped by server
663
+ const mcpToolNames = new Set(validToolNames.filter((n) => n.startsWith("mcp_")));
664
+ const mcpTools = (this._mcpManager?.getMcpToolDescriptions() ?? [])
665
+ .map((server) => ({
666
+ ...server,
667
+ tools: server.tools.filter((t) => mcpToolNames.has(t.name)),
668
+ }))
669
+ .filter((server) => server.tools.length > 0);
688
670
  this._baseSystemPromptOptions = {
689
671
  cwd: this._cwd,
690
672
  skills: activeSkills,
@@ -1701,13 +1683,15 @@ export class AgentSession {
1701
1683
  this._mcpManager = null;
1702
1684
  }
1703
1685
  this._mcpManager = new MCPManager();
1686
+ // Suppress per-server refresh during bulk startup; refresh once after
1687
+ let batchInit = true;
1704
1688
  this._mcpManager.onStatusChange = (_serverName, status) => {
1705
- if (status === "connected") {
1706
- // A server reconnected — refresh the tool registry
1689
+ if (!batchInit && status === "connected") {
1707
1690
  this._refreshMcpTools();
1708
1691
  }
1709
1692
  };
1710
1693
  await this._mcpManager.start(mcpServers);
1694
+ batchInit = false;
1711
1695
  this._refreshMcpTools();
1712
1696
  }
1713
1697
  _refreshMcpTools() {
@@ -1719,8 +1703,24 @@ export class AgentSession {
1719
1703
  this._refreshToolRegistry();
1720
1704
  }
1721
1705
  }
1722
- /** Reload MCP servers after config changes (e.g. toggle enabled). */
1723
- async reloadMcp() {
1706
+ /** Reload MCP servers after config changes (e.g. toggle enabled).
1707
+ * If changedServer is provided, only that server is started/stopped
1708
+ * instead of restarting all servers. */
1709
+ async reloadMcp(changedServer) {
1710
+ if (changedServer && this._mcpManager) {
1711
+ const configs = this.settingsManager.getMcpServers();
1712
+ const config = configs?.[changedServer];
1713
+ if (!config || config.enabled === false) {
1714
+ // Server was disabled — stop it
1715
+ await this._mcpManager.stopServer(changedServer);
1716
+ }
1717
+ else {
1718
+ // Server was enabled — start it
1719
+ await this._mcpManager.startServer(changedServer, config);
1720
+ }
1721
+ this._refreshMcpTools();
1722
+ return;
1723
+ }
1724
1724
  await this._initMcp();
1725
1725
  }
1726
1726
  /** Get MCP connection statuses (for UI display) */