@pi-harness/pi-harness 0.1.32 → 0.1.34
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-CZMbiZj6.css +2 -0
- package/apps/web/dist/assets/index-z2r7-WQf.js +26 -0
- package/apps/web/dist/index.html +2 -2
- package/apps/web/package.json +1 -1
- package/apps/web/server-dist/bin.js +8 -0
- package/apps/web/server-dist/bin.js.map +1 -1
- package/apps/web/src/server/bin.ts +8 -0
- package/apps/web/src/style.css +24 -0
- package/node_modules/@pi-harness/api-gateway/dist/index.d.ts.map +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/index.js +89 -4
- package/node_modules/@pi-harness/api-gateway/dist/index.js.map +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/agent-teams.json +4 -4
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/anchored-standard.json +2 -2
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/annotation.json +2 -2
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/archify.json +2 -2
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/at-file.json +2 -2
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/auto-mode.json +2 -2
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/better-sidebar.json +4 -4
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/browser-fetch.json +2 -2
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/browser-session.json +2 -2
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/canvas-draw.json +2 -2
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/change-verifier.json +2 -2
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/cleaner.json +2 -2
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/cli-notifier.json +2 -2
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/code2skill.json +4 -4
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/colleague-skill.json +2 -2
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/context-doctor.json +2 -2
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/context.json +2 -2
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/cordis-group.json +11 -4
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/cordis-logger-console.json +15 -4
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/cordis-timer.json +10 -4
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/cost-meter.json +2 -2
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/dependency-checker.json +2 -2
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/docker-sandbox.json +2 -2
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/fail-logger.json +2 -2
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/genui.json +2 -2
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/git-time-capsule.json +2 -2
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/graph-memory.json +4 -4
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/history-compressor.json +2 -2
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/hol-guard.json +2 -2
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/i18n-pair.json +2 -2
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/image-compressor.json +2 -2
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/llm-verifier.json +4 -4
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/mcp-client.json +4 -4
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/mcp-panel.json +4 -4
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/memory.json +4 -4
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/mirage-bridge.json +4 -4
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/mock-server.json +4 -4
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/modlens.json +2 -2
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/module-search.json +2 -2
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/obsidian-sync.json +2 -2
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/openpets.json +2 -2
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/plan-execute.json +2 -2
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/plugin-check.json +2 -2
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/plugin-dev.json +2 -2
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/plugin-finder.json +2 -2
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/plugin-radar.json +2 -2
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/plugin-stars.json +2 -2
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/prompt-guard.json +2 -2
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/prompt-library.json +2 -2
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/readme-gen.json +2 -2
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/recall-unread.json +2 -2
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/reverse-skill.json +2 -2
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/reviewer-bot.json +2 -2
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/runtime-doctor.json +2 -2
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/secure-audit.json +2 -2
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/session-bookmarks.json +2 -2
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/session-bridge.json +2 -2
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/session-compare.json +2 -2
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/session-export.json +2 -2
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/session-insights.json +2 -2
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/session-search.json +2 -2
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/skill-catalog.json +2 -2
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/skill-guard.json +2 -2
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/sql-lens.json +4 -4
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/synapse.json +2 -2
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/tab-manager.json +2 -2
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/taskboard.json +2 -2
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/telemetry-blocker.json +2 -2
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/test-harness.json +4 -4
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/theme-studio.json +2 -2
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/token-guard.json +2 -2
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/turn-rewind.json +2 -2
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/undo-savepoint.json +2 -2
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/vision-toolkit.json +2 -2
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/web-research.json +2 -2
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/workspace-navigator.json +2 -2
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/workspace-search.json +2 -2
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/yaml-validator.json +2 -2
- package/node_modules/@pi-harness/api-gateway/package.json +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 -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 +6 -6
- package/packages/api-gateway/dist/index.d.ts.map +1 -1
- package/packages/api-gateway/dist/index.js +89 -4
- package/packages/api-gateway/dist/index.js.map +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/agent-teams.json +4 -4
- package/packages/api-gateway/dist/marketplace-entries/official/anchored-standard.json +2 -2
- package/packages/api-gateway/dist/marketplace-entries/official/annotation.json +2 -2
- package/packages/api-gateway/dist/marketplace-entries/official/archify.json +2 -2
- package/packages/api-gateway/dist/marketplace-entries/official/at-file.json +2 -2
- package/packages/api-gateway/dist/marketplace-entries/official/auto-mode.json +2 -2
- package/packages/api-gateway/dist/marketplace-entries/official/better-sidebar.json +4 -4
- package/packages/api-gateway/dist/marketplace-entries/official/browser-fetch.json +2 -2
- package/packages/api-gateway/dist/marketplace-entries/official/browser-session.json +2 -2
- package/packages/api-gateway/dist/marketplace-entries/official/canvas-draw.json +2 -2
- package/packages/api-gateway/dist/marketplace-entries/official/change-verifier.json +2 -2
- package/packages/api-gateway/dist/marketplace-entries/official/cleaner.json +2 -2
- package/packages/api-gateway/dist/marketplace-entries/official/cli-notifier.json +2 -2
- package/packages/api-gateway/dist/marketplace-entries/official/code2skill.json +4 -4
- package/packages/api-gateway/dist/marketplace-entries/official/colleague-skill.json +2 -2
- package/packages/api-gateway/dist/marketplace-entries/official/context-doctor.json +2 -2
- package/packages/api-gateway/dist/marketplace-entries/official/context.json +2 -2
- package/packages/api-gateway/dist/marketplace-entries/official/cordis-group.json +11 -4
- package/packages/api-gateway/dist/marketplace-entries/official/cordis-logger-console.json +15 -4
- package/packages/api-gateway/dist/marketplace-entries/official/cordis-timer.json +10 -4
- package/packages/api-gateway/dist/marketplace-entries/official/cost-meter.json +2 -2
- package/packages/api-gateway/dist/marketplace-entries/official/dependency-checker.json +2 -2
- package/packages/api-gateway/dist/marketplace-entries/official/docker-sandbox.json +2 -2
- package/packages/api-gateway/dist/marketplace-entries/official/fail-logger.json +2 -2
- package/packages/api-gateway/dist/marketplace-entries/official/genui.json +2 -2
- package/packages/api-gateway/dist/marketplace-entries/official/git-time-capsule.json +2 -2
- package/packages/api-gateway/dist/marketplace-entries/official/graph-memory.json +4 -4
- package/packages/api-gateway/dist/marketplace-entries/official/history-compressor.json +2 -2
- package/packages/api-gateway/dist/marketplace-entries/official/hol-guard.json +2 -2
- package/packages/api-gateway/dist/marketplace-entries/official/i18n-pair.json +2 -2
- package/packages/api-gateway/dist/marketplace-entries/official/image-compressor.json +2 -2
- package/packages/api-gateway/dist/marketplace-entries/official/llm-verifier.json +4 -4
- package/packages/api-gateway/dist/marketplace-entries/official/mcp-client.json +4 -4
- package/packages/api-gateway/dist/marketplace-entries/official/mcp-panel.json +4 -4
- package/packages/api-gateway/dist/marketplace-entries/official/memory.json +4 -4
- package/packages/api-gateway/dist/marketplace-entries/official/mirage-bridge.json +4 -4
- package/packages/api-gateway/dist/marketplace-entries/official/mock-server.json +4 -4
- package/packages/api-gateway/dist/marketplace-entries/official/modlens.json +2 -2
- package/packages/api-gateway/dist/marketplace-entries/official/module-search.json +2 -2
- package/packages/api-gateway/dist/marketplace-entries/official/obsidian-sync.json +2 -2
- package/packages/api-gateway/dist/marketplace-entries/official/openpets.json +2 -2
- package/packages/api-gateway/dist/marketplace-entries/official/plan-execute.json +2 -2
- package/packages/api-gateway/dist/marketplace-entries/official/plugin-check.json +2 -2
- package/packages/api-gateway/dist/marketplace-entries/official/plugin-dev.json +2 -2
- package/packages/api-gateway/dist/marketplace-entries/official/plugin-finder.json +2 -2
- package/packages/api-gateway/dist/marketplace-entries/official/plugin-radar.json +2 -2
- package/packages/api-gateway/dist/marketplace-entries/official/plugin-stars.json +2 -2
- package/packages/api-gateway/dist/marketplace-entries/official/prompt-guard.json +2 -2
- package/packages/api-gateway/dist/marketplace-entries/official/prompt-library.json +2 -2
- package/packages/api-gateway/dist/marketplace-entries/official/readme-gen.json +2 -2
- package/packages/api-gateway/dist/marketplace-entries/official/recall-unread.json +2 -2
- package/packages/api-gateway/dist/marketplace-entries/official/reverse-skill.json +2 -2
- package/packages/api-gateway/dist/marketplace-entries/official/reviewer-bot.json +2 -2
- package/packages/api-gateway/dist/marketplace-entries/official/runtime-doctor.json +2 -2
- package/packages/api-gateway/dist/marketplace-entries/official/secure-audit.json +2 -2
- package/packages/api-gateway/dist/marketplace-entries/official/session-bookmarks.json +2 -2
- package/packages/api-gateway/dist/marketplace-entries/official/session-bridge.json +2 -2
- package/packages/api-gateway/dist/marketplace-entries/official/session-compare.json +2 -2
- package/packages/api-gateway/dist/marketplace-entries/official/session-export.json +2 -2
- package/packages/api-gateway/dist/marketplace-entries/official/session-insights.json +2 -2
- package/packages/api-gateway/dist/marketplace-entries/official/session-search.json +2 -2
- package/packages/api-gateway/dist/marketplace-entries/official/skill-catalog.json +2 -2
- package/packages/api-gateway/dist/marketplace-entries/official/skill-guard.json +2 -2
- package/packages/api-gateway/dist/marketplace-entries/official/sql-lens.json +4 -4
- package/packages/api-gateway/dist/marketplace-entries/official/synapse.json +2 -2
- package/packages/api-gateway/dist/marketplace-entries/official/tab-manager.json +2 -2
- package/packages/api-gateway/dist/marketplace-entries/official/taskboard.json +2 -2
- package/packages/api-gateway/dist/marketplace-entries/official/telemetry-blocker.json +2 -2
- package/packages/api-gateway/dist/marketplace-entries/official/test-harness.json +4 -4
- package/packages/api-gateway/dist/marketplace-entries/official/theme-studio.json +2 -2
- package/packages/api-gateway/dist/marketplace-entries/official/token-guard.json +2 -2
- package/packages/api-gateway/dist/marketplace-entries/official/turn-rewind.json +2 -2
- package/packages/api-gateway/dist/marketplace-entries/official/undo-savepoint.json +2 -2
- package/packages/api-gateway/dist/marketplace-entries/official/vision-toolkit.json +2 -2
- package/packages/api-gateway/dist/marketplace-entries/official/web-research.json +2 -2
- package/packages/api-gateway/dist/marketplace-entries/official/workspace-navigator.json +2 -2
- package/packages/api-gateway/dist/marketplace-entries/official/workspace-search.json +2 -2
- package/packages/api-gateway/dist/marketplace-entries/official/yaml-validator.json +2 -2
- package/packages/api-gateway/package.json +1 -1
- package/packages/api-gateway/src/index.ts +90 -5
- package/packages/api-gateway/src/marketplace-entries/official/agent-teams.json +4 -4
- package/packages/api-gateway/src/marketplace-entries/official/anchored-standard.json +2 -2
- package/packages/api-gateway/src/marketplace-entries/official/annotation.json +2 -2
- package/packages/api-gateway/src/marketplace-entries/official/archify.json +2 -2
- package/packages/api-gateway/src/marketplace-entries/official/at-file.json +2 -2
- package/packages/api-gateway/src/marketplace-entries/official/auto-mode.json +2 -2
- package/packages/api-gateway/src/marketplace-entries/official/better-sidebar.json +4 -4
- package/packages/api-gateway/src/marketplace-entries/official/browser-fetch.json +2 -2
- package/packages/api-gateway/src/marketplace-entries/official/browser-session.json +2 -2
- package/packages/api-gateway/src/marketplace-entries/official/canvas-draw.json +2 -2
- package/packages/api-gateway/src/marketplace-entries/official/change-verifier.json +2 -2
- package/packages/api-gateway/src/marketplace-entries/official/cleaner.json +2 -2
- package/packages/api-gateway/src/marketplace-entries/official/cli-notifier.json +2 -2
- package/packages/api-gateway/src/marketplace-entries/official/code2skill.json +4 -4
- package/packages/api-gateway/src/marketplace-entries/official/colleague-skill.json +2 -2
- package/packages/api-gateway/src/marketplace-entries/official/context-doctor.json +2 -2
- package/packages/api-gateway/src/marketplace-entries/official/context.json +2 -2
- package/packages/api-gateway/src/marketplace-entries/official/cordis-group.json +11 -4
- package/packages/api-gateway/src/marketplace-entries/official/cordis-logger-console.json +15 -4
- package/packages/api-gateway/src/marketplace-entries/official/cordis-timer.json +10 -4
- package/packages/api-gateway/src/marketplace-entries/official/cost-meter.json +2 -2
- package/packages/api-gateway/src/marketplace-entries/official/dependency-checker.json +2 -2
- package/packages/api-gateway/src/marketplace-entries/official/docker-sandbox.json +2 -2
- package/packages/api-gateway/src/marketplace-entries/official/fail-logger.json +2 -2
- package/packages/api-gateway/src/marketplace-entries/official/genui.json +2 -2
- package/packages/api-gateway/src/marketplace-entries/official/git-time-capsule.json +2 -2
- package/packages/api-gateway/src/marketplace-entries/official/graph-memory.json +4 -4
- package/packages/api-gateway/src/marketplace-entries/official/history-compressor.json +2 -2
- package/packages/api-gateway/src/marketplace-entries/official/hol-guard.json +2 -2
- package/packages/api-gateway/src/marketplace-entries/official/i18n-pair.json +2 -2
- package/packages/api-gateway/src/marketplace-entries/official/image-compressor.json +2 -2
- package/packages/api-gateway/src/marketplace-entries/official/llm-verifier.json +4 -4
- package/packages/api-gateway/src/marketplace-entries/official/mcp-client.json +4 -4
- package/packages/api-gateway/src/marketplace-entries/official/mcp-panel.json +4 -4
- package/packages/api-gateway/src/marketplace-entries/official/memory.json +4 -4
- package/packages/api-gateway/src/marketplace-entries/official/mirage-bridge.json +4 -4
- package/packages/api-gateway/src/marketplace-entries/official/mock-server.json +4 -4
- package/packages/api-gateway/src/marketplace-entries/official/modlens.json +2 -2
- package/packages/api-gateway/src/marketplace-entries/official/module-search.json +2 -2
- package/packages/api-gateway/src/marketplace-entries/official/obsidian-sync.json +2 -2
- package/packages/api-gateway/src/marketplace-entries/official/openpets.json +2 -2
- package/packages/api-gateway/src/marketplace-entries/official/plan-execute.json +2 -2
- package/packages/api-gateway/src/marketplace-entries/official/plugin-check.json +2 -2
- package/packages/api-gateway/src/marketplace-entries/official/plugin-dev.json +2 -2
- package/packages/api-gateway/src/marketplace-entries/official/plugin-finder.json +2 -2
- package/packages/api-gateway/src/marketplace-entries/official/plugin-radar.json +2 -2
- package/packages/api-gateway/src/marketplace-entries/official/plugin-stars.json +2 -2
- package/packages/api-gateway/src/marketplace-entries/official/prompt-guard.json +2 -2
- package/packages/api-gateway/src/marketplace-entries/official/prompt-library.json +2 -2
- package/packages/api-gateway/src/marketplace-entries/official/readme-gen.json +2 -2
- package/packages/api-gateway/src/marketplace-entries/official/recall-unread.json +2 -2
- package/packages/api-gateway/src/marketplace-entries/official/reverse-skill.json +2 -2
- package/packages/api-gateway/src/marketplace-entries/official/reviewer-bot.json +2 -2
- package/packages/api-gateway/src/marketplace-entries/official/runtime-doctor.json +2 -2
- package/packages/api-gateway/src/marketplace-entries/official/secure-audit.json +2 -2
- package/packages/api-gateway/src/marketplace-entries/official/session-bookmarks.json +2 -2
- package/packages/api-gateway/src/marketplace-entries/official/session-bridge.json +2 -2
- package/packages/api-gateway/src/marketplace-entries/official/session-compare.json +2 -2
- package/packages/api-gateway/src/marketplace-entries/official/session-export.json +2 -2
- package/packages/api-gateway/src/marketplace-entries/official/session-insights.json +2 -2
- package/packages/api-gateway/src/marketplace-entries/official/session-search.json +2 -2
- package/packages/api-gateway/src/marketplace-entries/official/skill-catalog.json +2 -2
- package/packages/api-gateway/src/marketplace-entries/official/skill-guard.json +2 -2
- package/packages/api-gateway/src/marketplace-entries/official/sql-lens.json +4 -4
- package/packages/api-gateway/src/marketplace-entries/official/synapse.json +2 -2
- package/packages/api-gateway/src/marketplace-entries/official/tab-manager.json +2 -2
- package/packages/api-gateway/src/marketplace-entries/official/taskboard.json +2 -2
- package/packages/api-gateway/src/marketplace-entries/official/telemetry-blocker.json +2 -2
- package/packages/api-gateway/src/marketplace-entries/official/test-harness.json +4 -4
- package/packages/api-gateway/src/marketplace-entries/official/theme-studio.json +2 -2
- package/packages/api-gateway/src/marketplace-entries/official/token-guard.json +2 -2
- package/packages/api-gateway/src/marketplace-entries/official/turn-rewind.json +2 -2
- package/packages/api-gateway/src/marketplace-entries/official/undo-savepoint.json +2 -2
- package/packages/api-gateway/src/marketplace-entries/official/vision-toolkit.json +2 -2
- package/packages/api-gateway/src/marketplace-entries/official/web-research.json +2 -2
- package/packages/api-gateway/src/marketplace-entries/official/workspace-navigator.json +2 -2
- package/packages/api-gateway/src/marketplace-entries/official/workspace-search.json +2 -2
- package/packages/api-gateway/src/marketplace-entries/official/yaml-validator.json +2 -2
- package/packages/api-gateway/test/index.test.ts +9 -4
- package/packages/api-gateway/test/marketplace.test.ts +83 -114
- package/packages/bundle-web-app/package.json +1 -1
- package/packages/cli/dist/main.d.ts.map +1 -1
- package/packages/cli/dist/main.js +2 -0
- package/packages/cli/dist/main.js.map +1 -1
- package/packages/cli/package.json +1 -1
- package/packages/cli/src/main.ts +2 -0
- package/packages/host-webserver/package.json +1 -1
- package/apps/web/dist/assets/index-BqOM0elx.css +0 -2
- package/apps/web/dist/assets/index-x2UhIAWm.js +0 -25
package/apps/web/dist/index.html
CHANGED
|
@@ -15,10 +15,10 @@
|
|
|
15
15
|
<link rel="apple-touch-icon" href="/icons/app/apple-touch-icon-180.png" sizes="180x180" />
|
|
16
16
|
<link rel="manifest" href="/manifest.webmanifest" />
|
|
17
17
|
<title>Pi Harness / Control Room</title>
|
|
18
|
-
<script type="module" crossorigin src="/assets/index-
|
|
18
|
+
<script type="module" crossorigin src="/assets/index-z2r7-WQf.js"></script>
|
|
19
19
|
<link rel="modulepreload" crossorigin href="/assets/react-vendor-BxoMtjVy.js">
|
|
20
20
|
<link rel="modulepreload" crossorigin href="/assets/markdown-vendor-DUdMWn0M.js">
|
|
21
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
21
|
+
<link rel="stylesheet" crossorigin href="/assets/index-CZMbiZj6.css">
|
|
22
22
|
</head>
|
|
23
23
|
<body>
|
|
24
24
|
<main id="root"></main>
|
package/apps/web/package.json
CHANGED
|
@@ -65,11 +65,19 @@ let harness;
|
|
|
65
65
|
const exitCodeFor = (signal) => (signal === "SIGINT" ? 130 : signal === "SIGHUP" ? 129 : 143);
|
|
66
66
|
// The Cordis loader wraps this failure in its own entry path and stack, none of which a user with an unprovisioned agent directory can act on, so the recognized case reports the remedy first and keeps exactly one line naming the model that is missing. Every other failure is still reported in full, because nothing here knows what it means.
|
|
67
67
|
const UNREGISTERED_EVERYAPI_MODEL = /Pi model is not registered: (everyapi\/[^\s"'`,;)\]]+)/u;
|
|
68
|
+
// Node reports a taken port as a bare errno, and the overwhelmingly likely cause is a Pi Harness the user already started, so the failure names that possibility and the variable that moves this one out of the way.
|
|
69
|
+
const ADDRESS_IN_USE = /\bEADDRINUSE\b/u;
|
|
68
70
|
// This launcher takes no arguments and has no help output, so the one place a user can learn that the frames are still available is the failure that dropped them.
|
|
69
71
|
const DEBUG_HINT = "Set PI_HARNESS_DEBUG=1 and start again to keep the stack frames.";
|
|
70
72
|
const formatStartupError = (error) => {
|
|
71
73
|
const message = error instanceof Error ? error.message : String(error);
|
|
72
74
|
const debug = process.env.PI_HARNESS_DEBUG === "1";
|
|
75
|
+
if (ADDRESS_IN_USE.test(message)) {
|
|
76
|
+
const authority = `${host.includes(":") ? `[${host}]` : host}:${port}`;
|
|
77
|
+
const holder = process.platform === "win32" ? `netstat -ano | findstr :${port}` : `lsof -nP -iTCP:${port} -sTCP:LISTEN`;
|
|
78
|
+
const remedy = `Port ${port} on ${host} is already in use. If that is a Pi Harness you already started, its console is at http://${authority}/. Otherwise set PI_HARNESS_PORT to a free port, or stop whatever holds this one (${holder}).`;
|
|
79
|
+
return debug ? `${remedy}\n${message}` : remedy;
|
|
80
|
+
}
|
|
73
81
|
const unregistered = UNREGISTERED_EVERYAPI_MODEL.exec(message);
|
|
74
82
|
if (unregistered === null)
|
|
75
83
|
return debug ? message : `${message}\n${DEBUG_HINT}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/server/bin.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/server/bin.ts"],"names":[],"mappings":"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"}
|
|
@@ -72,11 +72,19 @@ let harness: Awaited<ReturnType<typeof bootHarness>> | undefined;
|
|
|
72
72
|
const exitCodeFor = (signal: NodeJS.Signals): number => (signal === "SIGINT" ? 130 : signal === "SIGHUP" ? 129 : 143);
|
|
73
73
|
// The Cordis loader wraps this failure in its own entry path and stack, none of which a user with an unprovisioned agent directory can act on, so the recognized case reports the remedy first and keeps exactly one line naming the model that is missing. Every other failure is still reported in full, because nothing here knows what it means.
|
|
74
74
|
const UNREGISTERED_EVERYAPI_MODEL = /Pi model is not registered: (everyapi\/[^\s"'`,;)\]]+)/u;
|
|
75
|
+
// Node reports a taken port as a bare errno, and the overwhelmingly likely cause is a Pi Harness the user already started, so the failure names that possibility and the variable that moves this one out of the way.
|
|
76
|
+
const ADDRESS_IN_USE = /\bEADDRINUSE\b/u;
|
|
75
77
|
// This launcher takes no arguments and has no help output, so the one place a user can learn that the frames are still available is the failure that dropped them.
|
|
76
78
|
const DEBUG_HINT = "Set PI_HARNESS_DEBUG=1 and start again to keep the stack frames.";
|
|
77
79
|
const formatStartupError = (error: unknown): string => {
|
|
78
80
|
const message = error instanceof Error ? error.message : String(error);
|
|
79
81
|
const debug = process.env.PI_HARNESS_DEBUG === "1";
|
|
82
|
+
if (ADDRESS_IN_USE.test(message)) {
|
|
83
|
+
const authority = `${host.includes(":") ? `[${host}]` : host}:${port}`;
|
|
84
|
+
const holder = process.platform === "win32" ? `netstat -ano | findstr :${port}` : `lsof -nP -iTCP:${port} -sTCP:LISTEN`;
|
|
85
|
+
const remedy = `Port ${port} on ${host} is already in use. If that is a Pi Harness you already started, its console is at http://${authority}/. Otherwise set PI_HARNESS_PORT to a free port, or stop whatever holds this one (${holder}).`;
|
|
86
|
+
return debug ? `${remedy}\n${message}` : remedy;
|
|
87
|
+
}
|
|
80
88
|
const unregistered = UNREGISTERED_EVERYAPI_MODEL.exec(message);
|
|
81
89
|
if (unregistered === null) return debug ? message : `${message}\n${DEBUG_HINT}`;
|
|
82
90
|
const remedy = `The EveryAPI model catalog is not provisioned in PI_AGENT_DIR. Start with \`everyapi use pi-harness\`, or set PI_HARNESS_PROVIDER and PI_HARNESS_MODEL to a model already registered in that agent directory.`;
|
package/apps/web/src/style.css
CHANGED
|
@@ -631,6 +631,30 @@ button:disabled {
|
|
|
631
631
|
.message-reasoning .reasoning-body {
|
|
632
632
|
@apply [margin-top:6px];
|
|
633
633
|
}
|
|
634
|
+
.turn-tool {
|
|
635
|
+
@apply [margin:0_0_10px] [overflow:hidden] [border:1px_solid_var(--color-line)] [border-radius:8px] [background:#fbfcfd];
|
|
636
|
+
}
|
|
637
|
+
.turn-tool.failed {
|
|
638
|
+
@apply [border-color:rgba(236,_19,_19,_0.28)] [background:#fdf6f6];
|
|
639
|
+
}
|
|
640
|
+
.turn-tool-head {
|
|
641
|
+
@apply [display:flex] [cursor:pointer] [align-items:baseline] [gap:8px] [padding:7px_10px] [color:var(--color-muted)] [font-size:11.5px];
|
|
642
|
+
}
|
|
643
|
+
.turn-tool-head strong {
|
|
644
|
+
@apply [flex:none] [color:var(--color-blue)] [font:12px_var(--font-mono)];
|
|
645
|
+
}
|
|
646
|
+
.turn-tool-args {
|
|
647
|
+
@apply [min-width:0] [flex:1] [overflow:hidden] [font:11px_var(--font-mono)] [text-overflow:ellipsis] [white-space:nowrap];
|
|
648
|
+
}
|
|
649
|
+
.turn-tool-status {
|
|
650
|
+
@apply [flex:none] [color:var(--color-faint)];
|
|
651
|
+
}
|
|
652
|
+
.turn-tool.failed .turn-tool-status {
|
|
653
|
+
@apply [color:var(--color-red)];
|
|
654
|
+
}
|
|
655
|
+
.turn-tool-output {
|
|
656
|
+
@apply [max-height:320px] [margin:0] [overflow:auto] [border-top:1px_solid_var(--color-line)] [padding:10px] [font:11.5px_var(--font-mono)] [line-height:1.65] [white-space:pre-wrap] [word-break:break-word];
|
|
657
|
+
}
|
|
634
658
|
.visually-hidden {
|
|
635
659
|
@apply [position:absolute] [width:1px] [height:1px] [padding:0] [margin:-1px] [overflow:hidden] [clip:rect(0,0,0,0)] [white-space:nowrap] [border:0];
|
|
636
660
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;;;;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;;;;mBAmyBlC,OAAO;;AAHxB,wBA47CE"}
|
|
@@ -15,6 +15,8 @@ const IMPORT_CONTENT_LIMIT_BYTES = 10 * 1024 * 1024;
|
|
|
15
15
|
const IMPORT_BODY_LIMIT_BYTES = 16 * 1024 * 1024;
|
|
16
16
|
// Retained trajectory events are replayed to every SSE client and returned by /api/session, so the array must stay bounded.
|
|
17
17
|
const MAX_RETAINED_EVENTS = 2000;
|
|
18
|
+
// Tool calls that opened but never closed. Far above any real concurrency, so the cap only ever trims a run the runtime abandoned.
|
|
19
|
+
const MAX_PENDING_TOOL_CALLS = 256;
|
|
18
20
|
const GIT_TIMEOUT_MS = 15_000;
|
|
19
21
|
const PROCESS_FAILURE_TEXT_LIMIT = 400;
|
|
20
22
|
const PROCESS_TIMEOUT_MS = 120_000;
|
|
@@ -281,6 +283,41 @@ function pluginSummary(entry) {
|
|
|
281
283
|
category: marketplacePlugin?.category,
|
|
282
284
|
};
|
|
283
285
|
}
|
|
286
|
+
/** The state a marketplace plugin is in between the install that wrote it and the restart that loads it. It is not a loader state because the loader has no entry for it at all. */
|
|
287
|
+
const RESTART_REQUIRED_STATE = "restart-required";
|
|
288
|
+
// The install writes the entry as two adjacent lines, so this reads back exactly what `marketplaceProfileEntry` writes rather than parsing the profile as YAML, which the `!!js` tags in it would need a schema for.
|
|
289
|
+
const MARKETPLACE_PROFILE_ENTRY_PATTERN = /^[ \t]*- id: (marketplace-\S+)[ \t]*\r?\n[ \t]*name: "([^"]+)"/gmu;
|
|
290
|
+
/** The loader holds what is running; the profile file holds what is installed. The two differ for a plugin that contributes tools, which cannot join a harness that is already running: the install leaves its package and its profile entry in place and the plugin arrives on the next start. Reading only the loader makes that plugin indistinguishable from one that was never installed, which is why the console answered an install that had just succeeded with "nothing is installed" and then could not uninstall what it had hidden. */
|
|
291
|
+
async function readMarketplaceProfileEntries(configPath) {
|
|
292
|
+
const source = await readFile(configPath, "utf8").catch(() => undefined);
|
|
293
|
+
if (source === undefined)
|
|
294
|
+
return [];
|
|
295
|
+
const entries = [];
|
|
296
|
+
for (const match of source.matchAll(MARKETPLACE_PROFILE_ENTRY_PATTERN))
|
|
297
|
+
entries.push({ id: match[1] ?? "", packageName: match[2] ?? "" });
|
|
298
|
+
return entries;
|
|
299
|
+
}
|
|
300
|
+
/** The installed plugins the loader does not have, described the same way a loaded one is so the console can list them side by side instead of leaving the user to guess what happened to the install. */
|
|
301
|
+
async function restartPendingSummaries(services) {
|
|
302
|
+
const configPath = services.launch.configPath;
|
|
303
|
+
if (configPath === undefined || services.loader === undefined)
|
|
304
|
+
return [];
|
|
305
|
+
const loaded = new Set([...services.loader.entries()].map((entry) => entry.options.id));
|
|
306
|
+
const entries = await readMarketplaceProfileEntries(configPath);
|
|
307
|
+
return entries
|
|
308
|
+
.filter((entry) => !loaded.has(entry.id))
|
|
309
|
+
.map((entry) => {
|
|
310
|
+
const plugin = MARKETPLACE_PLUGINS.find((item) => item.packageName === entry.packageName);
|
|
311
|
+
return {
|
|
312
|
+
id: entry.id,
|
|
313
|
+
name: entry.packageName,
|
|
314
|
+
enabled: true,
|
|
315
|
+
state: RESTART_REQUIRED_STATE,
|
|
316
|
+
removable: true,
|
|
317
|
+
category: plugin?.category,
|
|
318
|
+
};
|
|
319
|
+
});
|
|
320
|
+
}
|
|
284
321
|
function pluginLoaded(services, packageName) {
|
|
285
322
|
return services.loader !== undefined && [...services.loader.entries()].some((entry) => entry.options.name === packageName && !entry.disabled);
|
|
286
323
|
}
|
|
@@ -688,7 +725,31 @@ export default {
|
|
|
688
725
|
let busy = false;
|
|
689
726
|
const events = [];
|
|
690
727
|
const eventClients = new Set();
|
|
691
|
-
|
|
728
|
+
// Pi puts a wall-clock on a message payload and nowhere else, so a tool call has no time of its own and nothing downstream can recover when the harness saw it. The gateway is the one place that sees every event as it happens, so it stamps each one on arrival, and pairs a tool call's two events to record how long the call took.
|
|
729
|
+
// The stamp is written onto the event rather than onto a copy: a copy would give every event a new identity, and the serializer's cycle detection reads identity, so a self-referential event would serialize one level deeper on every hop.
|
|
730
|
+
const toolCallStartedAt = new Map();
|
|
731
|
+
const stampEvent = (event) => {
|
|
732
|
+
const receivedAt = Date.now();
|
|
733
|
+
const toolCallId = event.toolCallId;
|
|
734
|
+
if (typeof toolCallId === "string" && event.type === "tool_execution_start") {
|
|
735
|
+
// A call whose end never arrives would otherwise keep its entry forever; the oldest is dropped rather than letting a stalled run grow the map without bound.
|
|
736
|
+
if (toolCallStartedAt.size >= MAX_PENDING_TOOL_CALLS) {
|
|
737
|
+
const oldest = toolCallStartedAt.keys().next().value;
|
|
738
|
+
if (oldest !== undefined)
|
|
739
|
+
toolCallStartedAt.delete(oldest);
|
|
740
|
+
}
|
|
741
|
+
toolCallStartedAt.set(toolCallId, receivedAt);
|
|
742
|
+
}
|
|
743
|
+
if (typeof toolCallId === "string" && event.type === "tool_execution_end") {
|
|
744
|
+
const startedAt = toolCallStartedAt.get(toolCallId);
|
|
745
|
+
toolCallStartedAt.delete(toolCallId);
|
|
746
|
+
if (startedAt !== undefined)
|
|
747
|
+
return Object.assign(event, { receivedAt, durationMs: receivedAt - startedAt });
|
|
748
|
+
}
|
|
749
|
+
return Object.assign(event, { receivedAt });
|
|
750
|
+
};
|
|
751
|
+
const handleEvent = (rawEvent) => {
|
|
752
|
+
const event = stampEvent(rawEvent);
|
|
692
753
|
// Streaming deltas reach clients live over SSE and each one carries the whole partial message, so only durable events are retained for snapshots.
|
|
693
754
|
if (event.type !== "message_update") {
|
|
694
755
|
events.push(event);
|
|
@@ -1000,8 +1061,10 @@ export default {
|
|
|
1000
1061
|
});
|
|
1001
1062
|
const disposePlugins = services.webServer.register({
|
|
1002
1063
|
path: "/api/plugins",
|
|
1003
|
-
handler(_request, response) {
|
|
1004
|
-
const
|
|
1064
|
+
async handler(_request, response) {
|
|
1065
|
+
const loaded = services.loader ? [...services.loader.entries()].map(pluginSummary) : [];
|
|
1066
|
+
// The pending entries follow the loaded ones so a list that was stable before an install stays in the same order after it.
|
|
1067
|
+
const items = [...loaded, ...(await restartPendingSummaries(services))];
|
|
1005
1068
|
sendJson(response, 200, jsonSafe({ items }));
|
|
1006
1069
|
},
|
|
1007
1070
|
});
|
|
@@ -1093,6 +1156,11 @@ export default {
|
|
|
1093
1156
|
sendJson(response, 409, { error: "Plugin is already installed", plugin });
|
|
1094
1157
|
return;
|
|
1095
1158
|
}
|
|
1159
|
+
// A plugin already waiting for a restart is installed even though the loader has no entry for it, so installing it again would re-run npm and report a fresh restart for work that is already done.
|
|
1160
|
+
if ((await readMarketplaceProfileEntries(configPath)).some((entry) => entry.packageName === plugin.packageName)) {
|
|
1161
|
+
sendJson(response, 200, { plugin, installed: true, restartRequired: true });
|
|
1162
|
+
return;
|
|
1163
|
+
}
|
|
1096
1164
|
const installDirectory = await marketplaceInstallDirectory(configPath, services.launch.cwd);
|
|
1097
1165
|
const packageJsonPath = join(installDirectory, "package.json");
|
|
1098
1166
|
const packageLockPath = join(installDirectory, "package-lock.json");
|
|
@@ -1231,7 +1299,24 @@ export default {
|
|
|
1231
1299
|
}
|
|
1232
1300
|
const entry = [...loader.entries()].find((item) => item.id === payload.id || item.options.id === payload.id);
|
|
1233
1301
|
if (entry === undefined) {
|
|
1234
|
-
|
|
1302
|
+
// A plugin waiting for a restart has no loader entry to remove, only the profile entry and the package the install left behind. Refusing here left the user unable to undo an install until they restarted the very process they installed it to avoid restarting.
|
|
1303
|
+
const pending = (await readMarketplaceProfileEntries(configPath)).find((item) => item.id === payload.id);
|
|
1304
|
+
const pendingPlugin = pending === undefined ? undefined : MARKETPLACE_PLUGINS.find((item) => item.packageName === pending.packageName);
|
|
1305
|
+
if (pending === undefined || pendingPlugin === undefined) {
|
|
1306
|
+
sendJson(response, 404, { error: "Installed plugin was not found" });
|
|
1307
|
+
return;
|
|
1308
|
+
}
|
|
1309
|
+
const pendingProfileBefore = await readFile(configPath, "utf8");
|
|
1310
|
+
const pendingInstallDirectory = await marketplaceInstallDirectory(configPath, services.launch.cwd);
|
|
1311
|
+
try {
|
|
1312
|
+
await updateMarketplaceProfile(configPath, pending.id, { remove: true });
|
|
1313
|
+
await runProcess("npm", ["uninstall", "--package-lock=false", marketplaceNpmPackageName(pendingPlugin.packageName)], pendingInstallDirectory);
|
|
1314
|
+
sendJson(response, 200, { uninstalled: true, id: payload.id });
|
|
1315
|
+
}
|
|
1316
|
+
catch (error) {
|
|
1317
|
+
await writeFile(configPath, pendingProfileBefore, "utf8").catch(() => { });
|
|
1318
|
+
sendJson(response, 502, { error: errorText(error) });
|
|
1319
|
+
}
|
|
1235
1320
|
return;
|
|
1236
1321
|
}
|
|
1237
1322
|
const plugin = marketplacePluginForEntry(entry);
|