@pi-harness/pi-harness 0.1.30 → 0.1.32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/apps/web/dist/assets/index-BqOM0elx.css +2 -0
- package/apps/web/dist/assets/index-x2UhIAWm.js +25 -0
- package/apps/web/dist/index.html +2 -2
- package/apps/web/package.json +1 -1
- package/apps/web/profile/cordis.yml +0 -221
- package/apps/web/server-dist/bin.js +11 -3
- package/apps/web/server-dist/bin.js.map +1 -1
- package/apps/web/src/server/bin.ts +10 -2
- package/apps/web/src/style.css +30 -1
- package/node_modules/@pi-harness/api-gateway/dist/index.d.ts.map +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/index.js +70 -18
- 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 +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/anchored-standard.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/annotation.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/archify.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/at-file.json +1 -9
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/auto-mode.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/better-sidebar.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/browser-fetch.json +1 -8
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/browser-session.json +1 -8
- 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 +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/cleaner.json +1 -9
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/cli-notifier.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/code2skill.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/colleague-skill.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/context-doctor.json +1 -8
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/context.json +1 -7
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/cordis-group.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/cordis-logger-console.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/cordis-timer.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/cost-meter.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/dependency-checker.json +2 -10
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/docker-sandbox.json +1 -9
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/fail-logger.json +1 -8
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/genui.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/git-time-capsule.json +1 -8
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/graph-memory.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/history-compressor.json +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 +1 -7
- 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 +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/mcp-client.json +2 -8
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/mcp-panel.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/memory.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/mirage-bridge.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/mock-server.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/modlens.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/module-search.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/obsidian-sync.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/openpets.json +2 -8
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/plan-execute.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/plugin-check.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/plugin-dev.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/plugin-finder.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/plugin-radar.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/plugin-stars.json +1 -8
- 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 +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/readme-gen.json +1 -9
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/recall-unread.json +1 -8
- 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 +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/runtime-doctor.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/secure-audit.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/session-bookmarks.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/session-bridge.json +1 -9
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/session-compare.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/session-export.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/session-insights.json +1 -9
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/session-search.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/skill-catalog.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/skill-guard.json +2 -9
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/sql-lens.json +1 -8
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/synapse.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/tab-manager.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/taskboard.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/telemetry-blocker.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/test-harness.json +2 -10
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/theme-studio.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/token-guard.json +1 -9
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/turn-rewind.json +1 -8
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/undo-savepoint.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/vision-toolkit.json +1 -7
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/web-research.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/workspace-navigator.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/workspace-search.json +2 -2
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/yaml-validator.json +1 -7
- package/node_modules/@pi-harness/api-gateway/dist/marketplace.d.ts +18 -2
- package/node_modules/@pi-harness/api-gateway/dist/marketplace.d.ts.map +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/marketplace.js +93 -10
- package/node_modules/@pi-harness/api-gateway/dist/marketplace.js.map +1 -1
- package/node_modules/@pi-harness/api-gateway/package.json +1 -27
- package/node_modules/@pi-harness/cli/dist/main.d.ts.map +1 -1
- package/node_modules/@pi-harness/cli/dist/main.js +19 -3
- 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/cli/profiles/default/cordis.yml +0 -87
- 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 -79
- package/packages/api-gateway/dist/index.d.ts.map +1 -1
- package/packages/api-gateway/dist/index.js +70 -18
- package/packages/api-gateway/dist/index.js.map +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/agent-teams.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/anchored-standard.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/annotation.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/archify.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/at-file.json +1 -9
- package/packages/api-gateway/dist/marketplace-entries/official/auto-mode.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/better-sidebar.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/browser-fetch.json +1 -8
- package/packages/api-gateway/dist/marketplace-entries/official/browser-session.json +1 -8
- package/packages/api-gateway/dist/marketplace-entries/official/canvas-draw.json +2 -2
- package/packages/api-gateway/dist/marketplace-entries/official/change-verifier.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/cleaner.json +1 -9
- package/packages/api-gateway/dist/marketplace-entries/official/cli-notifier.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/code2skill.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/colleague-skill.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/context-doctor.json +1 -8
- package/packages/api-gateway/dist/marketplace-entries/official/context.json +1 -7
- package/packages/api-gateway/dist/marketplace-entries/official/cordis-group.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/cordis-logger-console.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/cordis-timer.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/cost-meter.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/dependency-checker.json +2 -10
- package/packages/api-gateway/dist/marketplace-entries/official/docker-sandbox.json +1 -9
- package/packages/api-gateway/dist/marketplace-entries/official/fail-logger.json +1 -8
- package/packages/api-gateway/dist/marketplace-entries/official/genui.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/git-time-capsule.json +1 -8
- package/packages/api-gateway/dist/marketplace-entries/official/graph-memory.json +1 -1
- 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 +1 -7
- package/packages/api-gateway/dist/marketplace-entries/official/image-compressor.json +2 -2
- package/packages/api-gateway/dist/marketplace-entries/official/llm-verifier.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/mcp-client.json +2 -8
- package/packages/api-gateway/dist/marketplace-entries/official/mcp-panel.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/memory.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/mirage-bridge.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/mock-server.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/modlens.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/module-search.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/obsidian-sync.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/openpets.json +2 -8
- package/packages/api-gateway/dist/marketplace-entries/official/plan-execute.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/plugin-check.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/plugin-dev.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/plugin-finder.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/plugin-radar.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/plugin-stars.json +1 -8
- package/packages/api-gateway/dist/marketplace-entries/official/prompt-guard.json +2 -2
- package/packages/api-gateway/dist/marketplace-entries/official/prompt-library.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/readme-gen.json +1 -9
- package/packages/api-gateway/dist/marketplace-entries/official/recall-unread.json +1 -8
- package/packages/api-gateway/dist/marketplace-entries/official/reverse-skill.json +2 -2
- package/packages/api-gateway/dist/marketplace-entries/official/reviewer-bot.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/runtime-doctor.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/secure-audit.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/session-bookmarks.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/session-bridge.json +1 -9
- package/packages/api-gateway/dist/marketplace-entries/official/session-compare.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/session-export.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/session-insights.json +1 -9
- package/packages/api-gateway/dist/marketplace-entries/official/session-search.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/skill-catalog.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/skill-guard.json +2 -9
- package/packages/api-gateway/dist/marketplace-entries/official/sql-lens.json +1 -8
- package/packages/api-gateway/dist/marketplace-entries/official/synapse.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/tab-manager.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/taskboard.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/telemetry-blocker.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/test-harness.json +2 -10
- package/packages/api-gateway/dist/marketplace-entries/official/theme-studio.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/token-guard.json +1 -9
- package/packages/api-gateway/dist/marketplace-entries/official/turn-rewind.json +1 -8
- package/packages/api-gateway/dist/marketplace-entries/official/undo-savepoint.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/vision-toolkit.json +1 -7
- package/packages/api-gateway/dist/marketplace-entries/official/web-research.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/workspace-navigator.json +1 -1
- package/packages/api-gateway/dist/marketplace-entries/official/workspace-search.json +2 -2
- package/packages/api-gateway/dist/marketplace-entries/official/yaml-validator.json +1 -7
- package/packages/api-gateway/dist/marketplace.d.ts +18 -2
- package/packages/api-gateway/dist/marketplace.d.ts.map +1 -1
- package/packages/api-gateway/dist/marketplace.js +93 -10
- package/packages/api-gateway/dist/marketplace.js.map +1 -1
- package/packages/api-gateway/package.json +1 -27
- package/packages/api-gateway/src/index.ts +85 -23
- package/packages/api-gateway/src/marketplace-entries/official/agent-teams.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/anchored-standard.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/annotation.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/archify.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/at-file.json +1 -9
- package/packages/api-gateway/src/marketplace-entries/official/auto-mode.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/better-sidebar.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/browser-fetch.json +1 -8
- package/packages/api-gateway/src/marketplace-entries/official/browser-session.json +1 -8
- package/packages/api-gateway/src/marketplace-entries/official/canvas-draw.json +2 -2
- package/packages/api-gateway/src/marketplace-entries/official/change-verifier.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/cleaner.json +1 -9
- package/packages/api-gateway/src/marketplace-entries/official/cli-notifier.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/code2skill.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/colleague-skill.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/context-doctor.json +1 -8
- package/packages/api-gateway/src/marketplace-entries/official/context.json +1 -7
- package/packages/api-gateway/src/marketplace-entries/official/cordis-group.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/cordis-logger-console.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/cordis-timer.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/cost-meter.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/dependency-checker.json +2 -10
- package/packages/api-gateway/src/marketplace-entries/official/docker-sandbox.json +1 -9
- package/packages/api-gateway/src/marketplace-entries/official/fail-logger.json +1 -8
- package/packages/api-gateway/src/marketplace-entries/official/genui.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/git-time-capsule.json +1 -8
- package/packages/api-gateway/src/marketplace-entries/official/graph-memory.json +1 -1
- 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 +1 -7
- package/packages/api-gateway/src/marketplace-entries/official/image-compressor.json +2 -2
- package/packages/api-gateway/src/marketplace-entries/official/llm-verifier.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/mcp-client.json +2 -8
- package/packages/api-gateway/src/marketplace-entries/official/mcp-panel.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/memory.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/mirage-bridge.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/mock-server.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/modlens.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/module-search.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/obsidian-sync.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/openpets.json +2 -8
- package/packages/api-gateway/src/marketplace-entries/official/plan-execute.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/plugin-check.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/plugin-dev.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/plugin-finder.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/plugin-radar.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/plugin-stars.json +1 -8
- package/packages/api-gateway/src/marketplace-entries/official/prompt-guard.json +2 -2
- package/packages/api-gateway/src/marketplace-entries/official/prompt-library.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/readme-gen.json +1 -9
- package/packages/api-gateway/src/marketplace-entries/official/recall-unread.json +1 -8
- package/packages/api-gateway/src/marketplace-entries/official/reverse-skill.json +2 -2
- package/packages/api-gateway/src/marketplace-entries/official/reviewer-bot.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/runtime-doctor.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/secure-audit.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/session-bookmarks.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/session-bridge.json +1 -9
- package/packages/api-gateway/src/marketplace-entries/official/session-compare.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/session-export.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/session-insights.json +1 -9
- package/packages/api-gateway/src/marketplace-entries/official/session-search.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/skill-catalog.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/skill-guard.json +2 -9
- package/packages/api-gateway/src/marketplace-entries/official/sql-lens.json +1 -8
- package/packages/api-gateway/src/marketplace-entries/official/synapse.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/tab-manager.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/taskboard.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/telemetry-blocker.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/test-harness.json +2 -10
- package/packages/api-gateway/src/marketplace-entries/official/theme-studio.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/token-guard.json +1 -9
- package/packages/api-gateway/src/marketplace-entries/official/turn-rewind.json +1 -8
- package/packages/api-gateway/src/marketplace-entries/official/undo-savepoint.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/vision-toolkit.json +1 -7
- package/packages/api-gateway/src/marketplace-entries/official/web-research.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/workspace-navigator.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/workspace-search.json +2 -2
- package/packages/api-gateway/src/marketplace-entries/official/yaml-validator.json +1 -7
- package/packages/api-gateway/src/marketplace.ts +113 -12
- package/packages/api-gateway/test/index.test.ts +297 -5
- package/packages/api-gateway/test/marketplace-schema.test.ts +12 -0
- package/packages/api-gateway/test/marketplace.test.ts +172 -240
- package/packages/api-gateway/test/packed-package.test.ts +18 -6
- package/packages/api-gateway/test/release-contract.test.ts +8 -4
- 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 +19 -3
- package/packages/cli/dist/main.js.map +1 -1
- package/packages/cli/package.json +1 -1
- package/packages/cli/profiles/default/cordis.yml +0 -87
- package/packages/cli/src/main.ts +18 -3
- package/packages/cli/test/cli.test.ts +20 -0
- package/packages/cli/test/profiles/plugins/cordis.yml +122 -0
- package/packages/cli/test/profiles.integration.test.ts +40 -23
- package/packages/host-webserver/package.json +1 -1
- package/apps/web/dist/assets/index-B7pwZ76Z.js +0 -25
- package/apps/web/dist/assets/index-xF647pQJ.css +0 -2
|
@@ -2,6 +2,7 @@ import { execFile } from "node:child_process";
|
|
|
2
2
|
import { mkdir, mkdtemp, readFile, writeFile } from "node:fs/promises";
|
|
3
3
|
import { tmpdir } from "node:os";
|
|
4
4
|
import { join } from "node:path";
|
|
5
|
+
import { fileURLToPath } from "node:url";
|
|
5
6
|
import { promisify } from "node:util";
|
|
6
7
|
import { afterEach, describe, expect, test } from "vitest";
|
|
7
8
|
import { bootHarness, provideStdioContext, resolveProfileConfig, type BootedHarness } from "@pi-harness/core";
|
|
@@ -11,14 +12,17 @@ import { BUILTIN_PROFILES_DIR } from "../src/profiles.js";
|
|
|
11
12
|
const booted: BootedHarness[] = [];
|
|
12
13
|
const execFileAsync = promisify(execFile);
|
|
13
14
|
|
|
15
|
+
// The shipped profiles enable infrastructure only, because an official plugin is installed from the plugin center like a community one. Exercising a plugin against a real host therefore needs a profile that enables it, so this one names the plugins these tests drive end to end.
|
|
16
|
+
const PLUGIN_PROFILES_DIR = fileURLToPath(new URL("profiles", import.meta.url));
|
|
17
|
+
|
|
14
18
|
afterEach(async () => {
|
|
15
19
|
await Promise.all(booted.splice(0).map(async (harness) => harness.dispose()));
|
|
16
20
|
});
|
|
17
21
|
|
|
18
|
-
async function bootProfile(profile: string): Promise<{ harness: BootedHarness; cwd: string }> {
|
|
22
|
+
async function bootProfile(profile: string, profilesDir: string = BUILTIN_PROFILES_DIR): Promise<{ harness: BootedHarness; cwd: string }> {
|
|
19
23
|
const cwd = await mkdtemp(join(tmpdir(), "pi-harness-profile-cwd-"));
|
|
20
24
|
const agentDir = await mkdtemp(join(tmpdir(), "pi-harness-profile-agent-"));
|
|
21
|
-
const configPath = await resolveProfileConfig({ profile, profilesDir
|
|
25
|
+
const configPath = await resolveProfileConfig({ profile, profilesDir });
|
|
22
26
|
const harness = await bootHarness({
|
|
23
27
|
configPath,
|
|
24
28
|
prepare(context) {
|
|
@@ -37,8 +41,8 @@ async function bootProfile(profile: string): Promise<{ harness: BootedHarness; c
|
|
|
37
41
|
}
|
|
38
42
|
|
|
39
43
|
describe("packaged profiles", () => {
|
|
40
|
-
test("exposes every
|
|
41
|
-
const { harness } = await bootProfile("
|
|
44
|
+
test("exposes every plugin-profile tool with strict sequential execution metadata", async () => {
|
|
45
|
+
const { harness } = await bootProfile("plugins", PLUGIN_PROFILES_DIR);
|
|
42
46
|
const tools = harness.context.get("piTools")?.snapshot().customTools ?? [];
|
|
43
47
|
expect(tools.length).toBeGreaterThan(0);
|
|
44
48
|
for (const tool of tools) {
|
|
@@ -47,8 +51,21 @@ describe("packaged profiles", () => {
|
|
|
47
51
|
}
|
|
48
52
|
}, 30_000);
|
|
49
53
|
|
|
50
|
-
test("boots the default
|
|
51
|
-
|
|
54
|
+
test("boots the shipped default profile with infrastructure only", async () => {
|
|
55
|
+
// A fresh install must arrive with nothing pluggable switched on: every official plugin is installed from the plugin center, exactly like a community one.
|
|
56
|
+
const { harness } = await bootProfile("default");
|
|
57
|
+
const names = [...harness.context.loader.entries()].map((entry) => entry.options.name);
|
|
58
|
+
|
|
59
|
+
expect(harness.context.get("piModels")?.model.provider).toBe("deepseek");
|
|
60
|
+
expect(harness.context.get("piApplication")).toBeDefined();
|
|
61
|
+
expect(harness.context.get("piRuntime")).toBeDefined();
|
|
62
|
+
expect(names.filter((name) => name.startsWith("@pi-harness/plugin-"))).toEqual([]);
|
|
63
|
+
expect(names).toEqual(expect.arrayContaining(["@pi-harness/core/plugins/tools", "@pi-harness/core/plugins/runtime", "@pi-harness/core/plugins/stdio"]));
|
|
64
|
+
expect(harness.context.get("piTools")?.snapshot().customTools).toEqual([]);
|
|
65
|
+
}, 15_000);
|
|
66
|
+
|
|
67
|
+
test("boots the production plugin profile without HMR", async () => {
|
|
68
|
+
const { harness, cwd } = await bootProfile("plugins", PLUGIN_PROFILES_DIR);
|
|
52
69
|
const names = [...harness.context.loader.entries()].map((entry) => entry.options.name);
|
|
53
70
|
|
|
54
71
|
expect(harness.context.get("piModels")?.model.provider).toBe("deepseek");
|
|
@@ -92,7 +109,7 @@ describe("packaged profiles", () => {
|
|
|
92
109
|
.get("piTools")
|
|
93
110
|
?.snapshot()
|
|
94
111
|
.customTools.find((tool) => tool.name === "session_report");
|
|
95
|
-
if (sessionReportTool === undefined) throw new Error("
|
|
112
|
+
if (sessionReportTool === undefined) throw new Error("plugin test profile did not register session_report");
|
|
96
113
|
expect(
|
|
97
114
|
harness.context
|
|
98
115
|
.get("piRuntime")
|
|
@@ -128,7 +145,7 @@ describe("packaged profiles", () => {
|
|
|
128
145
|
.get("piTools")
|
|
129
146
|
?.snapshot()
|
|
130
147
|
.customTools.find((tool) => tool.name === "dependency_check");
|
|
131
|
-
if (dependencyTool === undefined) throw new Error("
|
|
148
|
+
if (dependencyTool === undefined) throw new Error("plugin test profile did not register dependency_check");
|
|
132
149
|
expect(
|
|
133
150
|
harness.context
|
|
134
151
|
.get("piRuntime")
|
|
@@ -160,7 +177,7 @@ describe("packaged profiles", () => {
|
|
|
160
177
|
.get("piTools")
|
|
161
178
|
?.snapshot()
|
|
162
179
|
.customTools.find((tool) => tool.name === "file_context");
|
|
163
|
-
if (fileContextTool === undefined) throw new Error("
|
|
180
|
+
if (fileContextTool === undefined) throw new Error("plugin test profile did not register file_context");
|
|
164
181
|
expect(
|
|
165
182
|
harness.context
|
|
166
183
|
.get("piRuntime")
|
|
@@ -185,7 +202,7 @@ describe("packaged profiles", () => {
|
|
|
185
202
|
.get("piTools")
|
|
186
203
|
?.snapshot()
|
|
187
204
|
.customTools.find((tool) => tool.name === "run_project_tests");
|
|
188
|
-
if (testHarnessTool === undefined) throw new Error("
|
|
205
|
+
if (testHarnessTool === undefined) throw new Error("plugin test profile did not register run_project_tests");
|
|
189
206
|
expect(
|
|
190
207
|
harness.context
|
|
191
208
|
.get("piRuntime")
|
|
@@ -222,7 +239,7 @@ describe("packaged profiles", () => {
|
|
|
222
239
|
.get("piTools")
|
|
223
240
|
?.snapshot()
|
|
224
241
|
.customTools.find((tool) => tool.name === "team_task");
|
|
225
|
-
if (teamTool === undefined) throw new Error("
|
|
242
|
+
if (teamTool === undefined) throw new Error("plugin test profile did not register team_task");
|
|
226
243
|
expect(
|
|
227
244
|
harness.context
|
|
228
245
|
.get("piRuntime")
|
|
@@ -240,7 +257,7 @@ describe("packaged profiles", () => {
|
|
|
240
257
|
.get("piTools")
|
|
241
258
|
?.snapshot()
|
|
242
259
|
.customTools.find((tool) => tool.name === "vision_inspect");
|
|
243
|
-
if (visionTool === undefined) throw new Error("
|
|
260
|
+
if (visionTool === undefined) throw new Error("plugin test profile did not register vision_inspect");
|
|
244
261
|
expect(
|
|
245
262
|
harness.context
|
|
246
263
|
.get("piRuntime")
|
|
@@ -268,7 +285,7 @@ describe("packaged profiles", () => {
|
|
|
268
285
|
image.writeUInt32BE(18, 20);
|
|
269
286
|
await writeFile(join(cwd, "profile-vision.png"), image);
|
|
270
287
|
const infoTool = toolkitTools?.find((tool) => tool.name === "vision_image_info");
|
|
271
|
-
if (infoTool === undefined) throw new Error("
|
|
288
|
+
if (infoTool === undefined) throw new Error("plugin test profile did not register vision_image_info");
|
|
272
289
|
await expect(infoTool.execute("profile-vision", { path: "profile-vision.png" }, undefined, undefined, {} as never)).resolves.toMatchObject({
|
|
273
290
|
details: { path: "profile-vision.png", width: 32, height: 18, headerTruncated: false },
|
|
274
291
|
});
|
|
@@ -298,10 +315,10 @@ describe("packaged profiles", () => {
|
|
|
298
315
|
await writeFile(join(cwd, "profile-capsule.txt"), "after\n", "utf8");
|
|
299
316
|
const capture = capsuleTools?.find((tool) => tool.name === "git_snapshot");
|
|
300
317
|
const restore = capsuleTools?.find((tool) => tool.name === "git_restore");
|
|
301
|
-
if (capture === undefined || restore === undefined) throw new Error("
|
|
318
|
+
if (capture === undefined || restore === undefined) throw new Error("plugin test profile did not register both Git Time Capsule tools");
|
|
302
319
|
const captured = await capture.execute("profile-capsule", {}, undefined, undefined, {} as never);
|
|
303
320
|
const capsuleName = (captured.details as { name?: unknown }).name;
|
|
304
|
-
if (typeof capsuleName !== "string") throw new Error("
|
|
321
|
+
if (typeof capsuleName !== "string") throw new Error("plugin test profile Git snapshot did not return a capsule name");
|
|
305
322
|
await restore.execute("profile-capsule-restore", { name: capsuleName, confirm: true }, undefined, undefined, {} as never);
|
|
306
323
|
await expect(readFile(join(cwd, "profile-capsule.txt"), "utf8")).resolves.toBe("before\n");
|
|
307
324
|
const capsulePanel = (await harness.context.get("piPluginUi")?.snapshot())?.find((panel) => panel.id === "git-time-capsule-panel");
|
|
@@ -327,7 +344,7 @@ describe("packaged profiles", () => {
|
|
|
327
344
|
});
|
|
328
345
|
|
|
329
346
|
test("loads production README tools into the default runtime and writes a current confirmed snapshot", async () => {
|
|
330
|
-
const { harness, cwd } = await bootProfile("
|
|
347
|
+
const { harness, cwd } = await bootProfile("plugins", PLUGIN_PROFILES_DIR);
|
|
331
348
|
const loaderNames = [...harness.context.loader.entries()].map((entry) => entry.options.name);
|
|
332
349
|
const registered = harness.context
|
|
333
350
|
.get("piTools")
|
|
@@ -343,7 +360,7 @@ describe("packaged profiles", () => {
|
|
|
343
360
|
expect(runtimeNames).toEqual(expect.arrayContaining(["readme_report", "readme_write"]));
|
|
344
361
|
const report = registered?.find((tool) => tool.name === "readme_report");
|
|
345
362
|
const write = registered?.find((tool) => tool.name === "readme_write");
|
|
346
|
-
if (report === undefined || write === undefined) throw new Error("
|
|
363
|
+
if (report === undefined || write === undefined) throw new Error("plugin test profile did not register both README tools");
|
|
347
364
|
|
|
348
365
|
await writeFile(
|
|
349
366
|
join(cwd, "package.json"),
|
|
@@ -393,7 +410,7 @@ describe("packaged profiles", () => {
|
|
|
393
410
|
}, 15_000);
|
|
394
411
|
|
|
395
412
|
test("loads the production I18n pair tool into the default runtime and compares real locale files", async () => {
|
|
396
|
-
const { harness, cwd } = await bootProfile("
|
|
413
|
+
const { harness, cwd } = await bootProfile("plugins", PLUGIN_PROFILES_DIR);
|
|
397
414
|
const loaderNames = [...harness.context.loader.entries()].map((entry) => entry.options.name);
|
|
398
415
|
const tool = harness.context
|
|
399
416
|
.get("piTools")
|
|
@@ -407,7 +424,7 @@ describe("packaged profiles", () => {
|
|
|
407
424
|
expect(loaderNames).toContain("@pi-harness/plugin-i18n-pair");
|
|
408
425
|
expect(tool).toMatchObject({ executionMode: "sequential", parameters: { additionalProperties: false } });
|
|
409
426
|
expect(runtimeNames).toContain("i18n_check");
|
|
410
|
-
if (tool === undefined) throw new Error("
|
|
427
|
+
if (tool === undefined) throw new Error("plugin test profile did not register i18n_check");
|
|
411
428
|
|
|
412
429
|
await mkdir(join(cwd, "locales"), { recursive: true });
|
|
413
430
|
await Promise.all([
|
|
@@ -442,7 +459,7 @@ describe("packaged profiles", () => {
|
|
|
442
459
|
}, 15_000);
|
|
443
460
|
|
|
444
461
|
test("loads the production Cleaner tool into the default runtime and removes only excess capsules", async () => {
|
|
445
|
-
const { harness } = await bootProfile("
|
|
462
|
+
const { harness } = await bootProfile("plugins", PLUGIN_PROFILES_DIR);
|
|
446
463
|
const loaderNames = [...harness.context.loader.entries()].map((entry) => entry.options.name);
|
|
447
464
|
const tool = harness.context
|
|
448
465
|
.get("piTools")
|
|
@@ -457,7 +474,7 @@ describe("packaged profiles", () => {
|
|
|
457
474
|
expect(loaderNames).toContain("@pi-harness/plugin-cleaner");
|
|
458
475
|
expect(tool).toMatchObject({ executionMode: "sequential", parameters: { additionalProperties: false } });
|
|
459
476
|
expect(runtimeNames).toContain("clean_harness_artifacts");
|
|
460
|
-
if (tool === undefined) throw new Error("
|
|
477
|
+
if (tool === undefined) throw new Error("plugin test profile did not register clean_harness_artifacts");
|
|
461
478
|
if (agentDir === undefined) throw new Error("default profile did not expose PI_AGENT_DIR");
|
|
462
479
|
|
|
463
480
|
const capsuleDir = join(agentDir, "capsules");
|
|
@@ -486,7 +503,7 @@ describe("packaged profiles", () => {
|
|
|
486
503
|
}, 15_000);
|
|
487
504
|
|
|
488
505
|
test("loads the production SQL Lens tool into the default runtime and runs a local read-only query", async () => {
|
|
489
|
-
const { harness, cwd } = await bootProfile("
|
|
506
|
+
const { harness, cwd } = await bootProfile("plugins", PLUGIN_PROFILES_DIR);
|
|
490
507
|
const loaderNames = [...harness.context.loader.entries()].map((entry) => entry.options.name);
|
|
491
508
|
const tool = harness.context
|
|
492
509
|
.get("piTools")
|
|
@@ -499,7 +516,7 @@ describe("packaged profiles", () => {
|
|
|
499
516
|
expect(loaderNames).toContain("@pi-harness/plugin-sql-lens");
|
|
500
517
|
expect(tool).toMatchObject({ executionMode: "sequential", parameters: { additionalProperties: false } });
|
|
501
518
|
expect(runtimeNames).toContain("sql_readonly");
|
|
502
|
-
if (tool === undefined) throw new Error("
|
|
519
|
+
if (tool === undefined) throw new Error("plugin test profile did not register sql_readonly");
|
|
503
520
|
const { DatabaseSync } = await import("node:sqlite");
|
|
504
521
|
const database = new DatabaseSync(join(cwd, "data.db"));
|
|
505
522
|
database.exec("CREATE TABLE users(id INTEGER PRIMARY KEY, name TEXT); INSERT INTO users VALUES (1, 'Ada')");
|