@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": "读取 PNGJPEGGIFWebP 的签名与元数据并建立目录,只读文件头,遍历可取消,结果仅在本机面板展示。",
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",
@@ -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":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,OAAO,EAAE,WAAW,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,oBAAoB,EAAsB,MAAM,kBAAkB,CAAC;AAC3J,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,4BAA4B,EAAE,MAAM,eAAe,CAAC;AAoB7D,KAAK,UAAU,YAAY,CAAI,OAAmB,EAAE,SAAiB;IACnE,IAAI,KAAiC,CAAC;IACtC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAqB,CAAC,OAAO,EAAE,EAAE;QAC1D,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,IAAa,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;IAC3G,IAAI,KAAK,KAAK,SAAS;QAAE,YAAY,CAAC,KAAK,CAAC,CAAC;IAC7C,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,SAAS,GAAG;;;wDAGsC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;CAelF,CAAC;AAEF,MAAM,gBAAgB,GAAG,KAAK,CAAC;AAE/B,gTAAgT;AAChT,SAAS,WAAW,CAAC,KAAc;IACjC,IAAI,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACpD,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,KAAK,GAAG;QAAE,OAAO,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC;IAC9E,OAAO,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,kEAAkE,CAAC;AACxI,CAAC;AAED,qdAAqd;AACrd,MAAM,CAAC,MAAM,0BAA0B,GAAG,EAAE,CAAC;AAE7C,SAAS,cAAc,CAAC,MAAsB;IAC5C,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;AACrE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,KAAwB,EAAE,YAA4B;IACjF,MAAM,IAAI,GAAG,KAAK,CAAC;IACnB,MAAM,WAAW,GAAG,YAAY,CAAC;IACjC,IAAI,UAAgD,CAAC;IACrD,IAAI,CAAC;QACH,UAAU,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACxF,OAAO,KAAK,YAAY,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAChD,CAAC;IACD,IAAI,UAAU,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC/B,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACpC,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAI,UAAU,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAClC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC,OAAO,IAAI,CAAC,CAAC;QACrD,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAI,UAAkB,CAAC;IACvB,IAAI,CAAC;QACH,gOAAgO;QAChO,IAAI,UAAU,CAAC,UAAU,KAAK,SAAS,IAAI,CAAE,gBAAsC,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,IAAI,SAAS,CAAC;YAC3H,MAAM,IAAI,aAAa,CAAC,oBAAoB,UAAU,CAAC,OAAO,IAAI,SAAS,qBAAqB,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QAC1J,UAAU,GAAG,MAAM,oBAAoB,CAAC;YACtC,GAAG,CAAC,UAAU,CAAC,UAAU,KAAK,SAAS;gBACrC,CAAC,CAAC,EAAE,OAAO,EAAE,UAAU,CAAC,OAAO,IAAI,SAAS,EAAE,WAAW,EAAE,oBAAoB,EAAE;gBACjF,CAAC,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,UAAU,EAAE,CAAC;YAC1C,GAAG,EAAE,WAAW,CAAC,GAAG;SACrB,CAAC,CAAC;QACH,qSAAqS;QACrS,IAAI,UAAU,CAAC,UAAU,KAAK,SAAS;YACrC,UAAU,GAAG,MAAM,qBAAqB,CAAC;gBACvC,kBAAkB,EAAE,UAAU;gBAC9B,WAAW,EAAE,UAAU,CAAC,OAAO,IAAI,SAAS;gBAC5C,SAAS,EAAE,WAAW,CAAC,WAAW;aACnC,CAAC,CAAC;QACL,IAAI,UAAU,CAAC,UAAU,EAAE,CAAC;YAC1B,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;YAC7D,OAAO,CAAC,CAAC;QACX,CAAC;QACD,IAAI,WAAW,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;YAC9C,KAAK,OAAO,CAAC,OAAO,EAAE;iBACnB,IAAI,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,eAAe,EAAE,EAAE,CAAC;iBAC3C,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;gBACf,IAAI,MAAM,KAAK,SAAS;oBAAE,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAC7D,CAAC,CAAC;iBACD,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACxF,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,OAAkC,CAAC;IACvC,IAAI,UAA8B,CAAC;IACnC,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,MAAM,SAAS,GAAG,KAAK,EAAE,IAAY,EAAE,KAAK,GAAG,IAAI,EAAE,EAAE;QACrD,IAAI,UAAU;YAAE,OAAO;QACvB,UAAU,GAAG,IAAI,CAAC;QAClB,+FAA+F;QAC/F,kFAAkF;QAClF,IAAI,KAAK;YAAE,MAAM,YAAY,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,gBAAgB,CAAC,CAAC;QAC/D,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC,CAAC;IACF,IAAI,aAAmD,CAAC;IACxD,MAAM,oBAAoB,GAAG,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,EAAE;QAC3D,aAAa,GAAG,OAAO,CAAC;IAC1B,CAAC,CAAC,CAAC;IACH,IAAI,aAAmD,CAAC;IACxD,MAAM,aAAa,GAAG,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,EAAE;QACpD,aAAa,GAAG,OAAO,CAAC;IAC1B,CAAC,CAAC,CAAC;IACH,MAAM,YAAY,GAAG,IAAI,eAAe,EAAE,CAAC;IAC3C,MAAM,KAAK,GAAG,IAAI,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACvF,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,UAAsC,CAAC;IAC3C,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,MAAM,aAAa,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,EAAE;QACpD,MAAM,IAAI,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;QACpC,kHAAkH;QAClH,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QACrC,gIAAgI;QAChI,IAAI,MAAM,KAAK,UAAU,IAAI,UAAU,GAAG,YAAY,GAAG,0BAA0B;YAAE,OAAO;QAC5F,UAAU,GAAG,MAAM,CAAC;QACpB,YAAY,GAAG,UAAU,CAAC;QAC1B,WAAW,IAAI,CAAC,CAAC;QACjB,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;YACpB,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,MAAM,+BAA+B,CAAC,CAAC;YAC5E,KAAK,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAC5B,OAAO;QACT,CAAC;QACD,aAAa,EAAE,CAAC,IAAI,CAAC,CAAC;QACtB,KAAK,CAAC,KAAK,EAAE,CAAC;QACd,YAAY,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,YAAY,MAAM,EAAE,CAAC,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IACH,IAAI,CAAC;QACH,MAAM,WAAW,GAAyB,WAAW,CAAC;YACpD,UAAU;YACV,MAAM,EAAE,YAAY,CAAC,MAAM;YAC3B,YAAY;gBACV,IAAI,WAAW,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;oBACpC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,0GAA0G,CAAC,CAAC;oBACrI,OAAO;gBACT,CAAC;gBACD,aAAa,EAAE,CAAC,4BAA4B,CAAC,CAAC;YAChD,CAAC;YACD,OAAO,CAAC,OAAO;gBACb,oBAAoB,CAAC,OAAO,EAAE;oBAC5B,GAAG,EAAE,WAAW,CAAC,GAAG;oBACpB,QAAQ,EAAE,WAAW,CAAC,QAAQ;oBAC9B,IAAI,EAAE,UAAU,CAAC,IAAI;oBACrB,WAAW,CAAC,IAAI;wBACd,aAAa,EAAE,CAAC,IAAI,CAAC,CAAC;oBACxB,CAAC;iBACF,CAAC,CAAC;gBACH,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YACtC,CAAC;SACF,CAAC,CAAC,IAAI,CACL,CAAC,MAAM,EAAe,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAC7D,CAAC,KAAc,EAAe,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAC5D,CAAC;QACF,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,QAAiB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACrH,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC9B,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;YAC1B,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,WAAW,EAAE,WAAW,CAAC,iBAAiB,CAAC,CAAC;YAC/E,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;gBACrB,MAAM,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBAC9B,OAAO,OAAO,CAAC,IAAI,CAAC;YACtB,CAAC;YACD,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO;gBAAE,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC;YACpE,OAAO,OAAO,CAAC,IAAI,CAAC;QACtB,CAAC;QACD,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO;YAAE,MAAM,OAAO,CAAC,KAAK,CAAC;QAClD,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAC1B,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QACzD,IAAI,WAAW,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;QACzG,MAAM,aAAa,GAAG,IAAI,eAAe,EAAE,CAAC;QAC5C,MAAM,cAAc,GAAG,WAAW,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,aAAsB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACxH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC;YAChC,cAAc;YACd,oBAAoB,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,SAAkB,EAAE,IAAI,EAAE,CAAC,CAAC;YAC3E,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,QAAiB,EAAE,IAAI,EAAE,CAAC,CAAC;SACpE,CAAC,CAAC;QACH,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC;QACzB,IAAI,MAAM,CAAC,MAAM,KAAK,aAAa,EAAE,CAAC;YACpC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC,CAAC;YAC9D,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YACjD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC1B,MAAM,OAAO,GAAG,MAAM,YAAY,CAChC,OAAO,CAAC,KAAK,EAAE,CAAC,IAAI,CAClB,GAAG,EAAE,CAAC,SAAS,EACf,CAAC,KAAc,EAAE,EAAE;oBACjB,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACtD,CAAC,CACF,EACD,WAAW,CAAC,iBAAiB,CAC9B,CAAC;gBACF,IAAI,CAAC,OAAO,CAAC,OAAO;oBAAE,MAAM,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACrD,CAAC;YACD,uFAAuF;YACvF,qFAAqF;YACrF,MAAM,QAAQ,GAAG,MAAM,YAAY,CACjC,cAAc,CAAC,IAAI,CACjB,GAAG,EAAE,CAAC,SAAS,EACf,GAAG,EAAE,CAAC,SAAS,CAChB,EACD,WAAW,CAAC,iBAAiB,CAC9B,CAAC;YACF,IAAI,CAAC,QAAQ,CAAC,OAAO;gBAAE,MAAM,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACtD,CAAC;QACD,OAAO,MAAM,CAAC,IAAI,CAAC;IACrB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACpD,UAAU,GAAG,CAAC,CAAC;QACf,OAAO,CAAC,CAAC;IACX,CAAC;YAAS,CAAC;QACT,aAAa,EAAE,CAAC;QAChB,KAAK,CAAC,KAAK,EAAE,CAAC;QACd,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,MAAM,QAAQ,GAAG,MAAM,YAAY,CACjC,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CACpB,GAAG,EAAE,CAAC,SAAS,EACf,CAAC,KAAc,EAAE,EAAE;gBACjB,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACtD,CAAC,CACF,EACD,WAAW,CAAC,iBAAiB,CAC9B,CAAC;YACF,IAAI,CAAC,QAAQ,CAAC,OAAO;gBAAE,MAAM,SAAS,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,OAAO,EAAE,WAAW,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,oBAAoB,EAAsB,MAAM,kBAAkB,CAAC;AAC3J,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,4BAA4B,EAAE,MAAM,eAAe,CAAC;AAoB7D,KAAK,UAAU,YAAY,CAAI,OAAmB,EAAE,SAAiB;IACnE,IAAI,KAAiC,CAAC;IACtC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAqB,CAAC,OAAO,EAAE,EAAE;QAC1D,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,IAAa,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;IAC3G,IAAI,KAAK,KAAK,SAAS;QAAE,YAAY,CAAC,KAAK,CAAC,CAAC;IAC7C,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,SAAS,GAAG;;;wDAGsC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;CAelF,CAAC;AAEF,MAAM,gBAAgB,GAAG,KAAK,CAAC;AAE/B,gTAAgT;AAChT,SAAS,WAAW,CAAC,KAAc;IACjC,IAAI,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACpD,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,KAAK,GAAG;QAAE,OAAO,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC;IAC9E,OAAO,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,kEAAkE,CAAC;AACxI,CAAC;AAED,qdAAqd;AACrd,MAAM,CAAC,MAAM,0BAA0B,GAAG,EAAE,CAAC;AAE7C,SAAS,cAAc,CAAC,MAAsB;IAC5C,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;AACrE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,KAAwB,EAAE,YAA4B;IACjF,MAAM,IAAI,GAAG,KAAK,CAAC;IACnB,MAAM,WAAW,GAAG,YAAY,CAAC;IACjC,IAAI,UAAgD,CAAC;IACrD,IAAI,CAAC;QACH,UAAU,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACxF,OAAO,KAAK,YAAY,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAChD,CAAC;IACD,IAAI,UAAU,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC/B,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACpC,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAI,UAAU,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAClC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC,OAAO,IAAI,CAAC,CAAC;QACrD,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAI,UAAkB,CAAC;IACvB,IAAI,CAAC;QACH,gOAAgO;QAChO,IAAI,UAAU,CAAC,UAAU,KAAK,SAAS,IAAI,CAAE,gBAAsC,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,IAAI,SAAS,CAAC;YAC3H,MAAM,IAAI,aAAa,CAAC,oBAAoB,UAAU,CAAC,OAAO,IAAI,SAAS,qBAAqB,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QAC1J,UAAU,GAAG,MAAM,oBAAoB,CAAC;YACtC,GAAG,CAAC,UAAU,CAAC,UAAU,KAAK,SAAS;gBACrC,CAAC,CAAC,EAAE,OAAO,EAAE,UAAU,CAAC,OAAO,IAAI,SAAS,EAAE,WAAW,EAAE,oBAAoB,EAAE;gBACjF,CAAC,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,UAAU,EAAE,CAAC;YAC1C,GAAG,EAAE,WAAW,CAAC,GAAG;SACrB,CAAC,CAAC;QACH,qSAAqS;QACrS,IAAI,UAAU,CAAC,UAAU,KAAK,SAAS;YACrC,UAAU,GAAG,MAAM,qBAAqB,CAAC;gBACvC,kBAAkB,EAAE,UAAU;gBAC9B,WAAW,EAAE,UAAU,CAAC,OAAO,IAAI,SAAS;gBAC5C,SAAS,EAAE,WAAW,CAAC,WAAW;aACnC,CAAC,CAAC;QACL,IAAI,UAAU,CAAC,UAAU,EAAE,CAAC;YAC1B,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;YAC7D,OAAO,CAAC,CAAC;QACX,CAAC;QACD,IAAI,WAAW,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;YAC9C,KAAK,OAAO,CAAC,OAAO,EAAE;iBACnB,IAAI,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,eAAe,EAAE,EAAE,CAAC;iBAC3C,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;gBACf,IAAI,MAAM,KAAK,SAAS;oBAAE,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAC7D,CAAC,CAAC;iBACD,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACxF,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,OAAkC,CAAC;IACvC,IAAI,UAA8B,CAAC;IACnC,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,MAAM,SAAS,GAAG,KAAK,EAAE,IAAY,EAAE,KAAK,GAAG,IAAI,EAAE,EAAE;QACrD,IAAI,UAAU;YAAE,OAAO;QACvB,UAAU,GAAG,IAAI,CAAC;QAClB,+FAA+F;QAC/F,kFAAkF;QAClF,IAAI,KAAK;YAAE,MAAM,YAAY,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,gBAAgB,CAAC,CAAC;QAC/D,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC,CAAC;IACF,IAAI,aAAmD,CAAC;IACxD,MAAM,oBAAoB,GAAG,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,EAAE;QAC3D,aAAa,GAAG,OAAO,CAAC;IAC1B,CAAC,CAAC,CAAC;IACH,IAAI,aAAmD,CAAC;IACxD,MAAM,aAAa,GAAG,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,EAAE;QACpD,aAAa,GAAG,OAAO,CAAC;IAC1B,CAAC,CAAC,CAAC;IACH,MAAM,YAAY,GAAG,IAAI,eAAe,EAAE,CAAC;IAC3C,MAAM,KAAK,GAAG,IAAI,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACvF,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,UAAsC,CAAC;IAC3C,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,MAAM,aAAa,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,EAAE;QACpD,MAAM,IAAI,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;QACpC,kHAAkH;QAClH,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QACrC,gIAAgI;QAChI,IAAI,MAAM,KAAK,UAAU,IAAI,UAAU,GAAG,YAAY,GAAG,0BAA0B;YAAE,OAAO;QAC5F,UAAU,GAAG,MAAM,CAAC;QACpB,YAAY,GAAG,UAAU,CAAC;QAC1B,WAAW,IAAI,CAAC,CAAC;QACjB,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;YACpB,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,MAAM,+BAA+B,CAAC,CAAC;YAC5E,KAAK,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAC5B,OAAO;QACT,CAAC;QACD,aAAa,EAAE,CAAC,IAAI,CAAC,CAAC;QACtB,KAAK,CAAC,KAAK,EAAE,CAAC;QACd,YAAY,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,YAAY,MAAM,EAAE,CAAC,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IACH,IAAI,CAAC;QACH,MAAM,WAAW,GAAyB,WAAW,CAAC;YACpD,UAAU;YACV,MAAM,EAAE,YAAY,CAAC,MAAM;YAC3B,YAAY;gBACV,IAAI,WAAW,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;oBACpC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,0GAA0G,CAAC,CAAC;oBACrI,OAAO;gBACT,CAAC;gBACD,aAAa,EAAE,CAAC,4BAA4B,CAAC,CAAC;YAChD,CAAC;YACD,OAAO,CAAC,OAAO;gBACb,oBAAoB,CAAC,OAAO,EAAE;oBAC5B,GAAG,EAAE,WAAW,CAAC,GAAG;oBACpB,QAAQ,EAAE,WAAW,CAAC,QAAQ;oBAC9B,6IAA6I;oBAC7I,UAAU;oBACV,IAAI,EAAE,UAAU,CAAC,IAAI;oBACrB,WAAW,CAAC,IAAI;wBACd,aAAa,EAAE,CAAC,IAAI,CAAC,CAAC;oBACxB,CAAC;iBACF,CAAC,CAAC;gBACH,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YACtC,CAAC;SACF,CAAC,CAAC,IAAI,CACL,CAAC,MAAM,EAAe,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAC7D,CAAC,KAAc,EAAe,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAC5D,CAAC;QACF,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,QAAiB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACrH,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC9B,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;YAC1B,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,WAAW,EAAE,WAAW,CAAC,iBAAiB,CAAC,CAAC;YAC/E,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;gBACrB,MAAM,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBAC9B,OAAO,OAAO,CAAC,IAAI,CAAC;YACtB,CAAC;YACD,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO;gBAAE,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC;YACpE,OAAO,OAAO,CAAC,IAAI,CAAC;QACtB,CAAC;QACD,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO;YAAE,MAAM,OAAO,CAAC,KAAK,CAAC;QAClD,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAC1B,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QACzD,IAAI,WAAW,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;QACzG,MAAM,aAAa,GAAG,IAAI,eAAe,EAAE,CAAC;QAC5C,MAAM,cAAc,GAAG,WAAW,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,aAAsB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACxH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC;YAChC,cAAc;YACd,oBAAoB,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,SAAkB,EAAE,IAAI,EAAE,CAAC,CAAC;YAC3E,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,QAAiB,EAAE,IAAI,EAAE,CAAC,CAAC;SACpE,CAAC,CAAC;QACH,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC;QACzB,IAAI,MAAM,CAAC,MAAM,KAAK,aAAa,EAAE,CAAC;YACpC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC,CAAC;YAC9D,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YACjD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC1B,MAAM,OAAO,GAAG,MAAM,YAAY,CAChC,OAAO,CAAC,KAAK,EAAE,CAAC,IAAI,CAClB,GAAG,EAAE,CAAC,SAAS,EACf,CAAC,KAAc,EAAE,EAAE;oBACjB,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACtD,CAAC,CACF,EACD,WAAW,CAAC,iBAAiB,CAC9B,CAAC;gBACF,IAAI,CAAC,OAAO,CAAC,OAAO;oBAAE,MAAM,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACrD,CAAC;YACD,uFAAuF;YACvF,qFAAqF;YACrF,MAAM,QAAQ,GAAG,MAAM,YAAY,CACjC,cAAc,CAAC,IAAI,CACjB,GAAG,EAAE,CAAC,SAAS,EACf,GAAG,EAAE,CAAC,SAAS,CAChB,EACD,WAAW,CAAC,iBAAiB,CAC9B,CAAC;YACF,IAAI,CAAC,QAAQ,CAAC,OAAO;gBAAE,MAAM,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACtD,CAAC;QACD,OAAO,MAAM,CAAC,IAAI,CAAC;IACrB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACpD,UAAU,GAAG,CAAC,CAAC;QACf,OAAO,CAAC,CAAC;IACX,CAAC;YAAS,CAAC;QACT,aAAa,EAAE,CAAC;QAChB,KAAK,CAAC,KAAK,EAAE,CAAC;QACd,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,MAAM,QAAQ,GAAG,MAAM,YAAY,CACjC,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CACpB,GAAG,EAAE,CAAC,SAAS,EACf,CAAC,KAAc,EAAE,EAAE;gBACjB,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACtD,CAAC,CACF,EACD,WAAW,CAAC,iBAAiB,CAC9B,CAAC;YACF,IAAI,CAAC,QAAQ,CAAC,OAAO;gBAAE,MAAM,SAAS,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -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",
@@ -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",
@@ -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",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/pi-harness",
3
- "version": "0.1.32",
3
+ "version": "0.1.34",
4
4
  "homepage": "https://github.com/pi-harness/pi-harness#readme",
5
5
  "bugs": {
6
6
  "url": "https://github.com/pi-harness/pi-harness/issues"
@@ -57,11 +57,11 @@
57
57
  "@earendil-works/pi-agent-core": "0.84.4",
58
58
  "@earendil-works/pi-ai": "0.84.4",
59
59
  "@earendil-works/pi-coding-agent": "0.84.4",
60
- "@pi-harness/api-gateway": "0.1.32",
61
- "@pi-harness/cli": "0.1.32",
62
- "@pi-harness/core": "^0.1.32",
63
- "@pi-harness/host-webserver": "0.1.32",
64
- "@pi-harness/web-app": "0.1.32",
60
+ "@pi-harness/api-gateway": "0.1.34",
61
+ "@pi-harness/cli": "0.1.34",
62
+ "@pi-harness/core": "^0.1.34",
63
+ "@pi-harness/host-webserver": "0.1.34",
64
+ "@pi-harness/web-app": "0.1.34",
65
65
  "semver": "7.8.5"
66
66
  },
67
67
  "devDependencies": {
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;;;;mBA2vBlC,OAAO;;AAHxB,wBA+4CE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;;;;mBAmyBlC,OAAO;;AAHxB,wBA47CE"}
@@ -15,6 +15,8 @@ const IMPORT_CONTENT_LIMIT_BYTES = 10 * 1024 * 1024;
15
15
  const IMPORT_BODY_LIMIT_BYTES = 16 * 1024 * 1024;
16
16
  // Retained trajectory events are replayed to every SSE client and returned by /api/session, so the array must stay bounded.
17
17
  const MAX_RETAINED_EVENTS = 2000;
18
+ // Tool calls that opened but never closed. Far above any real concurrency, so the cap only ever trims a run the runtime abandoned.
19
+ const MAX_PENDING_TOOL_CALLS = 256;
18
20
  const GIT_TIMEOUT_MS = 15_000;
19
21
  const PROCESS_FAILURE_TEXT_LIMIT = 400;
20
22
  const PROCESS_TIMEOUT_MS = 120_000;
@@ -281,6 +283,41 @@ function pluginSummary(entry) {
281
283
  category: marketplacePlugin?.category,
282
284
  };
283
285
  }
286
+ /** The state a marketplace plugin is in between the install that wrote it and the restart that loads it. It is not a loader state because the loader has no entry for it at all. */
287
+ const RESTART_REQUIRED_STATE = "restart-required";
288
+ // The install writes the entry as two adjacent lines, so this reads back exactly what `marketplaceProfileEntry` writes rather than parsing the profile as YAML, which the `!!js` tags in it would need a schema for.
289
+ const MARKETPLACE_PROFILE_ENTRY_PATTERN = /^[ \t]*- id: (marketplace-\S+)[ \t]*\r?\n[ \t]*name: "([^"]+)"/gmu;
290
+ /** The loader holds what is running; the profile file holds what is installed. The two differ for a plugin that contributes tools, which cannot join a harness that is already running: the install leaves its package and its profile entry in place and the plugin arrives on the next start. Reading only the loader makes that plugin indistinguishable from one that was never installed, which is why the console answered an install that had just succeeded with "nothing is installed" and then could not uninstall what it had hidden. */
291
+ async function readMarketplaceProfileEntries(configPath) {
292
+ const source = await readFile(configPath, "utf8").catch(() => undefined);
293
+ if (source === undefined)
294
+ return [];
295
+ const entries = [];
296
+ for (const match of source.matchAll(MARKETPLACE_PROFILE_ENTRY_PATTERN))
297
+ entries.push({ id: match[1] ?? "", packageName: match[2] ?? "" });
298
+ return entries;
299
+ }
300
+ /** The installed plugins the loader does not have, described the same way a loaded one is so the console can list them side by side instead of leaving the user to guess what happened to the install. */
301
+ async function restartPendingSummaries(services) {
302
+ const configPath = services.launch.configPath;
303
+ if (configPath === undefined || services.loader === undefined)
304
+ return [];
305
+ const loaded = new Set([...services.loader.entries()].map((entry) => entry.options.id));
306
+ const entries = await readMarketplaceProfileEntries(configPath);
307
+ return entries
308
+ .filter((entry) => !loaded.has(entry.id))
309
+ .map((entry) => {
310
+ const plugin = MARKETPLACE_PLUGINS.find((item) => item.packageName === entry.packageName);
311
+ return {
312
+ id: entry.id,
313
+ name: entry.packageName,
314
+ enabled: true,
315
+ state: RESTART_REQUIRED_STATE,
316
+ removable: true,
317
+ category: plugin?.category,
318
+ };
319
+ });
320
+ }
284
321
  function pluginLoaded(services, packageName) {
285
322
  return services.loader !== undefined && [...services.loader.entries()].some((entry) => entry.options.name === packageName && !entry.disabled);
286
323
  }
@@ -688,7 +725,31 @@ export default {
688
725
  let busy = false;
689
726
  const events = [];
690
727
  const eventClients = new Set();
691
- const handleEvent = (event) => {
728
+ // Pi puts a wall-clock on a message payload and nowhere else, so a tool call has no time of its own and nothing downstream can recover when the harness saw it. The gateway is the one place that sees every event as it happens, so it stamps each one on arrival, and pairs a tool call's two events to record how long the call took.
729
+ // The stamp is written onto the event rather than onto a copy: a copy would give every event a new identity, and the serializer's cycle detection reads identity, so a self-referential event would serialize one level deeper on every hop.
730
+ const toolCallStartedAt = new Map();
731
+ const stampEvent = (event) => {
732
+ const receivedAt = Date.now();
733
+ const toolCallId = event.toolCallId;
734
+ if (typeof toolCallId === "string" && event.type === "tool_execution_start") {
735
+ // A call whose end never arrives would otherwise keep its entry forever; the oldest is dropped rather than letting a stalled run grow the map without bound.
736
+ if (toolCallStartedAt.size >= MAX_PENDING_TOOL_CALLS) {
737
+ const oldest = toolCallStartedAt.keys().next().value;
738
+ if (oldest !== undefined)
739
+ toolCallStartedAt.delete(oldest);
740
+ }
741
+ toolCallStartedAt.set(toolCallId, receivedAt);
742
+ }
743
+ if (typeof toolCallId === "string" && event.type === "tool_execution_end") {
744
+ const startedAt = toolCallStartedAt.get(toolCallId);
745
+ toolCallStartedAt.delete(toolCallId);
746
+ if (startedAt !== undefined)
747
+ return Object.assign(event, { receivedAt, durationMs: receivedAt - startedAt });
748
+ }
749
+ return Object.assign(event, { receivedAt });
750
+ };
751
+ const handleEvent = (rawEvent) => {
752
+ const event = stampEvent(rawEvent);
692
753
  // Streaming deltas reach clients live over SSE and each one carries the whole partial message, so only durable events are retained for snapshots.
693
754
  if (event.type !== "message_update") {
694
755
  events.push(event);
@@ -1000,8 +1061,10 @@ export default {
1000
1061
  });
1001
1062
  const disposePlugins = services.webServer.register({
1002
1063
  path: "/api/plugins",
1003
- handler(_request, response) {
1004
- const items = services.loader ? [...services.loader.entries()].map(pluginSummary) : [];
1064
+ async handler(_request, response) {
1065
+ const loaded = services.loader ? [...services.loader.entries()].map(pluginSummary) : [];
1066
+ // The pending entries follow the loaded ones so a list that was stable before an install stays in the same order after it.
1067
+ const items = [...loaded, ...(await restartPendingSummaries(services))];
1005
1068
  sendJson(response, 200, jsonSafe({ items }));
1006
1069
  },
1007
1070
  });
@@ -1093,6 +1156,11 @@ export default {
1093
1156
  sendJson(response, 409, { error: "Plugin is already installed", plugin });
1094
1157
  return;
1095
1158
  }
1159
+ // A plugin already waiting for a restart is installed even though the loader has no entry for it, so installing it again would re-run npm and report a fresh restart for work that is already done.
1160
+ if ((await readMarketplaceProfileEntries(configPath)).some((entry) => entry.packageName === plugin.packageName)) {
1161
+ sendJson(response, 200, { plugin, installed: true, restartRequired: true });
1162
+ return;
1163
+ }
1096
1164
  const installDirectory = await marketplaceInstallDirectory(configPath, services.launch.cwd);
1097
1165
  const packageJsonPath = join(installDirectory, "package.json");
1098
1166
  const packageLockPath = join(installDirectory, "package-lock.json");
@@ -1231,7 +1299,24 @@ export default {
1231
1299
  }
1232
1300
  const entry = [...loader.entries()].find((item) => item.id === payload.id || item.options.id === payload.id);
1233
1301
  if (entry === undefined) {
1234
- sendJson(response, 404, { error: "Installed plugin was not found" });
1302
+ // A plugin waiting for a restart has no loader entry to remove, only the profile entry and the package the install left behind. Refusing here left the user unable to undo an install until they restarted the very process they installed it to avoid restarting.
1303
+ const pending = (await readMarketplaceProfileEntries(configPath)).find((item) => item.id === payload.id);
1304
+ const pendingPlugin = pending === undefined ? undefined : MARKETPLACE_PLUGINS.find((item) => item.packageName === pending.packageName);
1305
+ if (pending === undefined || pendingPlugin === undefined) {
1306
+ sendJson(response, 404, { error: "Installed plugin was not found" });
1307
+ return;
1308
+ }
1309
+ const pendingProfileBefore = await readFile(configPath, "utf8");
1310
+ const pendingInstallDirectory = await marketplaceInstallDirectory(configPath, services.launch.cwd);
1311
+ try {
1312
+ await updateMarketplaceProfile(configPath, pending.id, { remove: true });
1313
+ await runProcess("npm", ["uninstall", "--package-lock=false", marketplaceNpmPackageName(pendingPlugin.packageName)], pendingInstallDirectory);
1314
+ sendJson(response, 200, { uninstalled: true, id: payload.id });
1315
+ }
1316
+ catch (error) {
1317
+ await writeFile(configPath, pendingProfileBefore, "utf8").catch(() => { });
1318
+ sendJson(response, 502, { error: errorText(error) });
1319
+ }
1235
1320
  return;
1236
1321
  }
1237
1322
  const plugin = marketplacePluginForEntry(entry);