@pi-harness/pi-harness 0.1.12 → 0.1.13
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/apps/web/dist/assets/{index-D6dtMTPb.js → index-C_AdODuM.js} +1 -1
- package/apps/web/dist/index.html +1 -1
- package/apps/web/package.json +6 -6
- 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.map +1 -1
- package/node_modules/@pi-harness/cli/dist/main.d.ts.map +1 -1
- package/node_modules/@pi-harness/cli/dist/main.js +2 -2
- package/node_modules/@pi-harness/cli/dist/main.js.map +1 -1
- package/node_modules/@pi-harness/cli/dist/node-stdio.d.ts.map +1 -1
- package/node_modules/@pi-harness/cli/dist/node-stdio.js +3 -1
- package/node_modules/@pi-harness/cli/dist/node-stdio.js.map +1 -1
- package/node_modules/@pi-harness/cli/package.json +1 -1
- package/node_modules/@pi-harness/core/dist/boot.d.ts.map +1 -1
- package/node_modules/@pi-harness/core/dist/boot.js.map +1 -1
- package/node_modules/@pi-harness/core/dist/config.d.ts.map +1 -1
- package/node_modules/@pi-harness/core/dist/config.js.map +1 -1
- package/node_modules/@pi-harness/core/dist/http.js +1 -1
- package/node_modules/@pi-harness/core/dist/http.js.map +1 -1
- package/node_modules/@pi-harness/core/dist/plugins/resources.d.ts.map +1 -1
- package/node_modules/@pi-harness/core/dist/plugins/resources.js +9 -3
- package/node_modules/@pi-harness/core/dist/plugins/resources.js.map +1 -1
- package/node_modules/@pi-harness/core/dist/plugins/runtime.d.ts.map +1 -1
- package/node_modules/@pi-harness/core/dist/plugins/runtime.js +11 -3
- package/node_modules/@pi-harness/core/dist/plugins/runtime.js.map +1 -1
- package/node_modules/@pi-harness/core/dist/plugins/session.d.ts.map +1 -1
- package/node_modules/@pi-harness/core/dist/plugins/session.js.map +1 -1
- package/node_modules/@pi-harness/core/dist/profile.d.ts.map +1 -1
- package/node_modules/@pi-harness/core/dist/profile.js +3 -1
- package/node_modules/@pi-harness/core/dist/profile.js.map +1 -1
- package/node_modules/@pi-harness/core/dist/stdio.d.ts.map +1 -1
- package/node_modules/@pi-harness/core/dist/stdio.js +1 -1
- package/node_modules/@pi-harness/core/dist/stdio.js.map +1 -1
- package/node_modules/@pi-harness/core/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 +6 -6
- 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/bundle-web-app/package.json +1 -1
- package/packages/cli/dist/bin.js.map +1 -1
- package/packages/cli/dist/main.d.ts.map +1 -1
- package/packages/cli/dist/main.js +2 -2
- package/packages/cli/dist/main.js.map +1 -1
- package/packages/cli/dist/node-stdio.d.ts.map +1 -1
- package/packages/cli/dist/node-stdio.js +3 -1
- package/packages/cli/dist/node-stdio.js.map +1 -1
- package/packages/cli/package.json +1 -1
- package/packages/cli/src/bin.ts +5 -1
- package/packages/cli/src/main.ts +25 -7
- package/packages/cli/src/node-stdio.ts +5 -2
- package/packages/cli/test/args.test.ts +18 -3
- package/packages/cli/test/binary.test.ts +10 -2
- package/packages/cli/test/broken-pipe.test.ts +15 -4
- package/packages/cli/test/cli.test.ts +24 -6
- package/packages/cli/test/node-stdio.test.ts +10 -3
- package/packages/cli/test/relaunch.test.ts +5 -1
- package/packages/cli/test/stdin-shutdown.test.ts +20 -5
- package/packages/client-web/package.json +1 -1
- package/packages/client-web/test/plugin-navigation.test.ts +1 -3
- package/packages/core/dist/boot.d.ts.map +1 -1
- package/packages/core/dist/boot.js.map +1 -1
- package/packages/core/dist/config.d.ts.map +1 -1
- package/packages/core/dist/config.js.map +1 -1
- package/packages/core/dist/http.js +1 -1
- package/packages/core/dist/http.js.map +1 -1
- package/packages/core/dist/plugins/resources.d.ts.map +1 -1
- package/packages/core/dist/plugins/resources.js +9 -3
- package/packages/core/dist/plugins/resources.js.map +1 -1
- package/packages/core/dist/plugins/runtime.d.ts.map +1 -1
- package/packages/core/dist/plugins/runtime.js +11 -3
- package/packages/core/dist/plugins/runtime.js.map +1 -1
- package/packages/core/dist/plugins/session.d.ts.map +1 -1
- package/packages/core/dist/plugins/session.js.map +1 -1
- package/packages/core/dist/profile.d.ts.map +1 -1
- package/packages/core/dist/profile.js +3 -1
- package/packages/core/dist/profile.js.map +1 -1
- package/packages/core/dist/stdio.d.ts.map +1 -1
- package/packages/core/dist/stdio.js +1 -1
- package/packages/core/dist/stdio.js.map +1 -1
- package/packages/core/package.json +1 -1
- package/packages/core/src/boot.ts +6 -2
- package/packages/core/src/config.ts +2 -1
- package/packages/core/src/http.ts +1 -1
- package/packages/core/src/plugins/resources.ts +17 -3
- package/packages/core/src/plugins/runtime.ts +25 -4
- package/packages/core/src/plugins/session.ts +7 -3
- package/packages/core/src/profile.ts +4 -1
- package/packages/core/src/stdio.ts +4 -2
- package/packages/core/test/boot.test.ts +13 -5
- package/packages/core/test/config.test.ts +23 -5
- package/packages/core/test/http.test.ts +4 -2
- package/packages/core/test/runtime-fixture.ts +19 -4
- package/packages/core/test/runtime.test.ts +23 -6
- package/packages/host-webserver/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stdio.js","sourceRoot":"","sources":["../src/stdio.ts"],"names":[],"mappings":"AAIA,MAAM,OAAO,4BAA6B,SAAQ,KAAK;IACnC,IAAI,GAAG,8BAA8B,CAAC;IAExD;QACE,KAAK,CAAC,4BAA4B,CAAC,CAAC;IACtC,CAAC;CACF;AA0BD,MAAM,UAAU,mBAAmB,CAAC,OAAgB,EAAE,KAAqB;IACzE,OAAO,OAAO,CAAC,OAAO,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;AAClD,CAAC;AAED,SAAS,cAAc,CAAC,IAAuB;IAC7C,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IACxC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACrF,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,UAAU,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACvB,IAAI,MAAM,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;QACvE,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;QAC3E,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QACrC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;QAC3E,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAC3C,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACvB,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,MAAM,mDAAmD,CAAC,CAAC;IACxJ,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACxB,CAAC;AAED,MAAM,0BAA0B,GAAG,GAAG,CAAC;AACvC,MAAM,2BAA2B,GAAG,GAAG,CAAC;AAExC,SAAS,sBAAsB,CAAC,IAAa;IAC3C,IAAI,IAAY,CAAC;IACjB,IAAI,CAAC;QACH,IAAI,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"stdio.js","sourceRoot":"","sources":["../src/stdio.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,7 +10,10 @@ function assertUniqueEntryIds(entries: readonly EntryOptions[], seen = new Map<s
|
|
|
10
10
|
for (const entry of entries) {
|
|
11
11
|
if (typeof entry.id === "string" && entry.id.length > 0) {
|
|
12
12
|
const previous = seen.get(entry.id);
|
|
13
|
-
if (previous !== undefined)
|
|
13
|
+
if (previous !== undefined)
|
|
14
|
+
throw new Error(
|
|
15
|
+
`Duplicate loader entry id "${entry.id}" is used by both ${previous} and ${entry.name}; ids must be unique across the whole profile because nested groups share their tree's entry store`,
|
|
16
|
+
);
|
|
14
17
|
seen.set(entry.id, entry.name);
|
|
15
18
|
}
|
|
16
19
|
if (entry.group === true && Array.isArray(entry.config)) assertUniqueEntryIds(entry.config as EntryOptions[], seen);
|
|
@@ -30,7 +33,8 @@ class ReadonlyInclude extends Include {
|
|
|
30
33
|
override write(): void {}
|
|
31
34
|
|
|
32
35
|
override import(name: string, getOuterStack?: () => string[]): unknown {
|
|
33
|
-
if (this.ctx.loader.internal !== undefined || name.startsWith("cordis:") || name.startsWith(".") || name.startsWith("/") || name.includes("://"))
|
|
36
|
+
if (this.ctx.loader.internal !== undefined || name.startsWith("cordis:") || name.startsWith(".") || name.startsWith("/") || name.includes("://"))
|
|
37
|
+
return super.import(name, getOuterStack);
|
|
34
38
|
let resolved: string;
|
|
35
39
|
try {
|
|
36
40
|
resolved = createRequire(this.filename).resolve(name);
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export function assertKnownConfigKeys(plugin: string, config: unknown, known: readonly string[]): void {
|
|
2
2
|
if (config === undefined || config === null || typeof config !== "object") return;
|
|
3
3
|
const unknown = Object.keys(config).filter((key) => !known.includes(key));
|
|
4
|
-
if (unknown.length > 0)
|
|
4
|
+
if (unknown.length > 0)
|
|
5
|
+
throw new Error(`Unknown ${plugin} config keys: ${unknown.join(", ")}; supported keys are ${known.length === 0 ? "(none)" : known.join(", ")}`);
|
|
5
6
|
}
|
|
@@ -11,7 +11,7 @@ interface HttpDispatcherModule {
|
|
|
11
11
|
// shared with Pi, which a direct undici dependency of our own would not.
|
|
12
12
|
async function loadHttpDispatcher(): Promise<HttpDispatcherModule> {
|
|
13
13
|
const entry = import.meta.resolve("@earendil-works/pi-coding-agent");
|
|
14
|
-
return await import(new URL("./core/http-dispatcher.js", entry).href) as HttpDispatcherModule;
|
|
14
|
+
return (await import(new URL("./core/http-dispatcher.js", entry).href)) as HttpDispatcherModule;
|
|
15
15
|
}
|
|
16
16
|
|
|
17
17
|
/**
|
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
import type { Context } from "@deepseek-ai/cordis";
|
|
2
2
|
import z from "@deepseek-ai/schemastery";
|
|
3
|
-
import {
|
|
3
|
+
import {
|
|
4
|
+
ProjectTrustStore,
|
|
5
|
+
SettingsManager,
|
|
6
|
+
createAgentSessionServices,
|
|
7
|
+
hasTrustRequiringProjectResources,
|
|
8
|
+
type AgentSessionServices,
|
|
9
|
+
} from "@earendil-works/pi-coding-agent";
|
|
4
10
|
import { assertKnownConfigKeys } from "../config.js";
|
|
5
11
|
import { configureHttpProxy } from "../http.js";
|
|
6
12
|
|
|
@@ -50,8 +56,16 @@ export default {
|
|
|
50
56
|
resourceLoaderOptions,
|
|
51
57
|
resourceLoaderReloadOptions: { resolveProjectTrust: () => Promise.resolve(projectTrusted) },
|
|
52
58
|
});
|
|
53
|
-
for (const failure of settingsManager.drainErrors())
|
|
54
|
-
|
|
59
|
+
for (const failure of settingsManager.drainErrors())
|
|
60
|
+
services.diagnostics.push({
|
|
61
|
+
type: "warning",
|
|
62
|
+
message: `Invalid ${failure.scope} settings file${failure.path === undefined ? "" : ` ${failure.path}`}: ${failure.error.message}`,
|
|
63
|
+
});
|
|
64
|
+
if (!projectTrusted && hasTrustRequiringProjectResources(cwd))
|
|
65
|
+
services.diagnostics.push({
|
|
66
|
+
type: "warning",
|
|
67
|
+
message: `Skipped project-local Pi resources under ${cwd} because the project is not trusted; set trustProject: true on the pi-resources entry to load them`,
|
|
68
|
+
});
|
|
55
69
|
const errors = services.diagnostics.filter((diagnostic) => diagnostic.type === "error");
|
|
56
70
|
if (errors.length > 0) throw new Error(`Pi resource loading failed:\n${errors.map((diagnostic) => diagnostic.message).join("\n")}`);
|
|
57
71
|
return services;
|
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
import type { Context } from "@deepseek-ai/cordis";
|
|
2
2
|
import z from "@deepseek-ai/schemastery";
|
|
3
|
-
import {
|
|
3
|
+
import {
|
|
4
|
+
createAgentSessionFromServices,
|
|
5
|
+
createAgentSessionRuntime,
|
|
6
|
+
type AgentSession,
|
|
7
|
+
type CreateAgentSessionRuntimeFactory,
|
|
8
|
+
type SessionManager,
|
|
9
|
+
} from "@earendil-works/pi-coding-agent";
|
|
4
10
|
import { PiRuntime } from "../runtime.js";
|
|
5
11
|
import { assertKnownConfigKeys } from "../config.js";
|
|
6
12
|
|
|
@@ -24,7 +30,13 @@ function enterSessionManagerGate(manager: SessionManager): { ready: Promise<void
|
|
|
24
30
|
const held = new Promise<void>((resolve) => {
|
|
25
31
|
release = resolve;
|
|
26
32
|
});
|
|
27
|
-
sessionManagerGate.set(
|
|
33
|
+
sessionManagerGate.set(
|
|
34
|
+
manager,
|
|
35
|
+
ready.then(
|
|
36
|
+
() => held,
|
|
37
|
+
() => held,
|
|
38
|
+
),
|
|
39
|
+
);
|
|
28
40
|
return { ready, release };
|
|
29
41
|
}
|
|
30
42
|
|
|
@@ -80,7 +92,12 @@ export default {
|
|
|
80
92
|
// profile did not name is dropped. Report it rather than letting the tool vanish silently.
|
|
81
93
|
const activeTools = new Set(session.getActiveToolNames());
|
|
82
94
|
const droppedTools = registeredTools.filter((name) => !activeTools.has(name));
|
|
83
|
-
if (droppedTools.length > 0)
|
|
95
|
+
if (droppedTools.length > 0)
|
|
96
|
+
context.emit("pi/extension-error", {
|
|
97
|
+
extensionPath: "pi-tools",
|
|
98
|
+
event: "session_start",
|
|
99
|
+
error: `Pi tools registered by extensions are not enabled because the profile does not list them: ${droppedTools.join(", ")}; add them to the pi-tools names option to enable them`,
|
|
100
|
+
});
|
|
84
101
|
};
|
|
85
102
|
let unsubscribe: (() => void) | undefined;
|
|
86
103
|
const rebindSession = async (session: AgentSession): Promise<void> => {
|
|
@@ -91,7 +108,11 @@ export default {
|
|
|
91
108
|
try {
|
|
92
109
|
context.emit("pi/session-event", event);
|
|
93
110
|
} catch (error) {
|
|
94
|
-
context.emit("pi/extension-error", {
|
|
111
|
+
context.emit("pi/extension-error", {
|
|
112
|
+
extensionPath: "pi/session-event",
|
|
113
|
+
event: event.type,
|
|
114
|
+
error: error instanceof Error ? error.message : String(error),
|
|
115
|
+
});
|
|
95
116
|
}
|
|
96
117
|
});
|
|
97
118
|
};
|
|
@@ -21,9 +21,13 @@ export default {
|
|
|
21
21
|
apply(context: Context, config: SessionPluginConfig) {
|
|
22
22
|
assertKnownConfigKeys("pi-session", config, ["storage", "directory"]);
|
|
23
23
|
const storage = config.storage ?? "jsonl";
|
|
24
|
-
const manager =
|
|
25
|
-
|
|
26
|
-
|
|
24
|
+
const manager =
|
|
25
|
+
storage === "memory"
|
|
26
|
+
? SessionManager.inMemory(context.piHarnessLaunch.cwd)
|
|
27
|
+
: SessionManager.create(
|
|
28
|
+
context.piHarnessLaunch.cwd,
|
|
29
|
+
config.directory == null ? join(context.piHarnessLaunch.agentDir, "sessions") : resolve(context.piHarnessLaunch.cwd, config.directory),
|
|
30
|
+
);
|
|
27
31
|
context.provide("piSession", { manager });
|
|
28
32
|
},
|
|
29
33
|
};
|
|
@@ -27,7 +27,10 @@ export async function resolveProfileConfig(_options: ResolveProfileConfigOptions
|
|
|
27
27
|
try {
|
|
28
28
|
await access(configPath);
|
|
29
29
|
} catch (cause) {
|
|
30
|
-
if (options.configPath === undefined)
|
|
30
|
+
if (options.configPath === undefined)
|
|
31
|
+
throw new Error(`Pi Harness profile config does not exist or is not readable: ${configPath}; built-in profiles are ${BUILTIN_PROFILES.join(", ")}`, {
|
|
32
|
+
cause,
|
|
33
|
+
});
|
|
31
34
|
throw new Error(`Pi Harness profile config does not exist or is not readable: ${configPath}`, { cause });
|
|
32
35
|
}
|
|
33
36
|
return configPath;
|
|
@@ -62,7 +62,7 @@ const TOOL_ARGUMENT_SUMMARY_LIMIT = 120;
|
|
|
62
62
|
function summarizeToolArguments(args: unknown): string {
|
|
63
63
|
let text: string;
|
|
64
64
|
try {
|
|
65
|
-
text = typeof args === "string" ? args : JSON.stringify(args) ?? "";
|
|
65
|
+
text = typeof args === "string" ? args : (JSON.stringify(args) ?? "");
|
|
66
66
|
} catch {
|
|
67
67
|
return "";
|
|
68
68
|
}
|
|
@@ -139,7 +139,9 @@ export class StdioApplication implements PiHarnessApplication {
|
|
|
139
139
|
const stopReason = lastAssistantMessage?.stopReason;
|
|
140
140
|
if (stopReason === "error" || stopReason === "aborted" || stopReason === "length") {
|
|
141
141
|
if (this.#wroteOutput) this.#stdio.writeOutput("\n");
|
|
142
|
-
this.#stdio.writeError(
|
|
142
|
+
this.#stdio.writeError(
|
|
143
|
+
`${lastAssistantMessage?.errorMessage ?? (stopReason === "length" ? "Response was truncated by the model's output limit" : `Request ${stopReason}`)}\n`,
|
|
144
|
+
);
|
|
143
145
|
return 1;
|
|
144
146
|
}
|
|
145
147
|
if (!this.#wroteOutput) {
|
|
@@ -101,12 +101,20 @@ describe("bootHarness", () => {
|
|
|
101
101
|
|
|
102
102
|
test("rejects a duplicate entry id reused across sibling groups", async () => {
|
|
103
103
|
const profile = await createProfile([]);
|
|
104
|
-
const first = await createPlugin(
|
|
104
|
+
const first = await createPlugin(
|
|
105
|
+
profile.directory,
|
|
106
|
+
"first",
|
|
107
|
+
`export default function first(ctx, config) { ctx.provide("fixtureDuplicate", config?.tag ?? "no-config"); }`,
|
|
108
|
+
);
|
|
105
109
|
const second = await createPlugin(profile.directory, "second", `export default function second(ctx) { ctx.provide("fixtureDuplicateSecond", true); }`);
|
|
106
|
-
await writeFile(
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
+
await writeFile(
|
|
111
|
+
profile.profilePath,
|
|
112
|
+
JSON.stringify([
|
|
113
|
+
{ id: "one", name: "cordis:group", group: true, config: [{ id: "shared", name: first, config: { tag: "kept" } }] },
|
|
114
|
+
{ id: "two", name: "cordis:group", group: true, config: [{ id: "shared", name: second }] },
|
|
115
|
+
]),
|
|
116
|
+
"utf8",
|
|
117
|
+
);
|
|
110
118
|
|
|
111
119
|
await expect(bootHarness({ configPath: profile.profilePath })).rejects.toThrow(/Duplicate loader entry id "shared"/);
|
|
112
120
|
});
|
|
@@ -36,7 +36,9 @@ describe("plugin configuration validation", () => {
|
|
|
36
36
|
test("rejects an unknown key in the session plugin", async () => {
|
|
37
37
|
const { context } = await createContext();
|
|
38
38
|
|
|
39
|
-
await expect(context.plugin(sessionPlugin, { storage: "memory", directroy: "/tmp/x" } as never)).rejects.toThrow(
|
|
39
|
+
await expect(context.plugin(sessionPlugin, { storage: "memory", directroy: "/tmp/x" } as never)).rejects.toThrow(
|
|
40
|
+
/Unknown pi-session config keys: directroy/,
|
|
41
|
+
);
|
|
40
42
|
});
|
|
41
43
|
|
|
42
44
|
test("rejects an empty session directory instead of writing transcripts to the launch cwd", async () => {
|
|
@@ -71,11 +73,19 @@ describe("project trust", () => {
|
|
|
71
73
|
const agentDir = await mkdtemp(join(tmpdir(), "pi-harness-untrusted-agent-"));
|
|
72
74
|
const marker = join(cwd, "executed.txt");
|
|
73
75
|
await mkdir(join(cwd, ".pi", "extensions"), { recursive: true });
|
|
74
|
-
await writeFile(
|
|
76
|
+
await writeFile(
|
|
77
|
+
join(cwd, ".pi", "extensions", "evil.js"),
|
|
78
|
+
`import { writeFileSync } from "node:fs"; writeFileSync(${JSON.stringify(marker)}, "executed"); export default function (pi) {};`,
|
|
79
|
+
"utf8",
|
|
80
|
+
);
|
|
75
81
|
const context = new Context();
|
|
76
82
|
contexts.push(context);
|
|
77
83
|
provideLaunchContext(context, { cwd, agentDir, args: [], requestExit() {} });
|
|
78
|
-
context.provide("piModelRuntime", {
|
|
84
|
+
context.provide("piModelRuntime", {
|
|
85
|
+
runtime: await ModelRuntime.create({ refreshOnCreate: false, modelsPath: null, authPath: join(agentDir, "auth.json") }),
|
|
86
|
+
provider: "none",
|
|
87
|
+
model: "none",
|
|
88
|
+
});
|
|
79
89
|
|
|
80
90
|
await context.plugin(resourcesPlugin, { noSkills: true, noPromptTemplates: true, noThemes: true, noContextFiles: true });
|
|
81
91
|
|
|
@@ -88,11 +98,19 @@ describe("project trust", () => {
|
|
|
88
98
|
const agentDir = await mkdtemp(join(tmpdir(), "pi-harness-trusted-agent-"));
|
|
89
99
|
const marker = join(cwd, "executed.txt");
|
|
90
100
|
await mkdir(join(cwd, ".pi", "extensions"), { recursive: true });
|
|
91
|
-
await writeFile(
|
|
101
|
+
await writeFile(
|
|
102
|
+
join(cwd, ".pi", "extensions", "probe.js"),
|
|
103
|
+
`import { writeFileSync } from "node:fs"; writeFileSync(${JSON.stringify(marker)}, "executed"); export default function (pi) {};`,
|
|
104
|
+
"utf8",
|
|
105
|
+
);
|
|
92
106
|
const context = new Context();
|
|
93
107
|
contexts.push(context);
|
|
94
108
|
provideLaunchContext(context, { cwd, agentDir, args: [], requestExit() {} });
|
|
95
|
-
context.provide("piModelRuntime", {
|
|
109
|
+
context.provide("piModelRuntime", {
|
|
110
|
+
runtime: await ModelRuntime.create({ refreshOnCreate: false, modelsPath: null, authPath: join(agentDir, "auth.json") }),
|
|
111
|
+
provider: "none",
|
|
112
|
+
model: "none",
|
|
113
|
+
});
|
|
96
114
|
|
|
97
115
|
await context.plugin(resourcesPlugin, { trustProject: true, noSkills: true, noPromptTemplates: true, noThemes: true, noContextFiles: true });
|
|
98
116
|
|
|
@@ -27,8 +27,10 @@ describe("configureHttpProxy", () => {
|
|
|
27
27
|
expect(process.env.HTTPS_PROXY).toBe("http://127.0.0.1:9999");
|
|
28
28
|
expect(process.env.HTTP_PROXY).toBe("http://127.0.0.1:9999");
|
|
29
29
|
} finally {
|
|
30
|
-
if (previousHttp === undefined) delete process.env.HTTP_PROXY;
|
|
31
|
-
|
|
30
|
+
if (previousHttp === undefined) delete process.env.HTTP_PROXY;
|
|
31
|
+
else process.env.HTTP_PROXY = previousHttp;
|
|
32
|
+
if (previousHttps === undefined) delete process.env.HTTPS_PROXY;
|
|
33
|
+
else process.env.HTTPS_PROXY = previousHttps;
|
|
32
34
|
}
|
|
33
35
|
});
|
|
34
36
|
});
|
|
@@ -10,19 +10,34 @@ import runtimePlugin from "../src/plugins/runtime.js";
|
|
|
10
10
|
import sessionPlugin from "../src/plugins/session.js";
|
|
11
11
|
import toolsPlugin from "../src/plugins/tools.js";
|
|
12
12
|
|
|
13
|
-
export async function createTestRuntimeContext(
|
|
13
|
+
export async function createTestRuntimeContext(
|
|
14
|
+
responses: FauxResponseStep[],
|
|
15
|
+
toolNames: string[] = [],
|
|
16
|
+
resourceOptions: { noExtensions: boolean; agentDir?: string } = { noExtensions: true },
|
|
17
|
+
): Promise<{ context: Context; faux: FauxProviderHandle }> {
|
|
14
18
|
const cwd = await mkdtemp(join(tmpdir(), "pi-harness-runtime-"));
|
|
15
|
-
const agentDir = resourceOptions.agentDir ?? await mkdtemp(join(tmpdir(), "pi-harness-runtime-agent-"));
|
|
19
|
+
const agentDir = resourceOptions.agentDir ?? (await mkdtemp(join(tmpdir(), "pi-harness-runtime-agent-")));
|
|
16
20
|
const context = new Context();
|
|
17
21
|
provideLaunchContext(context, { cwd, agentDir, args: [], requestExit() {} });
|
|
18
|
-
const modelRuntime = await ModelRuntime.create({
|
|
22
|
+
const modelRuntime = await ModelRuntime.create({
|
|
23
|
+
refreshOnCreate: false,
|
|
24
|
+
modelsPath: null,
|
|
25
|
+
authPath: join(agentDir, "auth.json"),
|
|
26
|
+
modelsStorePath: join(agentDir, "models-store.json"),
|
|
27
|
+
});
|
|
19
28
|
const faux = fauxProvider({ provider: "pi-harness-test", models: [{ id: "deterministic" }] });
|
|
20
29
|
faux.setResponses(responses);
|
|
21
30
|
modelRuntime.registerNativeProvider(faux.provider);
|
|
22
31
|
const model = modelRuntime.getModel("pi-harness-test", "deterministic");
|
|
23
32
|
if (model === undefined) throw new Error("Faux model registration failed");
|
|
24
33
|
context.provide("piModelRuntime", { runtime: modelRuntime, provider: "pi-harness-test", model: "deterministic" });
|
|
25
|
-
await context.plugin(resourcesPlugin, {
|
|
34
|
+
await context.plugin(resourcesPlugin, {
|
|
35
|
+
noExtensions: resourceOptions.noExtensions,
|
|
36
|
+
noSkills: true,
|
|
37
|
+
noPromptTemplates: true,
|
|
38
|
+
noThemes: true,
|
|
39
|
+
noContextFiles: true,
|
|
40
|
+
});
|
|
26
41
|
context.provide("piModels", { runtime: modelRuntime, model });
|
|
27
42
|
await context.plugin(sessionPlugin, { storage: "memory" });
|
|
28
43
|
await context.plugin(toolsPlugin, { names: toolNames });
|
|
@@ -67,7 +67,11 @@ describe("Pi runtime plugin", () => {
|
|
|
67
67
|
test("accepts a tool an extension registers during session start", async () => {
|
|
68
68
|
const agentDir = await mkdtemp(join(tmpdir(), "pi-harness-extension-tool-"));
|
|
69
69
|
await mkdir(join(agentDir, "extensions"), { recursive: true });
|
|
70
|
-
await writeFile(
|
|
70
|
+
await writeFile(
|
|
71
|
+
join(agentDir, "extensions", "greet.js"),
|
|
72
|
+
`export default function (pi) { pi.on("session_start", () => { pi.registerTool({ name: "greet", label: "Greet", description: "Greet a person.", parameters: { type: "object", properties: { name: { type: "string" } }, required: ["name"] }, async execute() { return { content: [{ type: "text", text: "hi" }], details: undefined }; } }); }); }`,
|
|
73
|
+
"utf8",
|
|
74
|
+
);
|
|
71
75
|
|
|
72
76
|
const { context } = await createTestRuntimeContext([], ["greet"], { noExtensions: false, agentDir });
|
|
73
77
|
contexts.push(context);
|
|
@@ -79,7 +83,11 @@ describe("Pi runtime plugin", () => {
|
|
|
79
83
|
const agentDir = await mkdtemp(join(tmpdir(), "pi-harness-shutdown-"));
|
|
80
84
|
const marker = join(agentDir, "shutdown.txt");
|
|
81
85
|
await mkdir(join(agentDir, "extensions"), { recursive: true });
|
|
82
|
-
await writeFile(
|
|
86
|
+
await writeFile(
|
|
87
|
+
join(agentDir, "extensions", "probe.js"),
|
|
88
|
+
`import { writeFileSync } from "node:fs"; export default function (pi) { pi.on("session_shutdown", () => { writeFileSync(${JSON.stringify(marker)}, "shutdown"); }); }`,
|
|
89
|
+
"utf8",
|
|
90
|
+
);
|
|
83
91
|
const { context } = await createTestRuntimeContext([], [], { noExtensions: false, agentDir });
|
|
84
92
|
|
|
85
93
|
await context.fiber.dispose();
|
|
@@ -106,7 +114,9 @@ describe("Pi runtime plugin", () => {
|
|
|
106
114
|
}
|
|
107
115
|
|
|
108
116
|
const teardown = context.fiber.dispose();
|
|
109
|
-
const replacement = replacementContext.plugin(runtimePlugin, { thinkingLevel: "off" }).then(() => {
|
|
117
|
+
const replacement = replacementContext.plugin(runtimePlugin, { thinkingLevel: "off" }).then(() => {
|
|
118
|
+
order.push("second-session:created");
|
|
119
|
+
});
|
|
110
120
|
await Promise.all([teardown, replacement]);
|
|
111
121
|
|
|
112
122
|
expect(order).toEqual(["teardown:start", "teardown:end", "second-session:created"]);
|
|
@@ -120,7 +130,10 @@ describe("Pi runtime plugin", () => {
|
|
|
120
130
|
let disposed = 0;
|
|
121
131
|
Object.defineProperty(session, "isIdle", { value: false, configurable: true });
|
|
122
132
|
session.abort = () => Promise.reject(new Error("abort failed"));
|
|
123
|
-
session.dispose = () => {
|
|
133
|
+
session.dispose = () => {
|
|
134
|
+
disposed += 1;
|
|
135
|
+
realDispose();
|
|
136
|
+
};
|
|
124
137
|
|
|
125
138
|
await expect(runtime.dispose()).rejects.toThrow(/abort failed/);
|
|
126
139
|
|
|
@@ -131,8 +144,12 @@ describe("Pi runtime plugin", () => {
|
|
|
131
144
|
test("keeps the agent run alive when a pi/session-event listener throws", async () => {
|
|
132
145
|
const { context, responseText, callCount } = await createRuntimeContext();
|
|
133
146
|
const extensionErrors: string[] = [];
|
|
134
|
-
context.on("pi/extension-error", (error) => {
|
|
135
|
-
|
|
147
|
+
context.on("pi/extension-error", (error) => {
|
|
148
|
+
extensionErrors.push(error.error);
|
|
149
|
+
});
|
|
150
|
+
context.on("pi/session-event", () => {
|
|
151
|
+
throw new Error("listener boom");
|
|
152
|
+
});
|
|
136
153
|
|
|
137
154
|
await context.piRuntime.prompt("respond once");
|
|
138
155
|
|