@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.
Files changed (269) hide show
  1. package/apps/web/dist/assets/index-CZMbiZj6.css +2 -0
  2. package/apps/web/dist/assets/index-z2r7-WQf.js +26 -0
  3. package/apps/web/dist/index.html +2 -2
  4. package/apps/web/package.json +1 -1
  5. package/apps/web/server-dist/bin.js +8 -0
  6. package/apps/web/server-dist/bin.js.map +1 -1
  7. package/apps/web/src/server/bin.ts +8 -0
  8. package/apps/web/src/style.css +24 -0
  9. package/node_modules/@pi-harness/api-gateway/dist/index.d.ts.map +1 -1
  10. package/node_modules/@pi-harness/api-gateway/dist/index.js +89 -4
  11. package/node_modules/@pi-harness/api-gateway/dist/index.js.map +1 -1
  12. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/agent-teams.json +4 -4
  13. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/anchored-standard.json +2 -2
  14. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/annotation.json +2 -2
  15. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/archify.json +2 -2
  16. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/at-file.json +2 -2
  17. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/auto-mode.json +2 -2
  18. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/better-sidebar.json +4 -4
  19. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/browser-fetch.json +2 -2
  20. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/browser-session.json +2 -2
  21. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/canvas-draw.json +2 -2
  22. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/change-verifier.json +2 -2
  23. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/cleaner.json +2 -2
  24. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/cli-notifier.json +2 -2
  25. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/code2skill.json +4 -4
  26. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/colleague-skill.json +2 -2
  27. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/context-doctor.json +2 -2
  28. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/context.json +2 -2
  29. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/cordis-group.json +11 -4
  30. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/cordis-logger-console.json +15 -4
  31. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/cordis-timer.json +10 -4
  32. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/cost-meter.json +2 -2
  33. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/dependency-checker.json +2 -2
  34. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/docker-sandbox.json +2 -2
  35. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/fail-logger.json +2 -2
  36. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/genui.json +2 -2
  37. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/git-time-capsule.json +2 -2
  38. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/graph-memory.json +4 -4
  39. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/history-compressor.json +2 -2
  40. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/hol-guard.json +2 -2
  41. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/i18n-pair.json +2 -2
  42. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/image-compressor.json +2 -2
  43. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/llm-verifier.json +4 -4
  44. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/mcp-client.json +4 -4
  45. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/mcp-panel.json +4 -4
  46. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/memory.json +4 -4
  47. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/mirage-bridge.json +4 -4
  48. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/mock-server.json +4 -4
  49. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/modlens.json +2 -2
  50. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/module-search.json +2 -2
  51. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/obsidian-sync.json +2 -2
  52. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/openpets.json +2 -2
  53. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/plan-execute.json +2 -2
  54. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/plugin-check.json +2 -2
  55. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/plugin-dev.json +2 -2
  56. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/plugin-finder.json +2 -2
  57. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/plugin-radar.json +2 -2
  58. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/plugin-stars.json +2 -2
  59. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/prompt-guard.json +2 -2
  60. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/prompt-library.json +2 -2
  61. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/readme-gen.json +2 -2
  62. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/recall-unread.json +2 -2
  63. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/reverse-skill.json +2 -2
  64. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/reviewer-bot.json +2 -2
  65. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/runtime-doctor.json +2 -2
  66. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/secure-audit.json +2 -2
  67. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/session-bookmarks.json +2 -2
  68. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/session-bridge.json +2 -2
  69. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/session-compare.json +2 -2
  70. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/session-export.json +2 -2
  71. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/session-insights.json +2 -2
  72. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/session-search.json +2 -2
  73. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/skill-catalog.json +2 -2
  74. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/skill-guard.json +2 -2
  75. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/sql-lens.json +4 -4
  76. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/synapse.json +2 -2
  77. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/tab-manager.json +2 -2
  78. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/taskboard.json +2 -2
  79. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/telemetry-blocker.json +2 -2
  80. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/test-harness.json +4 -4
  81. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/theme-studio.json +2 -2
  82. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/token-guard.json +2 -2
  83. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/turn-rewind.json +2 -2
  84. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/undo-savepoint.json +2 -2
  85. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/vision-toolkit.json +2 -2
  86. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/web-research.json +2 -2
  87. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/workspace-navigator.json +2 -2
  88. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/workspace-search.json +2 -2
  89. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/yaml-validator.json +2 -2
  90. package/node_modules/@pi-harness/api-gateway/package.json +1 -1
  91. package/node_modules/@pi-harness/cli/dist/main.d.ts.map +1 -1
  92. package/node_modules/@pi-harness/cli/dist/main.js +2 -0
  93. package/node_modules/@pi-harness/cli/dist/main.js.map +1 -1
  94. package/node_modules/@pi-harness/cli/package.json +1 -1
  95. package/node_modules/@pi-harness/host-webserver/package.json +1 -1
  96. package/node_modules/@pi-harness/web-app/package.json +1 -1
  97. package/package.json +6 -6
  98. package/packages/api-gateway/dist/index.d.ts.map +1 -1
  99. package/packages/api-gateway/dist/index.js +89 -4
  100. package/packages/api-gateway/dist/index.js.map +1 -1
  101. package/packages/api-gateway/dist/marketplace-entries/official/agent-teams.json +4 -4
  102. package/packages/api-gateway/dist/marketplace-entries/official/anchored-standard.json +2 -2
  103. package/packages/api-gateway/dist/marketplace-entries/official/annotation.json +2 -2
  104. package/packages/api-gateway/dist/marketplace-entries/official/archify.json +2 -2
  105. package/packages/api-gateway/dist/marketplace-entries/official/at-file.json +2 -2
  106. package/packages/api-gateway/dist/marketplace-entries/official/auto-mode.json +2 -2
  107. package/packages/api-gateway/dist/marketplace-entries/official/better-sidebar.json +4 -4
  108. package/packages/api-gateway/dist/marketplace-entries/official/browser-fetch.json +2 -2
  109. package/packages/api-gateway/dist/marketplace-entries/official/browser-session.json +2 -2
  110. package/packages/api-gateway/dist/marketplace-entries/official/canvas-draw.json +2 -2
  111. package/packages/api-gateway/dist/marketplace-entries/official/change-verifier.json +2 -2
  112. package/packages/api-gateway/dist/marketplace-entries/official/cleaner.json +2 -2
  113. package/packages/api-gateway/dist/marketplace-entries/official/cli-notifier.json +2 -2
  114. package/packages/api-gateway/dist/marketplace-entries/official/code2skill.json +4 -4
  115. package/packages/api-gateway/dist/marketplace-entries/official/colleague-skill.json +2 -2
  116. package/packages/api-gateway/dist/marketplace-entries/official/context-doctor.json +2 -2
  117. package/packages/api-gateway/dist/marketplace-entries/official/context.json +2 -2
  118. package/packages/api-gateway/dist/marketplace-entries/official/cordis-group.json +11 -4
  119. package/packages/api-gateway/dist/marketplace-entries/official/cordis-logger-console.json +15 -4
  120. package/packages/api-gateway/dist/marketplace-entries/official/cordis-timer.json +10 -4
  121. package/packages/api-gateway/dist/marketplace-entries/official/cost-meter.json +2 -2
  122. package/packages/api-gateway/dist/marketplace-entries/official/dependency-checker.json +2 -2
  123. package/packages/api-gateway/dist/marketplace-entries/official/docker-sandbox.json +2 -2
  124. package/packages/api-gateway/dist/marketplace-entries/official/fail-logger.json +2 -2
  125. package/packages/api-gateway/dist/marketplace-entries/official/genui.json +2 -2
  126. package/packages/api-gateway/dist/marketplace-entries/official/git-time-capsule.json +2 -2
  127. package/packages/api-gateway/dist/marketplace-entries/official/graph-memory.json +4 -4
  128. package/packages/api-gateway/dist/marketplace-entries/official/history-compressor.json +2 -2
  129. package/packages/api-gateway/dist/marketplace-entries/official/hol-guard.json +2 -2
  130. package/packages/api-gateway/dist/marketplace-entries/official/i18n-pair.json +2 -2
  131. package/packages/api-gateway/dist/marketplace-entries/official/image-compressor.json +2 -2
  132. package/packages/api-gateway/dist/marketplace-entries/official/llm-verifier.json +4 -4
  133. package/packages/api-gateway/dist/marketplace-entries/official/mcp-client.json +4 -4
  134. package/packages/api-gateway/dist/marketplace-entries/official/mcp-panel.json +4 -4
  135. package/packages/api-gateway/dist/marketplace-entries/official/memory.json +4 -4
  136. package/packages/api-gateway/dist/marketplace-entries/official/mirage-bridge.json +4 -4
  137. package/packages/api-gateway/dist/marketplace-entries/official/mock-server.json +4 -4
  138. package/packages/api-gateway/dist/marketplace-entries/official/modlens.json +2 -2
  139. package/packages/api-gateway/dist/marketplace-entries/official/module-search.json +2 -2
  140. package/packages/api-gateway/dist/marketplace-entries/official/obsidian-sync.json +2 -2
  141. package/packages/api-gateway/dist/marketplace-entries/official/openpets.json +2 -2
  142. package/packages/api-gateway/dist/marketplace-entries/official/plan-execute.json +2 -2
  143. package/packages/api-gateway/dist/marketplace-entries/official/plugin-check.json +2 -2
  144. package/packages/api-gateway/dist/marketplace-entries/official/plugin-dev.json +2 -2
  145. package/packages/api-gateway/dist/marketplace-entries/official/plugin-finder.json +2 -2
  146. package/packages/api-gateway/dist/marketplace-entries/official/plugin-radar.json +2 -2
  147. package/packages/api-gateway/dist/marketplace-entries/official/plugin-stars.json +2 -2
  148. package/packages/api-gateway/dist/marketplace-entries/official/prompt-guard.json +2 -2
  149. package/packages/api-gateway/dist/marketplace-entries/official/prompt-library.json +2 -2
  150. package/packages/api-gateway/dist/marketplace-entries/official/readme-gen.json +2 -2
  151. package/packages/api-gateway/dist/marketplace-entries/official/recall-unread.json +2 -2
  152. package/packages/api-gateway/dist/marketplace-entries/official/reverse-skill.json +2 -2
  153. package/packages/api-gateway/dist/marketplace-entries/official/reviewer-bot.json +2 -2
  154. package/packages/api-gateway/dist/marketplace-entries/official/runtime-doctor.json +2 -2
  155. package/packages/api-gateway/dist/marketplace-entries/official/secure-audit.json +2 -2
  156. package/packages/api-gateway/dist/marketplace-entries/official/session-bookmarks.json +2 -2
  157. package/packages/api-gateway/dist/marketplace-entries/official/session-bridge.json +2 -2
  158. package/packages/api-gateway/dist/marketplace-entries/official/session-compare.json +2 -2
  159. package/packages/api-gateway/dist/marketplace-entries/official/session-export.json +2 -2
  160. package/packages/api-gateway/dist/marketplace-entries/official/session-insights.json +2 -2
  161. package/packages/api-gateway/dist/marketplace-entries/official/session-search.json +2 -2
  162. package/packages/api-gateway/dist/marketplace-entries/official/skill-catalog.json +2 -2
  163. package/packages/api-gateway/dist/marketplace-entries/official/skill-guard.json +2 -2
  164. package/packages/api-gateway/dist/marketplace-entries/official/sql-lens.json +4 -4
  165. package/packages/api-gateway/dist/marketplace-entries/official/synapse.json +2 -2
  166. package/packages/api-gateway/dist/marketplace-entries/official/tab-manager.json +2 -2
  167. package/packages/api-gateway/dist/marketplace-entries/official/taskboard.json +2 -2
  168. package/packages/api-gateway/dist/marketplace-entries/official/telemetry-blocker.json +2 -2
  169. package/packages/api-gateway/dist/marketplace-entries/official/test-harness.json +4 -4
  170. package/packages/api-gateway/dist/marketplace-entries/official/theme-studio.json +2 -2
  171. package/packages/api-gateway/dist/marketplace-entries/official/token-guard.json +2 -2
  172. package/packages/api-gateway/dist/marketplace-entries/official/turn-rewind.json +2 -2
  173. package/packages/api-gateway/dist/marketplace-entries/official/undo-savepoint.json +2 -2
  174. package/packages/api-gateway/dist/marketplace-entries/official/vision-toolkit.json +2 -2
  175. package/packages/api-gateway/dist/marketplace-entries/official/web-research.json +2 -2
  176. package/packages/api-gateway/dist/marketplace-entries/official/workspace-navigator.json +2 -2
  177. package/packages/api-gateway/dist/marketplace-entries/official/workspace-search.json +2 -2
  178. package/packages/api-gateway/dist/marketplace-entries/official/yaml-validator.json +2 -2
  179. package/packages/api-gateway/package.json +1 -1
  180. package/packages/api-gateway/src/index.ts +90 -5
  181. package/packages/api-gateway/src/marketplace-entries/official/agent-teams.json +4 -4
  182. package/packages/api-gateway/src/marketplace-entries/official/anchored-standard.json +2 -2
  183. package/packages/api-gateway/src/marketplace-entries/official/annotation.json +2 -2
  184. package/packages/api-gateway/src/marketplace-entries/official/archify.json +2 -2
  185. package/packages/api-gateway/src/marketplace-entries/official/at-file.json +2 -2
  186. package/packages/api-gateway/src/marketplace-entries/official/auto-mode.json +2 -2
  187. package/packages/api-gateway/src/marketplace-entries/official/better-sidebar.json +4 -4
  188. package/packages/api-gateway/src/marketplace-entries/official/browser-fetch.json +2 -2
  189. package/packages/api-gateway/src/marketplace-entries/official/browser-session.json +2 -2
  190. package/packages/api-gateway/src/marketplace-entries/official/canvas-draw.json +2 -2
  191. package/packages/api-gateway/src/marketplace-entries/official/change-verifier.json +2 -2
  192. package/packages/api-gateway/src/marketplace-entries/official/cleaner.json +2 -2
  193. package/packages/api-gateway/src/marketplace-entries/official/cli-notifier.json +2 -2
  194. package/packages/api-gateway/src/marketplace-entries/official/code2skill.json +4 -4
  195. package/packages/api-gateway/src/marketplace-entries/official/colleague-skill.json +2 -2
  196. package/packages/api-gateway/src/marketplace-entries/official/context-doctor.json +2 -2
  197. package/packages/api-gateway/src/marketplace-entries/official/context.json +2 -2
  198. package/packages/api-gateway/src/marketplace-entries/official/cordis-group.json +11 -4
  199. package/packages/api-gateway/src/marketplace-entries/official/cordis-logger-console.json +15 -4
  200. package/packages/api-gateway/src/marketplace-entries/official/cordis-timer.json +10 -4
  201. package/packages/api-gateway/src/marketplace-entries/official/cost-meter.json +2 -2
  202. package/packages/api-gateway/src/marketplace-entries/official/dependency-checker.json +2 -2
  203. package/packages/api-gateway/src/marketplace-entries/official/docker-sandbox.json +2 -2
  204. package/packages/api-gateway/src/marketplace-entries/official/fail-logger.json +2 -2
  205. package/packages/api-gateway/src/marketplace-entries/official/genui.json +2 -2
  206. package/packages/api-gateway/src/marketplace-entries/official/git-time-capsule.json +2 -2
  207. package/packages/api-gateway/src/marketplace-entries/official/graph-memory.json +4 -4
  208. package/packages/api-gateway/src/marketplace-entries/official/history-compressor.json +2 -2
  209. package/packages/api-gateway/src/marketplace-entries/official/hol-guard.json +2 -2
  210. package/packages/api-gateway/src/marketplace-entries/official/i18n-pair.json +2 -2
  211. package/packages/api-gateway/src/marketplace-entries/official/image-compressor.json +2 -2
  212. package/packages/api-gateway/src/marketplace-entries/official/llm-verifier.json +4 -4
  213. package/packages/api-gateway/src/marketplace-entries/official/mcp-client.json +4 -4
  214. package/packages/api-gateway/src/marketplace-entries/official/mcp-panel.json +4 -4
  215. package/packages/api-gateway/src/marketplace-entries/official/memory.json +4 -4
  216. package/packages/api-gateway/src/marketplace-entries/official/mirage-bridge.json +4 -4
  217. package/packages/api-gateway/src/marketplace-entries/official/mock-server.json +4 -4
  218. package/packages/api-gateway/src/marketplace-entries/official/modlens.json +2 -2
  219. package/packages/api-gateway/src/marketplace-entries/official/module-search.json +2 -2
  220. package/packages/api-gateway/src/marketplace-entries/official/obsidian-sync.json +2 -2
  221. package/packages/api-gateway/src/marketplace-entries/official/openpets.json +2 -2
  222. package/packages/api-gateway/src/marketplace-entries/official/plan-execute.json +2 -2
  223. package/packages/api-gateway/src/marketplace-entries/official/plugin-check.json +2 -2
  224. package/packages/api-gateway/src/marketplace-entries/official/plugin-dev.json +2 -2
  225. package/packages/api-gateway/src/marketplace-entries/official/plugin-finder.json +2 -2
  226. package/packages/api-gateway/src/marketplace-entries/official/plugin-radar.json +2 -2
  227. package/packages/api-gateway/src/marketplace-entries/official/plugin-stars.json +2 -2
  228. package/packages/api-gateway/src/marketplace-entries/official/prompt-guard.json +2 -2
  229. package/packages/api-gateway/src/marketplace-entries/official/prompt-library.json +2 -2
  230. package/packages/api-gateway/src/marketplace-entries/official/readme-gen.json +2 -2
  231. package/packages/api-gateway/src/marketplace-entries/official/recall-unread.json +2 -2
  232. package/packages/api-gateway/src/marketplace-entries/official/reverse-skill.json +2 -2
  233. package/packages/api-gateway/src/marketplace-entries/official/reviewer-bot.json +2 -2
  234. package/packages/api-gateway/src/marketplace-entries/official/runtime-doctor.json +2 -2
  235. package/packages/api-gateway/src/marketplace-entries/official/secure-audit.json +2 -2
  236. package/packages/api-gateway/src/marketplace-entries/official/session-bookmarks.json +2 -2
  237. package/packages/api-gateway/src/marketplace-entries/official/session-bridge.json +2 -2
  238. package/packages/api-gateway/src/marketplace-entries/official/session-compare.json +2 -2
  239. package/packages/api-gateway/src/marketplace-entries/official/session-export.json +2 -2
  240. package/packages/api-gateway/src/marketplace-entries/official/session-insights.json +2 -2
  241. package/packages/api-gateway/src/marketplace-entries/official/session-search.json +2 -2
  242. package/packages/api-gateway/src/marketplace-entries/official/skill-catalog.json +2 -2
  243. package/packages/api-gateway/src/marketplace-entries/official/skill-guard.json +2 -2
  244. package/packages/api-gateway/src/marketplace-entries/official/sql-lens.json +4 -4
  245. package/packages/api-gateway/src/marketplace-entries/official/synapse.json +2 -2
  246. package/packages/api-gateway/src/marketplace-entries/official/tab-manager.json +2 -2
  247. package/packages/api-gateway/src/marketplace-entries/official/taskboard.json +2 -2
  248. package/packages/api-gateway/src/marketplace-entries/official/telemetry-blocker.json +2 -2
  249. package/packages/api-gateway/src/marketplace-entries/official/test-harness.json +4 -4
  250. package/packages/api-gateway/src/marketplace-entries/official/theme-studio.json +2 -2
  251. package/packages/api-gateway/src/marketplace-entries/official/token-guard.json +2 -2
  252. package/packages/api-gateway/src/marketplace-entries/official/turn-rewind.json +2 -2
  253. package/packages/api-gateway/src/marketplace-entries/official/undo-savepoint.json +2 -2
  254. package/packages/api-gateway/src/marketplace-entries/official/vision-toolkit.json +2 -2
  255. package/packages/api-gateway/src/marketplace-entries/official/web-research.json +2 -2
  256. package/packages/api-gateway/src/marketplace-entries/official/workspace-navigator.json +2 -2
  257. package/packages/api-gateway/src/marketplace-entries/official/workspace-search.json +2 -2
  258. package/packages/api-gateway/src/marketplace-entries/official/yaml-validator.json +2 -2
  259. package/packages/api-gateway/test/index.test.ts +9 -4
  260. package/packages/api-gateway/test/marketplace.test.ts +83 -114
  261. package/packages/bundle-web-app/package.json +1 -1
  262. package/packages/cli/dist/main.d.ts.map +1 -1
  263. package/packages/cli/dist/main.js +2 -0
  264. package/packages/cli/dist/main.js.map +1 -1
  265. package/packages/cli/package.json +1 -1
  266. package/packages/cli/src/main.ts +2 -0
  267. package/packages/host-webserver/package.json +1 -1
  268. package/apps/web/dist/assets/index-BqOM0elx.css +0 -2
  269. package/apps/web/dist/assets/index-x2UhIAWm.js +0 -25
@@ -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": "Show a bounded workspace tree and read-only Git status for a high-signal coding sidebar.",
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": ["workspace files", "bounded scan", "read-only Git", "plugin UI"],
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": "Search bounded text files in the active workspace with ignored directories and binary content excluded.",
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": ["workspace files", "plugin UI"],
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": "Validate workspace-contained UTF-8 multi-document YAML through bounded, cancellable reads and line-aware diagnostics.",
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 validation tool", "workspace files", "plugin UI"],
17
+ "hooks": ["YAML 校验工具", "工作区文件", "插件面板"],
18
18
  "profile": {
19
19
  "name": "@pi-harness/plugin-yaml-validator",
20
20
  "config": {}
@@ -2122,7 +2122,7 @@ describe("API gateway plugin", () => {
2122
2122
  context.provide("piHarnessLaunch", { cwd: "/tmp", agentDir: "/tmp/agent", args: [], requestExit() {} });
2123
2123
  await context.plugin(apiPlugin);
2124
2124
 
2125
- const response = await fetch(context.webServer.url + "/api/marketplace?q=timer&capability=read-only&category=runtime&page=0&pageSize=1");
2125
+ const response = await fetch(context.webServer.url + "/api/marketplace?q=timer&capability=read-only&category=workflow&page=0&pageSize=1");
2126
2126
  expect(response.status).toBe(200);
2127
2127
  const payload = (await response.json()) as {
2128
2128
  items?: readonly { packageName?: unknown; status?: unknown }[];
@@ -2137,7 +2137,7 @@ describe("API gateway plugin", () => {
2137
2137
  expect(payload.items?.[0]).toMatchObject({ packageName: "@deepseek-ai/cordis-plugin-timer", status: "verified" });
2138
2138
  expect(payload).toMatchObject({ total: 1, page: 0, pageSize: 1, hasNext: false });
2139
2139
  expect(payload.capabilities).toEqual(expect.arrayContaining([expect.objectContaining({ id: "read-only", label: "只读运行" })]));
2140
- expect(payload.categories).toEqual(expect.arrayContaining([expect.objectContaining({ id: "runtime", label: "运行时", count: 1 })]));
2140
+ expect(payload.categories).toEqual(expect.arrayContaining([expect.objectContaining({ id: "workflow", label: "工作流", count: 20 })]));
2141
2141
  const tooLong = await fetch(context.webServer.url + "/api/marketplace?q=" + "x".repeat(121));
2142
2142
  expect(tooLong.status).toBe(400);
2143
2143
  const invalidPage = await fetch(context.webServer.url + "/api/marketplace?page=-1");
@@ -3248,8 +3248,13 @@ describe("API gateway plugin", () => {
3248
3248
  expect(response.status).toBe(200);
3249
3249
  const payload = (await response.json()) as { messages: unknown[]; events: Array<Record<string, unknown>> };
3250
3250
  expect(payload.messages).toEqual([message]);
3251
- expect(payload.events[0]).toEqual({ type: "message_end", message });
3252
- expect(payload.events[1]).toEqual({ type: "turn_end", self: "[Circular]" });
3251
+ // The gateway stamps every event with the wall-clock it arrived at, which is the only record of when a tool call ran, so the stamp is asserted by type and the rest of the event verbatim.
3252
+ const { receivedAt: firstStamp, ...firstEvent } = payload.events[0] ?? {};
3253
+ const { receivedAt: secondStamp, ...secondEvent } = payload.events[1] ?? {};
3254
+ expect(typeof firstStamp).toBe("number");
3255
+ expect(typeof secondStamp).toBe("number");
3256
+ expect(firstEvent).toEqual({ type: "message_end", message });
3257
+ expect(secondEvent).toEqual({ type: "turn_end", self: "[Circular]" });
3253
3258
  });
3254
3259
 
3255
3260
  test("returns git status paths verbatim when they hold spaces, non-ASCII characters or a rename", async () => {
@@ -35,73 +35,71 @@ describe("plugin marketplace registry", () => {
35
35
 
36
36
  test("publishes the high-value official plugins in the same marketplace registry", () => {
37
37
  const official = new Map(MARKETPLACE_PLUGINS.filter((plugin) => plugin.source === "official").map((plugin) => [plugin.id, plugin]));
38
- expect(official.get("agent-teams")?.category.id).toBe("collaboration");
38
+ expect(official.get("agent-teams")?.category.id).toBe("workflow");
39
39
  expect(official.get("plugin-stars")?.category.id).toBe("discovery");
40
- expect(official.get("plugin-stars")?.description).toMatch(
41
- /curated.*raw\.githubusercontent\.com.*descriptor-safe.*bounded.*cancellable.*fail-closed.*panel/iu,
42
- );
40
+ expect(official.get("plugin-stars")?.description).toMatch(/raw\.githubusercontent\.com.*输入受限.*校验严格.*可取消.*失败即关闭/u);
43
41
  expect(official.get("plugin-stars")?.capabilities).toEqual(["network-access"]);
44
- expect(official.get("plugin-stars")?.hooks).toEqual(["ranking search tool", "raw GitHub snapshot", "plugin UI"]);
42
+ expect(official.get("plugin-stars")?.hooks).toEqual(["榜单搜索工具", "GitHub 原始快照", "插件面板"]);
45
43
  expect(official.get("plugin-stars")?.profile.config).toEqual({
46
44
  sourceUrl: "https://raw.githubusercontent.com/ywsldxk/dsh-plugin-stars/main/data/plugins.json",
47
45
  limit: 10,
48
46
  timeoutMs: 15_000,
49
47
  });
50
48
  expect(official.get("vision-toolkit")?.category.id).toBe("multimodal");
51
- expect(official.get("vision-toolkit")?.description).toMatch(/signature-verified.*PNG.*JPEG.*GIF.*WebP.*bounded header.*cancellable.*local/iu);
49
+ expect(official.get("vision-toolkit")?.description).toMatch(/PNG.*JPEG.*GIF.*WebP.*只读文件头.*可取消.*本机/u);
52
50
  expect(official.get("vision-toolkit")?.capabilities).toEqual(["read-only", "reads-files"]);
53
- expect(official.get("vision-toolkit")?.hooks).toEqual(["image metadata tools", "workspace access", "plugin UI"]);
51
+ expect(official.get("vision-toolkit")?.hooks).toEqual(["图像元数据工具", "工作区访问", "插件面板"]);
54
52
  expect(official.get("vision-toolkit")?.profile.config).toEqual({});
55
53
  expect(official.get("session-bridge")?.category.id).toBe("workflow");
56
- expect(official.get("session-bridge")?.description).toMatch(/preview.*export.*confirmed import.*strictly validated.*bounded.*LLM context.*duplicate/iu);
54
+ expect(official.get("session-bridge")?.description).toMatch(/预览.*导出.*导入需要确认.*严格校验.*防重复注入/u);
57
55
  expect(official.get("session-bridge")?.capabilities).toEqual(["read-only", "session-data"]);
58
- expect(official.get("session-bridge")?.hooks).toEqual(["session bridge tools", "active session manager", "custom context messages", "plugin UI"]);
56
+ expect(official.get("session-bridge")?.hooks).toEqual(["会话桥接工具", "当前会话管理器", "自定义上下文消息", "插件面板"]);
59
57
  expect(official.get("session-bridge")?.profile.config).toEqual({});
60
58
  expect(official.get("skill-guard")?.category.id).toBe("security");
61
- expect(official.get("skill-guard")?.description).toMatch(/loaded Skill entry.*bounded heuristic.*does not disable/iu);
59
+ expect(official.get("skill-guard")?.description).toMatch(/启发式.*已加载 Skill.*不会停用/u);
62
60
  expect(official.get("skill-guard")?.capabilities).toEqual(["read-only", "reads-files"]);
63
- expect(official.get("skill-guard")?.hooks).toEqual(["skill scan tool", "resource loader", "plugin UI"]);
61
+ expect(official.get("skill-guard")?.hooks).toEqual(["skill 扫描工具", "资源加载器", "插件面板"]);
64
62
  expect(official.get("skill-guard")?.profile.config).toEqual({});
65
63
  expect(official.get("cost-meter")?.category.id).toBe("observability");
66
- expect(official.get("cost-meter")?.description).toMatch(/runtime-reported.*UTC daily increments.*bounded local ledger/iu);
64
+ expect(official.get("cost-meter")?.description).toMatch(/运行时上报的费用.*UTC.*本地账本/u);
67
65
  expect(official.get("cost-meter")?.capabilities).toEqual(["session-data", "reads-files", "writes-files"]);
68
- expect(official.get("cost-meter")?.hooks).toEqual(["agent end", "cost report tool", "plugin UI"]);
66
+ expect(official.get("cost-meter")?.hooks).toEqual(["运行结束", "费用报告工具", "插件面板"]);
69
67
  expect(official.get("cost-meter")?.profile.config).toEqual({ dailyBudget: 0, maxEntries: 365 });
70
68
  expect(official.get("skill-catalog")?.category.id).toBe("discovery");
71
69
  expect(official.get("prompt-guard")?.category.id).toBe("security");
72
70
  expect(official.get("browser-fetch")?.category.id).toBe("web");
73
- expect(official.get("browser-fetch")?.description).toMatch(/bounded.*text.*descriptor-safe.*DNS.*pinn.*redirect.*private.*timeout.*validated.*panel/iu);
71
+ expect(official.get("browser-fetch")?.description).toMatch(/有上限的文本.*固定 DNS.*内网.*文本类型.*可取消.*超时/u);
74
72
  expect(official.get("browser-fetch")?.capabilities).toEqual(["network-access"]);
75
73
  expect(official.get("browser-fetch")?.profile.config).toEqual({ allowPrivate: false, timeoutMs: 20_000 });
76
74
  expect(official.get("web-research")?.category.id).toBe("web");
77
- expect(official.get("mcp-client")?.category.id).toBe("tools");
78
- expect(official.get("mcp-client")?.description).toMatch(/MCP stdio.*bounded.*pagination.*tool.*resource.*prompt.*cancellable.*lifecycle/iu);
75
+ expect(official.get("mcp-client")?.category.id).toBe("developer");
76
+ expect(official.get("mcp-client")?.description).toMatch(/MCP stdio.*工具、资源与提示词.*可取消.*生命周期/u);
79
77
  expect(official.get("mcp-client")?.capabilities).toEqual(["runs-commands"]);
80
- expect(official.get("mcp-client")?.hooks).toEqual(["MCP stdio tools", "managed server lifecycle", "plugin UI"]);
78
+ expect(official.get("mcp-client")?.hooks).toEqual(["MCP stdio 工具", "托管服务进程", "插件面板"]);
81
79
  expect(official.get("mcp-client")?.profile.config).toEqual({ servers: [] });
82
80
  expect(official.get("at-file")?.category.id).toBe("context");
83
- expect(official.get("at-file")?.description).toMatch(/bounded 256 KiB.*UTF-8.*canonical.*untrusted.*closing-tag.*cancellable.*sequential/iu);
81
+ expect(official.get("at-file")?.description).toMatch(/256 KiB.*UTF-8.*只读上下文.*工作区内.*符号链接/u);
84
82
  expect(official.get("at-file")?.capabilities).toEqual(["read-only", "reads-files"]);
85
- expect(official.get("at-file")?.hooks).toEqual(["file context tool", "workspace file read", "plugin UI"]);
83
+ expect(official.get("at-file")?.hooks).toEqual(["文件上下文工具", "工作区文件读取", "插件面板"]);
86
84
  expect(official.get("at-file")?.profile.config).toEqual({});
87
85
  expect(official.get("dependency-checker")?.category.id).toBe("developer");
88
- expect(official.get("dependency-checker")?.description).toMatch(/bounded.*offline.*read-only.*package\.json.*requirements.*presence.*unresolved/iu);
86
+ expect(official.get("dependency-checker")?.description).toMatch(/离线.*只读.*package\.json.*requirements.*已安装.*约束/u);
89
87
  expect(official.get("dependency-checker")?.capabilities).toEqual(["read-only", "reads-files"]);
90
- expect(official.get("dependency-checker")?.hooks).toEqual(["dependency check tool", "workspace manifest read", "plugin UI"]);
88
+ expect(official.get("dependency-checker")?.hooks).toEqual(["依赖检查工具", "工作区清单读取", "插件面板"]);
91
89
  expect(official.get("token-guard")?.category.id).toBe("observability");
92
- expect(official.get("token-guard")?.description).toMatch(/descriptor-safe.*one abort.*per run.*context.*billed run-token.*cached.*normalized panel/iu);
90
+ expect(official.get("token-guard")?.description).toMatch(/上下文占比.*计费 token.*一次运行最多发出一次中止.*缓存/u);
93
91
  expect(official.get("token-guard")?.capabilities).toEqual(["read-only", "session-data"]);
94
- expect(official.get("token-guard")?.hooks).toEqual(["Pi session lifecycle", "active runtime abort", "session usage and statistics", "plugin UI"]);
92
+ expect(official.get("token-guard")?.hooks).toEqual(["Pi 会话生命周期", "当前运行中止", "会话用量与统计", "插件面板"]);
95
93
  expect(official.get("token-guard")?.profile.config).toEqual({ maxPercent: 90, maxRunTokens: 0 });
96
94
  expect(official.get("recall-unread")?.category.id).toBe("workflow");
97
- expect(official.get("recall-unread")?.description).toMatch(/read-only.*bounded.*strict UTF-8.*current workspace.*unanswered.*cached/iu);
95
+ expect(official.get("recall-unread")?.description).toMatch(/只读.*当前工作区.*还没被回复.*缓存/u);
98
96
  expect(official.get("recall-unread")?.capabilities).toEqual(["read-only", "session-data", "reads-files"]);
99
- expect(official.get("recall-unread")?.hooks).toEqual(["recall unread tool", "native session storage", "active session manager", "plugin UI"]);
97
+ expect(official.get("recall-unread")?.hooks).toEqual(["未读回溯工具", "原生会话存储", "当前会话管理器", "插件面板"]);
100
98
  expect(official.get("recall-unread")?.profile.config).toEqual({});
101
99
  expect(official.get("turn-rewind")?.category.id).toBe("workflow");
102
- expect(official.get("turn-rewind")?.description).toMatch(/bounded.*current branch.*queued.*cancellable.*native session tree/iu);
100
+ expect(official.get("turn-rewind")?.description).toMatch(/当前分支.*agent 空闲.*串行回退.*原生会话树/u);
103
101
  expect(official.get("turn-rewind")?.capabilities).toEqual(["read-only", "session-data"]);
104
- expect(official.get("turn-rewind")?.hooks).toEqual(["session rewind tool", "active session tree", "agent settled lifecycle", "plugin UI"]);
102
+ expect(official.get("turn-rewind")?.hooks).toEqual(["会话回退工具", "当前会话树", "agent 空闲生命周期", "插件面板"]);
105
103
  expect(official.get("turn-rewind")?.profile.config).toEqual({});
106
104
  expect(official.get("context-doctor")?.category.id).toBe("observability");
107
105
  expect(official.get("history-compressor")?.category.id).toBe("context");
@@ -109,165 +107,134 @@ describe("plugin marketplace registry", () => {
109
107
  expect(official.get("auto-mode")?.category.id).toBe("security");
110
108
  expect(official.get("plan-execute")?.category.id).toBe("workflow");
111
109
  expect(official.get("canvas-draw")?.category.id).toBe("multimodal");
112
- expect(official.get("canvas-draw")?.description).toMatch(/Mermaid flowchart source/iu);
113
- expect(official.get("canvas-draw")?.hooks).toEqual(["plugin UI"]);
110
+ expect(official.get("canvas-draw")?.description).toMatch(/Mermaid 流程图源码/u);
111
+ expect(official.get("canvas-draw")?.hooks).toEqual(["插件面板"]);
114
112
  expect(official.get("image-compressor")?.category.id).toBe("multimodal");
115
- expect(official.get("code2skill")?.category.id).toBe("tools");
116
- expect(official.get("code2skill")?.description).toMatch(/selected workspace source files/iu);
113
+ expect(official.get("code2skill")?.category.id).toBe("developer");
114
+ expect(official.get("code2skill")?.description).toMatch(/选中的工作区源码/u);
117
115
  expect(official.get("code2skill")?.capabilities).toEqual(["reads-files", "writes-files"]);
118
116
  expect(official.get("workspace-search")?.category.id).toBe("context");
119
117
  expect(official.get("plugin-check")?.category.id).toBe("security");
120
- expect(official.get("test-harness")?.category.id).toBe("testing");
121
- expect(official.get("test-harness")?.description).toMatch(
122
- /five fixed npm script.*trusted workspace.*12 KiB.*UTF-8.*untrusted.*timeout.*cancellable process-tree/iu,
123
- );
118
+ expect(official.get("test-harness")?.category.id).toBe("developer");
119
+ expect(official.get("test-harness")?.description).toMatch(/五个固定名字的 npm 脚本.*12 KiB.*超时.*取消.*进程树/u);
124
120
  expect(official.get("test-harness")?.capabilities).toEqual(["runs-commands"]);
125
- expect(official.get("test-harness")?.hooks).toEqual(["project verification tool", "workspace npm scripts", "plugin UI"]);
121
+ expect(official.get("test-harness")?.hooks).toEqual(["项目验证工具", "工作区 npm 脚本", "插件面板"]);
126
122
  expect(official.get("test-harness")?.profile.config).toEqual({ timeoutMs: 120_000 });
127
123
  expect(official.get("git-time-capsule")?.category.id).toBe("workflow");
128
- expect(official.get("git-time-capsule")?.description).toMatch(/unstaged tracked Git diff.*byte.*validated.*reverse/iu);
124
+ expect(official.get("git-time-capsule")?.description).toMatch(/未暂存的 Git 改动.*逐字节.*确认后.*反向应用/u);
129
125
  expect(official.get("git-time-capsule")?.capabilities).toEqual(["reads-files", "writes-files", "runs-commands"]);
130
- expect(official.get("git-time-capsule")?.hooks).toEqual(["Git snapshot tool", "Git restore tool", "plugin UI"]);
126
+ expect(official.get("git-time-capsule")?.hooks).toEqual(["Git 快照工具", "Git 还原工具", "插件面板"]);
131
127
  expect(official.get("git-time-capsule")?.profile.config).toEqual({ timeoutMs: 15_000 });
132
- expect(official.get("graph-memory")?.description).toMatch(/bounded typed.*directed relations.*atomic.*cross-session/iu);
128
+ expect(official.get("graph-memory")?.description).toMatch(/带类型的节点.*有向关系.*加锁.*跨会话/u);
133
129
  expect(official.get("graph-memory")?.capabilities).toEqual(["reads-files", "writes-files"]);
134
- expect(official.get("graph-memory")?.hooks).toEqual(["graph memory tools", "local graph file", "plugin UI"]);
130
+ expect(official.get("graph-memory")?.hooks).toEqual(["图记忆工具", "本地图文件", "插件面板"]);
135
131
  expect(official.get("graph-memory")?.profile.config).toEqual({ fileName: "graph-memory.json", maxNodes: 2_000, maxRelations: 5_000 });
136
132
  expect(official.get("yaml-validator")?.category.id).toBe("developer");
137
- expect(official.get("yaml-validator")?.description).toMatch(/workspace-contained.*UTF-8.*multi-document.*bounded.*cancellable/iu);
133
+ expect(official.get("yaml-validator")?.description).toMatch(/工作区内.*UTF-8.*多文档 YAML.*受限.*可取消/u);
138
134
  expect(official.get("yaml-validator")?.capabilities).toEqual(["read-only", "reads-files"]);
139
- expect(official.get("yaml-validator")?.hooks).toEqual(["YAML validation tool", "workspace files", "plugin UI"]);
135
+ expect(official.get("yaml-validator")?.hooks).toEqual(["YAML 校验工具", "工作区文件", "插件面板"]);
140
136
  expect(official.get("yaml-validator")?.profile.config).toEqual({});
141
137
  expect(official.get("browser-session")?.category.id).toBe("web");
142
138
  expect(official.get("browser-session")?.category).toEqual(official.get("browser-fetch")?.category);
143
- expect(official.get("browser-session")?.description).toMatch(/loopback-only.*descriptor-safe.*bounded.*cancellable.*screenshot.*validated.*panel/iu);
139
+ expect(official.get("browser-session")?.description).toMatch(/本机回环.*命令受限.*可取消.*截图元数据/u);
144
140
  expect(official.get("browser-session")?.capabilities).toEqual(["network-access"]);
145
- expect(official.get("browser-session")?.hooks).toEqual(["browser session tools", "Chrome DevTools Protocol", "plugin UI"]);
141
+ expect(official.get("browser-session")?.hooks).toEqual(["浏览器会话工具", "Chrome DevTools 协议", "插件面板"]);
146
142
  expect(official.get("browser-session")?.profile.config).toEqual({ endpoint: "http://127.0.0.1:9222" });
147
143
  expect(official.get("docker-sandbox")?.category.id).toBe("security");
148
- expect(official.get("docker-sandbox")?.description).toMatch(
149
- /descriptor-safe.*local-only.*no container network.*read-only workspace.*CPU.*memory.*PID.*sanitized output.*strict panel.*cancellation cleanup/iu,
150
- );
144
+ expect(official.get("docker-sandbox")?.description).toMatch(/本地镜像.*无网络.*只读.*CPU.*内存.*进程数.*输出会清理.*取消/u);
151
145
  expect(official.get("docker-sandbox")?.capabilities).toEqual(["reads-files", "writes-files", "runs-commands"]);
152
- expect(official.get("docker-sandbox")?.hooks).toEqual(["sandbox execution tool", "Docker CLI", "plugin UI"]);
146
+ expect(official.get("docker-sandbox")?.hooks).toEqual(["沙箱执行工具", "Docker CLI", "插件面板"]);
153
147
  expect(official.get("docker-sandbox")?.profile.config).toEqual({});
154
- expect(official.get("mock-server")?.category.id).toBe("tools");
155
- expect(official.get("sql-lens")?.category.id).toBe("tools");
156
- expect(official.get("sql-lens")?.description).toMatch(
157
- /workspace.*SQLite.*strict.*descriptor-safe.*single.*read-only.*bounded.*symlink.*timed.*cancellation.*fail-closed.*panel/iu,
158
- );
148
+ expect(official.get("mock-server")?.category.id).toBe("developer");
149
+ expect(official.get("sql-lens")?.category.id).toBe("developer");
150
+ expect(official.get("sql-lens")?.description).toMatch(/SQLite.*一次一条只读语句.*有上限.*符号链接.*超时.*取消/u);
159
151
  expect(official.get("sql-lens")?.capabilities).toEqual(["reads-files", "runs-commands"]);
160
- expect(official.get("sql-lens")?.hooks).toEqual(["SQL read-only tool", "workspace SQLite files", "plugin UI"]);
152
+ expect(official.get("sql-lens")?.hooks).toEqual(["SQL 只读工具", "工作区 SQLite 文件", "插件面板"]);
161
153
  expect(official.get("sql-lens")?.profile.config).toEqual({ timeoutMs: 5_000 });
162
154
  expect(official.get("i18n-pair")?.category.id).toBe("workflow");
163
- expect(official.get("i18n-pair")?.description).toMatch(
164
- /strict read-only.*bounded JSON locale.*no-follow workspace.*collision-safe missing.*extra.*stable failures.*cancellation.*validated panel/iu,
165
- );
155
+ expect(official.get("i18n-pair")?.description).toMatch(/只读.*JSON 语言文件.*缺失键.*多余键.*符号链接.*可取消/u);
166
156
  expect(official.get("i18n-pair")?.capabilities).toEqual(["read-only", "reads-files"]);
167
- expect(official.get("i18n-pair")?.hooks).toEqual(["i18n check tool", "workspace locale files", "plugin UI"]);
157
+ expect(official.get("i18n-pair")?.hooks).toEqual(["i18n 检查工具", "工作区语言文件", "插件面板"]);
168
158
  expect(official.get("i18n-pair")?.profile.config).toEqual({});
169
159
  expect(official.get("plugin-finder")?.category.id).toBe("discovery");
170
160
  expect(official.get("readme-gen")?.category.id).toBe("developer");
171
- expect(official.get("readme-gen")?.description).toMatch(
172
- /strictly bounded manifest.*descriptor-safe loader.*Markdown-safe.*confirmed.*no-clobber atomic.*explicit overwrite.*cancellable/iu,
173
- );
161
+ expect(official.get("readme-gen")?.description).toMatch(/依赖清单.*加载器清单.*Markdown 转义.*不覆盖.*显式确认/u);
174
162
  expect(official.get("readme-gen")?.capabilities).toEqual(["reads-files", "writes-files"]);
175
- expect(official.get("readme-gen")?.hooks).toEqual([
176
- "README report and write tools",
177
- "workspace manifest and files",
178
- "Cordis loader inventory",
179
- "plugin UI",
180
- ]);
163
+ expect(official.get("readme-gen")?.hooks).toEqual(["README 报告与写入工具", "工作区清单与文件", "Cordis 加载器清单", "插件面板"]);
181
164
  expect(official.get("readme-gen")?.profile.config).toEqual({});
182
165
  expect(official.get("anchored-standard")?.category.id).toBe("security");
183
- expect(official.get("annotation")?.hooks).toEqual(["plugin UI"]);
166
+ expect(official.get("annotation")?.hooks).toEqual(["插件面板"]);
184
167
  expect(official.get("change-verifier")?.category.id).toBe("workflow");
185
168
  expect(official.get("openpets")?.category.id).toBe("web");
186
- expect(official.get("openpets")?.description).toMatch(
187
- /bounded.*companion state.*validated.*session entr.*without retaining message contents.*persistence/iu,
188
- );
169
+ expect(official.get("openpets")?.description).toMatch(/会话事件.*不保存消息内容.*操作受限.*持久化状态/u);
189
170
  expect(official.get("openpets")?.capabilities).toEqual(["read-only", "session-data"]);
190
- expect(official.get("openpets")?.hooks).toEqual(["session events", "pet reaction tool", "session storage", "plugin UI"]);
171
+ expect(official.get("openpets")?.hooks).toEqual(["会话事件", "宠物反应工具", "会话存储", "插件面板"]);
191
172
  expect(official.get("openpets")?.profile.config).toEqual({});
192
173
  expect(official.get("session-insights")?.category.id).toBe("observability");
193
- expect(official.get("session-insights")?.description).toMatch(
194
- /descriptor-safe.*validated.*cached.*session.*statistics.*confirmed.*settled.*compaction.*model.*usage.*cost.*cancellable/iu,
195
- );
174
+ expect(official.get("session-insights")?.description).toMatch(/校验.*缓存.*会话空闲.*确认.*用量.*费用.*可取消/u);
196
175
  expect(official.get("session-insights")?.capabilities).toEqual(["read-only", "session-data"]);
197
- expect(official.get("session-insights")?.hooks).toEqual(["session report tool", "active runtime session", "Pi session lifecycle", "plugin UI"]);
176
+ expect(official.get("session-insights")?.hooks).toEqual(["会话报告工具", "当前运行会话", "Pi 会话生命周期", "插件面板"]);
198
177
  expect(official.get("session-insights")?.profile.config).toEqual({});
199
- expect(official.get("mcp-panel")?.category.id).toBe("tools");
178
+ expect(official.get("mcp-panel")?.category.id).toBe("developer");
200
179
  expect(official.get("fail-logger")?.category.id).toBe("observability");
201
- expect(official.get("fail-logger")?.description).toMatch(
202
- /bounded.*extension.*Agent.*non-aborted compaction.*descriptor-safe event inspection.*safe diagnostic.*occurrence counts/iu,
203
- );
180
+ expect(official.get("fail-logger")?.description).toMatch(/插件错误.*agent 失败.*压缩失败.*摘要.*次数.*不留原始载荷/u);
204
181
  expect(official.get("fail-logger")?.capabilities).toEqual(["read-only"]);
205
- expect(official.get("fail-logger")?.hooks).toEqual(["extension error", "agent end", "compaction end", "plugin UI"]);
206
- expect(official.get("genui")?.description).toMatch(/bounded.*text, badge, and decimal progress.*plain text/iu);
182
+ expect(official.get("fail-logger")?.hooks).toEqual(["插件错误", "运行结束", "压缩结束", "插件面板"]);
183
+ expect(official.get("genui")?.description).toMatch(/文本、标签和进度条.*纯文本/u);
207
184
  expect(official.get("genui")?.capabilities).toEqual(["read-only"]);
208
- expect(official.get("genui")?.hooks).toEqual(["GenUI render tool", "plugin UI"]);
185
+ expect(official.get("genui")?.hooks).toEqual(["GenUI 渲染工具", "插件面板"]);
209
186
  expect(official.get("plugin-dev")?.category.id).toBe("developer");
210
- expect(official.get("plugin-dev")?.description).toMatch(/defer.*session resource.*agent.*settled.*single.*reload.*bounded.*trusted.*development/iu);
187
+ expect(official.get("plugin-dev")?.description).toMatch(/推迟.*agent 空闲.*只允许一个重载.*本机开发/u);
211
188
  expect(official.get("plugin-dev")?.capabilities).toEqual(["read-only", "session-data"]);
212
- expect(official.get("plugin-dev")?.hooks).toEqual(["session resource reload tool", "Pi session lifecycle", "plugin UI"]);
189
+ expect(official.get("plugin-dev")?.hooks).toEqual(["会话资源重载工具", "Pi 会话生命周期", "插件面板"]);
213
190
  expect(official.get("plugin-dev")?.profile.config).toEqual({});
214
191
  expect(official.get("session-export")?.category.id).toBe("workflow");
215
192
  expect(official.get("session-search")?.category.id).toBe("discovery");
216
193
  expect(official.get("session-compare")?.category.id).toBe("discovery");
217
194
  expect(official.get("secure-audit")?.category.id).toBe("security");
218
195
  expect(official.get("session-bookmarks")?.category.id).toBe("workflow");
219
- expect(official.get("llm-verifier")?.category.id).toBe("testing");
196
+ expect(official.get("llm-verifier")?.category.id).toBe("developer");
220
197
  expect(official.get("module-search")?.category.id).toBe("discovery");
221
198
  expect(official.get("workspace-navigator")?.category.id).toBe("developer");
222
199
  expect(official.get("reverse-skill")?.category.id).toBe("security");
223
200
  expect(official.get("colleague-skill")?.category.id).toBe("workflow");
224
- expect(official.get("colleague-skill")?.hooks).toEqual(["session storage", "plugin UI"]);
201
+ expect(official.get("colleague-skill")?.hooks).toEqual(["会话存储", "插件面板"]);
225
202
  expect(official.get("context-insights")?.category.id).toBe("context");
226
- expect(official.get("context-insights")?.description).toMatch(
227
- /descriptor-safe.*bounded message composition.*cached.*active-session.*lifecycle.*normalized browser/iu,
228
- );
203
+ expect(official.get("context-insights")?.description).toMatch(/上下文占用.*消息构成.*缓存.*会话计数.*上限/u);
229
204
  expect(official.get("context-insights")?.capabilities).toEqual(["read-only", "session-data"]);
230
- expect(official.get("context-insights")?.hooks).toEqual(["context inspection tool", "active runtime session", "Pi session lifecycle", "plugin UI"]);
205
+ expect(official.get("context-insights")?.hooks).toEqual(["上下文检查工具", "当前运行会话", "Pi 会话生命周期", "插件面板"]);
231
206
  expect(official.get("context-insights")?.profile.config).toEqual({});
232
207
  expect(official.get("context-doctor")?.category.id).toBe("observability");
233
- expect(official.get("context-doctor")?.description).toMatch(/descriptor-safe.*bounded.*queued.*agent.*settled.*confirmed.*model.*cost.*cancellable/iu);
208
+ expect(official.get("context-doctor")?.description).toMatch(/压力来源.*工具报错.*排到 agent 空闲.*确认后.*费用.*可取消/u);
234
209
  expect(official.get("context-doctor")?.capabilities).toEqual(["read-only", "session-data"]);
235
- expect(official.get("context-doctor")?.hooks).toEqual([
236
- "context doctor tool",
237
- "session messages and usage",
238
- "Pi session lifecycle",
239
- "manual compaction",
240
- "plugin UI",
241
- ]);
210
+ expect(official.get("context-doctor")?.hooks).toEqual(["上下文体检工具", "会话消息与用量", "Pi 会话生命周期", "手动压缩", "插件面板"]);
242
211
  expect(official.get("context-doctor")?.profile.config).toEqual({});
243
- expect(official.get("cordis-group")?.category.id).toBe("composition");
212
+ expect(official.get("cordis-group")?.category.id).toBe("workflow");
244
213
  expect(official.get("cordis-group")?.capabilities).toEqual(["read-only"]);
245
- expect(official.get("cordis-group")?.hooks).toEqual(["loader entry tree"]);
214
+ expect(official.get("cordis-group")?.hooks).toEqual(["加载器条目树"]);
246
215
  expect(official.get("cordis-logger-console")?.category.id).toBe("observability");
247
216
  expect(official.get("cordis-logger-console")?.capabilities).toEqual(["read-only"]);
248
- expect(official.get("cordis-logger-console")?.hooks).toEqual(["Cordis logger exporter", "plugin UI"]);
217
+ expect(official.get("cordis-logger-console")?.hooks).toEqual(["Cordis 日志导出", "插件面板"]);
249
218
  expect(official.get("cordis-logger-console")?.profile.config).toEqual({ levels: { default: 2 }, maxLength: 8_192 });
250
- expect(official.get("cordis-timer")?.category.id).toBe("runtime");
219
+ expect(official.get("cordis-timer")?.category.id).toBe("workflow");
251
220
  expect(official.get("cordis-timer")?.capabilities).toEqual(["read-only"]);
252
- expect(official.get("cordis-timer")?.hooks).toEqual(["Cordis timer service", "plugin UI"]);
221
+ expect(official.get("cordis-timer")?.hooks).toEqual(["Cordis 定时服务", "插件面板"]);
253
222
  expect(official.get("prompt-library")?.category.id).toBe("workflow");
254
223
  expect(official.get("cleaner")?.category.id).toBe("developer");
255
- expect(official.get("cleaner")?.description).toMatch(
256
- /strict.*descriptor-safe.*display-safe.*bounded.*Git capsule.*explicit confirmation.*retention.*symlink.*replacement.*cancellable.*fail-closed/iu,
257
- );
224
+ expect(official.get("cleaner")?.description).toMatch(/Git 胶囊.*保留策略.*显式确认.*符号链接.*文件替换.*可取消/u);
258
225
  expect(official.get("cleaner")?.capabilities).toEqual(["reads-files", "writes-files"]);
259
- expect(official.get("cleaner")?.hooks).toEqual(["capsule cleanup tool", "agent capsule directory", "plugin UI"]);
226
+ expect(official.get("cleaner")?.hooks).toEqual(["胶囊清理工具", "agent 胶囊目录", "插件面板"]);
260
227
  expect(official.get("cleaner")?.profile.config).toEqual({});
261
228
  expect(official.get("cli-notifier")?.category.id).toBe("workflow");
262
- expect(official.get("cli-notifier")?.description).toMatch(/local desktop notifications/iu);
229
+ expect(official.get("cli-notifier")?.description).toMatch(/本机桌面通知/u);
263
230
  expect(official.get("cli-notifier")?.description).not.toMatch(/webhook/iu);
264
231
  expect(official.get("cli-notifier")?.capabilities).toEqual(["runs-commands"]);
265
- expect(official.get("cli-notifier")?.hooks).toEqual(["agent end", "compaction error", "plugin UI"]);
232
+ expect(official.get("cli-notifier")?.hooks).toEqual(["运行结束", "压缩失败", "插件面板"]);
266
233
  expect(official.get("obsidian-sync")?.category.id).toBe("workflow");
267
234
  expect(official.get("tab-manager")?.category.id).toBe("workflow");
268
235
  expect(official.get("telemetry-blocker")?.category.id).toBe("security");
269
236
  expect(official.get("runtime-doctor")?.category.id).toBe("developer");
270
- expect(official.get("better-sidebar")?.category.id).toBe("developer");
237
+ expect(official.get("better-sidebar")?.category.id).toBe("interface");
271
238
  });
272
239
 
273
240
  test("lists every plugin as an installable npm package rather than a launcher subpath", () => {
@@ -285,10 +252,12 @@ describe("plugin marketplace registry", () => {
285
252
  });
286
253
 
287
254
  test("filters by a declared category independently from capabilities", () => {
288
- const result = searchMarketplace("", "", "runtime");
255
+ const result = searchMarketplace("timer", "", "workflow");
289
256
  expect(result.map((plugin) => plugin.packageName)).toEqual(["@deepseek-ai/cordis-plugin-timer"]);
290
- expect(result[0]?.category).toEqual({ id: "runtime", label: "运行时" });
291
- expect(MARKETPLACE_CATEGORIES).toEqual(expect.arrayContaining([{ id: "runtime", label: "运行时", count: 1 }]));
257
+ expect(result[0]?.category).toEqual({ id: "workflow", label: "工作流" });
258
+ expect(MARKETPLACE_CATEGORIES).toEqual(expect.arrayContaining([{ id: "workflow", label: "工作流", count: 20 }]));
259
+ // A tab that holds a single plugin is a tab nobody clicks, and the filter is only worth its width if each option narrows the list to something worth reading.
260
+ expect(MARKETPLACE_CATEGORIES.every((category) => category.count > 1)).toBe(true);
292
261
  });
293
262
 
294
263
  test("loads one entry per file and paginates the filtered result", () => {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/web-app",
3
- "version": "0.1.32",
3
+ "version": "0.1.34",
4
4
  "private": true,
5
5
  "description": "Patchable Web application bundle for Pi Harness",
6
6
  "homepage": "https://github.com/pi-harness/pi-harness#readme",
@@ -1 +1 @@
1
- {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAOtD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,oHAAoH;IACpH,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC1B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAC7D,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAC9B,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;CAClE;AA4CD,eAAO,MAAM,0BAA0B,KAAK,CAAC;AAM7C,wBAAsB,MAAM,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,EAAE,YAAY,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CA+LpG"}
1
+ {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAOtD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,oHAAoH;IACpH,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC1B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAC7D,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAC9B,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;CAClE;AA4CD,eAAO,MAAM,0BAA0B,KAAK,CAAC;AAM7C,wBAAsB,MAAM,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,EAAE,YAAY,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAiMpG"}
@@ -162,6 +162,8 @@ export async function runCli(_args, _environment) {
162
162
  provideLaunchContext(context, {
163
163
  cwd: environment.cwd,
164
164
  agentDir: environment.agentDir,
165
+ // The booted profile, so a diagnostic that tells the user to edit it can name the file instead of the two placeholders it was resolved from.
166
+ configPath,
165
167
  args: invocation.args,
166
168
  requestExit(code) {
167
169
  requestedExit?.(code);
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/cli",
3
- "version": "0.1.32",
3
+ "version": "0.1.34",
4
4
  "private": true,
5
5
  "description": "Plugin-first Pi Harness CLI",
6
6
  "homepage": "https://github.com/pi-harness/pi-harness#readme",
@@ -180,6 +180,8 @@ export async function runCli(_args: readonly string[], _environment: CliEnvironm
180
180
  provideLaunchContext(context, {
181
181
  cwd: environment.cwd,
182
182
  agentDir: environment.agentDir,
183
+ // The booted profile, so a diagnostic that tells the user to edit it can name the file instead of the two placeholders it was resolved from.
184
+ configPath,
183
185
  args: invocation.args,
184
186
  requestExit(code) {
185
187
  requestedExit?.(code);
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/host-webserver",
3
- "version": "0.1.32",
3
+ "version": "0.1.34",
4
4
  "private": true,
5
5
  "description": "Cordis route-registration service for the Pi Harness web host",
6
6
  "homepage": "https://github.com/pi-harness/pi-harness#readme",