@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
|
@@ -3,18 +3,18 @@
|
|
|
3
3
|
"packageName": "@pi-harness/plugin-test-harness",
|
|
4
4
|
"version": "0.1.29",
|
|
5
5
|
"name": "Test Harness",
|
|
6
|
-
"description": "
|
|
6
|
+
"description": "运行工作区里五个固定名字的 npm 脚本,返回真实状态和清理过的 12 KiB 输出尾部;超时可配置,取消时清理整棵进程树。",
|
|
7
7
|
"author": "Pi Harness",
|
|
8
8
|
"repository": "https://github.com/pi-harness/pi-harness",
|
|
9
9
|
"license": "MIT",
|
|
10
10
|
"source": "official",
|
|
11
11
|
"status": "verified",
|
|
12
12
|
"category": {
|
|
13
|
-
"id": "
|
|
14
|
-
"label": "
|
|
13
|
+
"id": "developer",
|
|
14
|
+
"label": "开发工具"
|
|
15
15
|
},
|
|
16
16
|
"capabilities": ["runs-commands"],
|
|
17
|
-
"hooks": ["
|
|
17
|
+
"hooks": ["项目验证工具", "工作区 npm 脚本", "插件面板"],
|
|
18
18
|
"profile": {
|
|
19
19
|
"name": "@pi-harness/plugin-test-harness",
|
|
20
20
|
"config": {
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"packageName": "@pi-harness/plugin-theme-studio",
|
|
4
4
|
"version": "0.1.29",
|
|
5
5
|
"name": "Theme Studio",
|
|
6
|
-
"description": "
|
|
6
|
+
"description": "为 Pi Harness 控制台切换浅色、午夜、纸张和高对比四套主题。",
|
|
7
7
|
"author": "Pi Harness",
|
|
8
8
|
"repository": "https://github.com/pi-harness/pi-harness",
|
|
9
9
|
"license": "MIT",
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"label": "界面增强"
|
|
15
15
|
},
|
|
16
16
|
"capabilities": ["read-only", "session-data"],
|
|
17
|
-
"hooks": ["
|
|
17
|
+
"hooks": ["会话生命周期", "React 根变量", "插件面板"],
|
|
18
18
|
"profile": {
|
|
19
19
|
"name": "@pi-harness/plugin-theme-studio",
|
|
20
20
|
"config": {
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"packageName": "@pi-harness/plugin-token-guard",
|
|
4
4
|
"version": "0.1.29",
|
|
5
5
|
"name": "Token Guard",
|
|
6
|
-
"description": "
|
|
6
|
+
"description": "上下文占比或计费 token 超过预算时,一次运行最多发出一次中止请求,并提供缓存的面板视图。",
|
|
7
7
|
"author": "Pi Harness",
|
|
8
8
|
"repository": "https://github.com/pi-harness/pi-harness",
|
|
9
9
|
"license": "MIT",
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"label": "可观测性"
|
|
15
15
|
},
|
|
16
16
|
"capabilities": ["read-only", "session-data"],
|
|
17
|
-
"hooks": ["Pi
|
|
17
|
+
"hooks": ["Pi 会话生命周期", "当前运行中止", "会话用量与统计", "插件面板"],
|
|
18
18
|
"profile": {
|
|
19
19
|
"name": "@pi-harness/plugin-token-guard",
|
|
20
20
|
"config": {
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"packageName": "@pi-harness/plugin-turn-rewind",
|
|
4
4
|
"version": "0.1.29",
|
|
5
5
|
"name": "Turn Rewind",
|
|
6
|
-
"description": "
|
|
6
|
+
"description": "扫描当前分支上的用户轮次,等 agent 空闲后按队列串行回退,并在原生会话树里导航,保留被放弃的分支。",
|
|
7
7
|
"author": "Pi Harness",
|
|
8
8
|
"repository": "https://github.com/pi-harness/pi-harness",
|
|
9
9
|
"license": "MIT",
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"label": "工作流"
|
|
15
15
|
},
|
|
16
16
|
"capabilities": ["read-only", "session-data"],
|
|
17
|
-
"hooks": ["
|
|
17
|
+
"hooks": ["会话回退工具", "当前会话树", "agent 空闲生命周期", "插件面板"],
|
|
18
18
|
"profile": {
|
|
19
19
|
"name": "@pi-harness/plugin-turn-rewind",
|
|
20
20
|
"config": {}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"packageName": "@pi-harness/plugin-undo-savepoint",
|
|
4
4
|
"version": "0.1.29",
|
|
5
5
|
"name": "Undo Savepoints",
|
|
6
|
-
"description": "
|
|
6
|
+
"description": "在 agent 改动前建立可查看的存档点,之后可以安全还原工作区。",
|
|
7
7
|
"author": "Pi Harness",
|
|
8
8
|
"repository": "https://github.com/pi-harness/pi-harness",
|
|
9
9
|
"license": "MIT",
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"label": "工作流"
|
|
15
15
|
},
|
|
16
16
|
"capabilities": ["reads-files", "writes-files"],
|
|
17
|
-
"hooks": ["
|
|
17
|
+
"hooks": ["工具调用", "插件面板"],
|
|
18
18
|
"profile": {
|
|
19
19
|
"name": "@pi-harness/plugin-undo-savepoint",
|
|
20
20
|
"config": {}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"packageName": "@pi-harness/plugin-vision-toolkit",
|
|
4
4
|
"version": "0.1.29",
|
|
5
5
|
"name": "Vision Toolkit",
|
|
6
|
-
"description": "
|
|
6
|
+
"description": "读取 PNG、JPEG、GIF、WebP 的签名与元数据并建立目录,只读文件头,遍历可取消,结果仅在本机面板展示。",
|
|
7
7
|
"author": "Pi Harness",
|
|
8
8
|
"repository": "https://github.com/pi-harness/pi-harness",
|
|
9
9
|
"license": "MIT",
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"label": "视觉与多模态"
|
|
15
15
|
},
|
|
16
16
|
"capabilities": ["read-only", "reads-files"],
|
|
17
|
-
"hooks": ["
|
|
17
|
+
"hooks": ["图像元数据工具", "工作区访问", "插件面板"],
|
|
18
18
|
"profile": {
|
|
19
19
|
"name": "@pi-harness/plugin-vision-toolkit",
|
|
20
20
|
"config": {}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"packageName": "@pi-harness/plugin-web-research",
|
|
4
4
|
"version": "0.1.29",
|
|
5
5
|
"name": "Web Research",
|
|
6
|
-
"description": "
|
|
6
|
+
"description": "通过可配置的搜索服务检索公网,返回带出处、有上限的证据。",
|
|
7
7
|
"author": "Pi Harness",
|
|
8
8
|
"repository": "https://github.com/pi-harness/pi-harness",
|
|
9
9
|
"license": "MIT",
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"label": "网页与研究"
|
|
15
15
|
},
|
|
16
16
|
"capabilities": ["network-access"],
|
|
17
|
-
"hooks": ["
|
|
17
|
+
"hooks": ["网络请求", "插件面板"],
|
|
18
18
|
"profile": {
|
|
19
19
|
"name": "@pi-harness/plugin-web-research",
|
|
20
20
|
"config": {}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"packageName": "@pi-harness/plugin-workspace-navigator",
|
|
4
4
|
"version": "0.1.29",
|
|
5
5
|
"name": "Workspace Navigator",
|
|
6
|
-
"description": "
|
|
6
|
+
"description": "显示有上限的工作区目录树和只读 Git 状态,作为写代码时的侧边栏。",
|
|
7
7
|
"author": "Pi Harness",
|
|
8
8
|
"repository": "https://github.com/pi-harness/pi-harness",
|
|
9
9
|
"license": "MIT",
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"label": "开发工具"
|
|
15
15
|
},
|
|
16
16
|
"capabilities": ["reads-files", "runs-commands"],
|
|
17
|
-
"hooks": ["
|
|
17
|
+
"hooks": ["工作区文件", "受限扫描", "只读 Git", "插件面板"],
|
|
18
18
|
"profile": {
|
|
19
19
|
"name": "@pi-harness/plugin-workspace-navigator",
|
|
20
20
|
"config": {}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"packageName": "@pi-harness/plugin-workspace-search",
|
|
4
4
|
"version": "0.1.29",
|
|
5
5
|
"name": "Workspace Search",
|
|
6
|
-
"description": "
|
|
6
|
+
"description": "在当前工作区的文本文件里搜索,自动跳过忽略目录和二进制内容。",
|
|
7
7
|
"author": "Pi Harness",
|
|
8
8
|
"repository": "https://github.com/pi-harness/pi-harness",
|
|
9
9
|
"license": "MIT",
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"label": "上下文管理"
|
|
15
15
|
},
|
|
16
16
|
"capabilities": ["read-only", "reads-files"],
|
|
17
|
-
"hooks": ["
|
|
17
|
+
"hooks": ["工作区文件", "插件面板"],
|
|
18
18
|
"profile": {
|
|
19
19
|
"name": "@pi-harness/plugin-workspace-search",
|
|
20
20
|
"config": {}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"packageName": "@pi-harness/plugin-yaml-validator",
|
|
4
4
|
"version": "0.1.29",
|
|
5
5
|
"name": "YAML Validator",
|
|
6
|
-
"description": "
|
|
6
|
+
"description": "校验工作区内的 UTF-8 多文档 YAML,读取受限可取消,报错带行号。",
|
|
7
7
|
"author": "Pi Harness",
|
|
8
8
|
"repository": "https://github.com/pi-harness/pi-harness",
|
|
9
9
|
"license": "MIT",
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"label": "开发工具"
|
|
15
15
|
},
|
|
16
16
|
"capabilities": ["read-only", "reads-files"],
|
|
17
|
-
"hooks": ["YAML
|
|
17
|
+
"hooks": ["YAML 校验工具", "工作区文件", "插件面板"],
|
|
18
18
|
"profile": {
|
|
19
19
|
"name": "@pi-harness/plugin-yaml-validator",
|
|
20
20
|
"config": {}
|
|
@@ -43,6 +43,10 @@ const IMPORT_CONTENT_LIMIT_BYTES = 10 * 1024 * 1024;
|
|
|
43
43
|
const IMPORT_BODY_LIMIT_BYTES = 16 * 1024 * 1024;
|
|
44
44
|
// Retained trajectory events are replayed to every SSE client and returned by /api/session, so the array must stay bounded.
|
|
45
45
|
const MAX_RETAINED_EVENTS = 2000;
|
|
46
|
+
// Tool calls that opened but never closed. Far above any real concurrency, so the cap only ever trims a run the runtime abandoned.
|
|
47
|
+
const MAX_PENDING_TOOL_CALLS = 256;
|
|
48
|
+
/** A session event with the two fields the gateway owns: when it arrived, and for a tool call how long it took. */
|
|
49
|
+
type StampedSessionEvent = AgentSessionEvent & { readonly receivedAt: number; readonly durationMs?: number };
|
|
46
50
|
const GIT_TIMEOUT_MS = 15_000;
|
|
47
51
|
const PROCESS_FAILURE_TEXT_LIMIT = 400;
|
|
48
52
|
const PROCESS_TIMEOUT_MS = 120_000;
|
|
@@ -334,6 +338,42 @@ function pluginSummary(entry: LoaderEntrySummary) {
|
|
|
334
338
|
};
|
|
335
339
|
}
|
|
336
340
|
|
|
341
|
+
/** 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. */
|
|
342
|
+
const RESTART_REQUIRED_STATE = "restart-required";
|
|
343
|
+
|
|
344
|
+
// 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.
|
|
345
|
+
const MARKETPLACE_PROFILE_ENTRY_PATTERN = /^[ \t]*- id: (marketplace-\S+)[ \t]*\r?\n[ \t]*name: "([^"]+)"/gmu;
|
|
346
|
+
|
|
347
|
+
/** 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. */
|
|
348
|
+
async function readMarketplaceProfileEntries(configPath: string): Promise<readonly { readonly id: string; readonly packageName: string }[]> {
|
|
349
|
+
const source = await readFile(configPath, "utf8").catch(() => undefined);
|
|
350
|
+
if (source === undefined) return [];
|
|
351
|
+
const entries: { id: string; packageName: string }[] = [];
|
|
352
|
+
for (const match of source.matchAll(MARKETPLACE_PROFILE_ENTRY_PATTERN)) entries.push({ id: match[1] ?? "", packageName: match[2] ?? "" });
|
|
353
|
+
return entries;
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
/** 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. */
|
|
357
|
+
async function restartPendingSummaries(services: ApiServices): Promise<readonly ReturnType<typeof pluginSummary>[]> {
|
|
358
|
+
const configPath = services.launch.configPath;
|
|
359
|
+
if (configPath === undefined || services.loader === undefined) return [];
|
|
360
|
+
const loaded = new Set([...services.loader.entries()].map((entry) => entry.options.id));
|
|
361
|
+
const entries = await readMarketplaceProfileEntries(configPath);
|
|
362
|
+
return entries
|
|
363
|
+
.filter((entry) => !loaded.has(entry.id))
|
|
364
|
+
.map((entry) => {
|
|
365
|
+
const plugin = MARKETPLACE_PLUGINS.find((item) => item.packageName === entry.packageName);
|
|
366
|
+
return {
|
|
367
|
+
id: entry.id,
|
|
368
|
+
name: entry.packageName,
|
|
369
|
+
enabled: true,
|
|
370
|
+
state: RESTART_REQUIRED_STATE,
|
|
371
|
+
removable: true,
|
|
372
|
+
category: plugin?.category,
|
|
373
|
+
};
|
|
374
|
+
});
|
|
375
|
+
}
|
|
376
|
+
|
|
337
377
|
function pluginLoaded(services: ApiServices, packageName: string): boolean {
|
|
338
378
|
return services.loader !== undefined && [...services.loader.entries()].some((entry) => entry.options.name === packageName && !entry.disabled);
|
|
339
379
|
}
|
|
@@ -777,9 +817,31 @@ export default {
|
|
|
777
817
|
};
|
|
778
818
|
const disposePluginPanels = registerPluginPanels(context, services);
|
|
779
819
|
let busy = false;
|
|
780
|
-
const events:
|
|
820
|
+
const events: StampedSessionEvent[] = [];
|
|
781
821
|
const eventClients = new Set<ServerResponse>();
|
|
782
|
-
|
|
822
|
+
// 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.
|
|
823
|
+
// 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.
|
|
824
|
+
const toolCallStartedAt = new Map<string, number>();
|
|
825
|
+
const stampEvent = (event: AgentSessionEvent): StampedSessionEvent => {
|
|
826
|
+
const receivedAt = Date.now();
|
|
827
|
+
const toolCallId = (event as { readonly toolCallId?: unknown }).toolCallId;
|
|
828
|
+
if (typeof toolCallId === "string" && event.type === "tool_execution_start") {
|
|
829
|
+
// 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.
|
|
830
|
+
if (toolCallStartedAt.size >= MAX_PENDING_TOOL_CALLS) {
|
|
831
|
+
const oldest = toolCallStartedAt.keys().next().value;
|
|
832
|
+
if (oldest !== undefined) toolCallStartedAt.delete(oldest);
|
|
833
|
+
}
|
|
834
|
+
toolCallStartedAt.set(toolCallId, receivedAt);
|
|
835
|
+
}
|
|
836
|
+
if (typeof toolCallId === "string" && event.type === "tool_execution_end") {
|
|
837
|
+
const startedAt = toolCallStartedAt.get(toolCallId);
|
|
838
|
+
toolCallStartedAt.delete(toolCallId);
|
|
839
|
+
if (startedAt !== undefined) return Object.assign(event, { receivedAt, durationMs: receivedAt - startedAt });
|
|
840
|
+
}
|
|
841
|
+
return Object.assign(event, { receivedAt });
|
|
842
|
+
};
|
|
843
|
+
const handleEvent = (rawEvent: AgentSessionEvent) => {
|
|
844
|
+
const event = stampEvent(rawEvent);
|
|
783
845
|
// Streaming deltas reach clients live over SSE and each one carries the whole partial message, so only durable events are retained for snapshots.
|
|
784
846
|
if (event.type !== "message_update") {
|
|
785
847
|
events.push(event);
|
|
@@ -1098,8 +1160,10 @@ export default {
|
|
|
1098
1160
|
});
|
|
1099
1161
|
const disposePlugins = services.webServer.register({
|
|
1100
1162
|
path: "/api/plugins",
|
|
1101
|
-
handler(_request, response) {
|
|
1102
|
-
const
|
|
1163
|
+
async handler(_request, response) {
|
|
1164
|
+
const loaded = services.loader ? [...services.loader.entries()].map(pluginSummary) : [];
|
|
1165
|
+
// The pending entries follow the loaded ones so a list that was stable before an install stays in the same order after it.
|
|
1166
|
+
const items = [...loaded, ...(await restartPendingSummaries(services))];
|
|
1103
1167
|
sendJson(response, 200, jsonSafe({ items }));
|
|
1104
1168
|
},
|
|
1105
1169
|
});
|
|
@@ -1193,6 +1257,11 @@ export default {
|
|
|
1193
1257
|
sendJson(response, 409, { error: "Plugin is already installed", plugin });
|
|
1194
1258
|
return;
|
|
1195
1259
|
}
|
|
1260
|
+
// 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.
|
|
1261
|
+
if ((await readMarketplaceProfileEntries(configPath)).some((entry) => entry.packageName === plugin.packageName)) {
|
|
1262
|
+
sendJson(response, 200, { plugin, installed: true, restartRequired: true });
|
|
1263
|
+
return;
|
|
1264
|
+
}
|
|
1196
1265
|
const installDirectory = await marketplaceInstallDirectory(configPath, services.launch.cwd);
|
|
1197
1266
|
const packageJsonPath = join(installDirectory, "package.json");
|
|
1198
1267
|
const packageLockPath = join(installDirectory, "package-lock.json");
|
|
@@ -1322,7 +1391,23 @@ export default {
|
|
|
1322
1391
|
}
|
|
1323
1392
|
const entry = [...loader.entries()].find((item) => item.id === payload.id || item.options.id === payload.id);
|
|
1324
1393
|
if (entry === undefined) {
|
|
1325
|
-
|
|
1394
|
+
// 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.
|
|
1395
|
+
const pending = (await readMarketplaceProfileEntries(configPath)).find((item) => item.id === payload.id);
|
|
1396
|
+
const pendingPlugin = pending === undefined ? undefined : MARKETPLACE_PLUGINS.find((item) => item.packageName === pending.packageName);
|
|
1397
|
+
if (pending === undefined || pendingPlugin === undefined) {
|
|
1398
|
+
sendJson(response, 404, { error: "Installed plugin was not found" });
|
|
1399
|
+
return;
|
|
1400
|
+
}
|
|
1401
|
+
const pendingProfileBefore = await readFile(configPath, "utf8");
|
|
1402
|
+
const pendingInstallDirectory = await marketplaceInstallDirectory(configPath, services.launch.cwd);
|
|
1403
|
+
try {
|
|
1404
|
+
await updateMarketplaceProfile(configPath, pending.id, { remove: true });
|
|
1405
|
+
await runProcess("npm", ["uninstall", "--package-lock=false", marketplaceNpmPackageName(pendingPlugin.packageName)], pendingInstallDirectory);
|
|
1406
|
+
sendJson(response, 200, { uninstalled: true, id: payload.id });
|
|
1407
|
+
} catch (error) {
|
|
1408
|
+
await writeFile(configPath, pendingProfileBefore, "utf8").catch(() => {});
|
|
1409
|
+
sendJson(response, 502, { error: errorText(error) });
|
|
1410
|
+
}
|
|
1326
1411
|
return;
|
|
1327
1412
|
}
|
|
1328
1413
|
const plugin = marketplacePluginForEntry(entry);
|
|
@@ -3,18 +3,18 @@
|
|
|
3
3
|
"packageName": "@pi-harness/plugin-agent-teams",
|
|
4
4
|
"version": "0.1.29",
|
|
5
5
|
"name": "Agent Team Board",
|
|
6
|
-
"description": "
|
|
6
|
+
"description": "在当前会话内维护一份角色、任务依赖与留言板,不会额外启动 agent,也不会对外发消息。",
|
|
7
7
|
"author": "Pi Harness",
|
|
8
8
|
"repository": "https://github.com/pi-harness/pi-harness",
|
|
9
9
|
"license": "MIT",
|
|
10
10
|
"source": "official",
|
|
11
11
|
"status": "verified",
|
|
12
12
|
"category": {
|
|
13
|
-
"id": "
|
|
14
|
-
"label": "
|
|
13
|
+
"id": "workflow",
|
|
14
|
+
"label": "工作流"
|
|
15
15
|
},
|
|
16
16
|
"capabilities": ["read-only", "session-data"],
|
|
17
|
-
"hooks": ["
|
|
17
|
+
"hooks": ["会话生命周期", "插件面板"],
|
|
18
18
|
"profile": {
|
|
19
19
|
"name": "@pi-harness/plugin-agent-teams",
|
|
20
20
|
"config": {}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"packageName": "@pi-harness/plugin-anchored-standard",
|
|
4
4
|
"version": "0.1.29",
|
|
5
5
|
"name": "Anchored Standard",
|
|
6
|
-
"description": "
|
|
6
|
+
"description": "按显式的工具白名单审计 agent 的执行轨迹,标出越界的调用。",
|
|
7
7
|
"author": "Pi Harness",
|
|
8
8
|
"repository": "https://github.com/pi-harness/pi-harness",
|
|
9
9
|
"license": "MIT",
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"label": "安全"
|
|
15
15
|
},
|
|
16
16
|
"capabilities": ["read-only"],
|
|
17
|
-
"hooks": ["
|
|
17
|
+
"hooks": ["会话事件", "插件面板"],
|
|
18
18
|
"profile": {
|
|
19
19
|
"name": "@pi-harness/plugin-anchored-standard",
|
|
20
20
|
"config": {}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"packageName": "@pi-harness/plugin-annotation",
|
|
4
4
|
"version": "0.1.29",
|
|
5
5
|
"name": "Annotations",
|
|
6
|
-
"description": "
|
|
6
|
+
"description": "把对话里选中的片段和批注存下来,作为后续对话的上下文。",
|
|
7
7
|
"author": "Pi Harness",
|
|
8
8
|
"repository": "https://github.com/pi-harness/pi-harness",
|
|
9
9
|
"license": "MIT",
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"label": "上下文管理"
|
|
15
15
|
},
|
|
16
16
|
"capabilities": ["read-only"],
|
|
17
|
-
"hooks": ["
|
|
17
|
+
"hooks": ["插件面板"],
|
|
18
18
|
"profile": {
|
|
19
19
|
"name": "@pi-harness/plugin-annotation",
|
|
20
20
|
"config": {}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"packageName": "@pi-harness/plugin-archify",
|
|
4
4
|
"version": "0.1.29",
|
|
5
5
|
"name": "Architecture Map",
|
|
6
|
-
"description": "
|
|
6
|
+
"description": "从工作区的模块和依赖清单生成一张只读的架构图。",
|
|
7
7
|
"author": "Pi Harness",
|
|
8
8
|
"repository": "https://github.com/pi-harness/pi-harness",
|
|
9
9
|
"license": "MIT",
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"label": "开发工具"
|
|
15
15
|
},
|
|
16
16
|
"capabilities": ["reads-files", "runs-commands"],
|
|
17
|
-
"hooks": ["
|
|
17
|
+
"hooks": ["工作区文件", "依赖清单", "插件面板"],
|
|
18
18
|
"profile": {
|
|
19
19
|
"name": "@pi-harness/plugin-archify",
|
|
20
20
|
"config": {}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"packageName": "@pi-harness/plugin-at-file",
|
|
4
4
|
"version": "0.1.29",
|
|
5
5
|
"name": "@file Context",
|
|
6
|
-
"description": "
|
|
6
|
+
"description": "把工作区里的单个文件(上限 256 KiB、严格 UTF-8)作为只读上下文附给模型,路径限定在工作区内且不跟随符号链接。",
|
|
7
7
|
"author": "Pi Harness",
|
|
8
8
|
"repository": "https://github.com/pi-harness/pi-harness",
|
|
9
9
|
"license": "MIT",
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"label": "上下文管理"
|
|
15
15
|
},
|
|
16
16
|
"capabilities": ["read-only", "reads-files"],
|
|
17
|
-
"hooks": ["
|
|
17
|
+
"hooks": ["文件上下文工具", "工作区文件读取", "插件面板"],
|
|
18
18
|
"profile": {
|
|
19
19
|
"name": "@pi-harness/plugin-at-file",
|
|
20
20
|
"config": {}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"packageName": "@pi-harness/plugin-auto-mode",
|
|
4
4
|
"version": "0.1.29",
|
|
5
5
|
"name": "Auto Mode",
|
|
6
|
-
"description": "
|
|
6
|
+
"description": "在受控策略下执行 argv 命令:拒绝 shell 包装,危险操作要求确认。",
|
|
7
7
|
"author": "Pi Harness",
|
|
8
8
|
"repository": "https://github.com/pi-harness/pi-harness",
|
|
9
9
|
"license": "MIT",
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"label": "安全"
|
|
15
15
|
},
|
|
16
16
|
"capabilities": ["reads-files", "runs-commands"],
|
|
17
|
-
"hooks": ["argv
|
|
17
|
+
"hooks": ["argv 执行", "插件面板"],
|
|
18
18
|
"profile": {
|
|
19
19
|
"name": "@pi-harness/plugin-auto-mode",
|
|
20
20
|
"config": {
|
|
@@ -3,18 +3,18 @@
|
|
|
3
3
|
"packageName": "@pi-harness/plugin-better-sidebar",
|
|
4
4
|
"version": "0.1.29",
|
|
5
5
|
"name": "Better Sidebar",
|
|
6
|
-
"description": "
|
|
6
|
+
"description": "在对话旁边显示工作区、Git 与会话概览,只读不改文件。",
|
|
7
7
|
"author": "Pi Harness",
|
|
8
8
|
"repository": "https://github.com/pi-harness/pi-harness",
|
|
9
9
|
"license": "MIT",
|
|
10
10
|
"source": "official",
|
|
11
11
|
"status": "verified",
|
|
12
12
|
"category": {
|
|
13
|
-
"id": "
|
|
14
|
-
"label": "
|
|
13
|
+
"id": "interface",
|
|
14
|
+
"label": "界面增强"
|
|
15
15
|
},
|
|
16
16
|
"capabilities": ["session-data", "reads-files", "runs-commands"],
|
|
17
|
-
"hooks": ["
|
|
17
|
+
"hooks": ["工作区扫描", "只读 Git", "会话管理器", "插件面板"],
|
|
18
18
|
"profile": {
|
|
19
19
|
"name": "@pi-harness/plugin-better-sidebar",
|
|
20
20
|
"config": {}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"packageName": "@pi-harness/plugin-browser-fetch",
|
|
4
4
|
"version": "0.1.29",
|
|
5
5
|
"name": "Browser Fetch",
|
|
6
|
-
"description": "
|
|
6
|
+
"description": "抓取公网 HTTP/HTTPS 页面并转成有上限的文本,固定 DNS、拦截内网地址、只接受文本类型,可取消且有整体超时。",
|
|
7
7
|
"author": "Pi Harness",
|
|
8
8
|
"repository": "https://github.com/pi-harness/pi-harness",
|
|
9
9
|
"license": "MIT",
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"label": "网页与研究"
|
|
15
15
|
},
|
|
16
16
|
"capabilities": ["network-access"],
|
|
17
|
-
"hooks": ["
|
|
17
|
+
"hooks": ["网络请求", "插件面板"],
|
|
18
18
|
"profile": {
|
|
19
19
|
"name": "@pi-harness/plugin-browser-fetch",
|
|
20
20
|
"config": {
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"packageName": "@pi-harness/plugin-browser-session",
|
|
4
4
|
"version": "0.1.29",
|
|
5
5
|
"name": "Browser Session",
|
|
6
|
-
"description": "
|
|
6
|
+
"description": "通过 Chrome DevTools 协议控制一个仅限本机回环的浏览器会话,命令受限、可取消,截图元数据会被清理。",
|
|
7
7
|
"author": "Pi Harness",
|
|
8
8
|
"repository": "https://github.com/pi-harness/pi-harness",
|
|
9
9
|
"license": "MIT",
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"label": "网页与研究"
|
|
15
15
|
},
|
|
16
16
|
"capabilities": ["network-access"],
|
|
17
|
-
"hooks": ["
|
|
17
|
+
"hooks": ["浏览器会话工具", "Chrome DevTools 协议", "插件面板"],
|
|
18
18
|
"profile": {
|
|
19
19
|
"name": "@pi-harness/plugin-browser-session",
|
|
20
20
|
"config": {
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"packageName": "@pi-harness/plugin-canvas-draw",
|
|
4
4
|
"version": "0.1.29",
|
|
5
5
|
"name": "Canvas Draw",
|
|
6
|
-
"description": "
|
|
6
|
+
"description": "在面板里用结构化的节点和连线生成经过校验的 Mermaid 流程图源码。",
|
|
7
7
|
"author": "Pi Harness",
|
|
8
8
|
"repository": "https://github.com/pi-harness/pi-harness",
|
|
9
9
|
"license": "MIT",
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"label": "视觉与多模态"
|
|
15
15
|
},
|
|
16
16
|
"capabilities": ["read-only"],
|
|
17
|
-
"hooks": ["
|
|
17
|
+
"hooks": ["插件面板"],
|
|
18
18
|
"profile": {
|
|
19
19
|
"name": "@pi-harness/plugin-canvas-draw",
|
|
20
20
|
"config": {}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"packageName": "@pi-harness/plugin-change-verifier",
|
|
4
4
|
"version": "0.1.29",
|
|
5
5
|
"name": "Change Verifier",
|
|
6
|
-
"description": "
|
|
6
|
+
"description": "交接前把项目测试和 Git 变更评审合成一道显式的验收关卡。",
|
|
7
7
|
"author": "Pi Harness",
|
|
8
8
|
"repository": "https://github.com/pi-harness/pi-harness",
|
|
9
9
|
"license": "MIT",
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"label": "工作流"
|
|
15
15
|
},
|
|
16
16
|
"capabilities": ["read-only"],
|
|
17
|
-
"hooks": ["
|
|
17
|
+
"hooks": ["项目脚本", "Git 变更", "插件面板"],
|
|
18
18
|
"profile": {
|
|
19
19
|
"name": "@pi-harness/plugin-change-verifier",
|
|
20
20
|
"config": {}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"packageName": "@pi-harness/plugin-cleaner",
|
|
4
4
|
"version": "0.1.29",
|
|
5
5
|
"name": "Cleaner",
|
|
6
|
-
"description": "
|
|
6
|
+
"description": "列出 Pi Harness 的 Git 胶囊目录并按保留策略清理,删除需要显式确认,防符号链接与文件替换,可取消。",
|
|
7
7
|
"author": "Pi Harness",
|
|
8
8
|
"repository": "https://github.com/pi-harness/pi-harness",
|
|
9
9
|
"license": "MIT",
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"label": "开发工具"
|
|
15
15
|
},
|
|
16
16
|
"capabilities": ["reads-files", "writes-files"],
|
|
17
|
-
"hooks": ["
|
|
17
|
+
"hooks": ["胶囊清理工具", "agent 胶囊目录", "插件面板"],
|
|
18
18
|
"profile": {
|
|
19
19
|
"name": "@pi-harness/plugin-cleaner",
|
|
20
20
|
"config": {}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"packageName": "@pi-harness/plugin-cli-notifier",
|
|
4
4
|
"version": "0.1.29",
|
|
5
5
|
"name": "CLI Notifier",
|
|
6
|
-
"description": "
|
|
6
|
+
"description": "agent 轮次结束、失败、被中断,或上下文压缩失败时,发一条本机桌面通知。",
|
|
7
7
|
"author": "Pi Harness",
|
|
8
8
|
"repository": "https://github.com/pi-harness/pi-harness",
|
|
9
9
|
"license": "MIT",
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"label": "工作流"
|
|
15
15
|
},
|
|
16
16
|
"capabilities": ["runs-commands"],
|
|
17
|
-
"hooks": ["
|
|
17
|
+
"hooks": ["运行结束", "压缩失败", "插件面板"],
|
|
18
18
|
"profile": {
|
|
19
19
|
"name": "@pi-harness/plugin-cli-notifier",
|
|
20
20
|
"config": {}
|
|
@@ -3,18 +3,18 @@
|
|
|
3
3
|
"packageName": "@pi-harness/plugin-code2skill",
|
|
4
4
|
"version": "0.1.29",
|
|
5
5
|
"name": "Code2Skill",
|
|
6
|
-
"description": "
|
|
6
|
+
"description": "把选中的工作区源码打包成一个本地 Pi skill,自动生成 SKILL.md 并保留引用。",
|
|
7
7
|
"author": "Pi Harness",
|
|
8
8
|
"repository": "https://github.com/pi-harness/pi-harness",
|
|
9
9
|
"license": "MIT",
|
|
10
10
|
"source": "official",
|
|
11
11
|
"status": "verified",
|
|
12
12
|
"category": {
|
|
13
|
-
"id": "
|
|
14
|
-
"label": "
|
|
13
|
+
"id": "developer",
|
|
14
|
+
"label": "开发工具"
|
|
15
15
|
},
|
|
16
16
|
"capabilities": ["reads-files", "writes-files"],
|
|
17
|
-
"hooks": ["
|
|
17
|
+
"hooks": ["工作区文件", "插件面板"],
|
|
18
18
|
"profile": {
|
|
19
19
|
"name": "@pi-harness/plugin-code2skill",
|
|
20
20
|
"config": {}
|