@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,18 +3,18 @@
3
3
  "packageName": "@pi-harness/plugin-test-harness",
4
4
  "version": "0.1.29",
5
5
  "name": "Test Harness",
6
- "description": "Run five fixed npm script names from a trusted workspace, reporting real status with a sanitized 12 KiB UTF-8-safe untrusted output tail, a bounded configurable timeout, and cancellable process-tree cleanup.",
6
+ "description": "运行工作区里五个固定名字的 npm 脚本,返回真实状态和清理过的 12 KiB 输出尾部;超时可配置,取消时清理整棵进程树。",
7
7
  "author": "Pi Harness",
8
8
  "repository": "https://github.com/pi-harness/pi-harness",
9
9
  "license": "MIT",
10
10
  "source": "official",
11
11
  "status": "verified",
12
12
  "category": {
13
- "id": "testing",
14
- "label": "测试与质量"
13
+ "id": "developer",
14
+ "label": "开发工具"
15
15
  },
16
16
  "capabilities": ["runs-commands"],
17
- "hooks": ["project verification tool", "workspace npm scripts", "plugin UI"],
17
+ "hooks": ["项目验证工具", "工作区 npm 脚本", "插件面板"],
18
18
  "profile": {
19
19
  "name": "@pi-harness/plugin-test-harness",
20
20
  "config": {
@@ -3,7 +3,7 @@
3
3
  "packageName": "@pi-harness/plugin-theme-studio",
4
4
  "version": "0.1.29",
5
5
  "name": "Theme Studio",
6
- "description": "Apply bounded Light, Midnight, Paper, and High Contrast presets to the Pi Harness web surface.",
6
+ "description": "为 Pi Harness 控制台切换浅色、午夜、纸张和高对比四套主题。",
7
7
  "author": "Pi Harness",
8
8
  "repository": "https://github.com/pi-harness/pi-harness",
9
9
  "license": "MIT",
@@ -14,7 +14,7 @@
14
14
  "label": "界面增强"
15
15
  },
16
16
  "capabilities": ["read-only", "session-data"],
17
- "hooks": ["session lifecycle", "React root tokens", "plugin UI"],
17
+ "hooks": ["会话生命周期", "React 根变量", "插件面板"],
18
18
  "profile": {
19
19
  "name": "@pi-harness/plugin-theme-studio",
20
20
  "config": {
@@ -3,7 +3,7 @@
3
3
  "packageName": "@pi-harness/plugin-token-guard",
4
4
  "version": "0.1.29",
5
5
  "name": "Token Guard",
6
- "description": "Use descriptor-safe monitoring to issue at most one abort request per run when a context percentage or billed run-token budget is reached, with bounded errors and a cached normalized panel.",
6
+ "description": "上下文占比或计费 token 超过预算时,一次运行最多发出一次中止请求,并提供缓存的面板视图。",
7
7
  "author": "Pi Harness",
8
8
  "repository": "https://github.com/pi-harness/pi-harness",
9
9
  "license": "MIT",
@@ -14,7 +14,7 @@
14
14
  "label": "可观测性"
15
15
  },
16
16
  "capabilities": ["read-only", "session-data"],
17
- "hooks": ["Pi session lifecycle", "active runtime abort", "session usage and statistics", "plugin UI"],
17
+ "hooks": ["Pi 会话生命周期", "当前运行中止", "会话用量与统计", "插件面板"],
18
18
  "profile": {
19
19
  "name": "@pi-harness/plugin-token-guard",
20
20
  "config": {
@@ -3,7 +3,7 @@
3
3
  "packageName": "@pi-harness/plugin-turn-rewind",
4
4
  "version": "0.1.29",
5
5
  "name": "Turn Rewind",
6
- "description": "Scans a bounded current branch for user turns, supports queued serialized cancellable rewinds after the agent settles, and navigates the native session tree while preserving abandoned branches.",
6
+ "description": "扫描当前分支上的用户轮次,等 agent 空闲后按队列串行回退,并在原生会话树里导航,保留被放弃的分支。",
7
7
  "author": "Pi Harness",
8
8
  "repository": "https://github.com/pi-harness/pi-harness",
9
9
  "license": "MIT",
@@ -14,7 +14,7 @@
14
14
  "label": "工作流"
15
15
  },
16
16
  "capabilities": ["read-only", "session-data"],
17
- "hooks": ["session rewind tool", "active session tree", "agent settled lifecycle", "plugin UI"],
17
+ "hooks": ["会话回退工具", "当前会话树", "agent 空闲生命周期", "插件面板"],
18
18
  "profile": {
19
19
  "name": "@pi-harness/plugin-turn-rewind",
20
20
  "config": {}
@@ -3,7 +3,7 @@
3
3
  "packageName": "@pi-harness/plugin-undo-savepoint",
4
4
  "version": "0.1.29",
5
5
  "name": "Undo Savepoints",
6
- "description": "Create inspectable savepoints before agent changes so the workspace can be restored safely.",
6
+ "description": "在 agent 改动前建立可查看的存档点,之后可以安全还原工作区。",
7
7
  "author": "Pi Harness",
8
8
  "repository": "https://github.com/pi-harness/pi-harness",
9
9
  "license": "MIT",
@@ -14,7 +14,7 @@
14
14
  "label": "工作流"
15
15
  },
16
16
  "capabilities": ["reads-files", "writes-files"],
17
- "hooks": ["tool execution", "plugin UI"],
17
+ "hooks": ["工具调用", "插件面板"],
18
18
  "profile": {
19
19
  "name": "@pi-harness/plugin-undo-savepoint",
20
20
  "config": {}
@@ -3,7 +3,7 @@
3
3
  "packageName": "@pi-harness/plugin-vision-toolkit",
4
4
  "version": "0.1.29",
5
5
  "name": "Vision Toolkit",
6
- "description": "Catalog signature-verified PNG, JPEG, GIF, and WebP metadata with bounded header reads, cancellable workspace traversal, explicit partial results, and a local-only normalized panel.",
6
+ "description": "读取 PNG、JPEG、GIF、WebP 的签名与元数据并建立目录,只读文件头,遍历可取消,结果仅在本机面板展示。",
7
7
  "author": "Pi Harness",
8
8
  "repository": "https://github.com/pi-harness/pi-harness",
9
9
  "license": "MIT",
@@ -14,7 +14,7 @@
14
14
  "label": "视觉与多模态"
15
15
  },
16
16
  "capabilities": ["read-only", "reads-files"],
17
- "hooks": ["image metadata tools", "workspace access", "plugin UI"],
17
+ "hooks": ["图像元数据工具", "工作区访问", "插件面板"],
18
18
  "profile": {
19
19
  "name": "@pi-harness/plugin-vision-toolkit",
20
20
  "config": {}
@@ -3,7 +3,7 @@
3
3
  "packageName": "@pi-harness/plugin-web-research",
4
4
  "version": "0.1.29",
5
5
  "name": "Web Research",
6
- "description": "Search the public web through a configurable provider and return bounded, cited source evidence.",
6
+ "description": "通过可配置的搜索服务检索公网,返回带出处、有上限的证据。",
7
7
  "author": "Pi Harness",
8
8
  "repository": "https://github.com/pi-harness/pi-harness",
9
9
  "license": "MIT",
@@ -14,7 +14,7 @@
14
14
  "label": "网页与研究"
15
15
  },
16
16
  "capabilities": ["network-access"],
17
- "hooks": ["network request", "plugin UI"],
17
+ "hooks": ["网络请求", "插件面板"],
18
18
  "profile": {
19
19
  "name": "@pi-harness/plugin-web-research",
20
20
  "config": {}
@@ -3,7 +3,7 @@
3
3
  "packageName": "@pi-harness/plugin-workspace-navigator",
4
4
  "version": "0.1.29",
5
5
  "name": "Workspace Navigator",
6
- "description": "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": {}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/api-gateway",
3
- "version": "0.1.32",
3
+ "version": "0.1.34",
4
4
  "private": true,
5
5
  "description": "Cordis HTTP API routes for the Pi Harness browser client",
6
6
  "homepage": "https://github.com/pi-harness/pi-harness#readme",
@@ -43,6 +43,10 @@ const IMPORT_CONTENT_LIMIT_BYTES = 10 * 1024 * 1024;
43
43
  const IMPORT_BODY_LIMIT_BYTES = 16 * 1024 * 1024;
44
44
  // Retained trajectory events are replayed to every SSE client and returned by /api/session, so the array must stay bounded.
45
45
  const MAX_RETAINED_EVENTS = 2000;
46
+ // Tool calls that opened but never closed. Far above any real concurrency, so the cap only ever trims a run the runtime abandoned.
47
+ const MAX_PENDING_TOOL_CALLS = 256;
48
+ /** A session event with the two fields the gateway owns: when it arrived, and for a tool call how long it took. */
49
+ type StampedSessionEvent = AgentSessionEvent & { readonly receivedAt: number; readonly durationMs?: number };
46
50
  const GIT_TIMEOUT_MS = 15_000;
47
51
  const PROCESS_FAILURE_TEXT_LIMIT = 400;
48
52
  const PROCESS_TIMEOUT_MS = 120_000;
@@ -334,6 +338,42 @@ function pluginSummary(entry: LoaderEntrySummary) {
334
338
  };
335
339
  }
336
340
 
341
+ /** The state a marketplace plugin is in between the install that wrote it and the restart that loads it. It is not a loader state because the loader has no entry for it at all. */
342
+ const RESTART_REQUIRED_STATE = "restart-required";
343
+
344
+ // The install writes the entry as two adjacent lines, so this reads back exactly what `marketplaceProfileEntry` writes rather than parsing the profile as YAML, which the `!!js` tags in it would need a schema for.
345
+ const MARKETPLACE_PROFILE_ENTRY_PATTERN = /^[ \t]*- id: (marketplace-\S+)[ \t]*\r?\n[ \t]*name: "([^"]+)"/gmu;
346
+
347
+ /** The loader holds what is running; the profile file holds what is installed. The two differ for a plugin that contributes tools, which cannot join a harness that is already running: the install leaves its package and its profile entry in place and the plugin arrives on the next start. Reading only the loader makes that plugin indistinguishable from one that was never installed, which is why the console answered an install that had just succeeded with "nothing is installed" and then could not uninstall what it had hidden. */
348
+ async function readMarketplaceProfileEntries(configPath: string): Promise<readonly { readonly id: string; readonly packageName: string }[]> {
349
+ const source = await readFile(configPath, "utf8").catch(() => undefined);
350
+ if (source === undefined) return [];
351
+ const entries: { id: string; packageName: string }[] = [];
352
+ for (const match of source.matchAll(MARKETPLACE_PROFILE_ENTRY_PATTERN)) entries.push({ id: match[1] ?? "", packageName: match[2] ?? "" });
353
+ return entries;
354
+ }
355
+
356
+ /** The installed plugins the loader does not have, described the same way a loaded one is so the console can list them side by side instead of leaving the user to guess what happened to the install. */
357
+ async function restartPendingSummaries(services: ApiServices): Promise<readonly ReturnType<typeof pluginSummary>[]> {
358
+ const configPath = services.launch.configPath;
359
+ if (configPath === undefined || services.loader === undefined) return [];
360
+ const loaded = new Set([...services.loader.entries()].map((entry) => entry.options.id));
361
+ const entries = await readMarketplaceProfileEntries(configPath);
362
+ return entries
363
+ .filter((entry) => !loaded.has(entry.id))
364
+ .map((entry) => {
365
+ const plugin = MARKETPLACE_PLUGINS.find((item) => item.packageName === entry.packageName);
366
+ return {
367
+ id: entry.id,
368
+ name: entry.packageName,
369
+ enabled: true,
370
+ state: RESTART_REQUIRED_STATE,
371
+ removable: true,
372
+ category: plugin?.category,
373
+ };
374
+ });
375
+ }
376
+
337
377
  function pluginLoaded(services: ApiServices, packageName: string): boolean {
338
378
  return services.loader !== undefined && [...services.loader.entries()].some((entry) => entry.options.name === packageName && !entry.disabled);
339
379
  }
@@ -777,9 +817,31 @@ export default {
777
817
  };
778
818
  const disposePluginPanels = registerPluginPanels(context, services);
779
819
  let busy = false;
780
- const events: AgentSessionEvent[] = [];
820
+ const events: StampedSessionEvent[] = [];
781
821
  const eventClients = new Set<ServerResponse>();
782
- const handleEvent = (event: AgentSessionEvent) => {
822
+ // Pi puts a wall-clock on a message payload and nowhere else, so a tool call has no time of its own and nothing downstream can recover when the harness saw it. The gateway is the one place that sees every event as it happens, so it stamps each one on arrival, and pairs a tool call's two events to record how long the call took.
823
+ // The stamp is written onto the event rather than onto a copy: a copy would give every event a new identity, and the serializer's cycle detection reads identity, so a self-referential event would serialize one level deeper on every hop.
824
+ const toolCallStartedAt = new Map<string, number>();
825
+ const stampEvent = (event: AgentSessionEvent): StampedSessionEvent => {
826
+ const receivedAt = Date.now();
827
+ const toolCallId = (event as { readonly toolCallId?: unknown }).toolCallId;
828
+ if (typeof toolCallId === "string" && event.type === "tool_execution_start") {
829
+ // A call whose end never arrives would otherwise keep its entry forever; the oldest is dropped rather than letting a stalled run grow the map without bound.
830
+ if (toolCallStartedAt.size >= MAX_PENDING_TOOL_CALLS) {
831
+ const oldest = toolCallStartedAt.keys().next().value;
832
+ if (oldest !== undefined) toolCallStartedAt.delete(oldest);
833
+ }
834
+ toolCallStartedAt.set(toolCallId, receivedAt);
835
+ }
836
+ if (typeof toolCallId === "string" && event.type === "tool_execution_end") {
837
+ const startedAt = toolCallStartedAt.get(toolCallId);
838
+ toolCallStartedAt.delete(toolCallId);
839
+ if (startedAt !== undefined) return Object.assign(event, { receivedAt, durationMs: receivedAt - startedAt });
840
+ }
841
+ return Object.assign(event, { receivedAt });
842
+ };
843
+ const handleEvent = (rawEvent: AgentSessionEvent) => {
844
+ const event = stampEvent(rawEvent);
783
845
  // Streaming deltas reach clients live over SSE and each one carries the whole partial message, so only durable events are retained for snapshots.
784
846
  if (event.type !== "message_update") {
785
847
  events.push(event);
@@ -1098,8 +1160,10 @@ export default {
1098
1160
  });
1099
1161
  const disposePlugins = services.webServer.register({
1100
1162
  path: "/api/plugins",
1101
- handler(_request, response) {
1102
- const items = services.loader ? [...services.loader.entries()].map(pluginSummary) : [];
1163
+ async handler(_request, response) {
1164
+ const loaded = services.loader ? [...services.loader.entries()].map(pluginSummary) : [];
1165
+ // The pending entries follow the loaded ones so a list that was stable before an install stays in the same order after it.
1166
+ const items = [...loaded, ...(await restartPendingSummaries(services))];
1103
1167
  sendJson(response, 200, jsonSafe({ items }));
1104
1168
  },
1105
1169
  });
@@ -1193,6 +1257,11 @@ export default {
1193
1257
  sendJson(response, 409, { error: "Plugin is already installed", plugin });
1194
1258
  return;
1195
1259
  }
1260
+ // A plugin already waiting for a restart is installed even though the loader has no entry for it, so installing it again would re-run npm and report a fresh restart for work that is already done.
1261
+ if ((await readMarketplaceProfileEntries(configPath)).some((entry) => entry.packageName === plugin.packageName)) {
1262
+ sendJson(response, 200, { plugin, installed: true, restartRequired: true });
1263
+ return;
1264
+ }
1196
1265
  const installDirectory = await marketplaceInstallDirectory(configPath, services.launch.cwd);
1197
1266
  const packageJsonPath = join(installDirectory, "package.json");
1198
1267
  const packageLockPath = join(installDirectory, "package-lock.json");
@@ -1322,7 +1391,23 @@ export default {
1322
1391
  }
1323
1392
  const entry = [...loader.entries()].find((item) => item.id === payload.id || item.options.id === payload.id);
1324
1393
  if (entry === undefined) {
1325
- sendJson(response, 404, { error: "Installed plugin was not found" });
1394
+ // A plugin waiting for a restart has no loader entry to remove, only the profile entry and the package the install left behind. Refusing here left the user unable to undo an install until they restarted the very process they installed it to avoid restarting.
1395
+ const pending = (await readMarketplaceProfileEntries(configPath)).find((item) => item.id === payload.id);
1396
+ const pendingPlugin = pending === undefined ? undefined : MARKETPLACE_PLUGINS.find((item) => item.packageName === pending.packageName);
1397
+ if (pending === undefined || pendingPlugin === undefined) {
1398
+ sendJson(response, 404, { error: "Installed plugin was not found" });
1399
+ return;
1400
+ }
1401
+ const pendingProfileBefore = await readFile(configPath, "utf8");
1402
+ const pendingInstallDirectory = await marketplaceInstallDirectory(configPath, services.launch.cwd);
1403
+ try {
1404
+ await updateMarketplaceProfile(configPath, pending.id, { remove: true });
1405
+ await runProcess("npm", ["uninstall", "--package-lock=false", marketplaceNpmPackageName(pendingPlugin.packageName)], pendingInstallDirectory);
1406
+ sendJson(response, 200, { uninstalled: true, id: payload.id });
1407
+ } catch (error) {
1408
+ await writeFile(configPath, pendingProfileBefore, "utf8").catch(() => {});
1409
+ sendJson(response, 502, { error: errorText(error) });
1410
+ }
1326
1411
  return;
1327
1412
  }
1328
1413
  const plugin = marketplacePluginForEntry(entry);
@@ -3,18 +3,18 @@
3
3
  "packageName": "@pi-harness/plugin-agent-teams",
4
4
  "version": "0.1.29",
5
5
  "name": "Agent Team Board",
6
- "description": "Maintain a bounded, session-local collaboration ledger of named roles, dependency-aware tasks, and mailbox notes without spawning agents or sending external messages.",
6
+ "description": "在当前会话内维护一份角色、任务依赖与留言板,不会额外启动 agent,也不会对外发消息。",
7
7
  "author": "Pi Harness",
8
8
  "repository": "https://github.com/pi-harness/pi-harness",
9
9
  "license": "MIT",
10
10
  "source": "official",
11
11
  "status": "verified",
12
12
  "category": {
13
- "id": "collaboration",
14
- "label": "会话协作"
13
+ "id": "workflow",
14
+ "label": "工作流"
15
15
  },
16
16
  "capabilities": ["read-only", "session-data"],
17
- "hooks": ["session lifecycle", "plugin UI"],
17
+ "hooks": ["会话生命周期", "插件面板"],
18
18
  "profile": {
19
19
  "name": "@pi-harness/plugin-agent-teams",
20
20
  "config": {}
@@ -3,7 +3,7 @@
3
3
  "packageName": "@pi-harness/plugin-anchored-standard",
4
4
  "version": "0.1.29",
5
5
  "name": "Anchored Standard",
6
- "description": "Audit agent trajectories against an explicit tool-call allowlist and flag activity outside the anchored run.",
6
+ "description": "按显式的工具白名单审计 agent 的执行轨迹,标出越界的调用。",
7
7
  "author": "Pi Harness",
8
8
  "repository": "https://github.com/pi-harness/pi-harness",
9
9
  "license": "MIT",
@@ -14,7 +14,7 @@
14
14
  "label": "安全"
15
15
  },
16
16
  "capabilities": ["read-only"],
17
- "hooks": ["session events", "plugin UI"],
17
+ "hooks": ["会话事件", "插件面板"],
18
18
  "profile": {
19
19
  "name": "@pi-harness/plugin-anchored-standard",
20
20
  "config": {}
@@ -3,7 +3,7 @@
3
3
  "packageName": "@pi-harness/plugin-annotation",
4
4
  "version": "0.1.29",
5
5
  "name": "Annotations",
6
- "description": "Capture bounded selections and notes from the conversation for later agent context.",
6
+ "description": "把对话里选中的片段和批注存下来,作为后续对话的上下文。",
7
7
  "author": "Pi Harness",
8
8
  "repository": "https://github.com/pi-harness/pi-harness",
9
9
  "license": "MIT",
@@ -14,7 +14,7 @@
14
14
  "label": "上下文管理"
15
15
  },
16
16
  "capabilities": ["read-only"],
17
- "hooks": ["plugin UI"],
17
+ "hooks": ["插件面板"],
18
18
  "profile": {
19
19
  "name": "@pi-harness/plugin-annotation",
20
20
  "config": {}
@@ -3,7 +3,7 @@
3
3
  "packageName": "@pi-harness/plugin-archify",
4
4
  "version": "0.1.29",
5
5
  "name": "Architecture Map",
6
- "description": "Build a bounded, read-only architecture map from workspace components and package dependencies.",
6
+ "description": "从工作区的模块和依赖清单生成一张只读的架构图。",
7
7
  "author": "Pi Harness",
8
8
  "repository": "https://github.com/pi-harness/pi-harness",
9
9
  "license": "MIT",
@@ -14,7 +14,7 @@
14
14
  "label": "开发工具"
15
15
  },
16
16
  "capabilities": ["reads-files", "runs-commands"],
17
- "hooks": ["workspace files", "package manifest", "plugin UI"],
17
+ "hooks": ["工作区文件", "依赖清单", "插件面板"],
18
18
  "profile": {
19
19
  "name": "@pi-harness/plugin-archify",
20
20
  "config": {}
@@ -3,7 +3,7 @@
3
3
  "packageName": "@pi-harness/plugin-at-file",
4
4
  "version": "0.1.29",
5
5
  "name": "@file Context",
6
- "description": "Attach a bounded 256 KiB strict UTF-8 workspace file using canonical workspace path confinement and no-follow regular-file reads, framing it as offline, read-only, untrusted model context with closing-tag neutralization and cancellable sequential execution.",
6
+ "description": "把工作区里的单个文件(上限 256 KiB、严格 UTF-8)作为只读上下文附给模型,路径限定在工作区内且不跟随符号链接。",
7
7
  "author": "Pi Harness",
8
8
  "repository": "https://github.com/pi-harness/pi-harness",
9
9
  "license": "MIT",
@@ -14,7 +14,7 @@
14
14
  "label": "上下文管理"
15
15
  },
16
16
  "capabilities": ["read-only", "reads-files"],
17
- "hooks": ["file context tool", "workspace file read", "plugin UI"],
17
+ "hooks": ["文件上下文工具", "工作区文件读取", "插件面板"],
18
18
  "profile": {
19
19
  "name": "@pi-harness/plugin-at-file",
20
20
  "config": {}
@@ -3,7 +3,7 @@
3
3
  "packageName": "@pi-harness/plugin-auto-mode",
4
4
  "version": "0.1.29",
5
5
  "name": "Auto Mode",
6
- "description": "Execute argv commands under a safe policy that blocks shell wrappers and requires confirmation for risky operations.",
6
+ "description": "在受控策略下执行 argv 命令:拒绝 shell 包装,危险操作要求确认。",
7
7
  "author": "Pi Harness",
8
8
  "repository": "https://github.com/pi-harness/pi-harness",
9
9
  "license": "MIT",
@@ -14,7 +14,7 @@
14
14
  "label": "安全"
15
15
  },
16
16
  "capabilities": ["reads-files", "runs-commands"],
17
- "hooks": ["argv execution", "plugin UI"],
17
+ "hooks": ["argv 执行", "插件面板"],
18
18
  "profile": {
19
19
  "name": "@pi-harness/plugin-auto-mode",
20
20
  "config": {
@@ -3,18 +3,18 @@
3
3
  "packageName": "@pi-harness/plugin-better-sidebar",
4
4
  "version": "0.1.29",
5
5
  "name": "Better Sidebar",
6
- "description": "Show a compact workspace, Git, and session overview beside the conversation without modifying files.",
6
+ "description": "在对话旁边显示工作区、Git 与会话概览,只读不改文件。",
7
7
  "author": "Pi Harness",
8
8
  "repository": "https://github.com/pi-harness/pi-harness",
9
9
  "license": "MIT",
10
10
  "source": "official",
11
11
  "status": "verified",
12
12
  "category": {
13
- "id": "developer",
14
- "label": "开发工具"
13
+ "id": "interface",
14
+ "label": "界面增强"
15
15
  },
16
16
  "capabilities": ["session-data", "reads-files", "runs-commands"],
17
- "hooks": ["workspace scan", "read-only Git", "session manager", "plugin UI"],
17
+ "hooks": ["工作区扫描", "只读 Git", "会话管理器", "插件面板"],
18
18
  "profile": {
19
19
  "name": "@pi-harness/plugin-better-sidebar",
20
20
  "config": {}
@@ -3,7 +3,7 @@
3
3
  "packageName": "@pi-harness/plugin-browser-fetch",
4
4
  "version": "0.1.29",
5
5
  "name": "Browser Fetch",
6
- "description": "Fetch public HTTP and HTTPS pages as bounded text with descriptor-safe inputs, DNS pinning, per-redirect private-network validation, textual MIME enforcement, cancellation, a whole-request timeout, and validated fail-closed panel reporting.",
6
+ "description": "抓取公网 HTTP/HTTPS 页面并转成有上限的文本,固定 DNS、拦截内网地址、只接受文本类型,可取消且有整体超时。",
7
7
  "author": "Pi Harness",
8
8
  "repository": "https://github.com/pi-harness/pi-harness",
9
9
  "license": "MIT",
@@ -14,7 +14,7 @@
14
14
  "label": "网页与研究"
15
15
  },
16
16
  "capabilities": ["network-access"],
17
- "hooks": ["network request", "plugin UI"],
17
+ "hooks": ["网络请求", "插件面板"],
18
18
  "profile": {
19
19
  "name": "@pi-harness/plugin-browser-fetch",
20
20
  "config": {
@@ -3,7 +3,7 @@
3
3
  "packageName": "@pi-harness/plugin-browser-session",
4
4
  "version": "0.1.29",
5
5
  "name": "Browser Session",
6
- "description": "Control a loopback-only Chrome DevTools session with descriptor-safe commands, bounded discovery, cancellable operations, screenshot metadata protection, and validated fail-closed panel previews.",
6
+ "description": "通过 Chrome DevTools 协议控制一个仅限本机回环的浏览器会话,命令受限、可取消,截图元数据会被清理。",
7
7
  "author": "Pi Harness",
8
8
  "repository": "https://github.com/pi-harness/pi-harness",
9
9
  "license": "MIT",
@@ -14,7 +14,7 @@
14
14
  "label": "网页与研究"
15
15
  },
16
16
  "capabilities": ["network-access"],
17
- "hooks": ["browser session tools", "Chrome DevTools Protocol", "plugin UI"],
17
+ "hooks": ["浏览器会话工具", "Chrome DevTools 协议", "插件面板"],
18
18
  "profile": {
19
19
  "name": "@pi-harness/plugin-browser-session",
20
20
  "config": {
@@ -3,7 +3,7 @@
3
3
  "packageName": "@pi-harness/plugin-canvas-draw",
4
4
  "version": "0.1.29",
5
5
  "name": "Canvas Draw",
6
- "description": "Generate validated, bounded Mermaid flowchart source from structured nodes and edges in the workspace UI.",
6
+ "description": "在面板里用结构化的节点和连线生成经过校验的 Mermaid 流程图源码。",
7
7
  "author": "Pi Harness",
8
8
  "repository": "https://github.com/pi-harness/pi-harness",
9
9
  "license": "MIT",
@@ -14,7 +14,7 @@
14
14
  "label": "视觉与多模态"
15
15
  },
16
16
  "capabilities": ["read-only"],
17
- "hooks": ["plugin UI"],
17
+ "hooks": ["插件面板"],
18
18
  "profile": {
19
19
  "name": "@pi-harness/plugin-canvas-draw",
20
20
  "config": {}
@@ -3,7 +3,7 @@
3
3
  "packageName": "@pi-harness/plugin-change-verifier",
4
4
  "version": "0.1.29",
5
5
  "name": "Change Verifier",
6
- "description": "Combine project tests and Git change review into one explicit verification gate before handoff.",
6
+ "description": "交接前把项目测试和 Git 变更评审合成一道显式的验收关卡。",
7
7
  "author": "Pi Harness",
8
8
  "repository": "https://github.com/pi-harness/pi-harness",
9
9
  "license": "MIT",
@@ -14,7 +14,7 @@
14
14
  "label": "工作流"
15
15
  },
16
16
  "capabilities": ["read-only"],
17
- "hooks": ["project scripts", "Git diff", "plugin UI"],
17
+ "hooks": ["项目脚本", "Git 变更", "插件面板"],
18
18
  "profile": {
19
19
  "name": "@pi-harness/plugin-change-verifier",
20
20
  "config": {}
@@ -3,7 +3,7 @@
3
3
  "packageName": "@pi-harness/plugin-cleaner",
4
4
  "version": "0.1.29",
5
5
  "name": "Cleaner",
6
- "description": "Strict descriptor-safe configuration and parameters, display-safe bounded Pi Harness Git capsule inventory, removal with explicit confirmation and retention controls, symlink and replacement defenses, cancellable serialization, and a fail-closed normalized panel.",
6
+ "description": "列出 Pi Harness 的 Git 胶囊目录并按保留策略清理,删除需要显式确认,防符号链接与文件替换,可取消。",
7
7
  "author": "Pi Harness",
8
8
  "repository": "https://github.com/pi-harness/pi-harness",
9
9
  "license": "MIT",
@@ -14,7 +14,7 @@
14
14
  "label": "开发工具"
15
15
  },
16
16
  "capabilities": ["reads-files", "writes-files"],
17
- "hooks": ["capsule cleanup tool", "agent capsule directory", "plugin UI"],
17
+ "hooks": ["胶囊清理工具", "agent 胶囊目录", "插件面板"],
18
18
  "profile": {
19
19
  "name": "@pi-harness/plugin-cleaner",
20
20
  "config": {}
@@ -3,7 +3,7 @@
3
3
  "packageName": "@pi-harness/plugin-cli-notifier",
4
4
  "version": "0.1.29",
5
5
  "name": "CLI Notifier",
6
- "description": "Send local desktop notifications when an agent turn completes, fails, or is aborted, and when context compaction fails.",
6
+ "description": "agent 轮次结束、失败、被中断,或上下文压缩失败时,发一条本机桌面通知。",
7
7
  "author": "Pi Harness",
8
8
  "repository": "https://github.com/pi-harness/pi-harness",
9
9
  "license": "MIT",
@@ -14,7 +14,7 @@
14
14
  "label": "工作流"
15
15
  },
16
16
  "capabilities": ["runs-commands"],
17
- "hooks": ["agent end", "compaction error", "plugin UI"],
17
+ "hooks": ["运行结束", "压缩失败", "插件面板"],
18
18
  "profile": {
19
19
  "name": "@pi-harness/plugin-cli-notifier",
20
20
  "config": {}
@@ -3,18 +3,18 @@
3
3
  "packageName": "@pi-harness/plugin-code2skill",
4
4
  "version": "0.1.29",
5
5
  "name": "Code2Skill",
6
- "description": "Package selected workspace source files into a bounded local Pi skill with a generated SKILL.md manifest and preserved references.",
6
+ "description": "把选中的工作区源码打包成一个本地 Pi skill,自动生成 SKILL.md 并保留引用。",
7
7
  "author": "Pi Harness",
8
8
  "repository": "https://github.com/pi-harness/pi-harness",
9
9
  "license": "MIT",
10
10
  "source": "official",
11
11
  "status": "verified",
12
12
  "category": {
13
- "id": "tools",
14
- "label": "工具"
13
+ "id": "developer",
14
+ "label": "开发工具"
15
15
  },
16
16
  "capabilities": ["reads-files", "writes-files"],
17
- "hooks": ["workspace files", "plugin UI"],
17
+ "hooks": ["工作区文件", "插件面板"],
18
18
  "profile": {
19
19
  "name": "@pi-harness/plugin-code2skill",
20
20
  "config": {}