@pi-harness/pi-harness 0.1.14 → 0.1.16
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.
- package/README.md +8 -4
- package/apps/web/dist/assets/{index-C98SJjJd.js → index-DXznRinu.js} +1 -1
- package/apps/web/dist/index.html +1 -1
- package/apps/web/package.json +6 -6
- package/apps/web/server-dist/bin.js +7 -1
- package/apps/web/server-dist/bin.js.map +1 -1
- package/apps/web/src/server/bin.ts +9 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/agent-teams.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/anchored-standard.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/annotation.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/archify.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/at-file.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/auto-mode.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/better-sidebar.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/browser-fetch.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/browser-session.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/canvas-draw.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/change-verifier.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/cleaner.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/cli-notifier.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/code2skill.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/colleague-skill.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/context-doctor.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/context.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/cost-meter.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/dependency-checker.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/docker-sandbox.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/fail-logger.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/genui.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/git-time-capsule.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/graph-memory.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/history-compressor.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/hol-guard.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/i18n-pair.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/image-compressor.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/llm-verifier.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/mcp-client.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/mcp-panel.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/memory.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/mirage-bridge.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/mock-server.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/modlens.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/module-search.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/obsidian-sync.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/openpets.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/plan-execute.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/plugin-check.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/plugin-dev.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/plugin-finder.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/plugin-radar.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/plugin-stars.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/prompt-guard.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/prompt-library.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/readme-gen.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/recall-unread.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/reverse-skill.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/reviewer-bot.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/runtime-doctor.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/secure-audit.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/session-bookmarks.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/session-bridge.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/session-compare.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/session-export.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/session-insights.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/session-search.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/skill-catalog.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/skill-guard.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/sql-lens.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/synapse.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/tab-manager.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/taskboard.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/telemetry-blocker.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/test-harness.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/theme-studio.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/token-guard.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/turn-rewind.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/undo-savepoint.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/vision-toolkit.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/web-research.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/workspace-navigator.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/workspace-search.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/yaml-validator.json +1 -1
- package/node_modules/@pi-harness/api-gateway/package.json +1 -1
- package/node_modules/@pi-harness/cli/dist/bin.js +2 -0
- package/node_modules/@pi-harness/cli/dist/bin.js.map +1 -1
- package/node_modules/@pi-harness/cli/dist/main.d.ts +1 -0
- package/node_modules/@pi-harness/cli/dist/main.d.ts.map +1 -1
- package/node_modules/@pi-harness/cli/dist/main.js +9 -0
- package/node_modules/@pi-harness/cli/dist/main.js.map +1 -1
- package/node_modules/@pi-harness/cli/package.json +1 -1
- package/node_modules/@pi-harness/host-webserver/package.json +1 -1
- package/node_modules/@pi-harness/web-app/package.json +1 -1
- package/package.json +10 -8
- package/packages/api-gateway/dist/marketplace-entries/official/agent-teams.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/anchored-standard.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/annotation.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/archify.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/at-file.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/auto-mode.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/better-sidebar.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/browser-fetch.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/browser-session.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/canvas-draw.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/change-verifier.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/cleaner.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/cli-notifier.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/code2skill.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/colleague-skill.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/context-doctor.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/context.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/cost-meter.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/dependency-checker.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/docker-sandbox.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/fail-logger.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/genui.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/git-time-capsule.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/graph-memory.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/history-compressor.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/hol-guard.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/i18n-pair.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/image-compressor.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/llm-verifier.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/mcp-client.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/mcp-panel.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/memory.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/mirage-bridge.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/mock-server.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/modlens.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/module-search.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/obsidian-sync.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/openpets.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/plan-execute.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/plugin-check.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/plugin-dev.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/plugin-finder.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/plugin-radar.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/plugin-stars.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/prompt-guard.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/prompt-library.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/readme-gen.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/recall-unread.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/reverse-skill.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/reviewer-bot.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/runtime-doctor.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/secure-audit.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/session-bookmarks.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/session-bridge.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/session-compare.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/session-export.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/session-insights.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/session-search.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/skill-catalog.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/skill-guard.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/sql-lens.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/synapse.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/tab-manager.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/taskboard.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/telemetry-blocker.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/test-harness.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/theme-studio.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/token-guard.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/turn-rewind.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/undo-savepoint.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/vision-toolkit.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/web-research.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/workspace-navigator.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/workspace-search.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/yaml-validator.json +1 -1
- package/packages/api-gateway/package.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/agent-teams.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/anchored-standard.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/annotation.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/archify.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/at-file.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/auto-mode.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/better-sidebar.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/browser-fetch.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/browser-session.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/canvas-draw.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/change-verifier.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/cleaner.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/cli-notifier.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/code2skill.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/colleague-skill.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/context-doctor.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/context.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/cost-meter.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/dependency-checker.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/docker-sandbox.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/fail-logger.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/genui.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/git-time-capsule.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/graph-memory.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/history-compressor.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/hol-guard.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/i18n-pair.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/image-compressor.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/llm-verifier.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/mcp-client.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/mcp-panel.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/memory.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/mirage-bridge.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/mock-server.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/modlens.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/module-search.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/obsidian-sync.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/openpets.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/plan-execute.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/plugin-check.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/plugin-dev.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/plugin-finder.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/plugin-radar.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/plugin-stars.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/prompt-guard.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/prompt-library.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/readme-gen.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/recall-unread.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/reverse-skill.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/reviewer-bot.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/runtime-doctor.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/secure-audit.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/session-bookmarks.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/session-bridge.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/session-compare.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/session-export.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/session-insights.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/session-search.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/skill-catalog.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/skill-guard.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/sql-lens.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/synapse.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/tab-manager.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/taskboard.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/telemetry-blocker.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/test-harness.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/theme-studio.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/token-guard.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/turn-rewind.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/undo-savepoint.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/vision-toolkit.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/web-research.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/workspace-navigator.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/workspace-search.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/yaml-validator.json +1 -1
- package/packages/api-gateway/test/release-package.test.ts +5 -11
- package/packages/api-gateway/test/release-version.test.ts +2 -2
- package/packages/bundle-web-app/package.json +1 -1
- package/packages/cli/dist/bin.js +2 -0
- package/packages/cli/dist/bin.js.map +1 -1
- package/packages/cli/dist/main.d.ts +1 -0
- package/packages/cli/dist/main.d.ts.map +1 -1
- package/packages/cli/dist/main.js +9 -0
- package/packages/cli/dist/main.js.map +1 -1
- package/packages/cli/package.json +1 -1
- package/packages/cli/src/bin.ts +2 -0
- package/packages/cli/src/main.ts +9 -0
- package/packages/cli/test/cli.test.ts +10 -0
- package/packages/host-webserver/package.json +1 -1
- package/node_modules/@pi-harness/core/LICENSE +0 -9
- package/node_modules/@pi-harness/core/dist/atomic-write.d.ts +0 -8
- package/node_modules/@pi-harness/core/dist/atomic-write.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/atomic-write.js +0 -40
- package/node_modules/@pi-harness/core/dist/atomic-write.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/boot.d.ts +0 -13
- package/node_modules/@pi-harness/core/dist/boot.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/boot.js +0 -257
- package/node_modules/@pi-harness/core/dist/boot.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/bounded-file.d.ts +0 -7
- package/node_modules/@pi-harness/core/dist/bounded-file.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/bounded-file.js +0 -50
- package/node_modules/@pi-harness/core/dist/bounded-file.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/config.d.ts +0 -4
- package/node_modules/@pi-harness/core/dist/config.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/config.js +0 -29
- package/node_modules/@pi-harness/core/dist/config.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/context.d.ts +0 -3
- package/node_modules/@pi-harness/core/dist/context.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/context.js +0 -2
- package/node_modules/@pi-harness/core/dist/context.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/cordis-timer.d.ts +0 -15
- package/node_modules/@pi-harness/core/dist/cordis-timer.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/cordis-timer.js +0 -99
- package/node_modules/@pi-harness/core/dist/cordis-timer.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/http.d.ts +0 -8
- package/node_modules/@pi-harness/core/dist/http.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/http.js +0 -27
- package/node_modules/@pi-harness/core/dist/http.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/index.d.ts +0 -9
- package/node_modules/@pi-harness/core/dist/index.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/index.js +0 -8
- package/node_modules/@pi-harness/core/dist/index.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/agent-teams.d.ts +0 -21
- package/node_modules/@pi-harness/core/dist/plugins/agent-teams.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/agent-teams.js +0 -1179
- package/node_modules/@pi-harness/core/dist/plugins/agent-teams.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/anchored-standard.d.ts +0 -15
- package/node_modules/@pi-harness/core/dist/plugins/anchored-standard.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/anchored-standard.js +0 -112
- package/node_modules/@pi-harness/core/dist/plugins/anchored-standard.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/annotation.d.ts +0 -19
- package/node_modules/@pi-harness/core/dist/plugins/annotation.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/annotation.js +0 -112
- package/node_modules/@pi-harness/core/dist/plugins/annotation.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/archify.d.ts +0 -24
- package/node_modules/@pi-harness/core/dist/plugins/archify.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/archify.js +0 -145
- package/node_modules/@pi-harness/core/dist/plugins/archify.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/at-file.d.ts +0 -12
- package/node_modules/@pi-harness/core/dist/plugins/at-file.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/at-file.js +0 -143
- package/node_modules/@pi-harness/core/dist/plugins/at-file.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/auto-mode.d.ts +0 -15
- package/node_modules/@pi-harness/core/dist/plugins/auto-mode.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/auto-mode.js +0 -183
- package/node_modules/@pi-harness/core/dist/plugins/auto-mode.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/better-sidebar.d.ts +0 -38
- package/node_modules/@pi-harness/core/dist/plugins/better-sidebar.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/better-sidebar.js +0 -99
- package/node_modules/@pi-harness/core/dist/plugins/better-sidebar.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/browser-fetch.d.ts +0 -15
- package/node_modules/@pi-harness/core/dist/plugins/browser-fetch.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/browser-fetch.js +0 -359
- package/node_modules/@pi-harness/core/dist/plugins/browser-fetch.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/browser-session.d.ts +0 -14
- package/node_modules/@pi-harness/core/dist/plugins/browser-session.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/browser-session.js +0 -604
- package/node_modules/@pi-harness/core/dist/plugins/browser-session.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/canvas-draw.d.ts +0 -9
- package/node_modules/@pi-harness/core/dist/plugins/canvas-draw.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/canvas-draw.js +0 -140
- package/node_modules/@pi-harness/core/dist/plugins/canvas-draw.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/change-verifier.d.ts +0 -9
- package/node_modules/@pi-harness/core/dist/plugins/change-verifier.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/change-verifier.js +0 -88
- package/node_modules/@pi-harness/core/dist/plugins/change-verifier.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/cleaner.d.ts +0 -12
- package/node_modules/@pi-harness/core/dist/plugins/cleaner.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/cleaner.js +0 -353
- package/node_modules/@pi-harness/core/dist/plugins/cleaner.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/cli-notifier.d.ts +0 -16
- package/node_modules/@pi-harness/core/dist/plugins/cli-notifier.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/cli-notifier.js +0 -167
- package/node_modules/@pi-harness/core/dist/plugins/cli-notifier.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/code2skill.d.ts +0 -9
- package/node_modules/@pi-harness/core/dist/plugins/code2skill.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/code2skill.js +0 -235
- package/node_modules/@pi-harness/core/dist/plugins/code2skill.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/colleague-skill.d.ts +0 -28
- package/node_modules/@pi-harness/core/dist/plugins/colleague-skill.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/colleague-skill.js +0 -129
- package/node_modules/@pi-harness/core/dist/plugins/colleague-skill.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/context-doctor.d.ts +0 -35
- package/node_modules/@pi-harness/core/dist/plugins/context-doctor.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/context-doctor.js +0 -459
- package/node_modules/@pi-harness/core/dist/plugins/context-doctor.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/context.d.ts +0 -9
- package/node_modules/@pi-harness/core/dist/plugins/context.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/context.js +0 -214
- package/node_modules/@pi-harness/core/dist/plugins/context.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/cost-meter.d.ts +0 -36
- package/node_modules/@pi-harness/core/dist/plugins/cost-meter.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/cost-meter.js +0 -430
- package/node_modules/@pi-harness/core/dist/plugins/cost-meter.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/dependency-checker.d.ts +0 -36
- package/node_modules/@pi-harness/core/dist/plugins/dependency-checker.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/dependency-checker.js +0 -570
- package/node_modules/@pi-harness/core/dist/plugins/dependency-checker.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/docker-sandbox.d.ts +0 -9
- package/node_modules/@pi-harness/core/dist/plugins/docker-sandbox.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/docker-sandbox.js +0 -344
- package/node_modules/@pi-harness/core/dist/plugins/docker-sandbox.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/fail-logger.d.ts +0 -9
- package/node_modules/@pi-harness/core/dist/plugins/fail-logger.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/fail-logger.js +0 -218
- package/node_modules/@pi-harness/core/dist/plugins/fail-logger.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/genui.d.ts +0 -9
- package/node_modules/@pi-harness/core/dist/plugins/genui.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/genui.js +0 -144
- package/node_modules/@pi-harness/core/dist/plugins/genui.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/git-time-capsule.d.ts +0 -15
- package/node_modules/@pi-harness/core/dist/plugins/git-time-capsule.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/git-time-capsule.js +0 -436
- package/node_modules/@pi-harness/core/dist/plugins/git-time-capsule.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/graph-memory.d.ts +0 -16
- package/node_modules/@pi-harness/core/dist/plugins/graph-memory.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/graph-memory.js +0 -669
- package/node_modules/@pi-harness/core/dist/plugins/graph-memory.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/history-compressor.d.ts +0 -15
- package/node_modules/@pi-harness/core/dist/plugins/history-compressor.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/history-compressor.js +0 -99
- package/node_modules/@pi-harness/core/dist/plugins/history-compressor.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/hol-guard.d.ts +0 -29
- package/node_modules/@pi-harness/core/dist/plugins/hol-guard.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/hol-guard.js +0 -159
- package/node_modules/@pi-harness/core/dist/plugins/hol-guard.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/i18n-pair.d.ts +0 -12
- package/node_modules/@pi-harness/core/dist/plugins/i18n-pair.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/i18n-pair.js +0 -332
- package/node_modules/@pi-harness/core/dist/plugins/i18n-pair.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/image-compressor.d.ts +0 -15
- package/node_modules/@pi-harness/core/dist/plugins/image-compressor.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/image-compressor.js +0 -223
- package/node_modules/@pi-harness/core/dist/plugins/image-compressor.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/llm-verifier.d.ts +0 -42
- package/node_modules/@pi-harness/core/dist/plugins/llm-verifier.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/llm-verifier.js +0 -138
- package/node_modules/@pi-harness/core/dist/plugins/llm-verifier.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/mcp-client.d.ts +0 -19
- package/node_modules/@pi-harness/core/dist/plugins/mcp-client.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/mcp-client.js +0 -1288
- package/node_modules/@pi-harness/core/dist/plugins/mcp-client.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/mcp-panel.d.ts +0 -14
- package/node_modules/@pi-harness/core/dist/plugins/mcp-panel.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/mcp-panel.js +0 -194
- package/node_modules/@pi-harness/core/dist/plugins/mcp-panel.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/memory.d.ts +0 -15
- package/node_modules/@pi-harness/core/dist/plugins/memory.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/memory.js +0 -394
- package/node_modules/@pi-harness/core/dist/plugins/memory.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/mirage-bridge.d.ts +0 -23
- package/node_modules/@pi-harness/core/dist/plugins/mirage-bridge.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/mirage-bridge.js +0 -159
- package/node_modules/@pi-harness/core/dist/plugins/mirage-bridge.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/mock-server.d.ts +0 -22
- package/node_modules/@pi-harness/core/dist/plugins/mock-server.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/mock-server.js +0 -180
- package/node_modules/@pi-harness/core/dist/plugins/mock-server.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/model.d.ts +0 -11
- package/node_modules/@pi-harness/core/dist/plugins/model.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/model.js +0 -17
- package/node_modules/@pi-harness/core/dist/plugins/model.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/models.d.ts +0 -16
- package/node_modules/@pi-harness/core/dist/plugins/models.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/models.js +0 -35
- package/node_modules/@pi-harness/core/dist/plugins/models.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/modlens.d.ts +0 -15
- package/node_modules/@pi-harness/core/dist/plugins/modlens.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/modlens.js +0 -470
- package/node_modules/@pi-harness/core/dist/plugins/modlens.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/module-search.d.ts +0 -28
- package/node_modules/@pi-harness/core/dist/plugins/module-search.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/module-search.js +0 -193
- package/node_modules/@pi-harness/core/dist/plugins/module-search.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/obsidian-sync.d.ts +0 -14
- package/node_modules/@pi-harness/core/dist/plugins/obsidian-sync.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/obsidian-sync.js +0 -88
- package/node_modules/@pi-harness/core/dist/plugins/obsidian-sync.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/openpets.d.ts +0 -14
- package/node_modules/@pi-harness/core/dist/plugins/openpets.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/openpets.js +0 -258
- package/node_modules/@pi-harness/core/dist/plugins/openpets.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/plan-execute.d.ts +0 -11
- package/node_modules/@pi-harness/core/dist/plugins/plan-execute.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/plan-execute.js +0 -91
- package/node_modules/@pi-harness/core/dist/plugins/plan-execute.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/plugin-check.d.ts +0 -47
- package/node_modules/@pi-harness/core/dist/plugins/plugin-check.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/plugin-check.js +0 -298
- package/node_modules/@pi-harness/core/dist/plugins/plugin-check.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/plugin-dev.d.ts +0 -9
- package/node_modules/@pi-harness/core/dist/plugins/plugin-dev.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/plugin-dev.js +0 -177
- package/node_modules/@pi-harness/core/dist/plugins/plugin-dev.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/plugin-finder.d.ts +0 -17
- package/node_modules/@pi-harness/core/dist/plugins/plugin-finder.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/plugin-finder.js +0 -216
- package/node_modules/@pi-harness/core/dist/plugins/plugin-finder.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/plugin-radar.d.ts +0 -33
- package/node_modules/@pi-harness/core/dist/plugins/plugin-radar.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/plugin-radar.js +0 -247
- package/node_modules/@pi-harness/core/dist/plugins/plugin-radar.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/plugin-stars.d.ts +0 -45
- package/node_modules/@pi-harness/core/dist/plugins/plugin-stars.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/plugin-stars.js +0 -366
- package/node_modules/@pi-harness/core/dist/plugins/plugin-stars.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/prompt-guard.d.ts +0 -9
- package/node_modules/@pi-harness/core/dist/plugins/prompt-guard.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/prompt-guard.js +0 -165
- package/node_modules/@pi-harness/core/dist/plugins/prompt-guard.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/prompt-library.d.ts +0 -26
- package/node_modules/@pi-harness/core/dist/plugins/prompt-library.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/prompt-library.js +0 -145
- package/node_modules/@pi-harness/core/dist/plugins/prompt-library.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/readme-gen.d.ts +0 -29
- package/node_modules/@pi-harness/core/dist/plugins/readme-gen.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/readme-gen.js +0 -580
- package/node_modules/@pi-harness/core/dist/plugins/readme-gen.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/recall-unread.d.ts +0 -24
- package/node_modules/@pi-harness/core/dist/plugins/recall-unread.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/recall-unread.js +0 -467
- package/node_modules/@pi-harness/core/dist/plugins/recall-unread.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/resources.d.ts +0 -19
- package/node_modules/@pi-harness/core/dist/plugins/resources.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/resources.js +0 -126
- package/node_modules/@pi-harness/core/dist/plugins/resources.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/reverse-skill.d.ts +0 -23
- package/node_modules/@pi-harness/core/dist/plugins/reverse-skill.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/reverse-skill.js +0 -61
- package/node_modules/@pi-harness/core/dist/plugins/reverse-skill.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/reviewer-bot.d.ts +0 -15
- package/node_modules/@pi-harness/core/dist/plugins/reviewer-bot.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/reviewer-bot.js +0 -152
- package/node_modules/@pi-harness/core/dist/plugins/reviewer-bot.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/runtime-doctor.d.ts +0 -34
- package/node_modules/@pi-harness/core/dist/plugins/runtime-doctor.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/runtime-doctor.js +0 -117
- package/node_modules/@pi-harness/core/dist/plugins/runtime-doctor.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/runtime.d.ts +0 -14
- package/node_modules/@pi-harness/core/dist/plugins/runtime.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/runtime.js +0 -159
- package/node_modules/@pi-harness/core/dist/plugins/runtime.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/secure-audit.d.ts +0 -32
- package/node_modules/@pi-harness/core/dist/plugins/secure-audit.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/secure-audit.js +0 -139
- package/node_modules/@pi-harness/core/dist/plugins/secure-audit.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/session-bookmarks.d.ts +0 -16
- package/node_modules/@pi-harness/core/dist/plugins/session-bookmarks.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/session-bookmarks.js +0 -90
- package/node_modules/@pi-harness/core/dist/plugins/session-bookmarks.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/session-bridge.d.ts +0 -45
- package/node_modules/@pi-harness/core/dist/plugins/session-bridge.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/session-bridge.js +0 -578
- package/node_modules/@pi-harness/core/dist/plugins/session-bridge.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/session-compare.d.ts +0 -34
- package/node_modules/@pi-harness/core/dist/plugins/session-compare.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/session-compare.js +0 -153
- package/node_modules/@pi-harness/core/dist/plugins/session-compare.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/session-export.d.ts +0 -10
- package/node_modules/@pi-harness/core/dist/plugins/session-export.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/session-export.js +0 -93
- package/node_modules/@pi-harness/core/dist/plugins/session-export.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/session-insights.d.ts +0 -44
- package/node_modules/@pi-harness/core/dist/plugins/session-insights.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/session-insights.js +0 -432
- package/node_modules/@pi-harness/core/dist/plugins/session-insights.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/session-search.d.ts +0 -21
- package/node_modules/@pi-harness/core/dist/plugins/session-search.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/session-search.js +0 -125
- package/node_modules/@pi-harness/core/dist/plugins/session-search.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/session.d.ts +0 -15
- package/node_modules/@pi-harness/core/dist/plugins/session.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/session.js +0 -29
- package/node_modules/@pi-harness/core/dist/plugins/session.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/skill-catalog.d.ts +0 -27
- package/node_modules/@pi-harness/core/dist/plugins/skill-catalog.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/skill-catalog.js +0 -98
- package/node_modules/@pi-harness/core/dist/plugins/skill-catalog.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/skill-guard.d.ts +0 -27
- package/node_modules/@pi-harness/core/dist/plugins/skill-guard.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/skill-guard.js +0 -319
- package/node_modules/@pi-harness/core/dist/plugins/skill-guard.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/sql-lens-worker.d.ts +0 -2
- package/node_modules/@pi-harness/core/dist/plugins/sql-lens-worker.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/sql-lens-worker.js +0 -206
- package/node_modules/@pi-harness/core/dist/plugins/sql-lens-worker.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/sql-lens.d.ts +0 -14
- package/node_modules/@pi-harness/core/dist/plugins/sql-lens.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/sql-lens.js +0 -318
- package/node_modules/@pi-harness/core/dist/plugins/sql-lens.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/stdio.d.ts +0 -11
- package/node_modules/@pi-harness/core/dist/plugins/stdio.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/stdio.js +0 -80
- package/node_modules/@pi-harness/core/dist/plugins/stdio.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/synapse.d.ts +0 -38
- package/node_modules/@pi-harness/core/dist/plugins/synapse.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/synapse.js +0 -101
- package/node_modules/@pi-harness/core/dist/plugins/synapse.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/tab-manager.d.ts +0 -9
- package/node_modules/@pi-harness/core/dist/plugins/tab-manager.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/tab-manager.js +0 -240
- package/node_modules/@pi-harness/core/dist/plugins/tab-manager.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/taskboard.d.ts +0 -15
- package/node_modules/@pi-harness/core/dist/plugins/taskboard.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/taskboard.js +0 -375
- package/node_modules/@pi-harness/core/dist/plugins/taskboard.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/telemetry-blocker.d.ts +0 -11
- package/node_modules/@pi-harness/core/dist/plugins/telemetry-blocker.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/telemetry-blocker.js +0 -76
- package/node_modules/@pi-harness/core/dist/plugins/telemetry-blocker.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/test-harness.d.ts +0 -14
- package/node_modules/@pi-harness/core/dist/plugins/test-harness.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/test-harness.js +0 -276
- package/node_modules/@pi-harness/core/dist/plugins/test-harness.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/theme-studio.d.ts +0 -29
- package/node_modules/@pi-harness/core/dist/plugins/theme-studio.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/theme-studio.js +0 -143
- package/node_modules/@pi-harness/core/dist/plugins/theme-studio.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/token-guard.d.ts +0 -15
- package/node_modules/@pi-harness/core/dist/plugins/token-guard.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/token-guard.js +0 -210
- package/node_modules/@pi-harness/core/dist/plugins/token-guard.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/tools.d.ts +0 -13
- package/node_modules/@pi-harness/core/dist/plugins/tools.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/tools.js +0 -23
- package/node_modules/@pi-harness/core/dist/plugins/tools.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/turn-rewind.d.ts +0 -36
- package/node_modules/@pi-harness/core/dist/plugins/turn-rewind.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/turn-rewind.js +0 -378
- package/node_modules/@pi-harness/core/dist/plugins/turn-rewind.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/undo-savepoint.d.ts +0 -17
- package/node_modules/@pi-harness/core/dist/plugins/undo-savepoint.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/undo-savepoint.js +0 -353
- package/node_modules/@pi-harness/core/dist/plugins/undo-savepoint.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/vision-toolkit.d.ts +0 -36
- package/node_modules/@pi-harness/core/dist/plugins/vision-toolkit.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/vision-toolkit.js +0 -468
- package/node_modules/@pi-harness/core/dist/plugins/vision-toolkit.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/web-research.d.ts +0 -17
- package/node_modules/@pi-harness/core/dist/plugins/web-research.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/web-research.js +0 -284
- package/node_modules/@pi-harness/core/dist/plugins/web-research.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/workspace-navigator.d.ts +0 -42
- package/node_modules/@pi-harness/core/dist/plugins/workspace-navigator.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/workspace-navigator.js +0 -168
- package/node_modules/@pi-harness/core/dist/plugins/workspace-navigator.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/workspace-search.d.ts +0 -15
- package/node_modules/@pi-harness/core/dist/plugins/workspace-search.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/workspace-search.js +0 -167
- package/node_modules/@pi-harness/core/dist/plugins/workspace-search.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/yaml-validator.d.ts +0 -9
- package/node_modules/@pi-harness/core/dist/plugins/yaml-validator.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/plugins/yaml-validator.js +0 -203
- package/node_modules/@pi-harness/core/dist/plugins/yaml-validator.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/profile.d.ts +0 -9
- package/node_modules/@pi-harness/core/dist/profile.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/profile.js +0 -33
- package/node_modules/@pi-harness/core/dist/profile.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/runtime.d.ts +0 -16
- package/node_modules/@pi-harness/core/dist/runtime.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/runtime.js +0 -47
- package/node_modules/@pi-harness/core/dist/runtime.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/services.d.ts +0 -118
- package/node_modules/@pi-harness/core/dist/services.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/services.js +0 -115
- package/node_modules/@pi-harness/core/dist/services.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/stdio.d.ts +0 -37
- package/node_modules/@pi-harness/core/dist/stdio.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/stdio.js +0 -356
- package/node_modules/@pi-harness/core/dist/stdio.js.map +0 -1
- package/node_modules/@pi-harness/core/dist/workspace-path.d.ts +0 -13
- package/node_modules/@pi-harness/core/dist/workspace-path.d.ts.map +0 -1
- package/node_modules/@pi-harness/core/dist/workspace-path.js +0 -71
- package/node_modules/@pi-harness/core/dist/workspace-path.js.map +0 -1
- package/node_modules/@pi-harness/core/package.json +0 -42
- package/node_modules/@pi-harness/core/profiles/default/cordis.yml +0 -122
- package/node_modules/@pi-harness/core/profiles/development/cordis.yml +0 -47
- package/packages/client-web/LICENSE +0 -9
- package/packages/client-web/dist/agent-teams-view.d.ts +0 -70
- package/packages/client-web/dist/agent-teams-view.d.ts.map +0 -1
- package/packages/client-web/dist/agent-teams-view.js +0 -159
- package/packages/client-web/dist/agent-teams-view.js.map +0 -1
- package/packages/client-web/dist/annotation-ui.d.ts +0 -11
- package/packages/client-web/dist/annotation-ui.d.ts.map +0 -1
- package/packages/client-web/dist/annotation-ui.js +0 -24
- package/packages/client-web/dist/annotation-ui.js.map +0 -1
- package/packages/client-web/dist/at-file-view.d.ts +0 -10
- package/packages/client-web/dist/at-file-view.d.ts.map +0 -1
- package/packages/client-web/dist/at-file-view.js +0 -65
- package/packages/client-web/dist/at-file-view.js.map +0 -1
- package/packages/client-web/dist/browser-fetch-view.d.ts +0 -22
- package/packages/client-web/dist/browser-fetch-view.d.ts.map +0 -1
- package/packages/client-web/dist/browser-fetch-view.js +0 -101
- package/packages/client-web/dist/browser-fetch-view.js.map +0 -1
- package/packages/client-web/dist/browser-session-view.d.ts +0 -39
- package/packages/client-web/dist/browser-session-view.d.ts.map +0 -1
- package/packages/client-web/dist/browser-session-view.js +0 -211
- package/packages/client-web/dist/browser-session-view.js.map +0 -1
- package/packages/client-web/dist/cleaner-view.d.ts +0 -29
- package/packages/client-web/dist/cleaner-view.d.ts.map +0 -1
- package/packages/client-web/dist/cleaner-view.js +0 -191
- package/packages/client-web/dist/cleaner-view.js.map +0 -1
- package/packages/client-web/dist/context-doctor-view.d.ts +0 -35
- package/packages/client-web/dist/context-doctor-view.d.ts.map +0 -1
- package/packages/client-web/dist/context-doctor-view.js +0 -129
- package/packages/client-web/dist/context-doctor-view.js.map +0 -1
- package/packages/client-web/dist/context-insights-view.d.ts +0 -31
- package/packages/client-web/dist/context-insights-view.d.ts.map +0 -1
- package/packages/client-web/dist/context-insights-view.js +0 -90
- package/packages/client-web/dist/context-insights-view.js.map +0 -1
- package/packages/client-web/dist/control-room.d.ts +0 -270
- package/packages/client-web/dist/control-room.d.ts.map +0 -1
- package/packages/client-web/dist/control-room.js +0 -157
- package/packages/client-web/dist/control-room.js.map +0 -1
- package/packages/client-web/dist/cost-meter-view.d.ts +0 -16
- package/packages/client-web/dist/cost-meter-view.d.ts.map +0 -1
- package/packages/client-web/dist/cost-meter-view.js +0 -43
- package/packages/client-web/dist/cost-meter-view.js.map +0 -1
- package/packages/client-web/dist/dependency-checker-view.d.ts +0 -24
- package/packages/client-web/dist/dependency-checker-view.d.ts.map +0 -1
- package/packages/client-web/dist/dependency-checker-view.js +0 -195
- package/packages/client-web/dist/dependency-checker-view.js.map +0 -1
- package/packages/client-web/dist/design-contract.d.ts +0 -85
- package/packages/client-web/dist/design-contract.d.ts.map +0 -1
- package/packages/client-web/dist/design-contract.js +0 -258
- package/packages/client-web/dist/design-contract.js.map +0 -1
- package/packages/client-web/dist/docker-sandbox-view.d.ts +0 -28
- package/packages/client-web/dist/docker-sandbox-view.d.ts.map +0 -1
- package/packages/client-web/dist/docker-sandbox-view.js +0 -152
- package/packages/client-web/dist/docker-sandbox-view.js.map +0 -1
- package/packages/client-web/dist/fail-logger-view.d.ts +0 -16
- package/packages/client-web/dist/fail-logger-view.d.ts.map +0 -1
- package/packages/client-web/dist/fail-logger-view.js +0 -97
- package/packages/client-web/dist/fail-logger-view.js.map +0 -1
- package/packages/client-web/dist/genui-view.d.ts +0 -28
- package/packages/client-web/dist/genui-view.d.ts.map +0 -1
- package/packages/client-web/dist/genui-view.js +0 -62
- package/packages/client-web/dist/genui-view.js.map +0 -1
- package/packages/client-web/dist/git-time-capsule-view.d.ts +0 -31
- package/packages/client-web/dist/git-time-capsule-view.d.ts.map +0 -1
- package/packages/client-web/dist/git-time-capsule-view.js +0 -203
- package/packages/client-web/dist/git-time-capsule-view.js.map +0 -1
- package/packages/client-web/dist/graph-memory-view.d.ts +0 -39
- package/packages/client-web/dist/graph-memory-view.d.ts.map +0 -1
- package/packages/client-web/dist/graph-memory-view.js +0 -82
- package/packages/client-web/dist/graph-memory-view.js.map +0 -1
- package/packages/client-web/dist/i18n-pair-view.d.ts +0 -32
- package/packages/client-web/dist/i18n-pair-view.d.ts.map +0 -1
- package/packages/client-web/dist/i18n-pair-view.js +0 -182
- package/packages/client-web/dist/i18n-pair-view.js.map +0 -1
- package/packages/client-web/dist/index.d.ts +0 -20
- package/packages/client-web/dist/index.d.ts.map +0 -1
- package/packages/client-web/dist/index.js +0 -27
- package/packages/client-web/dist/index.js.map +0 -1
- package/packages/client-web/dist/markdown.d.ts +0 -5
- package/packages/client-web/dist/markdown.d.ts.map +0 -1
- package/packages/client-web/dist/markdown.js +0 -20
- package/packages/client-web/dist/markdown.js.map +0 -1
- package/packages/client-web/dist/marketplace-catalog.d.ts +0 -3
- package/packages/client-web/dist/marketplace-catalog.d.ts.map +0 -1
- package/packages/client-web/dist/marketplace-catalog.js +0 -10
- package/packages/client-web/dist/marketplace-catalog.js.map +0 -1
- package/packages/client-web/dist/marketplace-navigation.d.ts +0 -19
- package/packages/client-web/dist/marketplace-navigation.d.ts.map +0 -1
- package/packages/client-web/dist/marketplace-navigation.js +0 -31
- package/packages/client-web/dist/marketplace-navigation.js.map +0 -1
- package/packages/client-web/dist/mcp-client-view.d.ts +0 -58
- package/packages/client-web/dist/mcp-client-view.d.ts.map +0 -1
- package/packages/client-web/dist/mcp-client-view.js +0 -121
- package/packages/client-web/dist/mcp-client-view.js.map +0 -1
- package/packages/client-web/dist/message-content.d.ts +0 -9
- package/packages/client-web/dist/message-content.d.ts.map +0 -1
- package/packages/client-web/dist/message-content.js +0 -54
- package/packages/client-web/dist/message-content.js.map +0 -1
- package/packages/client-web/dist/modlens-view.d.ts +0 -43
- package/packages/client-web/dist/modlens-view.d.ts.map +0 -1
- package/packages/client-web/dist/modlens-view.js +0 -176
- package/packages/client-web/dist/modlens-view.js.map +0 -1
- package/packages/client-web/dist/openpets-view.d.ts +0 -26
- package/packages/client-web/dist/openpets-view.d.ts.map +0 -1
- package/packages/client-web/dist/openpets-view.js +0 -62
- package/packages/client-web/dist/openpets-view.js.map +0 -1
- package/packages/client-web/dist/panel-safe.d.ts +0 -5
- package/packages/client-web/dist/panel-safe.d.ts.map +0 -1
- package/packages/client-web/dist/panel-safe.js +0 -58
- package/packages/client-web/dist/panel-safe.js.map +0 -1
- package/packages/client-web/dist/plugin-card.d.ts +0 -8
- package/packages/client-web/dist/plugin-card.d.ts.map +0 -1
- package/packages/client-web/dist/plugin-card.js +0 -15
- package/packages/client-web/dist/plugin-card.js.map +0 -1
- package/packages/client-web/dist/plugin-dev-view.d.ts +0 -15
- package/packages/client-web/dist/plugin-dev-view.d.ts.map +0 -1
- package/packages/client-web/dist/plugin-dev-view.js +0 -33
- package/packages/client-web/dist/plugin-dev-view.js.map +0 -1
- package/packages/client-web/dist/plugin-navigation.d.ts +0 -3
- package/packages/client-web/dist/plugin-navigation.d.ts.map +0 -1
- package/packages/client-web/dist/plugin-navigation.js +0 -10
- package/packages/client-web/dist/plugin-navigation.js.map +0 -1
- package/packages/client-web/dist/plugin-search.d.ts +0 -2
- package/packages/client-web/dist/plugin-search.d.ts.map +0 -1
- package/packages/client-web/dist/plugin-search.js +0 -7
- package/packages/client-web/dist/plugin-search.js.map +0 -1
- package/packages/client-web/dist/plugin-stars-view.d.ts +0 -40
- package/packages/client-web/dist/plugin-stars-view.d.ts.map +0 -1
- package/packages/client-web/dist/plugin-stars-view.js +0 -216
- package/packages/client-web/dist/plugin-stars-view.js.map +0 -1
- package/packages/client-web/dist/prompt-completion.d.ts +0 -13
- package/packages/client-web/dist/prompt-completion.d.ts.map +0 -1
- package/packages/client-web/dist/prompt-completion.js +0 -17
- package/packages/client-web/dist/prompt-completion.js.map +0 -1
- package/packages/client-web/dist/react-room.d.ts +0 -11
- package/packages/client-web/dist/react-room.d.ts.map +0 -1
- package/packages/client-web/dist/react-room.js +0 -2844
- package/packages/client-web/dist/react-room.js.map +0 -1
- package/packages/client-web/dist/readme-gen-view.d.ts +0 -30
- package/packages/client-web/dist/readme-gen-view.d.ts.map +0 -1
- package/packages/client-web/dist/readme-gen-view.js +0 -134
- package/packages/client-web/dist/readme-gen-view.js.map +0 -1
- package/packages/client-web/dist/recall-unread-view.d.ts +0 -46
- package/packages/client-web/dist/recall-unread-view.d.ts.map +0 -1
- package/packages/client-web/dist/recall-unread-view.js +0 -104
- package/packages/client-web/dist/recall-unread-view.js.map +0 -1
- package/packages/client-web/dist/runtime-events.d.ts +0 -4
- package/packages/client-web/dist/runtime-events.d.ts.map +0 -1
- package/packages/client-web/dist/runtime-events.js +0 -29
- package/packages/client-web/dist/runtime-events.js.map +0 -1
- package/packages/client-web/dist/session-bridge-view.d.ts +0 -50
- package/packages/client-web/dist/session-bridge-view.d.ts.map +0 -1
- package/packages/client-web/dist/session-bridge-view.js +0 -113
- package/packages/client-web/dist/session-bridge-view.js.map +0 -1
- package/packages/client-web/dist/session-insights-view.d.ts +0 -40
- package/packages/client-web/dist/session-insights-view.d.ts.map +0 -1
- package/packages/client-web/dist/session-insights-view.js +0 -157
- package/packages/client-web/dist/session-insights-view.js.map +0 -1
- package/packages/client-web/dist/skill-guard-view.d.ts +0 -47
- package/packages/client-web/dist/skill-guard-view.d.ts.map +0 -1
- package/packages/client-web/dist/skill-guard-view.js +0 -93
- package/packages/client-web/dist/skill-guard-view.js.map +0 -1
- package/packages/client-web/dist/sql-lens-view.d.ts +0 -37
- package/packages/client-web/dist/sql-lens-view.d.ts.map +0 -1
- package/packages/client-web/dist/sql-lens-view.js +0 -235
- package/packages/client-web/dist/sql-lens-view.js.map +0 -1
- package/packages/client-web/dist/test-harness-view.d.ts +0 -24
- package/packages/client-web/dist/test-harness-view.d.ts.map +0 -1
- package/packages/client-web/dist/test-harness-view.js +0 -149
- package/packages/client-web/dist/test-harness-view.js.map +0 -1
- package/packages/client-web/dist/token-guard-view.d.ts +0 -19
- package/packages/client-web/dist/token-guard-view.d.ts.map +0 -1
- package/packages/client-web/dist/token-guard-view.js +0 -56
- package/packages/client-web/dist/token-guard-view.js.map +0 -1
- package/packages/client-web/dist/turn-rewind-view.d.ts +0 -41
- package/packages/client-web/dist/turn-rewind-view.d.ts.map +0 -1
- package/packages/client-web/dist/turn-rewind-view.js +0 -117
- package/packages/client-web/dist/turn-rewind-view.js.map +0 -1
- package/packages/client-web/dist/vision-toolkit-view.d.ts +0 -66
- package/packages/client-web/dist/vision-toolkit-view.d.ts.map +0 -1
- package/packages/client-web/dist/vision-toolkit-view.js +0 -238
- package/packages/client-web/dist/vision-toolkit-view.js.map +0 -1
- package/packages/client-web/dist/yaml-validator-view.d.ts +0 -52
- package/packages/client-web/dist/yaml-validator-view.d.ts.map +0 -1
- package/packages/client-web/dist/yaml-validator-view.js +0 -96
- package/packages/client-web/dist/yaml-validator-view.js.map +0 -1
- package/packages/client-web/package.json +0 -42
- package/packages/client-web/src/agent-teams-view.ts +0 -189
- package/packages/client-web/src/annotation-ui.ts +0 -29
- package/packages/client-web/src/at-file-view.ts +0 -69
- package/packages/client-web/src/browser-fetch-view.ts +0 -114
- package/packages/client-web/src/browser-session-view.ts +0 -232
- package/packages/client-web/src/cleaner-view.ts +0 -207
- package/packages/client-web/src/context-doctor-view.ts +0 -140
- package/packages/client-web/src/context-insights-view.ts +0 -125
- package/packages/client-web/src/control-room.ts +0 -359
- package/packages/client-web/src/cost-meter-view.ts +0 -63
- package/packages/client-web/src/dependency-checker-view.ts +0 -215
- package/packages/client-web/src/design-contract.ts +0 -334
- package/packages/client-web/src/docker-sandbox-view.ts +0 -177
- package/packages/client-web/src/fail-logger-view.ts +0 -112
- package/packages/client-web/src/genui-view.ts +0 -88
- package/packages/client-web/src/git-time-capsule-view.ts +0 -215
- package/packages/client-web/src/graph-memory-view.ts +0 -91
- package/packages/client-web/src/i18n-pair-view.ts +0 -194
- package/packages/client-web/src/index.ts +0 -34
- package/packages/client-web/src/markdown.tsx +0 -22
- package/packages/client-web/src/marketplace-catalog.ts +0 -10
- package/packages/client-web/src/marketplace-navigation.ts +0 -46
- package/packages/client-web/src/mcp-client-view.ts +0 -122
- package/packages/client-web/src/message-content.ts +0 -51
- package/packages/client-web/src/modlens-view.ts +0 -210
- package/packages/client-web/src/openpets-view.ts +0 -67
- package/packages/client-web/src/panel-safe.ts +0 -47
- package/packages/client-web/src/plugin-card.ts +0 -22
- package/packages/client-web/src/plugin-dev-view.ts +0 -39
- package/packages/client-web/src/plugin-navigation.ts +0 -9
- package/packages/client-web/src/plugin-search.ts +0 -5
- package/packages/client-web/src/plugin-stars-view.ts +0 -257
- package/packages/client-web/src/prompt-completion.ts +0 -24
- package/packages/client-web/src/react-room.tsx +0 -8581
- package/packages/client-web/src/readme-gen-view.ts +0 -145
- package/packages/client-web/src/recall-unread-view.ts +0 -105
- package/packages/client-web/src/runtime-events.ts +0 -29
- package/packages/client-web/src/session-bridge-view.ts +0 -118
- package/packages/client-web/src/session-insights-view.ts +0 -205
- package/packages/client-web/src/skill-guard-view.ts +0 -94
- package/packages/client-web/src/sql-lens-view.ts +0 -247
- package/packages/client-web/src/test-harness-view.ts +0 -170
- package/packages/client-web/src/token-guard-view.ts +0 -75
- package/packages/client-web/src/turn-rewind-view.ts +0 -120
- package/packages/client-web/src/vision-toolkit-view.ts +0 -280
- package/packages/client-web/src/yaml-validator-view.ts +0 -102
- package/packages/client-web/test/agent-teams-view.test.ts +0 -198
- package/packages/client-web/test/annotation-ui.test.ts +0 -21
- package/packages/client-web/test/at-file-panel.test.ts +0 -76
- package/packages/client-web/test/browser-fetch-panel.test.ts +0 -44
- package/packages/client-web/test/browser-fetch-view.test.ts +0 -89
- package/packages/client-web/test/browser-session-panel.test.ts +0 -55
- package/packages/client-web/test/browser-session-view.test.ts +0 -115
- package/packages/client-web/test/cleaner-panel.test.ts +0 -66
- package/packages/client-web/test/cleaner-view.test.ts +0 -143
- package/packages/client-web/test/context-doctor-view.test.ts +0 -169
- package/packages/client-web/test/context-insights-view.test.ts +0 -120
- package/packages/client-web/test/cost-meter-view.test.ts +0 -53
- package/packages/client-web/test/dependency-checker-panel.test.ts +0 -51
- package/packages/client-web/test/dependency-checker-view.test.ts +0 -266
- package/packages/client-web/test/design-contract.test.ts +0 -69
- package/packages/client-web/test/docker-sandbox-panel.test.ts +0 -44
- package/packages/client-web/test/docker-sandbox-view.test.ts +0 -127
- package/packages/client-web/test/fail-logger-view.test.ts +0 -155
- package/packages/client-web/test/genui-view.test.ts +0 -55
- package/packages/client-web/test/git-time-capsule-view.test.ts +0 -252
- package/packages/client-web/test/graph-memory-view.test.ts +0 -67
- package/packages/client-web/test/i18n-pair-panel.test.ts +0 -72
- package/packages/client-web/test/i18n-pair-view.test.ts +0 -164
- package/packages/client-web/test/marketplace-catalog.test.ts +0 -52
- package/packages/client-web/test/mcp-client-view.test.ts +0 -106
- package/packages/client-web/test/message-content.test.ts +0 -43
- package/packages/client-web/test/modlens-view.test.ts +0 -198
- package/packages/client-web/test/openpets-view.test.ts +0 -57
- package/packages/client-web/test/plugin-card.test.ts +0 -46
- package/packages/client-web/test/plugin-dev-view.test.ts +0 -63
- package/packages/client-web/test/plugin-navigation.test.ts +0 -14
- package/packages/client-web/test/plugin-search.test.ts +0 -22
- package/packages/client-web/test/plugin-stars-panel.test.ts +0 -44
- package/packages/client-web/test/plugin-stars-view.test.ts +0 -107
- package/packages/client-web/test/prompt-completion.test.ts +0 -21
- package/packages/client-web/test/readme-gen-panel.test.ts +0 -81
- package/packages/client-web/test/readme-gen-view.test.ts +0 -91
- package/packages/client-web/test/recall-unread-view.test.ts +0 -153
- package/packages/client-web/test/runtime-events.test.ts +0 -28
- package/packages/client-web/test/session-bridge-view.test.ts +0 -102
- package/packages/client-web/test/session-insights-panel.test.ts +0 -85
- package/packages/client-web/test/session-insights-view.test.ts +0 -152
- package/packages/client-web/test/skill-guard-view.test.ts +0 -138
- package/packages/client-web/test/sql-lens-panel.test.ts +0 -52
- package/packages/client-web/test/sql-lens-view.test.ts +0 -134
- package/packages/client-web/test/test-harness-panel.test.ts +0 -228
- package/packages/client-web/test/token-guard-view.test.ts +0 -93
- package/packages/client-web/test/turn-rewind-view.test.ts +0 -159
- package/packages/client-web/test/vision-toolkit-view.test.ts +0 -152
- package/packages/client-web/test/yaml-validator-view.test.ts +0 -100
- package/packages/client-web/tsconfig.build.json +0 -13
- package/packages/client-web/tsconfig.json +0 -11
- package/packages/core/LICENSE +0 -9
- package/packages/core/dist/atomic-write.d.ts +0 -8
- package/packages/core/dist/atomic-write.d.ts.map +0 -1
- package/packages/core/dist/atomic-write.js +0 -40
- package/packages/core/dist/atomic-write.js.map +0 -1
- package/packages/core/dist/boot.d.ts +0 -13
- package/packages/core/dist/boot.d.ts.map +0 -1
- package/packages/core/dist/boot.js +0 -257
- package/packages/core/dist/boot.js.map +0 -1
- package/packages/core/dist/bounded-file.d.ts +0 -7
- package/packages/core/dist/bounded-file.d.ts.map +0 -1
- package/packages/core/dist/bounded-file.js +0 -50
- package/packages/core/dist/bounded-file.js.map +0 -1
- package/packages/core/dist/config.d.ts +0 -4
- package/packages/core/dist/config.d.ts.map +0 -1
- package/packages/core/dist/config.js +0 -29
- package/packages/core/dist/config.js.map +0 -1
- package/packages/core/dist/context.d.ts +0 -3
- package/packages/core/dist/context.d.ts.map +0 -1
- package/packages/core/dist/context.js +0 -2
- package/packages/core/dist/context.js.map +0 -1
- package/packages/core/dist/cordis-timer.d.ts +0 -15
- package/packages/core/dist/cordis-timer.d.ts.map +0 -1
- package/packages/core/dist/cordis-timer.js +0 -99
- package/packages/core/dist/cordis-timer.js.map +0 -1
- package/packages/core/dist/http.d.ts +0 -8
- package/packages/core/dist/http.d.ts.map +0 -1
- package/packages/core/dist/http.js +0 -27
- package/packages/core/dist/http.js.map +0 -1
- package/packages/core/dist/index.d.ts +0 -9
- package/packages/core/dist/index.d.ts.map +0 -1
- package/packages/core/dist/index.js +0 -8
- package/packages/core/dist/index.js.map +0 -1
- package/packages/core/dist/plugins/agent-teams.d.ts +0 -21
- package/packages/core/dist/plugins/agent-teams.d.ts.map +0 -1
- package/packages/core/dist/plugins/agent-teams.js +0 -1179
- package/packages/core/dist/plugins/agent-teams.js.map +0 -1
- package/packages/core/dist/plugins/anchored-standard.d.ts +0 -15
- package/packages/core/dist/plugins/anchored-standard.d.ts.map +0 -1
- package/packages/core/dist/plugins/anchored-standard.js +0 -112
- package/packages/core/dist/plugins/anchored-standard.js.map +0 -1
- package/packages/core/dist/plugins/annotation.d.ts +0 -19
- package/packages/core/dist/plugins/annotation.d.ts.map +0 -1
- package/packages/core/dist/plugins/annotation.js +0 -112
- package/packages/core/dist/plugins/annotation.js.map +0 -1
- package/packages/core/dist/plugins/archify.d.ts +0 -24
- package/packages/core/dist/plugins/archify.d.ts.map +0 -1
- package/packages/core/dist/plugins/archify.js +0 -145
- package/packages/core/dist/plugins/archify.js.map +0 -1
- package/packages/core/dist/plugins/at-file.d.ts +0 -12
- package/packages/core/dist/plugins/at-file.d.ts.map +0 -1
- package/packages/core/dist/plugins/at-file.js +0 -143
- package/packages/core/dist/plugins/at-file.js.map +0 -1
- package/packages/core/dist/plugins/auto-mode.d.ts +0 -15
- package/packages/core/dist/plugins/auto-mode.d.ts.map +0 -1
- package/packages/core/dist/plugins/auto-mode.js +0 -183
- package/packages/core/dist/plugins/auto-mode.js.map +0 -1
- package/packages/core/dist/plugins/better-sidebar.d.ts +0 -38
- package/packages/core/dist/plugins/better-sidebar.d.ts.map +0 -1
- package/packages/core/dist/plugins/better-sidebar.js +0 -99
- package/packages/core/dist/plugins/better-sidebar.js.map +0 -1
- package/packages/core/dist/plugins/browser-fetch.d.ts +0 -15
- package/packages/core/dist/plugins/browser-fetch.d.ts.map +0 -1
- package/packages/core/dist/plugins/browser-fetch.js +0 -359
- package/packages/core/dist/plugins/browser-fetch.js.map +0 -1
- package/packages/core/dist/plugins/browser-session.d.ts +0 -14
- package/packages/core/dist/plugins/browser-session.d.ts.map +0 -1
- package/packages/core/dist/plugins/browser-session.js +0 -604
- package/packages/core/dist/plugins/browser-session.js.map +0 -1
- package/packages/core/dist/plugins/canvas-draw.d.ts +0 -9
- package/packages/core/dist/plugins/canvas-draw.d.ts.map +0 -1
- package/packages/core/dist/plugins/canvas-draw.js +0 -140
- package/packages/core/dist/plugins/canvas-draw.js.map +0 -1
- package/packages/core/dist/plugins/change-verifier.d.ts +0 -9
- package/packages/core/dist/plugins/change-verifier.d.ts.map +0 -1
- package/packages/core/dist/plugins/change-verifier.js +0 -88
- package/packages/core/dist/plugins/change-verifier.js.map +0 -1
- package/packages/core/dist/plugins/cleaner.d.ts +0 -12
- package/packages/core/dist/plugins/cleaner.d.ts.map +0 -1
- package/packages/core/dist/plugins/cleaner.js +0 -353
- package/packages/core/dist/plugins/cleaner.js.map +0 -1
- package/packages/core/dist/plugins/cli-notifier.d.ts +0 -16
- package/packages/core/dist/plugins/cli-notifier.d.ts.map +0 -1
- package/packages/core/dist/plugins/cli-notifier.js +0 -167
- package/packages/core/dist/plugins/cli-notifier.js.map +0 -1
- package/packages/core/dist/plugins/code2skill.d.ts +0 -9
- package/packages/core/dist/plugins/code2skill.d.ts.map +0 -1
- package/packages/core/dist/plugins/code2skill.js +0 -235
- package/packages/core/dist/plugins/code2skill.js.map +0 -1
- package/packages/core/dist/plugins/colleague-skill.d.ts +0 -28
- package/packages/core/dist/plugins/colleague-skill.d.ts.map +0 -1
- package/packages/core/dist/plugins/colleague-skill.js +0 -129
- package/packages/core/dist/plugins/colleague-skill.js.map +0 -1
- package/packages/core/dist/plugins/context-doctor.d.ts +0 -35
- package/packages/core/dist/plugins/context-doctor.d.ts.map +0 -1
- package/packages/core/dist/plugins/context-doctor.js +0 -459
- package/packages/core/dist/plugins/context-doctor.js.map +0 -1
- package/packages/core/dist/plugins/context.d.ts +0 -9
- package/packages/core/dist/plugins/context.d.ts.map +0 -1
- package/packages/core/dist/plugins/context.js +0 -214
- package/packages/core/dist/plugins/context.js.map +0 -1
- package/packages/core/dist/plugins/cost-meter.d.ts +0 -36
- package/packages/core/dist/plugins/cost-meter.d.ts.map +0 -1
- package/packages/core/dist/plugins/cost-meter.js +0 -430
- package/packages/core/dist/plugins/cost-meter.js.map +0 -1
- package/packages/core/dist/plugins/dependency-checker.d.ts +0 -36
- package/packages/core/dist/plugins/dependency-checker.d.ts.map +0 -1
- package/packages/core/dist/plugins/dependency-checker.js +0 -570
- package/packages/core/dist/plugins/dependency-checker.js.map +0 -1
- package/packages/core/dist/plugins/docker-sandbox.d.ts +0 -9
- package/packages/core/dist/plugins/docker-sandbox.d.ts.map +0 -1
- package/packages/core/dist/plugins/docker-sandbox.js +0 -344
- package/packages/core/dist/plugins/docker-sandbox.js.map +0 -1
- package/packages/core/dist/plugins/fail-logger.d.ts +0 -9
- package/packages/core/dist/plugins/fail-logger.d.ts.map +0 -1
- package/packages/core/dist/plugins/fail-logger.js +0 -218
- package/packages/core/dist/plugins/fail-logger.js.map +0 -1
- package/packages/core/dist/plugins/genui.d.ts +0 -9
- package/packages/core/dist/plugins/genui.d.ts.map +0 -1
- package/packages/core/dist/plugins/genui.js +0 -144
- package/packages/core/dist/plugins/genui.js.map +0 -1
- package/packages/core/dist/plugins/git-time-capsule.d.ts +0 -15
- package/packages/core/dist/plugins/git-time-capsule.d.ts.map +0 -1
- package/packages/core/dist/plugins/git-time-capsule.js +0 -436
- package/packages/core/dist/plugins/git-time-capsule.js.map +0 -1
- package/packages/core/dist/plugins/graph-memory.d.ts +0 -16
- package/packages/core/dist/plugins/graph-memory.d.ts.map +0 -1
- package/packages/core/dist/plugins/graph-memory.js +0 -669
- package/packages/core/dist/plugins/graph-memory.js.map +0 -1
- package/packages/core/dist/plugins/history-compressor.d.ts +0 -15
- package/packages/core/dist/plugins/history-compressor.d.ts.map +0 -1
- package/packages/core/dist/plugins/history-compressor.js +0 -99
- package/packages/core/dist/plugins/history-compressor.js.map +0 -1
- package/packages/core/dist/plugins/hol-guard.d.ts +0 -29
- package/packages/core/dist/plugins/hol-guard.d.ts.map +0 -1
- package/packages/core/dist/plugins/hol-guard.js +0 -159
- package/packages/core/dist/plugins/hol-guard.js.map +0 -1
- package/packages/core/dist/plugins/i18n-pair.d.ts +0 -12
- package/packages/core/dist/plugins/i18n-pair.d.ts.map +0 -1
- package/packages/core/dist/plugins/i18n-pair.js +0 -332
- package/packages/core/dist/plugins/i18n-pair.js.map +0 -1
- package/packages/core/dist/plugins/image-compressor.d.ts +0 -15
- package/packages/core/dist/plugins/image-compressor.d.ts.map +0 -1
- package/packages/core/dist/plugins/image-compressor.js +0 -223
- package/packages/core/dist/plugins/image-compressor.js.map +0 -1
- package/packages/core/dist/plugins/llm-verifier.d.ts +0 -42
- package/packages/core/dist/plugins/llm-verifier.d.ts.map +0 -1
- package/packages/core/dist/plugins/llm-verifier.js +0 -138
- package/packages/core/dist/plugins/llm-verifier.js.map +0 -1
- package/packages/core/dist/plugins/mcp-client.d.ts +0 -19
- package/packages/core/dist/plugins/mcp-client.d.ts.map +0 -1
- package/packages/core/dist/plugins/mcp-client.js +0 -1288
- package/packages/core/dist/plugins/mcp-client.js.map +0 -1
- package/packages/core/dist/plugins/mcp-panel.d.ts +0 -14
- package/packages/core/dist/plugins/mcp-panel.d.ts.map +0 -1
- package/packages/core/dist/plugins/mcp-panel.js +0 -194
- package/packages/core/dist/plugins/mcp-panel.js.map +0 -1
- package/packages/core/dist/plugins/memory.d.ts +0 -15
- package/packages/core/dist/plugins/memory.d.ts.map +0 -1
- package/packages/core/dist/plugins/memory.js +0 -394
- package/packages/core/dist/plugins/memory.js.map +0 -1
- package/packages/core/dist/plugins/mirage-bridge.d.ts +0 -23
- package/packages/core/dist/plugins/mirage-bridge.d.ts.map +0 -1
- package/packages/core/dist/plugins/mirage-bridge.js +0 -159
- package/packages/core/dist/plugins/mirage-bridge.js.map +0 -1
- package/packages/core/dist/plugins/mock-server.d.ts +0 -22
- package/packages/core/dist/plugins/mock-server.d.ts.map +0 -1
- package/packages/core/dist/plugins/mock-server.js +0 -180
- package/packages/core/dist/plugins/mock-server.js.map +0 -1
- package/packages/core/dist/plugins/model.d.ts +0 -11
- package/packages/core/dist/plugins/model.d.ts.map +0 -1
- package/packages/core/dist/plugins/model.js +0 -17
- package/packages/core/dist/plugins/model.js.map +0 -1
- package/packages/core/dist/plugins/models.d.ts +0 -16
- package/packages/core/dist/plugins/models.d.ts.map +0 -1
- package/packages/core/dist/plugins/models.js +0 -35
- package/packages/core/dist/plugins/models.js.map +0 -1
- package/packages/core/dist/plugins/modlens.d.ts +0 -15
- package/packages/core/dist/plugins/modlens.d.ts.map +0 -1
- package/packages/core/dist/plugins/modlens.js +0 -470
- package/packages/core/dist/plugins/modlens.js.map +0 -1
- package/packages/core/dist/plugins/module-search.d.ts +0 -28
- package/packages/core/dist/plugins/module-search.d.ts.map +0 -1
- package/packages/core/dist/plugins/module-search.js +0 -193
- package/packages/core/dist/plugins/module-search.js.map +0 -1
- package/packages/core/dist/plugins/obsidian-sync.d.ts +0 -14
- package/packages/core/dist/plugins/obsidian-sync.d.ts.map +0 -1
- package/packages/core/dist/plugins/obsidian-sync.js +0 -88
- package/packages/core/dist/plugins/obsidian-sync.js.map +0 -1
- package/packages/core/dist/plugins/openpets.d.ts +0 -14
- package/packages/core/dist/plugins/openpets.d.ts.map +0 -1
- package/packages/core/dist/plugins/openpets.js +0 -258
- package/packages/core/dist/plugins/openpets.js.map +0 -1
- package/packages/core/dist/plugins/plan-execute.d.ts +0 -11
- package/packages/core/dist/plugins/plan-execute.d.ts.map +0 -1
- package/packages/core/dist/plugins/plan-execute.js +0 -91
- package/packages/core/dist/plugins/plan-execute.js.map +0 -1
- package/packages/core/dist/plugins/plugin-check.d.ts +0 -47
- package/packages/core/dist/plugins/plugin-check.d.ts.map +0 -1
- package/packages/core/dist/plugins/plugin-check.js +0 -298
- package/packages/core/dist/plugins/plugin-check.js.map +0 -1
- package/packages/core/dist/plugins/plugin-dev.d.ts +0 -9
- package/packages/core/dist/plugins/plugin-dev.d.ts.map +0 -1
- package/packages/core/dist/plugins/plugin-dev.js +0 -177
- package/packages/core/dist/plugins/plugin-dev.js.map +0 -1
- package/packages/core/dist/plugins/plugin-finder.d.ts +0 -17
- package/packages/core/dist/plugins/plugin-finder.d.ts.map +0 -1
- package/packages/core/dist/plugins/plugin-finder.js +0 -216
- package/packages/core/dist/plugins/plugin-finder.js.map +0 -1
- package/packages/core/dist/plugins/plugin-radar.d.ts +0 -33
- package/packages/core/dist/plugins/plugin-radar.d.ts.map +0 -1
- package/packages/core/dist/plugins/plugin-radar.js +0 -247
- package/packages/core/dist/plugins/plugin-radar.js.map +0 -1
- package/packages/core/dist/plugins/plugin-stars.d.ts +0 -45
- package/packages/core/dist/plugins/plugin-stars.d.ts.map +0 -1
- package/packages/core/dist/plugins/plugin-stars.js +0 -366
- package/packages/core/dist/plugins/plugin-stars.js.map +0 -1
- package/packages/core/dist/plugins/prompt-guard.d.ts +0 -9
- package/packages/core/dist/plugins/prompt-guard.d.ts.map +0 -1
- package/packages/core/dist/plugins/prompt-guard.js +0 -165
- package/packages/core/dist/plugins/prompt-guard.js.map +0 -1
- package/packages/core/dist/plugins/prompt-library.d.ts +0 -26
- package/packages/core/dist/plugins/prompt-library.d.ts.map +0 -1
- package/packages/core/dist/plugins/prompt-library.js +0 -145
- package/packages/core/dist/plugins/prompt-library.js.map +0 -1
- package/packages/core/dist/plugins/readme-gen.d.ts +0 -29
- package/packages/core/dist/plugins/readme-gen.d.ts.map +0 -1
- package/packages/core/dist/plugins/readme-gen.js +0 -580
- package/packages/core/dist/plugins/readme-gen.js.map +0 -1
- package/packages/core/dist/plugins/recall-unread.d.ts +0 -24
- package/packages/core/dist/plugins/recall-unread.d.ts.map +0 -1
- package/packages/core/dist/plugins/recall-unread.js +0 -467
- package/packages/core/dist/plugins/recall-unread.js.map +0 -1
- package/packages/core/dist/plugins/resources.d.ts +0 -19
- package/packages/core/dist/plugins/resources.d.ts.map +0 -1
- package/packages/core/dist/plugins/resources.js +0 -126
- package/packages/core/dist/plugins/resources.js.map +0 -1
- package/packages/core/dist/plugins/reverse-skill.d.ts +0 -23
- package/packages/core/dist/plugins/reverse-skill.d.ts.map +0 -1
- package/packages/core/dist/plugins/reverse-skill.js +0 -61
- package/packages/core/dist/plugins/reverse-skill.js.map +0 -1
- package/packages/core/dist/plugins/reviewer-bot.d.ts +0 -15
- package/packages/core/dist/plugins/reviewer-bot.d.ts.map +0 -1
- package/packages/core/dist/plugins/reviewer-bot.js +0 -152
- package/packages/core/dist/plugins/reviewer-bot.js.map +0 -1
- package/packages/core/dist/plugins/runtime-doctor.d.ts +0 -34
- package/packages/core/dist/plugins/runtime-doctor.d.ts.map +0 -1
- package/packages/core/dist/plugins/runtime-doctor.js +0 -117
- package/packages/core/dist/plugins/runtime-doctor.js.map +0 -1
- package/packages/core/dist/plugins/runtime.d.ts +0 -14
- package/packages/core/dist/plugins/runtime.d.ts.map +0 -1
- package/packages/core/dist/plugins/runtime.js +0 -159
- package/packages/core/dist/plugins/runtime.js.map +0 -1
- package/packages/core/dist/plugins/secure-audit.d.ts +0 -32
- package/packages/core/dist/plugins/secure-audit.d.ts.map +0 -1
- package/packages/core/dist/plugins/secure-audit.js +0 -139
- package/packages/core/dist/plugins/secure-audit.js.map +0 -1
- package/packages/core/dist/plugins/session-bookmarks.d.ts +0 -16
- package/packages/core/dist/plugins/session-bookmarks.d.ts.map +0 -1
- package/packages/core/dist/plugins/session-bookmarks.js +0 -90
- package/packages/core/dist/plugins/session-bookmarks.js.map +0 -1
- package/packages/core/dist/plugins/session-bridge.d.ts +0 -45
- package/packages/core/dist/plugins/session-bridge.d.ts.map +0 -1
- package/packages/core/dist/plugins/session-bridge.js +0 -578
- package/packages/core/dist/plugins/session-bridge.js.map +0 -1
- package/packages/core/dist/plugins/session-compare.d.ts +0 -34
- package/packages/core/dist/plugins/session-compare.d.ts.map +0 -1
- package/packages/core/dist/plugins/session-compare.js +0 -153
- package/packages/core/dist/plugins/session-compare.js.map +0 -1
- package/packages/core/dist/plugins/session-export.d.ts +0 -10
- package/packages/core/dist/plugins/session-export.d.ts.map +0 -1
- package/packages/core/dist/plugins/session-export.js +0 -93
- package/packages/core/dist/plugins/session-export.js.map +0 -1
- package/packages/core/dist/plugins/session-insights.d.ts +0 -44
- package/packages/core/dist/plugins/session-insights.d.ts.map +0 -1
- package/packages/core/dist/plugins/session-insights.js +0 -432
- package/packages/core/dist/plugins/session-insights.js.map +0 -1
- package/packages/core/dist/plugins/session-search.d.ts +0 -21
- package/packages/core/dist/plugins/session-search.d.ts.map +0 -1
- package/packages/core/dist/plugins/session-search.js +0 -125
- package/packages/core/dist/plugins/session-search.js.map +0 -1
- package/packages/core/dist/plugins/session.d.ts +0 -15
- package/packages/core/dist/plugins/session.d.ts.map +0 -1
- package/packages/core/dist/plugins/session.js +0 -29
- package/packages/core/dist/plugins/session.js.map +0 -1
- package/packages/core/dist/plugins/skill-catalog.d.ts +0 -27
- package/packages/core/dist/plugins/skill-catalog.d.ts.map +0 -1
- package/packages/core/dist/plugins/skill-catalog.js +0 -98
- package/packages/core/dist/plugins/skill-catalog.js.map +0 -1
- package/packages/core/dist/plugins/skill-guard.d.ts +0 -27
- package/packages/core/dist/plugins/skill-guard.d.ts.map +0 -1
- package/packages/core/dist/plugins/skill-guard.js +0 -319
- package/packages/core/dist/plugins/skill-guard.js.map +0 -1
- package/packages/core/dist/plugins/sql-lens-worker.d.ts +0 -2
- package/packages/core/dist/plugins/sql-lens-worker.d.ts.map +0 -1
- package/packages/core/dist/plugins/sql-lens-worker.js +0 -206
- package/packages/core/dist/plugins/sql-lens-worker.js.map +0 -1
- package/packages/core/dist/plugins/sql-lens.d.ts +0 -14
- package/packages/core/dist/plugins/sql-lens.d.ts.map +0 -1
- package/packages/core/dist/plugins/sql-lens.js +0 -318
- package/packages/core/dist/plugins/sql-lens.js.map +0 -1
- package/packages/core/dist/plugins/stdio.d.ts +0 -11
- package/packages/core/dist/plugins/stdio.d.ts.map +0 -1
- package/packages/core/dist/plugins/stdio.js +0 -80
- package/packages/core/dist/plugins/stdio.js.map +0 -1
- package/packages/core/dist/plugins/synapse.d.ts +0 -38
- package/packages/core/dist/plugins/synapse.d.ts.map +0 -1
- package/packages/core/dist/plugins/synapse.js +0 -101
- package/packages/core/dist/plugins/synapse.js.map +0 -1
- package/packages/core/dist/plugins/tab-manager.d.ts +0 -9
- package/packages/core/dist/plugins/tab-manager.d.ts.map +0 -1
- package/packages/core/dist/plugins/tab-manager.js +0 -240
- package/packages/core/dist/plugins/tab-manager.js.map +0 -1
- package/packages/core/dist/plugins/taskboard.d.ts +0 -15
- package/packages/core/dist/plugins/taskboard.d.ts.map +0 -1
- package/packages/core/dist/plugins/taskboard.js +0 -375
- package/packages/core/dist/plugins/taskboard.js.map +0 -1
- package/packages/core/dist/plugins/telemetry-blocker.d.ts +0 -11
- package/packages/core/dist/plugins/telemetry-blocker.d.ts.map +0 -1
- package/packages/core/dist/plugins/telemetry-blocker.js +0 -76
- package/packages/core/dist/plugins/telemetry-blocker.js.map +0 -1
- package/packages/core/dist/plugins/test-harness.d.ts +0 -14
- package/packages/core/dist/plugins/test-harness.d.ts.map +0 -1
- package/packages/core/dist/plugins/test-harness.js +0 -276
- package/packages/core/dist/plugins/test-harness.js.map +0 -1
- package/packages/core/dist/plugins/theme-studio.d.ts +0 -29
- package/packages/core/dist/plugins/theme-studio.d.ts.map +0 -1
- package/packages/core/dist/plugins/theme-studio.js +0 -143
- package/packages/core/dist/plugins/theme-studio.js.map +0 -1
- package/packages/core/dist/plugins/token-guard.d.ts +0 -15
- package/packages/core/dist/plugins/token-guard.d.ts.map +0 -1
- package/packages/core/dist/plugins/token-guard.js +0 -210
- package/packages/core/dist/plugins/token-guard.js.map +0 -1
- package/packages/core/dist/plugins/tools.d.ts +0 -13
- package/packages/core/dist/plugins/tools.d.ts.map +0 -1
- package/packages/core/dist/plugins/tools.js +0 -23
- package/packages/core/dist/plugins/tools.js.map +0 -1
- package/packages/core/dist/plugins/turn-rewind.d.ts +0 -36
- package/packages/core/dist/plugins/turn-rewind.d.ts.map +0 -1
- package/packages/core/dist/plugins/turn-rewind.js +0 -378
- package/packages/core/dist/plugins/turn-rewind.js.map +0 -1
- package/packages/core/dist/plugins/undo-savepoint.d.ts +0 -17
- package/packages/core/dist/plugins/undo-savepoint.d.ts.map +0 -1
- package/packages/core/dist/plugins/undo-savepoint.js +0 -353
- package/packages/core/dist/plugins/undo-savepoint.js.map +0 -1
- package/packages/core/dist/plugins/vision-toolkit.d.ts +0 -36
- package/packages/core/dist/plugins/vision-toolkit.d.ts.map +0 -1
- package/packages/core/dist/plugins/vision-toolkit.js +0 -468
- package/packages/core/dist/plugins/vision-toolkit.js.map +0 -1
- package/packages/core/dist/plugins/web-research.d.ts +0 -17
- package/packages/core/dist/plugins/web-research.d.ts.map +0 -1
- package/packages/core/dist/plugins/web-research.js +0 -284
- package/packages/core/dist/plugins/web-research.js.map +0 -1
- package/packages/core/dist/plugins/workspace-navigator.d.ts +0 -42
- package/packages/core/dist/plugins/workspace-navigator.d.ts.map +0 -1
- package/packages/core/dist/plugins/workspace-navigator.js +0 -168
- package/packages/core/dist/plugins/workspace-navigator.js.map +0 -1
- package/packages/core/dist/plugins/workspace-search.d.ts +0 -15
- package/packages/core/dist/plugins/workspace-search.d.ts.map +0 -1
- package/packages/core/dist/plugins/workspace-search.js +0 -167
- package/packages/core/dist/plugins/workspace-search.js.map +0 -1
- package/packages/core/dist/plugins/yaml-validator.d.ts +0 -9
- package/packages/core/dist/plugins/yaml-validator.d.ts.map +0 -1
- package/packages/core/dist/plugins/yaml-validator.js +0 -203
- package/packages/core/dist/plugins/yaml-validator.js.map +0 -1
- package/packages/core/dist/profile.d.ts +0 -9
- package/packages/core/dist/profile.d.ts.map +0 -1
- package/packages/core/dist/profile.js +0 -33
- package/packages/core/dist/profile.js.map +0 -1
- package/packages/core/dist/runtime.d.ts +0 -16
- package/packages/core/dist/runtime.d.ts.map +0 -1
- package/packages/core/dist/runtime.js +0 -47
- package/packages/core/dist/runtime.js.map +0 -1
- package/packages/core/dist/services.d.ts +0 -118
- package/packages/core/dist/services.d.ts.map +0 -1
- package/packages/core/dist/services.js +0 -115
- package/packages/core/dist/services.js.map +0 -1
- package/packages/core/dist/stdio.d.ts +0 -37
- package/packages/core/dist/stdio.d.ts.map +0 -1
- package/packages/core/dist/stdio.js +0 -356
- package/packages/core/dist/stdio.js.map +0 -1
- package/packages/core/dist/workspace-path.d.ts +0 -13
- package/packages/core/dist/workspace-path.d.ts.map +0 -1
- package/packages/core/dist/workspace-path.js +0 -71
- package/packages/core/dist/workspace-path.js.map +0 -1
- package/packages/core/package.json +0 -42
- package/packages/core/profiles/default/cordis.yml +0 -122
- package/packages/core/profiles/development/cordis.yml +0 -47
- package/packages/core/src/atomic-write.ts +0 -45
- package/packages/core/src/boot.ts +0 -255
- package/packages/core/src/bounded-file.ts +0 -41
- package/packages/core/src/config.ts +0 -24
- package/packages/core/src/context.ts +0 -3
- package/packages/core/src/cordis-timer.ts +0 -107
- package/packages/core/src/http.ts +0 -32
- package/packages/core/src/index.ts +0 -8
- package/packages/core/src/plugins/agent-teams.ts +0 -1191
- package/packages/core/src/plugins/anchored-standard.ts +0 -115
- package/packages/core/src/plugins/annotation.ts +0 -123
- package/packages/core/src/plugins/archify.ts +0 -171
- package/packages/core/src/plugins/at-file.ts +0 -138
- package/packages/core/src/plugins/auto-mode.ts +0 -190
- package/packages/core/src/plugins/better-sidebar.ts +0 -128
- package/packages/core/src/plugins/browser-fetch.ts +0 -362
- package/packages/core/src/plugins/browser-session.ts +0 -606
- package/packages/core/src/plugins/canvas-draw.ts +0 -143
- package/packages/core/src/plugins/change-verifier.ts +0 -103
- package/packages/core/src/plugins/cleaner.ts +0 -363
- package/packages/core/src/plugins/cli-notifier.ts +0 -194
- package/packages/core/src/plugins/code2skill.ts +0 -237
- package/packages/core/src/plugins/colleague-skill.ts +0 -147
- package/packages/core/src/plugins/context-doctor.ts +0 -487
- package/packages/core/src/plugins/context.ts +0 -227
- package/packages/core/src/plugins/cost-meter.ts +0 -478
- package/packages/core/src/plugins/dependency-checker.ts +0 -578
- package/packages/core/src/plugins/docker-sandbox.ts +0 -336
- package/packages/core/src/plugins/fail-logger.ts +0 -202
- package/packages/core/src/plugins/genui.ts +0 -150
- package/packages/core/src/plugins/git-time-capsule.ts +0 -466
- package/packages/core/src/plugins/graph-memory.ts +0 -667
- package/packages/core/src/plugins/history-compressor.ts +0 -98
- package/packages/core/src/plugins/hol-guard.ts +0 -171
- package/packages/core/src/plugins/i18n-pair.ts +0 -326
- package/packages/core/src/plugins/image-compressor.ts +0 -217
- package/packages/core/src/plugins/llm-verifier.ts +0 -182
- package/packages/core/src/plugins/mcp-client.ts +0 -1379
- package/packages/core/src/plugins/mcp-panel.ts +0 -206
- package/packages/core/src/plugins/memory.ts +0 -381
- package/packages/core/src/plugins/mirage-bridge.ts +0 -191
- package/packages/core/src/plugins/mock-server.ts +0 -189
- package/packages/core/src/plugins/model.ts +0 -18
- package/packages/core/src/plugins/models.ts +0 -43
- package/packages/core/src/plugins/modlens.ts +0 -497
- package/packages/core/src/plugins/module-search.ts +0 -222
- package/packages/core/src/plugins/obsidian-sync.ts +0 -94
- package/packages/core/src/plugins/openpets.ts +0 -260
- package/packages/core/src/plugins/plan-execute.ts +0 -104
- package/packages/core/src/plugins/plugin-check.ts +0 -316
- package/packages/core/src/plugins/plugin-dev.ts +0 -191
- package/packages/core/src/plugins/plugin-finder.ts +0 -215
- package/packages/core/src/plugins/plugin-radar.ts +0 -270
- package/packages/core/src/plugins/plugin-stars.ts +0 -377
- package/packages/core/src/plugins/prompt-guard.ts +0 -161
- package/packages/core/src/plugins/prompt-library.ts +0 -171
- package/packages/core/src/plugins/readme-gen.ts +0 -544
- package/packages/core/src/plugins/recall-unread.ts +0 -486
- package/packages/core/src/plugins/resources.ts +0 -146
- package/packages/core/src/plugins/reverse-skill.ts +0 -83
- package/packages/core/src/plugins/reviewer-bot.ts +0 -164
- package/packages/core/src/plugins/runtime-doctor.ts +0 -140
- package/packages/core/src/plugins/runtime.ts +0 -171
- package/packages/core/src/plugins/secure-audit.ts +0 -167
- package/packages/core/src/plugins/session-bookmarks.ts +0 -95
- package/packages/core/src/plugins/session-bridge.ts +0 -614
- package/packages/core/src/plugins/session-compare.ts +0 -186
- package/packages/core/src/plugins/session-export.ts +0 -102
- package/packages/core/src/plugins/session-insights.ts +0 -470
- package/packages/core/src/plugins/session-search.ts +0 -129
- package/packages/core/src/plugins/session.ts +0 -40
- package/packages/core/src/plugins/skill-catalog.ts +0 -122
- package/packages/core/src/plugins/skill-guard.ts +0 -345
- package/packages/core/src/plugins/sql-lens-worker.ts +0 -202
- package/packages/core/src/plugins/sql-lens.ts +0 -344
- package/packages/core/src/plugins/stdio.ts +0 -77
- package/packages/core/src/plugins/synapse.ts +0 -137
- package/packages/core/src/plugins/tab-manager.ts +0 -233
- package/packages/core/src/plugins/taskboard.ts +0 -446
- package/packages/core/src/plugins/telemetry-blocker.ts +0 -78
- package/packages/core/src/plugins/test-harness.ts +0 -300
- package/packages/core/src/plugins/theme-studio.ts +0 -170
- package/packages/core/src/plugins/token-guard.ts +0 -224
- package/packages/core/src/plugins/tools.ts +0 -29
- package/packages/core/src/plugins/turn-rewind.ts +0 -400
- package/packages/core/src/plugins/undo-savepoint.ts +0 -385
- package/packages/core/src/plugins/vision-toolkit.ts +0 -510
- package/packages/core/src/plugins/web-research.ts +0 -301
- package/packages/core/src/plugins/workspace-navigator.ts +0 -189
- package/packages/core/src/plugins/workspace-search.ts +0 -177
- package/packages/core/src/plugins/yaml-validator.ts +0 -216
- package/packages/core/src/profile.ts +0 -37
- package/packages/core/src/runtime.ts +0 -52
- package/packages/core/src/services.ts +0 -232
- package/packages/core/src/stdio.ts +0 -355
- package/packages/core/src/workspace-path.ts +0 -79
- package/packages/core/test/agent-teams.test.ts +0 -517
- package/packages/core/test/anchored-standard.test.ts +0 -60
- package/packages/core/test/annotation.test.ts +0 -69
- package/packages/core/test/archify.test.ts +0 -244
- package/packages/core/test/at-file.test.ts +0 -666
- package/packages/core/test/atomic-write.test.ts +0 -52
- package/packages/core/test/auto-mode.test.ts +0 -629
- package/packages/core/test/better-sidebar.test.ts +0 -232
- package/packages/core/test/boot.test.ts +0 -265
- package/packages/core/test/bounded-file.test.ts +0 -55
- package/packages/core/test/browser-fetch-rebinding.test.ts +0 -93
- package/packages/core/test/browser-fetch.test.ts +0 -844
- package/packages/core/test/browser-session.test.ts +0 -1236
- package/packages/core/test/canvas-draw.test.ts +0 -164
- package/packages/core/test/change-verifier.test.ts +0 -200
- package/packages/core/test/cleaner.test.ts +0 -316
- package/packages/core/test/cli-notifier.test.ts +0 -235
- package/packages/core/test/code2skill.test.ts +0 -264
- package/packages/core/test/colleague-skill.test.ts +0 -241
- package/packages/core/test/config.test.ts +0 -147
- package/packages/core/test/context-doctor.test.ts +0 -627
- package/packages/core/test/context-insights.test.ts +0 -396
- package/packages/core/test/cordis-timer.test.ts +0 -147
- package/packages/core/test/cost-meter.test.ts +0 -362
- package/packages/core/test/dependency-checker.test.ts +0 -633
- package/packages/core/test/docker-sandbox.test.ts +0 -170
- package/packages/core/test/fail-logger.test.ts +0 -363
- package/packages/core/test/genui.test.ts +0 -162
- package/packages/core/test/git-time-capsule.test.ts +0 -1476
- package/packages/core/test/graph-memory.test.ts +0 -508
- package/packages/core/test/history-compressor.test.ts +0 -47
- package/packages/core/test/hol-guard.test.ts +0 -61
- package/packages/core/test/http.test.ts +0 -36
- package/packages/core/test/i18n-pair.test.ts +0 -367
- package/packages/core/test/image-compressor.test.ts +0 -59
- package/packages/core/test/llm-verifier.test.ts +0 -76
- package/packages/core/test/mcp-client.test.ts +0 -1037
- package/packages/core/test/mcp-panel.test.ts +0 -91
- package/packages/core/test/memory.test.ts +0 -125
- package/packages/core/test/mirage-bridge.test.ts +0 -58
- package/packages/core/test/mock-server.test.ts +0 -63
- package/packages/core/test/model.test.ts +0 -62
- package/packages/core/test/models.test.ts +0 -85
- package/packages/core/test/modlens.test.ts +0 -615
- package/packages/core/test/module-search.test.ts +0 -98
- package/packages/core/test/obsidian-sync.test.ts +0 -57
- package/packages/core/test/openpets.test.ts +0 -273
- package/packages/core/test/plan-execute.test.ts +0 -86
- package/packages/core/test/plugin-check.test.ts +0 -16
- package/packages/core/test/plugin-dev.test.ts +0 -246
- package/packages/core/test/plugin-finder.test.ts +0 -105
- package/packages/core/test/plugin-radar.test.ts +0 -87
- package/packages/core/test/plugin-stars.test.ts +0 -480
- package/packages/core/test/profile.test.ts +0 -39
- package/packages/core/test/profiles.integration.test.ts +0 -576
- package/packages/core/test/prompt-guard.test.ts +0 -78
- package/packages/core/test/prompt-library.test.ts +0 -56
- package/packages/core/test/readme-gen.test.ts +0 -445
- package/packages/core/test/recall-unread.test.ts +0 -592
- package/packages/core/test/registry.test.ts +0 -64
- package/packages/core/test/resources.test.ts +0 -310
- package/packages/core/test/reverse-skill.test.ts +0 -40
- package/packages/core/test/reviewer-bot.test.ts +0 -55
- package/packages/core/test/runtime-doctor.test.ts +0 -55
- package/packages/core/test/runtime-fixture.ts +0 -55
- package/packages/core/test/runtime.test.ts +0 -313
- package/packages/core/test/secure-audit.test.ts +0 -29
- package/packages/core/test/services.test.ts +0 -4805
- package/packages/core/test/session-bookmarks.test.ts +0 -62
- package/packages/core/test/session-bridge.test.ts +0 -411
- package/packages/core/test/session-compare.test.ts +0 -94
- package/packages/core/test/session-export.test.ts +0 -54
- package/packages/core/test/session-insights.test.ts +0 -486
- package/packages/core/test/session-search.test.ts +0 -30
- package/packages/core/test/session.test.ts +0 -153
- package/packages/core/test/skill-catalog.test.ts +0 -18
- package/packages/core/test/skill-guard.test.ts +0 -280
- package/packages/core/test/sql-lens.test.ts +0 -244
- package/packages/core/test/stdio-args.test.ts +0 -661
- package/packages/core/test/stdio.test.ts +0 -246
- package/packages/core/test/synapse.test.ts +0 -67
- package/packages/core/test/tab-manager.test.ts +0 -58
- package/packages/core/test/taskboard.test.ts +0 -73
- package/packages/core/test/telemetry-blocker.test.ts +0 -61
- package/packages/core/test/test-harness.test.ts +0 -297
- package/packages/core/test/theme-studio.test.ts +0 -39
- package/packages/core/test/token-guard.test.ts +0 -395
- package/packages/core/test/tools.test.ts +0 -118
- package/packages/core/test/turn-rewind.test.ts +0 -549
- package/packages/core/test/undo-savepoint.test.ts +0 -222
- package/packages/core/test/vision-toolkit.test.ts +0 -511
- package/packages/core/test/web-research.test.ts +0 -63
- package/packages/core/test/workspace-git-status.test.ts +0 -54
- package/packages/core/test/workspace-navigator.test.ts +0 -43
- package/packages/core/test/workspace-path.test.ts +0 -34
- package/packages/core/test/workspace-search.test.ts +0 -88
- package/packages/core/test/yaml-validator.test.ts +0 -195
- package/packages/core/tsconfig.build.json +0 -8
- package/packages/core/tsconfig.json +0 -7
|
@@ -1,1288 +0,0 @@
|
|
|
1
|
-
import { spawn } from "node:child_process";
|
|
2
|
-
import z from "@deepseek-ai/schemastery";
|
|
3
|
-
import { Type } from "@earendil-works/pi-ai";
|
|
4
|
-
import { defineTool } from "@earendil-works/pi-coding-agent";
|
|
5
|
-
import packageMetadata from "../../package.json" with { type: "json" };
|
|
6
|
-
import { assertKnownConfigKeys } from "../config.js";
|
|
7
|
-
export const Config = z.object({
|
|
8
|
-
servers: z.array(z.object({ id: z.string(), command: z.array(z.string()), autoStart: z.boolean().default(false) })).default([]),
|
|
9
|
-
});
|
|
10
|
-
const shellCommands = new Set(["sh", "bash", "zsh", "fish", "cmd", "powershell", "pwsh"]);
|
|
11
|
-
const maxCommandArgs = 32;
|
|
12
|
-
const maxArgumentBytes = 4096;
|
|
13
|
-
const maxToolArgumentsBytes = 64 * 1024;
|
|
14
|
-
const maxToolArgumentDepth = 32;
|
|
15
|
-
const maxResponseBytes = 1024 * 1024;
|
|
16
|
-
const maxInventoryItems = 1000;
|
|
17
|
-
const maxPaginationPages = 100;
|
|
18
|
-
const maxManagedServers = 128;
|
|
19
|
-
const maxStderrBytes = 8192;
|
|
20
|
-
const requestTimeoutMs = 30_000;
|
|
21
|
-
const maxPanelItems = 20;
|
|
22
|
-
const clientVersion = packageMetadata.version;
|
|
23
|
-
const disposedMessage = "MCP client plugin disposed";
|
|
24
|
-
const connectionParameterNames = new Set(["command", "serverId"]);
|
|
25
|
-
const callParameterNames = new Set(["command", "serverId", "name", "arguments"]);
|
|
26
|
-
const stopParameterNames = new Set(["serverId"]);
|
|
27
|
-
const readResourceParameterNames = new Set(["command", "serverId", "uri"]);
|
|
28
|
-
const noParameterNames = new Set();
|
|
29
|
-
const utf8Decoder = new TextDecoder("utf-8", { fatal: true });
|
|
30
|
-
function decodeFrame(value) {
|
|
31
|
-
try {
|
|
32
|
-
return utf8Decoder.decode(value);
|
|
33
|
-
}
|
|
34
|
-
catch (error) {
|
|
35
|
-
throw new Error("MCP server response must contain valid UTF-8", { cause: error });
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
function inspectParameters(value, allowed) {
|
|
39
|
-
if (value === null || typeof value !== "object" || Array.isArray(value))
|
|
40
|
-
throw new Error("MCP parameters must be an object");
|
|
41
|
-
try {
|
|
42
|
-
const prototype = Object.getPrototypeOf(value);
|
|
43
|
-
if (prototype !== Object.prototype && prototype !== null)
|
|
44
|
-
throw new Error("MCP parameters must be a plain object");
|
|
45
|
-
const descriptors = Object.getOwnPropertyDescriptors(value);
|
|
46
|
-
if (Reflect.ownKeys(descriptors).some((key) => typeof key !== "string" || !allowed.has(key)))
|
|
47
|
-
throw new Error("MCP parameters contain an unknown property");
|
|
48
|
-
if (Object.values(descriptors).some((descriptor) => !("value" in descriptor)))
|
|
49
|
-
throw new Error("MCP parameters must use data properties");
|
|
50
|
-
return Object.fromEntries(Object.entries(descriptors).map(([key, descriptor]) => [key, descriptor.value]));
|
|
51
|
-
}
|
|
52
|
-
catch (error) {
|
|
53
|
-
if (error instanceof Error &&
|
|
54
|
-
/^(?:MCP parameters must be a plain object|MCP parameters contain an unknown property|MCP parameters must use data properties)$/u.test(error.message))
|
|
55
|
-
throw error;
|
|
56
|
-
throw new Error("MCP parameters must be an accessible plain object", { cause: error });
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
function optionalString(value, field) {
|
|
60
|
-
if (value === undefined)
|
|
61
|
-
return undefined;
|
|
62
|
-
if (typeof value !== "string")
|
|
63
|
-
throw new Error(`MCP ${field} must be a string`);
|
|
64
|
-
return value;
|
|
65
|
-
}
|
|
66
|
-
function requiredString(value, field) {
|
|
67
|
-
const result = optionalString(value, field);
|
|
68
|
-
if (result === undefined)
|
|
69
|
-
throw new Error(`MCP ${field} is required`);
|
|
70
|
-
return result;
|
|
71
|
-
}
|
|
72
|
-
function serverIdValue(value, required = false) {
|
|
73
|
-
const result = optionalString(value, "serverId");
|
|
74
|
-
if (result === undefined) {
|
|
75
|
-
if (required)
|
|
76
|
-
throw new Error("MCP serverId is required");
|
|
77
|
-
return undefined;
|
|
78
|
-
}
|
|
79
|
-
if (!/^[a-z0-9][a-z0-9_-]{0,63}$/iu.test(result))
|
|
80
|
-
throw new Error("MCP serverId must use 1-64 letters, numbers, _ or -");
|
|
81
|
-
return result;
|
|
82
|
-
}
|
|
83
|
-
function boundedInput(value, field, maximum) {
|
|
84
|
-
if (value.includes("\0"))
|
|
85
|
-
throw new Error(`MCP ${field} must not contain NUL characters`);
|
|
86
|
-
if (value.length === 0 || value.length > maximum)
|
|
87
|
-
throw new Error(`MCP ${field} must contain 1-${maximum} characters`);
|
|
88
|
-
return value;
|
|
89
|
-
}
|
|
90
|
-
function rejectAmbiguousTarget(command, serverId) {
|
|
91
|
-
if (command !== undefined && serverId !== undefined)
|
|
92
|
-
throw new Error("Provide either command or serverId, not both");
|
|
93
|
-
}
|
|
94
|
-
function optionalCommand(value) {
|
|
95
|
-
if (value === undefined)
|
|
96
|
-
return undefined;
|
|
97
|
-
if (!Array.isArray(value))
|
|
98
|
-
throw new Error("MCP command must be an array of strings");
|
|
99
|
-
const descriptors = Object.getOwnPropertyDescriptors(value);
|
|
100
|
-
const length = descriptors.length?.value;
|
|
101
|
-
if (typeof length !== "number" || !Number.isSafeInteger(length) || length < 0)
|
|
102
|
-
throw new Error("MCP command must be a dense array of string data properties");
|
|
103
|
-
const result = [];
|
|
104
|
-
for (let index = 0; index < length; index += 1) {
|
|
105
|
-
const descriptor = descriptors[String(index)];
|
|
106
|
-
if (descriptor === undefined || !("value" in descriptor) || typeof descriptor.value !== "string")
|
|
107
|
-
throw new Error("MCP command must be a dense array of string data properties");
|
|
108
|
-
result.push(descriptor.value);
|
|
109
|
-
}
|
|
110
|
-
if (Reflect.ownKeys(descriptors).some((key) => typeof key !== "string" || (key !== "length" && !/^(0|[1-9]\d*)$/u.test(key))))
|
|
111
|
-
throw new Error("MCP command contains an unknown property");
|
|
112
|
-
return result;
|
|
113
|
-
}
|
|
114
|
-
function jsonObject(value) {
|
|
115
|
-
if (value === undefined)
|
|
116
|
-
return {};
|
|
117
|
-
if (value === null || typeof value !== "object" || Array.isArray(value))
|
|
118
|
-
throw new Error("MCP arguments must be a JSON object");
|
|
119
|
-
const result = cloneJsonValue(value, new Set(), 0);
|
|
120
|
-
if (Buffer.byteLength(JSON.stringify(result), "utf8") > maxToolArgumentsBytes)
|
|
121
|
-
throw new Error("MCP arguments cannot exceed 64 KiB");
|
|
122
|
-
return result;
|
|
123
|
-
}
|
|
124
|
-
function promptArguments(value) {
|
|
125
|
-
const result = jsonObject(value);
|
|
126
|
-
if (Object.values(result).some((item) => typeof item !== "string"))
|
|
127
|
-
throw new Error("MCP prompt arguments must contain string values");
|
|
128
|
-
return result;
|
|
129
|
-
}
|
|
130
|
-
function cloneJsonValue(value, ancestors, depth) {
|
|
131
|
-
if (value === null || typeof value === "string" || typeof value === "boolean")
|
|
132
|
-
return value;
|
|
133
|
-
if (typeof value === "number") {
|
|
134
|
-
if (!Number.isFinite(value))
|
|
135
|
-
throw new Error("MCP arguments must contain finite JSON numbers");
|
|
136
|
-
return value;
|
|
137
|
-
}
|
|
138
|
-
if (typeof value !== "object")
|
|
139
|
-
throw new Error("MCP arguments must contain only JSON values");
|
|
140
|
-
if (depth > maxToolArgumentDepth)
|
|
141
|
-
throw new Error(`MCP arguments cannot exceed ${maxToolArgumentDepth} levels of nesting`);
|
|
142
|
-
if (ancestors.has(value))
|
|
143
|
-
throw new Error("MCP arguments must not contain circular references");
|
|
144
|
-
ancestors.add(value);
|
|
145
|
-
try {
|
|
146
|
-
const descriptors = Object.getOwnPropertyDescriptors(value);
|
|
147
|
-
if (Object.values(descriptors).some((descriptor) => !("value" in descriptor)))
|
|
148
|
-
throw new Error("MCP arguments must use data properties");
|
|
149
|
-
if (Reflect.ownKeys(descriptors).some((key) => typeof key !== "string"))
|
|
150
|
-
throw new Error("MCP arguments cannot contain symbol properties");
|
|
151
|
-
if (Array.isArray(value)) {
|
|
152
|
-
const length = descriptors.length?.value;
|
|
153
|
-
if (typeof length !== "number" || !Number.isSafeInteger(length) || length < 0)
|
|
154
|
-
throw new Error("MCP argument arrays must be dense");
|
|
155
|
-
const result = [];
|
|
156
|
-
for (let index = 0; index < length; index += 1) {
|
|
157
|
-
const descriptor = descriptors[String(index)];
|
|
158
|
-
if (descriptor === undefined || !("value" in descriptor))
|
|
159
|
-
throw new Error("MCP argument arrays must be dense");
|
|
160
|
-
result.push(cloneJsonValue(descriptor.value, ancestors, depth + 1));
|
|
161
|
-
}
|
|
162
|
-
if (Object.keys(descriptors).some((key) => key !== "length" && !/^(0|[1-9]\d*)$/u.test(key)))
|
|
163
|
-
throw new Error("MCP argument arrays contain an unknown property");
|
|
164
|
-
return result;
|
|
165
|
-
}
|
|
166
|
-
const result = {};
|
|
167
|
-
for (const [key, descriptor] of Object.entries(descriptors)) {
|
|
168
|
-
if (descriptor.enumerable !== true)
|
|
169
|
-
continue;
|
|
170
|
-
result[key] = cloneJsonValue(descriptor.value, ancestors, depth + 1);
|
|
171
|
-
}
|
|
172
|
-
return result;
|
|
173
|
-
}
|
|
174
|
-
finally {
|
|
175
|
-
ancestors.delete(value);
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
function executionSignal(signal, lifecycle) {
|
|
179
|
-
return signal === undefined ? lifecycle : AbortSignal.any([signal, lifecycle]);
|
|
180
|
-
}
|
|
181
|
-
function clone(value) {
|
|
182
|
-
return structuredClone(value);
|
|
183
|
-
}
|
|
184
|
-
function appendByteTail(current, chunk, maximum) {
|
|
185
|
-
const combined = Buffer.concat([current, chunk]);
|
|
186
|
-
return combined.byteLength <= maximum ? combined : combined.subarray(combined.byteLength - maximum);
|
|
187
|
-
}
|
|
188
|
-
function toolInventory(value) {
|
|
189
|
-
if (!Array.isArray(value))
|
|
190
|
-
throw new Error("MCP server returned an invalid MCP tools inventory");
|
|
191
|
-
if (value.length > maxInventoryItems)
|
|
192
|
-
throw new Error(`MCP remote inventory cannot exceed ${maxInventoryItems} items`);
|
|
193
|
-
return value.map((item) => {
|
|
194
|
-
if (item === null || typeof item !== "object" || Array.isArray(item))
|
|
195
|
-
throw new Error("MCP server returned an invalid MCP tool descriptor");
|
|
196
|
-
const raw = item;
|
|
197
|
-
if (typeof raw.name !== "string" || raw.name.length === 0 || raw.name.length > 512 || raw.name.includes("\0"))
|
|
198
|
-
throw new Error("MCP server returned an invalid MCP tool descriptor");
|
|
199
|
-
if (raw.description !== undefined && (typeof raw.description !== "string" || raw.description.length > 8192))
|
|
200
|
-
throw new Error("MCP server returned an invalid MCP tool descriptor");
|
|
201
|
-
if (raw.inputSchema === null || typeof raw.inputSchema !== "object" || Array.isArray(raw.inputSchema))
|
|
202
|
-
throw new Error("MCP server returned an invalid MCP tool descriptor");
|
|
203
|
-
return {
|
|
204
|
-
name: raw.name,
|
|
205
|
-
...(raw.description === undefined ? {} : { description: raw.description }),
|
|
206
|
-
inputSchema: clone(raw.inputSchema),
|
|
207
|
-
};
|
|
208
|
-
});
|
|
209
|
-
}
|
|
210
|
-
function resourceInventory(value) {
|
|
211
|
-
if (!Array.isArray(value))
|
|
212
|
-
throw new Error("MCP server returned an invalid MCP resources inventory");
|
|
213
|
-
if (value.length > maxInventoryItems)
|
|
214
|
-
throw new Error(`MCP remote inventory cannot exceed ${maxInventoryItems} items`);
|
|
215
|
-
return value.map((item) => {
|
|
216
|
-
if (item === null || typeof item !== "object" || Array.isArray(item))
|
|
217
|
-
throw new Error("MCP server returned an invalid MCP resource descriptor");
|
|
218
|
-
const raw = item;
|
|
219
|
-
if (typeof raw.uri !== "string" || raw.uri.length === 0 || raw.uri.length > 4096 || raw.uri.includes("\0"))
|
|
220
|
-
throw new Error("MCP server returned an invalid MCP resource descriptor");
|
|
221
|
-
if (typeof raw.name !== "string" || raw.name.length === 0 || raw.name.length > 512 || raw.name.includes("\0"))
|
|
222
|
-
throw new Error("MCP server returned an invalid MCP resource descriptor");
|
|
223
|
-
if (raw.description !== undefined && (typeof raw.description !== "string" || raw.description.length > 8192))
|
|
224
|
-
throw new Error("MCP server returned an invalid MCP resource descriptor");
|
|
225
|
-
if (raw.mimeType !== undefined && (typeof raw.mimeType !== "string" || raw.mimeType.length > 256))
|
|
226
|
-
throw new Error("MCP server returned an invalid MCP resource descriptor");
|
|
227
|
-
return {
|
|
228
|
-
uri: raw.uri,
|
|
229
|
-
name: raw.name,
|
|
230
|
-
...(raw.description === undefined ? {} : { description: raw.description }),
|
|
231
|
-
...(raw.mimeType === undefined ? {} : { mimeType: raw.mimeType }),
|
|
232
|
-
};
|
|
233
|
-
});
|
|
234
|
-
}
|
|
235
|
-
function promptInventory(value) {
|
|
236
|
-
if (!Array.isArray(value))
|
|
237
|
-
throw new Error("MCP server returned an invalid MCP prompts inventory");
|
|
238
|
-
if (value.length > maxInventoryItems)
|
|
239
|
-
throw new Error(`MCP remote inventory cannot exceed ${maxInventoryItems} items`);
|
|
240
|
-
return value.map((item) => {
|
|
241
|
-
if (item === null || typeof item !== "object" || Array.isArray(item))
|
|
242
|
-
throw new Error("MCP server returned an invalid MCP prompt descriptor");
|
|
243
|
-
const raw = item;
|
|
244
|
-
if (typeof raw.name !== "string" || raw.name.length === 0 || raw.name.length > 512 || raw.name.includes("\0"))
|
|
245
|
-
throw new Error("MCP server returned an invalid MCP prompt descriptor");
|
|
246
|
-
if (raw.description !== undefined && (typeof raw.description !== "string" || raw.description.length > 8192))
|
|
247
|
-
throw new Error("MCP server returned an invalid MCP prompt descriptor");
|
|
248
|
-
if (raw.arguments !== undefined && !Array.isArray(raw.arguments))
|
|
249
|
-
throw new Error("MCP server returned an invalid MCP prompt descriptor");
|
|
250
|
-
if (Array.isArray(raw.arguments) && raw.arguments.length > 128)
|
|
251
|
-
throw new Error("MCP server returned an invalid MCP prompt descriptor");
|
|
252
|
-
const argumentsValue = Array.isArray(raw.arguments)
|
|
253
|
-
? raw.arguments.map((argument) => {
|
|
254
|
-
if (argument === null || typeof argument !== "object" || Array.isArray(argument))
|
|
255
|
-
throw new Error("MCP server returned an invalid MCP prompt descriptor");
|
|
256
|
-
const candidate = argument;
|
|
257
|
-
if (typeof candidate.name !== "string" || candidate.name.length === 0 || candidate.name.length > 512)
|
|
258
|
-
throw new Error("MCP server returned an invalid MCP prompt descriptor");
|
|
259
|
-
if (candidate.description !== undefined && (typeof candidate.description !== "string" || candidate.description.length > 8192))
|
|
260
|
-
throw new Error("MCP server returned an invalid MCP prompt descriptor");
|
|
261
|
-
if (candidate.required !== undefined && typeof candidate.required !== "boolean")
|
|
262
|
-
throw new Error("MCP server returned an invalid MCP prompt descriptor");
|
|
263
|
-
return {
|
|
264
|
-
name: candidate.name,
|
|
265
|
-
...(candidate.description === undefined ? {} : { description: candidate.description }),
|
|
266
|
-
...(candidate.required === undefined ? {} : { required: candidate.required }),
|
|
267
|
-
};
|
|
268
|
-
})
|
|
269
|
-
: undefined;
|
|
270
|
-
return {
|
|
271
|
-
name: raw.name,
|
|
272
|
-
...(raw.description === undefined ? {} : { description: raw.description }),
|
|
273
|
-
...(argumentsValue === undefined ? {} : { arguments: argumentsValue }),
|
|
274
|
-
};
|
|
275
|
-
});
|
|
276
|
-
}
|
|
277
|
-
function paginationCursor(value) {
|
|
278
|
-
if (value === undefined)
|
|
279
|
-
return undefined;
|
|
280
|
-
if (typeof value !== "string" || value.length === 0 || value.length > 4096 || value.includes("\0"))
|
|
281
|
-
throw new Error("MCP server returned an invalid pagination cursor");
|
|
282
|
-
return value;
|
|
283
|
-
}
|
|
284
|
-
async function paginatedInventory(method, field, requestPage, validate) {
|
|
285
|
-
const result = [];
|
|
286
|
-
const seenCursors = new Set();
|
|
287
|
-
let cursor;
|
|
288
|
-
for (let page = 0; page < maxPaginationPages; page += 1) {
|
|
289
|
-
const response = await requestPage(cursor === undefined ? undefined : { cursor });
|
|
290
|
-
const pageItems = validate(response[field]);
|
|
291
|
-
if (result.length + pageItems.length > maxInventoryItems)
|
|
292
|
-
throw new Error(`MCP remote inventory cannot exceed ${maxInventoryItems} items`);
|
|
293
|
-
result.push(...pageItems);
|
|
294
|
-
const nextCursor = paginationCursor(response.nextCursor);
|
|
295
|
-
if (nextCursor === undefined)
|
|
296
|
-
return result;
|
|
297
|
-
if (seenCursors.has(nextCursor))
|
|
298
|
-
throw new Error(`MCP server repeated a pagination cursor for ${method}`);
|
|
299
|
-
seenCursors.add(nextCursor);
|
|
300
|
-
cursor = nextCursor;
|
|
301
|
-
}
|
|
302
|
-
throw new Error(`MCP ${method} pagination cannot exceed ${maxPaginationPages} pages`);
|
|
303
|
-
}
|
|
304
|
-
function requiredRemoteString(value, message, maximum = maxResponseBytes) {
|
|
305
|
-
if (typeof value !== "string" || value.length > maximum || value.includes("\0"))
|
|
306
|
-
throw new Error(message);
|
|
307
|
-
return value;
|
|
308
|
-
}
|
|
309
|
-
function base64RemoteString(value, message) {
|
|
310
|
-
const result = requiredRemoteString(value, message);
|
|
311
|
-
if (!/^(?:[A-Za-z\d+/]{4})*(?:[A-Za-z\d+/]{2}(?:==)?|[A-Za-z\d+/]{3}=?)?$/u.test(result))
|
|
312
|
-
throw new Error(message);
|
|
313
|
-
return result;
|
|
314
|
-
}
|
|
315
|
-
function toolResultContent(result) {
|
|
316
|
-
if (!Array.isArray(result.content) || result.content.length > maxInventoryItems)
|
|
317
|
-
throw new Error("MCP server returned invalid MCP tool result content");
|
|
318
|
-
if (result.isError !== undefined && typeof result.isError !== "boolean")
|
|
319
|
-
throw new Error("MCP server returned invalid MCP tool result content");
|
|
320
|
-
return result.content.map((item) => {
|
|
321
|
-
if (item === null || typeof item !== "object" || Array.isArray(item))
|
|
322
|
-
throw new Error("MCP server returned invalid MCP tool result content");
|
|
323
|
-
const raw = item;
|
|
324
|
-
if (raw.type === "text") {
|
|
325
|
-
return { type: "text", text: requiredRemoteString(raw.text, "MCP server returned invalid MCP tool result content") };
|
|
326
|
-
}
|
|
327
|
-
if (raw.type === "image") {
|
|
328
|
-
const data = base64RemoteString(raw.data, "MCP server returned invalid MCP tool result content");
|
|
329
|
-
const mimeType = requiredRemoteString(raw.mimeType, "MCP server returned invalid MCP tool result content", 256);
|
|
330
|
-
if (!mimeType.startsWith("image/"))
|
|
331
|
-
throw new Error("MCP server returned invalid MCP tool result content");
|
|
332
|
-
return { type: "image", data, mimeType };
|
|
333
|
-
}
|
|
334
|
-
if (raw.type === "audio") {
|
|
335
|
-
const mimeType = requiredRemoteString(raw.mimeType, "MCP server returned invalid MCP tool result content", 256);
|
|
336
|
-
base64RemoteString(raw.data, "MCP server returned invalid MCP tool result content");
|
|
337
|
-
return { type: "text", text: `[MCP audio content omitted: ${mimeType}]` };
|
|
338
|
-
}
|
|
339
|
-
if (raw.type === "resource") {
|
|
340
|
-
if (raw.resource === null || typeof raw.resource !== "object" || Array.isArray(raw.resource))
|
|
341
|
-
throw new Error("MCP server returned invalid MCP tool result content");
|
|
342
|
-
const resource = raw.resource;
|
|
343
|
-
const uri = requiredRemoteString(resource.uri, "MCP server returned invalid MCP tool result content", 4096);
|
|
344
|
-
if (typeof resource.text === "string")
|
|
345
|
-
return { type: "text", text: resource.text };
|
|
346
|
-
if (typeof resource.blob === "string") {
|
|
347
|
-
const blob = base64RemoteString(resource.blob, "MCP server returned invalid MCP tool result content");
|
|
348
|
-
const mimeType = resource.mimeType === undefined ? undefined : requiredRemoteString(resource.mimeType, "MCP server returned invalid MCP tool result content", 256);
|
|
349
|
-
return mimeType?.startsWith("image/") === true
|
|
350
|
-
? { type: "image", data: blob, mimeType }
|
|
351
|
-
: { type: "text", text: `[MCP binary resource omitted: ${uri} (${mimeType ?? "unknown MIME type"})]` };
|
|
352
|
-
}
|
|
353
|
-
throw new Error("MCP server returned invalid MCP tool result content");
|
|
354
|
-
}
|
|
355
|
-
if (raw.type === "resource_link") {
|
|
356
|
-
const uri = requiredRemoteString(raw.uri, "MCP server returned invalid MCP tool result content", 4096);
|
|
357
|
-
const name = raw.name === undefined ? uri : requiredRemoteString(raw.name, "MCP server returned invalid MCP tool result content", 512);
|
|
358
|
-
return { type: "text", text: `[MCP resource: ${name} — ${uri}]` };
|
|
359
|
-
}
|
|
360
|
-
throw new Error("MCP server returned invalid MCP tool result content");
|
|
361
|
-
});
|
|
362
|
-
}
|
|
363
|
-
function validateInitializeResult(result) {
|
|
364
|
-
if (result.protocolVersion !== "2025-06-18" ||
|
|
365
|
-
result.capabilities === null ||
|
|
366
|
-
typeof result.capabilities !== "object" ||
|
|
367
|
-
Array.isArray(result.capabilities) ||
|
|
368
|
-
result.serverInfo === null ||
|
|
369
|
-
typeof result.serverInfo !== "object" ||
|
|
370
|
-
Array.isArray(result.serverInfo))
|
|
371
|
-
throw new Error("MCP server returned an invalid MCP initialize result");
|
|
372
|
-
const serverInfo = result.serverInfo;
|
|
373
|
-
if (typeof serverInfo.name !== "string" ||
|
|
374
|
-
serverInfo.name.length === 0 ||
|
|
375
|
-
serverInfo.name.length > 512 ||
|
|
376
|
-
typeof serverInfo.version !== "string" ||
|
|
377
|
-
serverInfo.version.length === 0 ||
|
|
378
|
-
serverInfo.version.length > 512 ||
|
|
379
|
-
(result.instructions !== undefined && (typeof result.instructions !== "string" || result.instructions.length > 65_536)))
|
|
380
|
-
throw new Error("MCP server returned an invalid MCP initialize result");
|
|
381
|
-
}
|
|
382
|
-
function resourceResultContent(result) {
|
|
383
|
-
if (!Array.isArray(result.contents) || result.contents.length > maxInventoryItems)
|
|
384
|
-
throw new Error("MCP server returned invalid MCP resource contents");
|
|
385
|
-
return result.contents.map((item) => {
|
|
386
|
-
if (item === null || typeof item !== "object" || Array.isArray(item))
|
|
387
|
-
throw new Error("MCP server returned invalid MCP resource contents");
|
|
388
|
-
const raw = item;
|
|
389
|
-
const uri = requiredRemoteString(raw.uri, "MCP server returned invalid MCP resource contents", 4096);
|
|
390
|
-
if (typeof raw.text === "string")
|
|
391
|
-
return { type: "text", text: raw.text };
|
|
392
|
-
if (typeof raw.blob === "string") {
|
|
393
|
-
const blob = base64RemoteString(raw.blob, "MCP server returned invalid MCP resource contents");
|
|
394
|
-
const mimeType = raw.mimeType === undefined ? undefined : requiredRemoteString(raw.mimeType, "MCP server returned invalid MCP resource contents", 256);
|
|
395
|
-
return mimeType?.startsWith("image/") === true
|
|
396
|
-
? { type: "image", data: blob, mimeType }
|
|
397
|
-
: { type: "text", text: `[MCP binary resource omitted: ${uri} (${mimeType ?? "unknown MIME type"})]` };
|
|
398
|
-
}
|
|
399
|
-
throw new Error("MCP server returned invalid MCP resource contents");
|
|
400
|
-
});
|
|
401
|
-
}
|
|
402
|
-
function promptResultContent(result) {
|
|
403
|
-
if (result.description !== undefined && (typeof result.description !== "string" || result.description.length > 8192))
|
|
404
|
-
throw new Error("MCP server returned invalid MCP prompt messages");
|
|
405
|
-
if (!Array.isArray(result.messages) || result.messages.length > maxInventoryItems)
|
|
406
|
-
throw new Error("MCP server returned invalid MCP prompt messages");
|
|
407
|
-
return result.messages.flatMap((item) => {
|
|
408
|
-
if (item === null || typeof item !== "object" || Array.isArray(item))
|
|
409
|
-
throw new Error("MCP server returned invalid MCP prompt messages");
|
|
410
|
-
const raw = item;
|
|
411
|
-
const role = raw.role;
|
|
412
|
-
if (role !== "user" && role !== "assistant")
|
|
413
|
-
throw new Error("MCP server returned invalid MCP prompt messages");
|
|
414
|
-
const normalized = toolResultContent({ content: [raw.content] });
|
|
415
|
-
return normalized.flatMap((content) => content.type === "text" ? [{ type: "text", text: `[${role}]\n${content.text}` }] : [{ type: "text", text: `[${role}]` }, content]);
|
|
416
|
-
});
|
|
417
|
-
}
|
|
418
|
-
function validateCommand(command) {
|
|
419
|
-
if (command.length === 0)
|
|
420
|
-
throw new Error("MCP server command cannot be empty");
|
|
421
|
-
if (command.length > maxCommandArgs)
|
|
422
|
-
throw new Error(`MCP server command cannot exceed ${maxCommandArgs} arguments`);
|
|
423
|
-
if (command.some((part) => part.includes("\0")))
|
|
424
|
-
throw new Error("MCP server command arguments must not contain NUL characters");
|
|
425
|
-
if (command.some((part) => part.length === 0 || Buffer.byteLength(part) > maxArgumentBytes))
|
|
426
|
-
throw new Error("MCP server command contains an invalid argument");
|
|
427
|
-
const executable = executableName(command)
|
|
428
|
-
.toLowerCase()
|
|
429
|
-
.replace(/\.(?:exe|cmd|bat|com)$/u, "");
|
|
430
|
-
if (shellCommands.has(executable))
|
|
431
|
-
throw new Error("MCP shell wrappers are not allowed; pass an executable argv directly");
|
|
432
|
-
}
|
|
433
|
-
function executableName(command) {
|
|
434
|
-
return (command[0] ?? "").replaceAll("\\", "/").split("/").pop() ?? "";
|
|
435
|
-
}
|
|
436
|
-
function serverLabel(command) {
|
|
437
|
-
const count = Math.max(0, command.length - 1);
|
|
438
|
-
return `${executableName(command)}${count === 0 ? "" : ` (+${count} ${count === 1 ? "arg" : "args"})`}`;
|
|
439
|
-
}
|
|
440
|
-
function encodeMessage(message) {
|
|
441
|
-
return Buffer.from(`${JSON.stringify(message)}\n`, "utf8");
|
|
442
|
-
}
|
|
443
|
-
function waitForChildClose(child, timeoutMs) {
|
|
444
|
-
if (child.exitCode !== null || child.signalCode !== null)
|
|
445
|
-
return Promise.resolve(true);
|
|
446
|
-
return new Promise((resolve) => {
|
|
447
|
-
const onClose = () => finish(true);
|
|
448
|
-
const timer = setTimeout(() => finish(false), timeoutMs);
|
|
449
|
-
timer.unref();
|
|
450
|
-
const finish = (closed) => {
|
|
451
|
-
clearTimeout(timer);
|
|
452
|
-
child.off("close", onClose);
|
|
453
|
-
resolve(closed);
|
|
454
|
-
};
|
|
455
|
-
child.once("close", onClose);
|
|
456
|
-
});
|
|
457
|
-
}
|
|
458
|
-
async function terminateChild(child) {
|
|
459
|
-
if (!child.stdin.destroyed && !child.stdin.writableEnded)
|
|
460
|
-
child.stdin.end();
|
|
461
|
-
if (child.exitCode !== null || child.signalCode !== null)
|
|
462
|
-
return;
|
|
463
|
-
child.kill("SIGTERM");
|
|
464
|
-
if (await waitForChildClose(child, 250))
|
|
465
|
-
return;
|
|
466
|
-
child.kill("SIGKILL");
|
|
467
|
-
await waitForChildClose(child, 500);
|
|
468
|
-
}
|
|
469
|
-
function parseFrames(buffer) {
|
|
470
|
-
const messages = [];
|
|
471
|
-
let rest = buffer;
|
|
472
|
-
while (rest.length > 0) {
|
|
473
|
-
const separator = rest.indexOf("\r\n\r\n");
|
|
474
|
-
if (separator < 0 && /^content-length\s*:/i.test(rest.toString("ascii")))
|
|
475
|
-
break;
|
|
476
|
-
if (separator >= 0 && /^content-length\s*:/i.test(rest.subarray(0, separator).toString("ascii"))) {
|
|
477
|
-
const header = rest.subarray(0, separator).toString("ascii");
|
|
478
|
-
const match = header.match(/content-length\s*:\s*(\d+)/i);
|
|
479
|
-
if (match === null)
|
|
480
|
-
throw new Error("MCP server returned an invalid Content-Length header");
|
|
481
|
-
const length = Number(match[1]);
|
|
482
|
-
if (!Number.isSafeInteger(length) || length > maxResponseBytes)
|
|
483
|
-
throw new Error("MCP server response exceeded the 1 MiB limit");
|
|
484
|
-
const bodyStart = separator + 4;
|
|
485
|
-
if (rest.length < bodyStart + length)
|
|
486
|
-
break;
|
|
487
|
-
const body = decodeFrame(rest.subarray(bodyStart, bodyStart + length));
|
|
488
|
-
const message = JSON.parse(body);
|
|
489
|
-
if (typeof message === "object" && message !== null)
|
|
490
|
-
messages.push(message);
|
|
491
|
-
rest = rest.subarray(bodyStart + length);
|
|
492
|
-
continue;
|
|
493
|
-
}
|
|
494
|
-
const newline = rest.indexOf(10);
|
|
495
|
-
if (newline < 0)
|
|
496
|
-
break;
|
|
497
|
-
const line = decodeFrame(rest.subarray(0, newline)).trim();
|
|
498
|
-
rest = rest.subarray(newline + 1);
|
|
499
|
-
if (line === "")
|
|
500
|
-
continue;
|
|
501
|
-
try {
|
|
502
|
-
const message = JSON.parse(line);
|
|
503
|
-
if (typeof message === "object" && message !== null)
|
|
504
|
-
messages.push(message);
|
|
505
|
-
}
|
|
506
|
-
catch {
|
|
507
|
-
continue;
|
|
508
|
-
}
|
|
509
|
-
}
|
|
510
|
-
return { messages, rest };
|
|
511
|
-
}
|
|
512
|
-
function cancellationError(method, reason) {
|
|
513
|
-
if (reason instanceof Error && reason.message === disposedMessage)
|
|
514
|
-
return reason;
|
|
515
|
-
return new Error(`MCP request was cancelled: ${method}${reason instanceof Error ? ` (${reason.message})` : ""}`, { cause: reason });
|
|
516
|
-
}
|
|
517
|
-
function withCancellation(operation, signal, method) {
|
|
518
|
-
if (signal === undefined)
|
|
519
|
-
return operation;
|
|
520
|
-
if (signal.aborted)
|
|
521
|
-
return Promise.reject(cancellationError(method, signal.reason));
|
|
522
|
-
return new Promise((resolve, reject) => {
|
|
523
|
-
const onAbort = () => {
|
|
524
|
-
signal.removeEventListener("abort", onAbort);
|
|
525
|
-
reject(cancellationError(method, signal.reason));
|
|
526
|
-
};
|
|
527
|
-
signal.addEventListener("abort", onAbort, { once: true });
|
|
528
|
-
void operation.then((value) => {
|
|
529
|
-
signal.removeEventListener("abort", onAbort);
|
|
530
|
-
resolve(value);
|
|
531
|
-
}, (error) => {
|
|
532
|
-
signal.removeEventListener("abort", onAbort);
|
|
533
|
-
reject(error instanceof Error ? error : new Error("MCP operation failed", { cause: error }));
|
|
534
|
-
});
|
|
535
|
-
});
|
|
536
|
-
}
|
|
537
|
-
const stdioRouters = new WeakMap();
|
|
538
|
-
function responseResult(message) {
|
|
539
|
-
const hasError = Object.hasOwn(message, "error");
|
|
540
|
-
const hasResult = Object.hasOwn(message, "result");
|
|
541
|
-
if (message.jsonrpc !== "2.0" || hasError === hasResult)
|
|
542
|
-
throw new Error("MCP server returned an invalid JSON-RPC response");
|
|
543
|
-
if (hasError) {
|
|
544
|
-
if (typeof message.error !== "object" || message.error === null || Array.isArray(message.error))
|
|
545
|
-
throw new Error("MCP server returned an invalid JSON-RPC response");
|
|
546
|
-
const errorMessage = message.error.message;
|
|
547
|
-
const errorCode = message.error.code;
|
|
548
|
-
if (typeof errorMessage !== "string" || typeof errorCode !== "number" || !Number.isInteger(errorCode))
|
|
549
|
-
throw new Error("MCP server returned an invalid JSON-RPC response");
|
|
550
|
-
throw new Error(errorMessage);
|
|
551
|
-
}
|
|
552
|
-
if (typeof message.result !== "object" || message.result === null || Array.isArray(message.result))
|
|
553
|
-
throw new Error("MCP server returned an invalid response");
|
|
554
|
-
return message.result;
|
|
555
|
-
}
|
|
556
|
-
function stdioRouter(child) {
|
|
557
|
-
const existing = stdioRouters.get(child);
|
|
558
|
-
if (existing !== undefined)
|
|
559
|
-
return existing;
|
|
560
|
-
const router = { buffer: Buffer.alloc(0), pending: new Map() };
|
|
561
|
-
const fail = (error) => {
|
|
562
|
-
if (router.terminalError !== undefined)
|
|
563
|
-
return;
|
|
564
|
-
router.terminalError = error;
|
|
565
|
-
router.buffer = Buffer.alloc(0);
|
|
566
|
-
child.stdout.off("data", onData);
|
|
567
|
-
child.off("error", onError);
|
|
568
|
-
child.off("close", onClose);
|
|
569
|
-
for (const request of [...router.pending.values()])
|
|
570
|
-
request.reject(error);
|
|
571
|
-
};
|
|
572
|
-
const onData = (chunk) => {
|
|
573
|
-
for (const request of [...router.pending.values()]) {
|
|
574
|
-
request.receivedBytes += chunk.byteLength;
|
|
575
|
-
if (request.receivedBytes > maxResponseBytes)
|
|
576
|
-
request.reject(new Error("MCP server response exceeded the 1 MiB limit"));
|
|
577
|
-
}
|
|
578
|
-
if (router.buffer.byteLength + chunk.byteLength > maxResponseBytes) {
|
|
579
|
-
fail(new Error("MCP server response exceeded the 1 MiB limit"));
|
|
580
|
-
return;
|
|
581
|
-
}
|
|
582
|
-
const buffer = router.buffer.byteLength === 0 ? chunk : Buffer.concat([router.buffer, chunk]);
|
|
583
|
-
let parsed;
|
|
584
|
-
try {
|
|
585
|
-
parsed = parseFrames(buffer);
|
|
586
|
-
}
|
|
587
|
-
catch (error) {
|
|
588
|
-
fail(error instanceof Error ? error : new Error("Failed to parse MCP response", { cause: error }));
|
|
589
|
-
return;
|
|
590
|
-
}
|
|
591
|
-
router.buffer = parsed.rest.byteLength === 0 ? Buffer.alloc(0) : Buffer.from(parsed.rest);
|
|
592
|
-
for (const message of parsed.messages) {
|
|
593
|
-
if (typeof message.id !== "number")
|
|
594
|
-
continue;
|
|
595
|
-
const request = router.pending.get(message.id);
|
|
596
|
-
if (request === undefined)
|
|
597
|
-
continue;
|
|
598
|
-
try {
|
|
599
|
-
request.resolve(responseResult(message));
|
|
600
|
-
}
|
|
601
|
-
catch (error) {
|
|
602
|
-
request.reject(error instanceof Error ? error : new Error("Failed to validate MCP response", { cause: error }));
|
|
603
|
-
}
|
|
604
|
-
}
|
|
605
|
-
};
|
|
606
|
-
const onError = (error) => fail(error);
|
|
607
|
-
const onClose = (code) => fail(new Error(`MCP server exited before responding${code === null ? "" : ` (code ${code})`}`));
|
|
608
|
-
child.stdout.on("data", onData);
|
|
609
|
-
child.once("error", onError);
|
|
610
|
-
child.once("close", onClose);
|
|
611
|
-
stdioRouters.set(child, router);
|
|
612
|
-
return router;
|
|
613
|
-
}
|
|
614
|
-
async function request(child, id, method, params, signal) {
|
|
615
|
-
if (signal?.aborted === true)
|
|
616
|
-
throw cancellationError(method, signal.reason);
|
|
617
|
-
return new Promise((resolve, reject) => {
|
|
618
|
-
const router = stdioRouter(child);
|
|
619
|
-
if (router.terminalError !== undefined) {
|
|
620
|
-
reject(router.terminalError);
|
|
621
|
-
return;
|
|
622
|
-
}
|
|
623
|
-
if (router.pending.has(id)) {
|
|
624
|
-
reject(new Error(`MCP request id is already pending: ${id}`));
|
|
625
|
-
return;
|
|
626
|
-
}
|
|
627
|
-
let settled = false;
|
|
628
|
-
let sent = false;
|
|
629
|
-
const sendCancellation = (reason) => {
|
|
630
|
-
if (!sent || method === "initialize" || child.stdin.destroyed || child.stdin.writableEnded)
|
|
631
|
-
return;
|
|
632
|
-
try {
|
|
633
|
-
child.stdin.write(encodeMessage({ jsonrpc: "2.0", method: "notifications/cancelled", params: { requestId: id, reason } }), () => undefined);
|
|
634
|
-
}
|
|
635
|
-
catch {
|
|
636
|
-
// The original timeout or cancellation remains the actionable error.
|
|
637
|
-
}
|
|
638
|
-
};
|
|
639
|
-
const timer = setTimeout(() => {
|
|
640
|
-
sendCancellation(`MCP request timed out: ${method}`);
|
|
641
|
-
rejectRequest(new Error(`MCP request timed out: ${method}`));
|
|
642
|
-
}, requestTimeoutMs);
|
|
643
|
-
timer.unref();
|
|
644
|
-
const onAbort = () => {
|
|
645
|
-
sendCancellation(signal?.reason instanceof Error ? signal.reason.message : "MCP client request cancelled");
|
|
646
|
-
rejectRequest(cancellationError(method, signal?.reason));
|
|
647
|
-
};
|
|
648
|
-
const cleanup = () => {
|
|
649
|
-
clearTimeout(timer);
|
|
650
|
-
router.pending.delete(id);
|
|
651
|
-
signal?.removeEventListener("abort", onAbort);
|
|
652
|
-
};
|
|
653
|
-
const resolveRequest = (value) => {
|
|
654
|
-
if (settled)
|
|
655
|
-
return;
|
|
656
|
-
settled = true;
|
|
657
|
-
cleanup();
|
|
658
|
-
resolve(value);
|
|
659
|
-
};
|
|
660
|
-
const rejectRequest = (error) => {
|
|
661
|
-
if (settled)
|
|
662
|
-
return;
|
|
663
|
-
settled = true;
|
|
664
|
-
cleanup();
|
|
665
|
-
reject(error);
|
|
666
|
-
};
|
|
667
|
-
router.pending.set(id, { receivedBytes: 0, resolve: resolveRequest, reject: rejectRequest });
|
|
668
|
-
signal?.addEventListener("abort", onAbort, { once: true });
|
|
669
|
-
try {
|
|
670
|
-
child.stdin.write(encodeMessage({ jsonrpc: "2.0", id, method, ...(params === undefined ? {} : { params }) }), (error) => {
|
|
671
|
-
if (error === null || error === undefined)
|
|
672
|
-
return;
|
|
673
|
-
rejectRequest(error);
|
|
674
|
-
});
|
|
675
|
-
sent = true;
|
|
676
|
-
}
|
|
677
|
-
catch (error) {
|
|
678
|
-
rejectRequest(error instanceof Error ? error : new Error("Failed to write MCP request", { cause: error }));
|
|
679
|
-
}
|
|
680
|
-
});
|
|
681
|
-
}
|
|
682
|
-
async function withServer(command, cwd, callback, signal) {
|
|
683
|
-
validateCommand(command);
|
|
684
|
-
if (signal?.aborted === true)
|
|
685
|
-
throw cancellationError("initialize", signal.reason);
|
|
686
|
-
const child = spawn(command[0], command.slice(1), { cwd, shell: false, stdio: ["pipe", "pipe", "pipe"] });
|
|
687
|
-
let stderr = Buffer.alloc(0);
|
|
688
|
-
child.stderr.on("data", (chunk) => {
|
|
689
|
-
stderr = appendByteTail(stderr, chunk, maxStderrBytes);
|
|
690
|
-
});
|
|
691
|
-
try {
|
|
692
|
-
const initializeResult = await request(child, 1, "initialize", { protocolVersion: "2025-06-18", capabilities: {}, clientInfo: { name: "pi-harness", version: clientVersion } }, signal);
|
|
693
|
-
validateInitializeResult(initializeResult);
|
|
694
|
-
child.stdin.write(encodeMessage({ jsonrpc: "2.0", method: "notifications/initialized" }));
|
|
695
|
-
return await callback(child);
|
|
696
|
-
}
|
|
697
|
-
catch (error) {
|
|
698
|
-
if (error instanceof Error && error.message === disposedMessage)
|
|
699
|
-
throw error;
|
|
700
|
-
const stderrText = stderr.toString("utf8").trim();
|
|
701
|
-
if (error instanceof Error && stderrText !== "")
|
|
702
|
-
throw new Error(`${error.message}: ${stderrText}`, { cause: error });
|
|
703
|
-
throw error;
|
|
704
|
-
}
|
|
705
|
-
finally {
|
|
706
|
-
await terminateChild(child);
|
|
707
|
-
}
|
|
708
|
-
}
|
|
709
|
-
export default {
|
|
710
|
-
name: "pi-mcp-client",
|
|
711
|
-
inject: ["piHarnessLaunch", "piPluginUi", "piTools"],
|
|
712
|
-
Config,
|
|
713
|
-
async apply(context, config) {
|
|
714
|
-
assertKnownConfigKeys("pi-mcp-client", config, ["servers"]);
|
|
715
|
-
const lifecycle = new AbortController();
|
|
716
|
-
let latest;
|
|
717
|
-
let latestKey;
|
|
718
|
-
const previousFor = (key) => (latestKey === key ? latest : undefined);
|
|
719
|
-
const publishLatest = (key, value) => {
|
|
720
|
-
latestKey = key;
|
|
721
|
-
latest = clone(value);
|
|
722
|
-
return clone(value);
|
|
723
|
-
};
|
|
724
|
-
const servers = new Map();
|
|
725
|
-
const startingServers = new Set();
|
|
726
|
-
const unregisters = [];
|
|
727
|
-
const registerTool = (definition) => {
|
|
728
|
-
try {
|
|
729
|
-
const unregister = context.piTools.register(definition);
|
|
730
|
-
unregisters.push(unregister);
|
|
731
|
-
return unregister;
|
|
732
|
-
}
|
|
733
|
-
catch (error) {
|
|
734
|
-
for (const unregister of unregisters.splice(0).reverse())
|
|
735
|
-
unregister();
|
|
736
|
-
lifecycle.abort(new Error("MCP client plugin activation failed", { cause: error }));
|
|
737
|
-
throw error;
|
|
738
|
-
}
|
|
739
|
-
};
|
|
740
|
-
const configured = new Map();
|
|
741
|
-
const definitions = config.servers ?? [];
|
|
742
|
-
if (definitions.length > maxManagedServers)
|
|
743
|
-
throw new Error(`MCP configured inventory cannot exceed ${maxManagedServers} servers`);
|
|
744
|
-
for (const definition of definitions) {
|
|
745
|
-
const id = serverIdValue(definition.id, true);
|
|
746
|
-
if (configured.has(id))
|
|
747
|
-
throw new Error(`Configured MCP server id is duplicated: ${id}`);
|
|
748
|
-
validateCommand(definition.command);
|
|
749
|
-
configured.set(id, { id, command: [...definition.command], autoStart: definition.autoStart === true });
|
|
750
|
-
}
|
|
751
|
-
let nextServerId = 1;
|
|
752
|
-
const startServer = async (command, requestedId, signal) => {
|
|
753
|
-
validateCommand(command);
|
|
754
|
-
let id = requestedId;
|
|
755
|
-
if (id === undefined) {
|
|
756
|
-
do
|
|
757
|
-
id = `mcp-${nextServerId++}`;
|
|
758
|
-
while (configured.has(id) || servers.has(id) || startingServers.has(id));
|
|
759
|
-
}
|
|
760
|
-
if (servers.has(id))
|
|
761
|
-
throw new Error(`MCP server is already running: ${id}`);
|
|
762
|
-
if (startingServers.has(id))
|
|
763
|
-
throw new Error(`MCP server is already starting: ${id}`);
|
|
764
|
-
if (servers.size + startingServers.size >= maxManagedServers)
|
|
765
|
-
throw new Error(`MCP client cannot manage more than ${maxManagedServers} running servers`);
|
|
766
|
-
startingServers.add(id);
|
|
767
|
-
let child;
|
|
768
|
-
try {
|
|
769
|
-
child = spawn(command[0], command.slice(1), { cwd: context.piHarnessLaunch.cwd, shell: false, stdio: ["pipe", "pipe", "pipe"] });
|
|
770
|
-
}
|
|
771
|
-
catch (error) {
|
|
772
|
-
startingServers.delete(id);
|
|
773
|
-
throw error;
|
|
774
|
-
}
|
|
775
|
-
let stderr = Buffer.alloc(0);
|
|
776
|
-
child.stderr.on("data", (chunk) => {
|
|
777
|
-
stderr = appendByteTail(stderr, chunk, maxStderrBytes);
|
|
778
|
-
});
|
|
779
|
-
const server = {
|
|
780
|
-
id,
|
|
781
|
-
command: [...command],
|
|
782
|
-
child,
|
|
783
|
-
status: "running",
|
|
784
|
-
nextRequestId: 2,
|
|
785
|
-
queue: Promise.resolve(),
|
|
786
|
-
startedAt: Date.now(),
|
|
787
|
-
lifecycle: new AbortController(),
|
|
788
|
-
};
|
|
789
|
-
child.once("close", () => {
|
|
790
|
-
server.status = "stopping";
|
|
791
|
-
server.lifecycle.abort(new Error(`MCP server exited: ${server.id}`));
|
|
792
|
-
servers.delete(server.id);
|
|
793
|
-
});
|
|
794
|
-
try {
|
|
795
|
-
const initializeResult = await request(child, 1, "initialize", { protocolVersion: "2025-06-18", capabilities: {}, clientInfo: { name: "pi-harness", version: clientVersion } }, signal);
|
|
796
|
-
validateInitializeResult(initializeResult);
|
|
797
|
-
if (child.exitCode !== null || child.signalCode !== null)
|
|
798
|
-
throw new Error(`MCP server exited during initialization: ${id}`);
|
|
799
|
-
servers.set(server.id, server);
|
|
800
|
-
child.stdin.write(encodeMessage({ jsonrpc: "2.0", method: "notifications/initialized" }));
|
|
801
|
-
return server;
|
|
802
|
-
}
|
|
803
|
-
catch (error) {
|
|
804
|
-
servers.delete(server.id);
|
|
805
|
-
await terminateChild(child);
|
|
806
|
-
if (error instanceof Error && error.message === disposedMessage)
|
|
807
|
-
throw error;
|
|
808
|
-
const stderrText = stderr.toString("utf8").trim();
|
|
809
|
-
if (error instanceof Error && stderrText !== "")
|
|
810
|
-
throw new Error(`${error.message}: ${stderrText}`, { cause: error });
|
|
811
|
-
throw error;
|
|
812
|
-
}
|
|
813
|
-
finally {
|
|
814
|
-
startingServers.delete(id);
|
|
815
|
-
}
|
|
816
|
-
};
|
|
817
|
-
const stopServer = (serverId, signal) => {
|
|
818
|
-
const server = servers.get(serverId);
|
|
819
|
-
if (server === undefined)
|
|
820
|
-
throw new Error(`MCP server is not running: ${serverId}`);
|
|
821
|
-
server.status = "stopping";
|
|
822
|
-
server.lifecycle.abort(new Error(`MCP server stopped: ${server.id}`));
|
|
823
|
-
const operation = (async () => {
|
|
824
|
-
await server.queue;
|
|
825
|
-
servers.delete(server.id);
|
|
826
|
-
await terminateChild(server.child);
|
|
827
|
-
return true;
|
|
828
|
-
})();
|
|
829
|
-
return withCancellation(operation, signal, "server/stop");
|
|
830
|
-
};
|
|
831
|
-
const requestManaged = (server, method, params, signal) => {
|
|
832
|
-
if (server.status !== "running")
|
|
833
|
-
throw new Error(`MCP server is not running: ${server.id}`);
|
|
834
|
-
const requestSignal = signal === undefined ? server.lifecycle.signal : AbortSignal.any([signal, server.lifecycle.signal]);
|
|
835
|
-
const task = server.queue.then(() => request(server.child, server.nextRequestId++, method, params, requestSignal));
|
|
836
|
-
server.queue = task.then(() => undefined, () => undefined);
|
|
837
|
-
return withCancellation(task, requestSignal, method);
|
|
838
|
-
};
|
|
839
|
-
const getServer = (serverId) => {
|
|
840
|
-
const server = servers.get(serverId);
|
|
841
|
-
if (server === undefined)
|
|
842
|
-
throw new Error(`MCP server is not running: ${serverId}`);
|
|
843
|
-
return server;
|
|
844
|
-
};
|
|
845
|
-
const configuredCommand = (serverId) => {
|
|
846
|
-
const definition = configured.get(serverId);
|
|
847
|
-
if (definition === undefined)
|
|
848
|
-
throw new Error(`Configured MCP server is not found: ${serverId}`);
|
|
849
|
-
return [...definition.command];
|
|
850
|
-
};
|
|
851
|
-
const statusSnapshot = () => {
|
|
852
|
-
const running = [...servers.values()].map((server) => ({
|
|
853
|
-
id: server.id,
|
|
854
|
-
executable: executableName(server.command),
|
|
855
|
-
argumentCount: Math.max(0, server.command.length - 1),
|
|
856
|
-
status: server.status,
|
|
857
|
-
startedAt: server.startedAt,
|
|
858
|
-
}));
|
|
859
|
-
const active = new Set(running.map((server) => server.id));
|
|
860
|
-
return [
|
|
861
|
-
...running,
|
|
862
|
-
...[...configured.values()]
|
|
863
|
-
.filter((definition) => !active.has(definition.id))
|
|
864
|
-
.map((definition) => ({
|
|
865
|
-
id: definition.id,
|
|
866
|
-
executable: executableName(definition.command),
|
|
867
|
-
argumentCount: Math.max(0, definition.command.length - 1),
|
|
868
|
-
status: "stopped",
|
|
869
|
-
startedAt: 0,
|
|
870
|
-
})),
|
|
871
|
-
];
|
|
872
|
-
};
|
|
873
|
-
const list = async (command, serverId, signal) => {
|
|
874
|
-
rejectAmbiguousTarget(command, serverId);
|
|
875
|
-
if (serverId !== undefined) {
|
|
876
|
-
const managed = getServer(serverId);
|
|
877
|
-
const tools = await paginatedInventory("tools/list", "tools", (params) => requestManaged(managed, "tools/list", params, signal), toolInventory);
|
|
878
|
-
const key = `managed:${managed.id}`;
|
|
879
|
-
const server = serverLabel(managed.command);
|
|
880
|
-
const previous = previousFor(key);
|
|
881
|
-
const next = { server, tools, resources: previous?.resources ?? [], prompts: previous?.prompts ?? [] };
|
|
882
|
-
return publishLatest(key, next);
|
|
883
|
-
}
|
|
884
|
-
if (command === undefined)
|
|
885
|
-
throw new Error("Provide command or serverId to list MCP tools");
|
|
886
|
-
return withServer(command, context.piHarnessLaunch.cwd, async (child) => {
|
|
887
|
-
let requestId = 2;
|
|
888
|
-
const tools = await paginatedInventory("tools/list", "tools", (params) => request(child, requestId++, "tools/list", params, signal), toolInventory);
|
|
889
|
-
const key = `command:${JSON.stringify(command)}`;
|
|
890
|
-
const server = serverLabel(command);
|
|
891
|
-
const previous = previousFor(key);
|
|
892
|
-
const next = { server, tools, resources: previous?.resources ?? [], prompts: previous?.prompts ?? [] };
|
|
893
|
-
return publishLatest(key, next);
|
|
894
|
-
}, signal);
|
|
895
|
-
};
|
|
896
|
-
const call = async (command, serverId, name, args, signal) => {
|
|
897
|
-
rejectAmbiguousTarget(command, serverId);
|
|
898
|
-
boundedInput(name, "tool name", 512);
|
|
899
|
-
if (serverId !== undefined) {
|
|
900
|
-
const managed = getServer(serverId);
|
|
901
|
-
const result = (await requestManaged(managed, "tools/call", { name, arguments: args }, signal));
|
|
902
|
-
toolResultContent(result);
|
|
903
|
-
const key = `managed:${managed.id}`;
|
|
904
|
-
const server = serverLabel(managed.command);
|
|
905
|
-
const previous = previousFor(key);
|
|
906
|
-
publishLatest(key, {
|
|
907
|
-
server,
|
|
908
|
-
tools: previous?.tools ?? [],
|
|
909
|
-
resources: previous?.resources ?? [],
|
|
910
|
-
prompts: previous?.prompts ?? [],
|
|
911
|
-
lastCall: name,
|
|
912
|
-
});
|
|
913
|
-
return result;
|
|
914
|
-
}
|
|
915
|
-
if (command === undefined)
|
|
916
|
-
throw new Error("Provide command or serverId to call an MCP tool");
|
|
917
|
-
return withServer(command, context.piHarnessLaunch.cwd, async (child) => {
|
|
918
|
-
const result = (await request(child, 2, "tools/call", { name, arguments: args }, signal));
|
|
919
|
-
toolResultContent(result);
|
|
920
|
-
const key = `command:${JSON.stringify(command)}`;
|
|
921
|
-
const server = serverLabel(command);
|
|
922
|
-
const previous = previousFor(key);
|
|
923
|
-
publishLatest(key, {
|
|
924
|
-
server,
|
|
925
|
-
tools: previous?.tools ?? [],
|
|
926
|
-
resources: previous?.resources ?? [],
|
|
927
|
-
prompts: previous?.prompts ?? [],
|
|
928
|
-
lastCall: name,
|
|
929
|
-
});
|
|
930
|
-
return result;
|
|
931
|
-
}, signal);
|
|
932
|
-
};
|
|
933
|
-
const requestOneShot = async (command, method, params, signal) => withServer(command, context.piHarnessLaunch.cwd, async (child) => request(child, 2, method, params, signal), signal);
|
|
934
|
-
const requireCommand = (command, message) => {
|
|
935
|
-
if (command === undefined)
|
|
936
|
-
throw new Error(message);
|
|
937
|
-
return command;
|
|
938
|
-
};
|
|
939
|
-
const resources = async (command, serverId, signal) => {
|
|
940
|
-
rejectAmbiguousTarget(command, serverId);
|
|
941
|
-
let items;
|
|
942
|
-
let selectedCommand;
|
|
943
|
-
if (serverId === undefined) {
|
|
944
|
-
selectedCommand = requireCommand(command, "Provide command or serverId to list MCP resources");
|
|
945
|
-
items = await withServer(selectedCommand, context.piHarnessLaunch.cwd, async (child) => {
|
|
946
|
-
let requestId = 2;
|
|
947
|
-
return paginatedInventory("resources/list", "resources", (params) => request(child, requestId++, "resources/list", params, signal), resourceInventory);
|
|
948
|
-
}, signal);
|
|
949
|
-
}
|
|
950
|
-
else {
|
|
951
|
-
const managed = getServer(serverId);
|
|
952
|
-
selectedCommand = managed.command;
|
|
953
|
-
items = await paginatedInventory("resources/list", "resources", (params) => requestManaged(managed, "resources/list", params, signal), resourceInventory);
|
|
954
|
-
}
|
|
955
|
-
const key = serverId === undefined ? `command:${JSON.stringify(selectedCommand)}` : `managed:${serverId}`;
|
|
956
|
-
const server = serverLabel(selectedCommand);
|
|
957
|
-
const previous = previousFor(key);
|
|
958
|
-
const next = {
|
|
959
|
-
server,
|
|
960
|
-
tools: previous?.tools ?? [],
|
|
961
|
-
resources: items,
|
|
962
|
-
prompts: previous?.prompts ?? [],
|
|
963
|
-
};
|
|
964
|
-
publishLatest(key, next);
|
|
965
|
-
return clone(items);
|
|
966
|
-
};
|
|
967
|
-
const readResource = async (command, serverId, uri, signal) => {
|
|
968
|
-
rejectAmbiguousTarget(command, serverId);
|
|
969
|
-
boundedInput(uri, "resource URI", 4096);
|
|
970
|
-
return serverId === undefined
|
|
971
|
-
? requestOneShot(requireCommand(command, "Provide command or serverId to read an MCP resource"), "resources/read", { uri }, signal)
|
|
972
|
-
: requestManaged(getServer(serverId), "resources/read", { uri }, signal);
|
|
973
|
-
};
|
|
974
|
-
const prompts = async (command, serverId, signal) => {
|
|
975
|
-
rejectAmbiguousTarget(command, serverId);
|
|
976
|
-
let items;
|
|
977
|
-
let selectedCommand;
|
|
978
|
-
if (serverId === undefined) {
|
|
979
|
-
selectedCommand = requireCommand(command, "Provide command or serverId to list MCP prompts");
|
|
980
|
-
items = await withServer(selectedCommand, context.piHarnessLaunch.cwd, async (child) => {
|
|
981
|
-
let requestId = 2;
|
|
982
|
-
return paginatedInventory("prompts/list", "prompts", (params) => request(child, requestId++, "prompts/list", params, signal), promptInventory);
|
|
983
|
-
}, signal);
|
|
984
|
-
}
|
|
985
|
-
else {
|
|
986
|
-
const managed = getServer(serverId);
|
|
987
|
-
selectedCommand = managed.command;
|
|
988
|
-
items = await paginatedInventory("prompts/list", "prompts", (params) => requestManaged(managed, "prompts/list", params, signal), promptInventory);
|
|
989
|
-
}
|
|
990
|
-
const key = serverId === undefined ? `command:${JSON.stringify(selectedCommand)}` : `managed:${serverId}`;
|
|
991
|
-
const server = serverLabel(selectedCommand);
|
|
992
|
-
const previous = previousFor(key);
|
|
993
|
-
const next = {
|
|
994
|
-
server,
|
|
995
|
-
tools: previous?.tools ?? [],
|
|
996
|
-
resources: previous?.resources ?? [],
|
|
997
|
-
prompts: items,
|
|
998
|
-
};
|
|
999
|
-
publishLatest(key, next);
|
|
1000
|
-
return clone(items);
|
|
1001
|
-
};
|
|
1002
|
-
const getPrompt = async (command, serverId, name, args, signal) => {
|
|
1003
|
-
rejectAmbiguousTarget(command, serverId);
|
|
1004
|
-
boundedInput(name, "prompt name", 512);
|
|
1005
|
-
return serverId === undefined
|
|
1006
|
-
? requestOneShot(requireCommand(command, "Provide command or serverId to get an MCP prompt"), "prompts/get", { name, arguments: args }, signal)
|
|
1007
|
-
: requestManaged(getServer(serverId), "prompts/get", { name, arguments: args }, signal);
|
|
1008
|
-
};
|
|
1009
|
-
const unregisterList = registerTool(defineTool({
|
|
1010
|
-
name: "mcp_list_tools",
|
|
1011
|
-
label: "MCP list tools",
|
|
1012
|
-
description: "Start an MCP stdio server and list its available tools.",
|
|
1013
|
-
promptSnippet: "discover tools exposed by an MCP stdio server",
|
|
1014
|
-
parameters: Type.Object({
|
|
1015
|
-
command: Type.Optional(Type.Array(Type.String(), { description: "MCP server executable and arguments; shell wrappers are rejected" })),
|
|
1016
|
-
serverId: Type.Optional(Type.String({ description: "A configured or running MCP server id" })),
|
|
1017
|
-
}, { additionalProperties: false }),
|
|
1018
|
-
executionMode: "sequential",
|
|
1019
|
-
async execute(_toolCallId, params, signal) {
|
|
1020
|
-
const operationSignal = executionSignal(signal, lifecycle.signal);
|
|
1021
|
-
operationSignal.throwIfAborted();
|
|
1022
|
-
const raw = inspectParameters(params, connectionParameterNames);
|
|
1023
|
-
const result = await list(optionalCommand(raw.command), serverIdValue(raw.serverId), operationSignal);
|
|
1024
|
-
return {
|
|
1025
|
-
content: [
|
|
1026
|
-
{ type: "text", text: result.tools.map((tool) => `${tool.name}: ${tool.description ?? ""}`).join("\n") || "MCP server returned no tools." },
|
|
1027
|
-
],
|
|
1028
|
-
details: result,
|
|
1029
|
-
};
|
|
1030
|
-
},
|
|
1031
|
-
}));
|
|
1032
|
-
const unregisterCall = registerTool(defineTool({
|
|
1033
|
-
name: "mcp_call",
|
|
1034
|
-
label: "MCP call tool",
|
|
1035
|
-
description: "Call a named tool on an MCP stdio server with a JSON object of arguments.",
|
|
1036
|
-
promptSnippet: "call a tool exposed by an MCP stdio server",
|
|
1037
|
-
parameters: Type.Object({
|
|
1038
|
-
command: Type.Optional(Type.Array(Type.String())),
|
|
1039
|
-
serverId: Type.Optional(Type.String()),
|
|
1040
|
-
name: Type.String(),
|
|
1041
|
-
arguments: Type.Optional(Type.Record(Type.String(), Type.Any())),
|
|
1042
|
-
}, { additionalProperties: false }),
|
|
1043
|
-
executionMode: "sequential",
|
|
1044
|
-
async execute(_toolCallId, params, signal) {
|
|
1045
|
-
const operationSignal = executionSignal(signal, lifecycle.signal);
|
|
1046
|
-
operationSignal.throwIfAborted();
|
|
1047
|
-
const raw = inspectParameters(params, callParameterNames);
|
|
1048
|
-
const result = await call(optionalCommand(raw.command), serverIdValue(raw.serverId), requiredString(raw.name, "tool name"), jsonObject(raw.arguments), operationSignal);
|
|
1049
|
-
return { content: toolResultContent(result), details: clone(result) };
|
|
1050
|
-
},
|
|
1051
|
-
}));
|
|
1052
|
-
const unregisterStart = registerTool(defineTool({
|
|
1053
|
-
name: "mcp_server_start",
|
|
1054
|
-
label: "MCP server start",
|
|
1055
|
-
description: "Start and initialize a persistent MCP stdio server managed by Pi Harness.",
|
|
1056
|
-
promptSnippet: "start a persistent MCP stdio server",
|
|
1057
|
-
parameters: Type.Object({
|
|
1058
|
-
command: Type.Optional(Type.Array(Type.String(), { description: "MCP server executable and arguments; shell wrappers are rejected" })),
|
|
1059
|
-
serverId: Type.Optional(Type.String({ description: "Configured server id or a running server id" })),
|
|
1060
|
-
}, { additionalProperties: false }),
|
|
1061
|
-
executionMode: "sequential",
|
|
1062
|
-
async execute(_toolCallId, params, signal) {
|
|
1063
|
-
const operationSignal = executionSignal(signal, lifecycle.signal);
|
|
1064
|
-
operationSignal.throwIfAborted();
|
|
1065
|
-
const raw = inspectParameters(params, connectionParameterNames);
|
|
1066
|
-
const serverId = serverIdValue(raw.serverId);
|
|
1067
|
-
const command = optionalCommand(raw.command) ?? (serverId === undefined ? undefined : configuredCommand(serverId));
|
|
1068
|
-
if (command === undefined)
|
|
1069
|
-
throw new Error("Provide command or configured serverId to start an MCP server");
|
|
1070
|
-
const server = await startServer(command, serverId, operationSignal);
|
|
1071
|
-
return {
|
|
1072
|
-
content: [{ type: "text", text: `MCP server ${server.id} is running.` }],
|
|
1073
|
-
details: { serverId: server.id, command: [...server.command], status: server.status },
|
|
1074
|
-
};
|
|
1075
|
-
},
|
|
1076
|
-
}));
|
|
1077
|
-
const unregisterStatus = registerTool(defineTool({
|
|
1078
|
-
name: "mcp_server_status",
|
|
1079
|
-
label: "MCP server status",
|
|
1080
|
-
description: "List persistent MCP stdio servers managed by Pi Harness.",
|
|
1081
|
-
promptSnippet: "inspect running MCP server status",
|
|
1082
|
-
parameters: Type.Object({}, { additionalProperties: false }),
|
|
1083
|
-
executionMode: "sequential",
|
|
1084
|
-
execute(_toolCallId, params, signal) {
|
|
1085
|
-
return Promise.resolve().then(() => {
|
|
1086
|
-
const operationSignal = executionSignal(signal, lifecycle.signal);
|
|
1087
|
-
operationSignal.throwIfAborted();
|
|
1088
|
-
inspectParameters(params, noParameterNames);
|
|
1089
|
-
const snapshot = statusSnapshot();
|
|
1090
|
-
return {
|
|
1091
|
-
content: [
|
|
1092
|
-
{
|
|
1093
|
-
type: "text",
|
|
1094
|
-
text: snapshot.length === 0
|
|
1095
|
-
? "No MCP servers are running."
|
|
1096
|
-
: snapshot
|
|
1097
|
-
.map((server) => `${server.id}: ${server.status} (${server.executable}, ${server.argumentCount} argument${server.argumentCount === 1 ? "" : "s"})`)
|
|
1098
|
-
.join("\n"),
|
|
1099
|
-
},
|
|
1100
|
-
],
|
|
1101
|
-
details: { servers: snapshot },
|
|
1102
|
-
};
|
|
1103
|
-
});
|
|
1104
|
-
},
|
|
1105
|
-
}));
|
|
1106
|
-
const unregisterStop = registerTool(defineTool({
|
|
1107
|
-
name: "mcp_server_stop",
|
|
1108
|
-
label: "MCP server stop",
|
|
1109
|
-
description: "Stop a persistent MCP stdio server and remove it from the managed set.",
|
|
1110
|
-
promptSnippet: "stop a persistent MCP stdio server",
|
|
1111
|
-
parameters: Type.Object({ serverId: Type.String() }, { additionalProperties: false }),
|
|
1112
|
-
executionMode: "sequential",
|
|
1113
|
-
async execute(_toolCallId, params, signal) {
|
|
1114
|
-
const operationSignal = executionSignal(signal, lifecycle.signal);
|
|
1115
|
-
operationSignal.throwIfAborted();
|
|
1116
|
-
const raw = inspectParameters(params, stopParameterNames);
|
|
1117
|
-
const serverId = serverIdValue(raw.serverId, true);
|
|
1118
|
-
const stopped = await stopServer(serverId, operationSignal);
|
|
1119
|
-
return { content: [{ type: "text", text: `MCP server ${serverId} stopped.` }], details: { serverId, stopped } };
|
|
1120
|
-
},
|
|
1121
|
-
}));
|
|
1122
|
-
const unregisterListResources = registerTool(defineTool({
|
|
1123
|
-
name: "mcp_list_resources",
|
|
1124
|
-
label: "MCP list resources",
|
|
1125
|
-
description: "List resources exposed by an MCP server.",
|
|
1126
|
-
promptSnippet: "list resources exposed by an MCP server",
|
|
1127
|
-
parameters: Type.Object({ command: Type.Optional(Type.Array(Type.String())), serverId: Type.Optional(Type.String()) }, { additionalProperties: false }),
|
|
1128
|
-
executionMode: "sequential",
|
|
1129
|
-
async execute(_toolCallId, params, signal) {
|
|
1130
|
-
const operationSignal = executionSignal(signal, lifecycle.signal);
|
|
1131
|
-
operationSignal.throwIfAborted();
|
|
1132
|
-
const raw = inspectParameters(params, connectionParameterNames);
|
|
1133
|
-
const items = await resources(optionalCommand(raw.command), serverIdValue(raw.serverId), operationSignal);
|
|
1134
|
-
return {
|
|
1135
|
-
content: [{ type: "text", text: items.map((item) => `${item.uri} ${item.name ?? ""}`).join("\n") || "MCP server returned no resources." }],
|
|
1136
|
-
details: { resources: items },
|
|
1137
|
-
};
|
|
1138
|
-
},
|
|
1139
|
-
}));
|
|
1140
|
-
const unregisterReadResource = registerTool(defineTool({
|
|
1141
|
-
name: "mcp_read_resource",
|
|
1142
|
-
label: "MCP read resource",
|
|
1143
|
-
description: "Read one resource exposed by an MCP server.",
|
|
1144
|
-
promptSnippet: "read a resource exposed by an MCP server",
|
|
1145
|
-
parameters: Type.Object({ command: Type.Optional(Type.Array(Type.String())), serverId: Type.Optional(Type.String()), uri: Type.String() }, { additionalProperties: false }),
|
|
1146
|
-
executionMode: "sequential",
|
|
1147
|
-
async execute(_toolCallId, params, signal) {
|
|
1148
|
-
const operationSignal = executionSignal(signal, lifecycle.signal);
|
|
1149
|
-
operationSignal.throwIfAborted();
|
|
1150
|
-
const raw = inspectParameters(params, readResourceParameterNames);
|
|
1151
|
-
const result = await readResource(optionalCommand(raw.command), serverIdValue(raw.serverId), requiredString(raw.uri, "resource URI"), operationSignal);
|
|
1152
|
-
return { content: resourceResultContent(result), details: clone(result) };
|
|
1153
|
-
},
|
|
1154
|
-
}));
|
|
1155
|
-
const unregisterListPrompts = registerTool(defineTool({
|
|
1156
|
-
name: "mcp_list_prompts",
|
|
1157
|
-
label: "MCP list prompts",
|
|
1158
|
-
description: "List prompt templates exposed by an MCP server.",
|
|
1159
|
-
promptSnippet: "list prompt templates exposed by an MCP server",
|
|
1160
|
-
parameters: Type.Object({ command: Type.Optional(Type.Array(Type.String())), serverId: Type.Optional(Type.String()) }, { additionalProperties: false }),
|
|
1161
|
-
executionMode: "sequential",
|
|
1162
|
-
async execute(_toolCallId, params, signal) {
|
|
1163
|
-
const operationSignal = executionSignal(signal, lifecycle.signal);
|
|
1164
|
-
operationSignal.throwIfAborted();
|
|
1165
|
-
const raw = inspectParameters(params, connectionParameterNames);
|
|
1166
|
-
const items = await prompts(optionalCommand(raw.command), serverIdValue(raw.serverId), operationSignal);
|
|
1167
|
-
return {
|
|
1168
|
-
content: [{ type: "text", text: items.map((item) => `${item.name}: ${item.description ?? ""}`).join("\n") || "MCP server returned no prompts." }],
|
|
1169
|
-
details: { prompts: items },
|
|
1170
|
-
};
|
|
1171
|
-
},
|
|
1172
|
-
}));
|
|
1173
|
-
const unregisterGetPrompt = registerTool(defineTool({
|
|
1174
|
-
name: "mcp_get_prompt",
|
|
1175
|
-
label: "MCP get prompt",
|
|
1176
|
-
description: "Render a prompt template exposed by an MCP server.",
|
|
1177
|
-
promptSnippet: "render a prompt template from an MCP server",
|
|
1178
|
-
parameters: Type.Object({
|
|
1179
|
-
command: Type.Optional(Type.Array(Type.String())),
|
|
1180
|
-
serverId: Type.Optional(Type.String()),
|
|
1181
|
-
name: Type.String(),
|
|
1182
|
-
arguments: Type.Optional(Type.Record(Type.String(), Type.String())),
|
|
1183
|
-
}, { additionalProperties: false }),
|
|
1184
|
-
executionMode: "sequential",
|
|
1185
|
-
async execute(_toolCallId, params, signal) {
|
|
1186
|
-
const operationSignal = executionSignal(signal, lifecycle.signal);
|
|
1187
|
-
operationSignal.throwIfAborted();
|
|
1188
|
-
const raw = inspectParameters(params, callParameterNames);
|
|
1189
|
-
const result = await getPrompt(optionalCommand(raw.command), serverIdValue(raw.serverId), requiredString(raw.name, "prompt name"), promptArguments(raw.arguments), operationSignal);
|
|
1190
|
-
return { content: promptResultContent(result), details: clone(result) };
|
|
1191
|
-
},
|
|
1192
|
-
}));
|
|
1193
|
-
const serverSnapshot = () => {
|
|
1194
|
-
const running = [...servers.values()].map((server) => ({
|
|
1195
|
-
id: server.id,
|
|
1196
|
-
command: [executableName(server.command)],
|
|
1197
|
-
status: server.status,
|
|
1198
|
-
startedAt: server.startedAt,
|
|
1199
|
-
}));
|
|
1200
|
-
const active = new Set(running.map((server) => server.id));
|
|
1201
|
-
return [
|
|
1202
|
-
...running,
|
|
1203
|
-
...[...configured.values()]
|
|
1204
|
-
.filter((definition) => !active.has(definition.id))
|
|
1205
|
-
.map((definition) => ({ id: definition.id, command: [executableName(definition.command)], status: "stopped", startedAt: 0 })),
|
|
1206
|
-
];
|
|
1207
|
-
};
|
|
1208
|
-
context.provide("piMcp", { snapshot: () => ({ servers: serverSnapshot() }) });
|
|
1209
|
-
let disposePanel;
|
|
1210
|
-
try {
|
|
1211
|
-
disposePanel = context.piPluginUi.register({
|
|
1212
|
-
id: "mcp-client-panel",
|
|
1213
|
-
pluginId: "@pi-harness/core/plugins/mcp-client",
|
|
1214
|
-
title: "MCP Client",
|
|
1215
|
-
description: "通过 stdio JSON-RPC 连接外部 MCP 工具服务器。",
|
|
1216
|
-
icon: "⌘",
|
|
1217
|
-
read: () => {
|
|
1218
|
-
const tools = latest?.tools ?? [];
|
|
1219
|
-
const resources = latest?.resources ?? [];
|
|
1220
|
-
const prompts = latest?.prompts ?? [];
|
|
1221
|
-
const serverStatuses = statusSnapshot();
|
|
1222
|
-
return clone({
|
|
1223
|
-
server: latest?.server ?? null,
|
|
1224
|
-
tools: tools.slice(0, maxPanelItems),
|
|
1225
|
-
resources: resources.slice(0, maxPanelItems),
|
|
1226
|
-
prompts: prompts.slice(0, maxPanelItems),
|
|
1227
|
-
lastCall: latest?.lastCall ?? null,
|
|
1228
|
-
servers: serverStatuses.slice(0, maxPanelItems),
|
|
1229
|
-
inventory: {
|
|
1230
|
-
tools: { total: tools.length, shown: Math.min(tools.length, maxPanelItems), truncated: tools.length > maxPanelItems },
|
|
1231
|
-
resources: { total: resources.length, shown: Math.min(resources.length, maxPanelItems), truncated: resources.length > maxPanelItems },
|
|
1232
|
-
prompts: { total: prompts.length, shown: Math.min(prompts.length, maxPanelItems), truncated: prompts.length > maxPanelItems },
|
|
1233
|
-
servers: {
|
|
1234
|
-
total: serverStatuses.length,
|
|
1235
|
-
shown: Math.min(serverStatuses.length, maxPanelItems),
|
|
1236
|
-
truncated: serverStatuses.length > maxPanelItems,
|
|
1237
|
-
},
|
|
1238
|
-
},
|
|
1239
|
-
limits: {
|
|
1240
|
-
responseBytes: maxResponseBytes,
|
|
1241
|
-
commandArgs: maxCommandArgs,
|
|
1242
|
-
argumentBytes: maxArgumentBytes,
|
|
1243
|
-
toolArgumentsBytes: maxToolArgumentsBytes,
|
|
1244
|
-
toolArgumentDepth: maxToolArgumentDepth,
|
|
1245
|
-
requestTimeoutMs,
|
|
1246
|
-
panelItems: maxPanelItems,
|
|
1247
|
-
inventoryItems: maxInventoryItems,
|
|
1248
|
-
paginationPages: maxPaginationPages,
|
|
1249
|
-
stderrBytes: maxStderrBytes,
|
|
1250
|
-
managedServers: maxManagedServers,
|
|
1251
|
-
},
|
|
1252
|
-
});
|
|
1253
|
-
},
|
|
1254
|
-
});
|
|
1255
|
-
}
|
|
1256
|
-
catch (error) {
|
|
1257
|
-
for (const unregister of unregisters.splice(0).reverse())
|
|
1258
|
-
unregister();
|
|
1259
|
-
lifecycle.abort(new Error("MCP client plugin activation failed", { cause: error }));
|
|
1260
|
-
throw error;
|
|
1261
|
-
}
|
|
1262
|
-
context.effect(() => async () => {
|
|
1263
|
-
lifecycle.abort(new Error(disposedMessage));
|
|
1264
|
-
unregisterList();
|
|
1265
|
-
unregisterCall();
|
|
1266
|
-
unregisterStart();
|
|
1267
|
-
unregisterStatus();
|
|
1268
|
-
unregisterStop();
|
|
1269
|
-
unregisterListResources();
|
|
1270
|
-
unregisterReadResource();
|
|
1271
|
-
unregisterListPrompts();
|
|
1272
|
-
unregisterGetPrompt();
|
|
1273
|
-
const running = [...servers.values()];
|
|
1274
|
-
for (const server of running) {
|
|
1275
|
-
server.status = "stopping";
|
|
1276
|
-
server.lifecycle.abort(new Error(disposedMessage));
|
|
1277
|
-
}
|
|
1278
|
-
servers.clear();
|
|
1279
|
-
disposePanel();
|
|
1280
|
-
await Promise.all(running.map(async (server) => terminateChild(server.child)));
|
|
1281
|
-
});
|
|
1282
|
-
for (const definition of configured.values()) {
|
|
1283
|
-
if (definition.autoStart === true)
|
|
1284
|
-
await startServer(definition.command, definition.id, lifecycle.signal);
|
|
1285
|
-
}
|
|
1286
|
-
},
|
|
1287
|
-
};
|
|
1288
|
-
//# sourceMappingURL=mcp-client.js.map
|