@pi-harness/pi-harness 0.1.14 → 0.1.15

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 (1495) hide show
  1. package/README.md +6 -4
  2. package/apps/web/dist/assets/{index-C98SJjJd.js → index-BZQRoR8H.js} +1 -1
  3. package/apps/web/dist/index.html +1 -1
  4. package/apps/web/package.json +6 -6
  5. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/agent-teams.json +1 -1
  6. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/anchored-standard.json +1 -1
  7. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/annotation.json +1 -1
  8. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/archify.json +1 -1
  9. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/at-file.json +1 -1
  10. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/auto-mode.json +1 -1
  11. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/better-sidebar.json +1 -1
  12. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/browser-fetch.json +1 -1
  13. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/browser-session.json +1 -1
  14. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/canvas-draw.json +1 -1
  15. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/change-verifier.json +1 -1
  16. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/cleaner.json +1 -1
  17. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/cli-notifier.json +1 -1
  18. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/code2skill.json +1 -1
  19. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/colleague-skill.json +1 -1
  20. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/context-doctor.json +1 -1
  21. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/context.json +1 -1
  22. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/cost-meter.json +1 -1
  23. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/dependency-checker.json +1 -1
  24. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/docker-sandbox.json +1 -1
  25. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/fail-logger.json +1 -1
  26. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/genui.json +1 -1
  27. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/git-time-capsule.json +1 -1
  28. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/graph-memory.json +1 -1
  29. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/history-compressor.json +1 -1
  30. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/hol-guard.json +1 -1
  31. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/i18n-pair.json +1 -1
  32. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/image-compressor.json +1 -1
  33. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/llm-verifier.json +1 -1
  34. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/mcp-client.json +1 -1
  35. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/mcp-panel.json +1 -1
  36. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/memory.json +1 -1
  37. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/mirage-bridge.json +1 -1
  38. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/mock-server.json +1 -1
  39. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/modlens.json +1 -1
  40. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/module-search.json +1 -1
  41. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/obsidian-sync.json +1 -1
  42. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/openpets.json +1 -1
  43. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/plan-execute.json +1 -1
  44. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/plugin-check.json +1 -1
  45. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/plugin-dev.json +1 -1
  46. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/plugin-finder.json +1 -1
  47. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/plugin-radar.json +1 -1
  48. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/plugin-stars.json +1 -1
  49. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/prompt-guard.json +1 -1
  50. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/prompt-library.json +1 -1
  51. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/readme-gen.json +1 -1
  52. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/recall-unread.json +1 -1
  53. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/reverse-skill.json +1 -1
  54. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/reviewer-bot.json +1 -1
  55. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/runtime-doctor.json +1 -1
  56. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/secure-audit.json +1 -1
  57. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/session-bookmarks.json +1 -1
  58. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/session-bridge.json +1 -1
  59. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/session-compare.json +1 -1
  60. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/session-export.json +1 -1
  61. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/session-insights.json +1 -1
  62. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/session-search.json +1 -1
  63. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/skill-catalog.json +1 -1
  64. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/skill-guard.json +1 -1
  65. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/sql-lens.json +1 -1
  66. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/synapse.json +1 -1
  67. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/tab-manager.json +1 -1
  68. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/taskboard.json +1 -1
  69. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/telemetry-blocker.json +1 -1
  70. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/test-harness.json +1 -1
  71. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/theme-studio.json +1 -1
  72. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/token-guard.json +1 -1
  73. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/turn-rewind.json +1 -1
  74. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/undo-savepoint.json +1 -1
  75. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/vision-toolkit.json +1 -1
  76. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/web-research.json +1 -1
  77. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/workspace-navigator.json +1 -1
  78. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/workspace-search.json +1 -1
  79. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/yaml-validator.json +1 -1
  80. package/node_modules/@pi-harness/api-gateway/package.json +1 -1
  81. package/node_modules/@pi-harness/cli/package.json +1 -1
  82. package/node_modules/@pi-harness/host-webserver/package.json +1 -1
  83. package/node_modules/@pi-harness/web-app/package.json +1 -1
  84. package/package.json +10 -8
  85. package/packages/api-gateway/dist/marketplace-entries/official/agent-teams.json +1 -1
  86. package/packages/api-gateway/dist/marketplace-entries/official/anchored-standard.json +1 -1
  87. package/packages/api-gateway/dist/marketplace-entries/official/annotation.json +1 -1
  88. package/packages/api-gateway/dist/marketplace-entries/official/archify.json +1 -1
  89. package/packages/api-gateway/dist/marketplace-entries/official/at-file.json +1 -1
  90. package/packages/api-gateway/dist/marketplace-entries/official/auto-mode.json +1 -1
  91. package/packages/api-gateway/dist/marketplace-entries/official/better-sidebar.json +1 -1
  92. package/packages/api-gateway/dist/marketplace-entries/official/browser-fetch.json +1 -1
  93. package/packages/api-gateway/dist/marketplace-entries/official/browser-session.json +1 -1
  94. package/packages/api-gateway/dist/marketplace-entries/official/canvas-draw.json +1 -1
  95. package/packages/api-gateway/dist/marketplace-entries/official/change-verifier.json +1 -1
  96. package/packages/api-gateway/dist/marketplace-entries/official/cleaner.json +1 -1
  97. package/packages/api-gateway/dist/marketplace-entries/official/cli-notifier.json +1 -1
  98. package/packages/api-gateway/dist/marketplace-entries/official/code2skill.json +1 -1
  99. package/packages/api-gateway/dist/marketplace-entries/official/colleague-skill.json +1 -1
  100. package/packages/api-gateway/dist/marketplace-entries/official/context-doctor.json +1 -1
  101. package/packages/api-gateway/dist/marketplace-entries/official/context.json +1 -1
  102. package/packages/api-gateway/dist/marketplace-entries/official/cost-meter.json +1 -1
  103. package/packages/api-gateway/dist/marketplace-entries/official/dependency-checker.json +1 -1
  104. package/packages/api-gateway/dist/marketplace-entries/official/docker-sandbox.json +1 -1
  105. package/packages/api-gateway/dist/marketplace-entries/official/fail-logger.json +1 -1
  106. package/packages/api-gateway/dist/marketplace-entries/official/genui.json +1 -1
  107. package/packages/api-gateway/dist/marketplace-entries/official/git-time-capsule.json +1 -1
  108. package/packages/api-gateway/dist/marketplace-entries/official/graph-memory.json +1 -1
  109. package/packages/api-gateway/dist/marketplace-entries/official/history-compressor.json +1 -1
  110. package/packages/api-gateway/dist/marketplace-entries/official/hol-guard.json +1 -1
  111. package/packages/api-gateway/dist/marketplace-entries/official/i18n-pair.json +1 -1
  112. package/packages/api-gateway/dist/marketplace-entries/official/image-compressor.json +1 -1
  113. package/packages/api-gateway/dist/marketplace-entries/official/llm-verifier.json +1 -1
  114. package/packages/api-gateway/dist/marketplace-entries/official/mcp-client.json +1 -1
  115. package/packages/api-gateway/dist/marketplace-entries/official/mcp-panel.json +1 -1
  116. package/packages/api-gateway/dist/marketplace-entries/official/memory.json +1 -1
  117. package/packages/api-gateway/dist/marketplace-entries/official/mirage-bridge.json +1 -1
  118. package/packages/api-gateway/dist/marketplace-entries/official/mock-server.json +1 -1
  119. package/packages/api-gateway/dist/marketplace-entries/official/modlens.json +1 -1
  120. package/packages/api-gateway/dist/marketplace-entries/official/module-search.json +1 -1
  121. package/packages/api-gateway/dist/marketplace-entries/official/obsidian-sync.json +1 -1
  122. package/packages/api-gateway/dist/marketplace-entries/official/openpets.json +1 -1
  123. package/packages/api-gateway/dist/marketplace-entries/official/plan-execute.json +1 -1
  124. package/packages/api-gateway/dist/marketplace-entries/official/plugin-check.json +1 -1
  125. package/packages/api-gateway/dist/marketplace-entries/official/plugin-dev.json +1 -1
  126. package/packages/api-gateway/dist/marketplace-entries/official/plugin-finder.json +1 -1
  127. package/packages/api-gateway/dist/marketplace-entries/official/plugin-radar.json +1 -1
  128. package/packages/api-gateway/dist/marketplace-entries/official/plugin-stars.json +1 -1
  129. package/packages/api-gateway/dist/marketplace-entries/official/prompt-guard.json +1 -1
  130. package/packages/api-gateway/dist/marketplace-entries/official/prompt-library.json +1 -1
  131. package/packages/api-gateway/dist/marketplace-entries/official/readme-gen.json +1 -1
  132. package/packages/api-gateway/dist/marketplace-entries/official/recall-unread.json +1 -1
  133. package/packages/api-gateway/dist/marketplace-entries/official/reverse-skill.json +1 -1
  134. package/packages/api-gateway/dist/marketplace-entries/official/reviewer-bot.json +1 -1
  135. package/packages/api-gateway/dist/marketplace-entries/official/runtime-doctor.json +1 -1
  136. package/packages/api-gateway/dist/marketplace-entries/official/secure-audit.json +1 -1
  137. package/packages/api-gateway/dist/marketplace-entries/official/session-bookmarks.json +1 -1
  138. package/packages/api-gateway/dist/marketplace-entries/official/session-bridge.json +1 -1
  139. package/packages/api-gateway/dist/marketplace-entries/official/session-compare.json +1 -1
  140. package/packages/api-gateway/dist/marketplace-entries/official/session-export.json +1 -1
  141. package/packages/api-gateway/dist/marketplace-entries/official/session-insights.json +1 -1
  142. package/packages/api-gateway/dist/marketplace-entries/official/session-search.json +1 -1
  143. package/packages/api-gateway/dist/marketplace-entries/official/skill-catalog.json +1 -1
  144. package/packages/api-gateway/dist/marketplace-entries/official/skill-guard.json +1 -1
  145. package/packages/api-gateway/dist/marketplace-entries/official/sql-lens.json +1 -1
  146. package/packages/api-gateway/dist/marketplace-entries/official/synapse.json +1 -1
  147. package/packages/api-gateway/dist/marketplace-entries/official/tab-manager.json +1 -1
  148. package/packages/api-gateway/dist/marketplace-entries/official/taskboard.json +1 -1
  149. package/packages/api-gateway/dist/marketplace-entries/official/telemetry-blocker.json +1 -1
  150. package/packages/api-gateway/dist/marketplace-entries/official/test-harness.json +1 -1
  151. package/packages/api-gateway/dist/marketplace-entries/official/theme-studio.json +1 -1
  152. package/packages/api-gateway/dist/marketplace-entries/official/token-guard.json +1 -1
  153. package/packages/api-gateway/dist/marketplace-entries/official/turn-rewind.json +1 -1
  154. package/packages/api-gateway/dist/marketplace-entries/official/undo-savepoint.json +1 -1
  155. package/packages/api-gateway/dist/marketplace-entries/official/vision-toolkit.json +1 -1
  156. package/packages/api-gateway/dist/marketplace-entries/official/web-research.json +1 -1
  157. package/packages/api-gateway/dist/marketplace-entries/official/workspace-navigator.json +1 -1
  158. package/packages/api-gateway/dist/marketplace-entries/official/workspace-search.json +1 -1
  159. package/packages/api-gateway/dist/marketplace-entries/official/yaml-validator.json +1 -1
  160. package/packages/api-gateway/package.json +1 -1
  161. package/packages/api-gateway/src/marketplace-entries/official/agent-teams.json +1 -1
  162. package/packages/api-gateway/src/marketplace-entries/official/anchored-standard.json +1 -1
  163. package/packages/api-gateway/src/marketplace-entries/official/annotation.json +1 -1
  164. package/packages/api-gateway/src/marketplace-entries/official/archify.json +1 -1
  165. package/packages/api-gateway/src/marketplace-entries/official/at-file.json +1 -1
  166. package/packages/api-gateway/src/marketplace-entries/official/auto-mode.json +1 -1
  167. package/packages/api-gateway/src/marketplace-entries/official/better-sidebar.json +1 -1
  168. package/packages/api-gateway/src/marketplace-entries/official/browser-fetch.json +1 -1
  169. package/packages/api-gateway/src/marketplace-entries/official/browser-session.json +1 -1
  170. package/packages/api-gateway/src/marketplace-entries/official/canvas-draw.json +1 -1
  171. package/packages/api-gateway/src/marketplace-entries/official/change-verifier.json +1 -1
  172. package/packages/api-gateway/src/marketplace-entries/official/cleaner.json +1 -1
  173. package/packages/api-gateway/src/marketplace-entries/official/cli-notifier.json +1 -1
  174. package/packages/api-gateway/src/marketplace-entries/official/code2skill.json +1 -1
  175. package/packages/api-gateway/src/marketplace-entries/official/colleague-skill.json +1 -1
  176. package/packages/api-gateway/src/marketplace-entries/official/context-doctor.json +1 -1
  177. package/packages/api-gateway/src/marketplace-entries/official/context.json +1 -1
  178. package/packages/api-gateway/src/marketplace-entries/official/cost-meter.json +1 -1
  179. package/packages/api-gateway/src/marketplace-entries/official/dependency-checker.json +1 -1
  180. package/packages/api-gateway/src/marketplace-entries/official/docker-sandbox.json +1 -1
  181. package/packages/api-gateway/src/marketplace-entries/official/fail-logger.json +1 -1
  182. package/packages/api-gateway/src/marketplace-entries/official/genui.json +1 -1
  183. package/packages/api-gateway/src/marketplace-entries/official/git-time-capsule.json +1 -1
  184. package/packages/api-gateway/src/marketplace-entries/official/graph-memory.json +1 -1
  185. package/packages/api-gateway/src/marketplace-entries/official/history-compressor.json +1 -1
  186. package/packages/api-gateway/src/marketplace-entries/official/hol-guard.json +1 -1
  187. package/packages/api-gateway/src/marketplace-entries/official/i18n-pair.json +1 -1
  188. package/packages/api-gateway/src/marketplace-entries/official/image-compressor.json +1 -1
  189. package/packages/api-gateway/src/marketplace-entries/official/llm-verifier.json +1 -1
  190. package/packages/api-gateway/src/marketplace-entries/official/mcp-client.json +1 -1
  191. package/packages/api-gateway/src/marketplace-entries/official/mcp-panel.json +1 -1
  192. package/packages/api-gateway/src/marketplace-entries/official/memory.json +1 -1
  193. package/packages/api-gateway/src/marketplace-entries/official/mirage-bridge.json +1 -1
  194. package/packages/api-gateway/src/marketplace-entries/official/mock-server.json +1 -1
  195. package/packages/api-gateway/src/marketplace-entries/official/modlens.json +1 -1
  196. package/packages/api-gateway/src/marketplace-entries/official/module-search.json +1 -1
  197. package/packages/api-gateway/src/marketplace-entries/official/obsidian-sync.json +1 -1
  198. package/packages/api-gateway/src/marketplace-entries/official/openpets.json +1 -1
  199. package/packages/api-gateway/src/marketplace-entries/official/plan-execute.json +1 -1
  200. package/packages/api-gateway/src/marketplace-entries/official/plugin-check.json +1 -1
  201. package/packages/api-gateway/src/marketplace-entries/official/plugin-dev.json +1 -1
  202. package/packages/api-gateway/src/marketplace-entries/official/plugin-finder.json +1 -1
  203. package/packages/api-gateway/src/marketplace-entries/official/plugin-radar.json +1 -1
  204. package/packages/api-gateway/src/marketplace-entries/official/plugin-stars.json +1 -1
  205. package/packages/api-gateway/src/marketplace-entries/official/prompt-guard.json +1 -1
  206. package/packages/api-gateway/src/marketplace-entries/official/prompt-library.json +1 -1
  207. package/packages/api-gateway/src/marketplace-entries/official/readme-gen.json +1 -1
  208. package/packages/api-gateway/src/marketplace-entries/official/recall-unread.json +1 -1
  209. package/packages/api-gateway/src/marketplace-entries/official/reverse-skill.json +1 -1
  210. package/packages/api-gateway/src/marketplace-entries/official/reviewer-bot.json +1 -1
  211. package/packages/api-gateway/src/marketplace-entries/official/runtime-doctor.json +1 -1
  212. package/packages/api-gateway/src/marketplace-entries/official/secure-audit.json +1 -1
  213. package/packages/api-gateway/src/marketplace-entries/official/session-bookmarks.json +1 -1
  214. package/packages/api-gateway/src/marketplace-entries/official/session-bridge.json +1 -1
  215. package/packages/api-gateway/src/marketplace-entries/official/session-compare.json +1 -1
  216. package/packages/api-gateway/src/marketplace-entries/official/session-export.json +1 -1
  217. package/packages/api-gateway/src/marketplace-entries/official/session-insights.json +1 -1
  218. package/packages/api-gateway/src/marketplace-entries/official/session-search.json +1 -1
  219. package/packages/api-gateway/src/marketplace-entries/official/skill-catalog.json +1 -1
  220. package/packages/api-gateway/src/marketplace-entries/official/skill-guard.json +1 -1
  221. package/packages/api-gateway/src/marketplace-entries/official/sql-lens.json +1 -1
  222. package/packages/api-gateway/src/marketplace-entries/official/synapse.json +1 -1
  223. package/packages/api-gateway/src/marketplace-entries/official/tab-manager.json +1 -1
  224. package/packages/api-gateway/src/marketplace-entries/official/taskboard.json +1 -1
  225. package/packages/api-gateway/src/marketplace-entries/official/telemetry-blocker.json +1 -1
  226. package/packages/api-gateway/src/marketplace-entries/official/test-harness.json +1 -1
  227. package/packages/api-gateway/src/marketplace-entries/official/theme-studio.json +1 -1
  228. package/packages/api-gateway/src/marketplace-entries/official/token-guard.json +1 -1
  229. package/packages/api-gateway/src/marketplace-entries/official/turn-rewind.json +1 -1
  230. package/packages/api-gateway/src/marketplace-entries/official/undo-savepoint.json +1 -1
  231. package/packages/api-gateway/src/marketplace-entries/official/vision-toolkit.json +1 -1
  232. package/packages/api-gateway/src/marketplace-entries/official/web-research.json +1 -1
  233. package/packages/api-gateway/src/marketplace-entries/official/workspace-navigator.json +1 -1
  234. package/packages/api-gateway/src/marketplace-entries/official/workspace-search.json +1 -1
  235. package/packages/api-gateway/src/marketplace-entries/official/yaml-validator.json +1 -1
  236. package/packages/api-gateway/test/release-package.test.ts +5 -11
  237. package/packages/api-gateway/test/release-version.test.ts +2 -2
  238. package/packages/bundle-web-app/package.json +1 -1
  239. package/packages/cli/package.json +1 -1
  240. package/packages/host-webserver/package.json +1 -1
  241. package/node_modules/@pi-harness/core/LICENSE +0 -9
  242. package/node_modules/@pi-harness/core/dist/atomic-write.d.ts +0 -8
  243. package/node_modules/@pi-harness/core/dist/atomic-write.d.ts.map +0 -1
  244. package/node_modules/@pi-harness/core/dist/atomic-write.js +0 -40
  245. package/node_modules/@pi-harness/core/dist/atomic-write.js.map +0 -1
  246. package/node_modules/@pi-harness/core/dist/boot.d.ts +0 -13
  247. package/node_modules/@pi-harness/core/dist/boot.d.ts.map +0 -1
  248. package/node_modules/@pi-harness/core/dist/boot.js +0 -257
  249. package/node_modules/@pi-harness/core/dist/boot.js.map +0 -1
  250. package/node_modules/@pi-harness/core/dist/bounded-file.d.ts +0 -7
  251. package/node_modules/@pi-harness/core/dist/bounded-file.d.ts.map +0 -1
  252. package/node_modules/@pi-harness/core/dist/bounded-file.js +0 -50
  253. package/node_modules/@pi-harness/core/dist/bounded-file.js.map +0 -1
  254. package/node_modules/@pi-harness/core/dist/config.d.ts +0 -4
  255. package/node_modules/@pi-harness/core/dist/config.d.ts.map +0 -1
  256. package/node_modules/@pi-harness/core/dist/config.js +0 -29
  257. package/node_modules/@pi-harness/core/dist/config.js.map +0 -1
  258. package/node_modules/@pi-harness/core/dist/context.d.ts +0 -3
  259. package/node_modules/@pi-harness/core/dist/context.d.ts.map +0 -1
  260. package/node_modules/@pi-harness/core/dist/context.js +0 -2
  261. package/node_modules/@pi-harness/core/dist/context.js.map +0 -1
  262. package/node_modules/@pi-harness/core/dist/cordis-timer.d.ts +0 -15
  263. package/node_modules/@pi-harness/core/dist/cordis-timer.d.ts.map +0 -1
  264. package/node_modules/@pi-harness/core/dist/cordis-timer.js +0 -99
  265. package/node_modules/@pi-harness/core/dist/cordis-timer.js.map +0 -1
  266. package/node_modules/@pi-harness/core/dist/http.d.ts +0 -8
  267. package/node_modules/@pi-harness/core/dist/http.d.ts.map +0 -1
  268. package/node_modules/@pi-harness/core/dist/http.js +0 -27
  269. package/node_modules/@pi-harness/core/dist/http.js.map +0 -1
  270. package/node_modules/@pi-harness/core/dist/index.d.ts +0 -9
  271. package/node_modules/@pi-harness/core/dist/index.d.ts.map +0 -1
  272. package/node_modules/@pi-harness/core/dist/index.js +0 -8
  273. package/node_modules/@pi-harness/core/dist/index.js.map +0 -1
  274. package/node_modules/@pi-harness/core/dist/plugins/agent-teams.d.ts +0 -21
  275. package/node_modules/@pi-harness/core/dist/plugins/agent-teams.d.ts.map +0 -1
  276. package/node_modules/@pi-harness/core/dist/plugins/agent-teams.js +0 -1179
  277. package/node_modules/@pi-harness/core/dist/plugins/agent-teams.js.map +0 -1
  278. package/node_modules/@pi-harness/core/dist/plugins/anchored-standard.d.ts +0 -15
  279. package/node_modules/@pi-harness/core/dist/plugins/anchored-standard.d.ts.map +0 -1
  280. package/node_modules/@pi-harness/core/dist/plugins/anchored-standard.js +0 -112
  281. package/node_modules/@pi-harness/core/dist/plugins/anchored-standard.js.map +0 -1
  282. package/node_modules/@pi-harness/core/dist/plugins/annotation.d.ts +0 -19
  283. package/node_modules/@pi-harness/core/dist/plugins/annotation.d.ts.map +0 -1
  284. package/node_modules/@pi-harness/core/dist/plugins/annotation.js +0 -112
  285. package/node_modules/@pi-harness/core/dist/plugins/annotation.js.map +0 -1
  286. package/node_modules/@pi-harness/core/dist/plugins/archify.d.ts +0 -24
  287. package/node_modules/@pi-harness/core/dist/plugins/archify.d.ts.map +0 -1
  288. package/node_modules/@pi-harness/core/dist/plugins/archify.js +0 -145
  289. package/node_modules/@pi-harness/core/dist/plugins/archify.js.map +0 -1
  290. package/node_modules/@pi-harness/core/dist/plugins/at-file.d.ts +0 -12
  291. package/node_modules/@pi-harness/core/dist/plugins/at-file.d.ts.map +0 -1
  292. package/node_modules/@pi-harness/core/dist/plugins/at-file.js +0 -143
  293. package/node_modules/@pi-harness/core/dist/plugins/at-file.js.map +0 -1
  294. package/node_modules/@pi-harness/core/dist/plugins/auto-mode.d.ts +0 -15
  295. package/node_modules/@pi-harness/core/dist/plugins/auto-mode.d.ts.map +0 -1
  296. package/node_modules/@pi-harness/core/dist/plugins/auto-mode.js +0 -183
  297. package/node_modules/@pi-harness/core/dist/plugins/auto-mode.js.map +0 -1
  298. package/node_modules/@pi-harness/core/dist/plugins/better-sidebar.d.ts +0 -38
  299. package/node_modules/@pi-harness/core/dist/plugins/better-sidebar.d.ts.map +0 -1
  300. package/node_modules/@pi-harness/core/dist/plugins/better-sidebar.js +0 -99
  301. package/node_modules/@pi-harness/core/dist/plugins/better-sidebar.js.map +0 -1
  302. package/node_modules/@pi-harness/core/dist/plugins/browser-fetch.d.ts +0 -15
  303. package/node_modules/@pi-harness/core/dist/plugins/browser-fetch.d.ts.map +0 -1
  304. package/node_modules/@pi-harness/core/dist/plugins/browser-fetch.js +0 -359
  305. package/node_modules/@pi-harness/core/dist/plugins/browser-fetch.js.map +0 -1
  306. package/node_modules/@pi-harness/core/dist/plugins/browser-session.d.ts +0 -14
  307. package/node_modules/@pi-harness/core/dist/plugins/browser-session.d.ts.map +0 -1
  308. package/node_modules/@pi-harness/core/dist/plugins/browser-session.js +0 -604
  309. package/node_modules/@pi-harness/core/dist/plugins/browser-session.js.map +0 -1
  310. package/node_modules/@pi-harness/core/dist/plugins/canvas-draw.d.ts +0 -9
  311. package/node_modules/@pi-harness/core/dist/plugins/canvas-draw.d.ts.map +0 -1
  312. package/node_modules/@pi-harness/core/dist/plugins/canvas-draw.js +0 -140
  313. package/node_modules/@pi-harness/core/dist/plugins/canvas-draw.js.map +0 -1
  314. package/node_modules/@pi-harness/core/dist/plugins/change-verifier.d.ts +0 -9
  315. package/node_modules/@pi-harness/core/dist/plugins/change-verifier.d.ts.map +0 -1
  316. package/node_modules/@pi-harness/core/dist/plugins/change-verifier.js +0 -88
  317. package/node_modules/@pi-harness/core/dist/plugins/change-verifier.js.map +0 -1
  318. package/node_modules/@pi-harness/core/dist/plugins/cleaner.d.ts +0 -12
  319. package/node_modules/@pi-harness/core/dist/plugins/cleaner.d.ts.map +0 -1
  320. package/node_modules/@pi-harness/core/dist/plugins/cleaner.js +0 -353
  321. package/node_modules/@pi-harness/core/dist/plugins/cleaner.js.map +0 -1
  322. package/node_modules/@pi-harness/core/dist/plugins/cli-notifier.d.ts +0 -16
  323. package/node_modules/@pi-harness/core/dist/plugins/cli-notifier.d.ts.map +0 -1
  324. package/node_modules/@pi-harness/core/dist/plugins/cli-notifier.js +0 -167
  325. package/node_modules/@pi-harness/core/dist/plugins/cli-notifier.js.map +0 -1
  326. package/node_modules/@pi-harness/core/dist/plugins/code2skill.d.ts +0 -9
  327. package/node_modules/@pi-harness/core/dist/plugins/code2skill.d.ts.map +0 -1
  328. package/node_modules/@pi-harness/core/dist/plugins/code2skill.js +0 -235
  329. package/node_modules/@pi-harness/core/dist/plugins/code2skill.js.map +0 -1
  330. package/node_modules/@pi-harness/core/dist/plugins/colleague-skill.d.ts +0 -28
  331. package/node_modules/@pi-harness/core/dist/plugins/colleague-skill.d.ts.map +0 -1
  332. package/node_modules/@pi-harness/core/dist/plugins/colleague-skill.js +0 -129
  333. package/node_modules/@pi-harness/core/dist/plugins/colleague-skill.js.map +0 -1
  334. package/node_modules/@pi-harness/core/dist/plugins/context-doctor.d.ts +0 -35
  335. package/node_modules/@pi-harness/core/dist/plugins/context-doctor.d.ts.map +0 -1
  336. package/node_modules/@pi-harness/core/dist/plugins/context-doctor.js +0 -459
  337. package/node_modules/@pi-harness/core/dist/plugins/context-doctor.js.map +0 -1
  338. package/node_modules/@pi-harness/core/dist/plugins/context.d.ts +0 -9
  339. package/node_modules/@pi-harness/core/dist/plugins/context.d.ts.map +0 -1
  340. package/node_modules/@pi-harness/core/dist/plugins/context.js +0 -214
  341. package/node_modules/@pi-harness/core/dist/plugins/context.js.map +0 -1
  342. package/node_modules/@pi-harness/core/dist/plugins/cost-meter.d.ts +0 -36
  343. package/node_modules/@pi-harness/core/dist/plugins/cost-meter.d.ts.map +0 -1
  344. package/node_modules/@pi-harness/core/dist/plugins/cost-meter.js +0 -430
  345. package/node_modules/@pi-harness/core/dist/plugins/cost-meter.js.map +0 -1
  346. package/node_modules/@pi-harness/core/dist/plugins/dependency-checker.d.ts +0 -36
  347. package/node_modules/@pi-harness/core/dist/plugins/dependency-checker.d.ts.map +0 -1
  348. package/node_modules/@pi-harness/core/dist/plugins/dependency-checker.js +0 -570
  349. package/node_modules/@pi-harness/core/dist/plugins/dependency-checker.js.map +0 -1
  350. package/node_modules/@pi-harness/core/dist/plugins/docker-sandbox.d.ts +0 -9
  351. package/node_modules/@pi-harness/core/dist/plugins/docker-sandbox.d.ts.map +0 -1
  352. package/node_modules/@pi-harness/core/dist/plugins/docker-sandbox.js +0 -344
  353. package/node_modules/@pi-harness/core/dist/plugins/docker-sandbox.js.map +0 -1
  354. package/node_modules/@pi-harness/core/dist/plugins/fail-logger.d.ts +0 -9
  355. package/node_modules/@pi-harness/core/dist/plugins/fail-logger.d.ts.map +0 -1
  356. package/node_modules/@pi-harness/core/dist/plugins/fail-logger.js +0 -218
  357. package/node_modules/@pi-harness/core/dist/plugins/fail-logger.js.map +0 -1
  358. package/node_modules/@pi-harness/core/dist/plugins/genui.d.ts +0 -9
  359. package/node_modules/@pi-harness/core/dist/plugins/genui.d.ts.map +0 -1
  360. package/node_modules/@pi-harness/core/dist/plugins/genui.js +0 -144
  361. package/node_modules/@pi-harness/core/dist/plugins/genui.js.map +0 -1
  362. package/node_modules/@pi-harness/core/dist/plugins/git-time-capsule.d.ts +0 -15
  363. package/node_modules/@pi-harness/core/dist/plugins/git-time-capsule.d.ts.map +0 -1
  364. package/node_modules/@pi-harness/core/dist/plugins/git-time-capsule.js +0 -436
  365. package/node_modules/@pi-harness/core/dist/plugins/git-time-capsule.js.map +0 -1
  366. package/node_modules/@pi-harness/core/dist/plugins/graph-memory.d.ts +0 -16
  367. package/node_modules/@pi-harness/core/dist/plugins/graph-memory.d.ts.map +0 -1
  368. package/node_modules/@pi-harness/core/dist/plugins/graph-memory.js +0 -669
  369. package/node_modules/@pi-harness/core/dist/plugins/graph-memory.js.map +0 -1
  370. package/node_modules/@pi-harness/core/dist/plugins/history-compressor.d.ts +0 -15
  371. package/node_modules/@pi-harness/core/dist/plugins/history-compressor.d.ts.map +0 -1
  372. package/node_modules/@pi-harness/core/dist/plugins/history-compressor.js +0 -99
  373. package/node_modules/@pi-harness/core/dist/plugins/history-compressor.js.map +0 -1
  374. package/node_modules/@pi-harness/core/dist/plugins/hol-guard.d.ts +0 -29
  375. package/node_modules/@pi-harness/core/dist/plugins/hol-guard.d.ts.map +0 -1
  376. package/node_modules/@pi-harness/core/dist/plugins/hol-guard.js +0 -159
  377. package/node_modules/@pi-harness/core/dist/plugins/hol-guard.js.map +0 -1
  378. package/node_modules/@pi-harness/core/dist/plugins/i18n-pair.d.ts +0 -12
  379. package/node_modules/@pi-harness/core/dist/plugins/i18n-pair.d.ts.map +0 -1
  380. package/node_modules/@pi-harness/core/dist/plugins/i18n-pair.js +0 -332
  381. package/node_modules/@pi-harness/core/dist/plugins/i18n-pair.js.map +0 -1
  382. package/node_modules/@pi-harness/core/dist/plugins/image-compressor.d.ts +0 -15
  383. package/node_modules/@pi-harness/core/dist/plugins/image-compressor.d.ts.map +0 -1
  384. package/node_modules/@pi-harness/core/dist/plugins/image-compressor.js +0 -223
  385. package/node_modules/@pi-harness/core/dist/plugins/image-compressor.js.map +0 -1
  386. package/node_modules/@pi-harness/core/dist/plugins/llm-verifier.d.ts +0 -42
  387. package/node_modules/@pi-harness/core/dist/plugins/llm-verifier.d.ts.map +0 -1
  388. package/node_modules/@pi-harness/core/dist/plugins/llm-verifier.js +0 -138
  389. package/node_modules/@pi-harness/core/dist/plugins/llm-verifier.js.map +0 -1
  390. package/node_modules/@pi-harness/core/dist/plugins/mcp-client.d.ts +0 -19
  391. package/node_modules/@pi-harness/core/dist/plugins/mcp-client.d.ts.map +0 -1
  392. package/node_modules/@pi-harness/core/dist/plugins/mcp-client.js +0 -1288
  393. package/node_modules/@pi-harness/core/dist/plugins/mcp-client.js.map +0 -1
  394. package/node_modules/@pi-harness/core/dist/plugins/mcp-panel.d.ts +0 -14
  395. package/node_modules/@pi-harness/core/dist/plugins/mcp-panel.d.ts.map +0 -1
  396. package/node_modules/@pi-harness/core/dist/plugins/mcp-panel.js +0 -194
  397. package/node_modules/@pi-harness/core/dist/plugins/mcp-panel.js.map +0 -1
  398. package/node_modules/@pi-harness/core/dist/plugins/memory.d.ts +0 -15
  399. package/node_modules/@pi-harness/core/dist/plugins/memory.d.ts.map +0 -1
  400. package/node_modules/@pi-harness/core/dist/plugins/memory.js +0 -394
  401. package/node_modules/@pi-harness/core/dist/plugins/memory.js.map +0 -1
  402. package/node_modules/@pi-harness/core/dist/plugins/mirage-bridge.d.ts +0 -23
  403. package/node_modules/@pi-harness/core/dist/plugins/mirage-bridge.d.ts.map +0 -1
  404. package/node_modules/@pi-harness/core/dist/plugins/mirage-bridge.js +0 -159
  405. package/node_modules/@pi-harness/core/dist/plugins/mirage-bridge.js.map +0 -1
  406. package/node_modules/@pi-harness/core/dist/plugins/mock-server.d.ts +0 -22
  407. package/node_modules/@pi-harness/core/dist/plugins/mock-server.d.ts.map +0 -1
  408. package/node_modules/@pi-harness/core/dist/plugins/mock-server.js +0 -180
  409. package/node_modules/@pi-harness/core/dist/plugins/mock-server.js.map +0 -1
  410. package/node_modules/@pi-harness/core/dist/plugins/model.d.ts +0 -11
  411. package/node_modules/@pi-harness/core/dist/plugins/model.d.ts.map +0 -1
  412. package/node_modules/@pi-harness/core/dist/plugins/model.js +0 -17
  413. package/node_modules/@pi-harness/core/dist/plugins/model.js.map +0 -1
  414. package/node_modules/@pi-harness/core/dist/plugins/models.d.ts +0 -16
  415. package/node_modules/@pi-harness/core/dist/plugins/models.d.ts.map +0 -1
  416. package/node_modules/@pi-harness/core/dist/plugins/models.js +0 -35
  417. package/node_modules/@pi-harness/core/dist/plugins/models.js.map +0 -1
  418. package/node_modules/@pi-harness/core/dist/plugins/modlens.d.ts +0 -15
  419. package/node_modules/@pi-harness/core/dist/plugins/modlens.d.ts.map +0 -1
  420. package/node_modules/@pi-harness/core/dist/plugins/modlens.js +0 -470
  421. package/node_modules/@pi-harness/core/dist/plugins/modlens.js.map +0 -1
  422. package/node_modules/@pi-harness/core/dist/plugins/module-search.d.ts +0 -28
  423. package/node_modules/@pi-harness/core/dist/plugins/module-search.d.ts.map +0 -1
  424. package/node_modules/@pi-harness/core/dist/plugins/module-search.js +0 -193
  425. package/node_modules/@pi-harness/core/dist/plugins/module-search.js.map +0 -1
  426. package/node_modules/@pi-harness/core/dist/plugins/obsidian-sync.d.ts +0 -14
  427. package/node_modules/@pi-harness/core/dist/plugins/obsidian-sync.d.ts.map +0 -1
  428. package/node_modules/@pi-harness/core/dist/plugins/obsidian-sync.js +0 -88
  429. package/node_modules/@pi-harness/core/dist/plugins/obsidian-sync.js.map +0 -1
  430. package/node_modules/@pi-harness/core/dist/plugins/openpets.d.ts +0 -14
  431. package/node_modules/@pi-harness/core/dist/plugins/openpets.d.ts.map +0 -1
  432. package/node_modules/@pi-harness/core/dist/plugins/openpets.js +0 -258
  433. package/node_modules/@pi-harness/core/dist/plugins/openpets.js.map +0 -1
  434. package/node_modules/@pi-harness/core/dist/plugins/plan-execute.d.ts +0 -11
  435. package/node_modules/@pi-harness/core/dist/plugins/plan-execute.d.ts.map +0 -1
  436. package/node_modules/@pi-harness/core/dist/plugins/plan-execute.js +0 -91
  437. package/node_modules/@pi-harness/core/dist/plugins/plan-execute.js.map +0 -1
  438. package/node_modules/@pi-harness/core/dist/plugins/plugin-check.d.ts +0 -47
  439. package/node_modules/@pi-harness/core/dist/plugins/plugin-check.d.ts.map +0 -1
  440. package/node_modules/@pi-harness/core/dist/plugins/plugin-check.js +0 -298
  441. package/node_modules/@pi-harness/core/dist/plugins/plugin-check.js.map +0 -1
  442. package/node_modules/@pi-harness/core/dist/plugins/plugin-dev.d.ts +0 -9
  443. package/node_modules/@pi-harness/core/dist/plugins/plugin-dev.d.ts.map +0 -1
  444. package/node_modules/@pi-harness/core/dist/plugins/plugin-dev.js +0 -177
  445. package/node_modules/@pi-harness/core/dist/plugins/plugin-dev.js.map +0 -1
  446. package/node_modules/@pi-harness/core/dist/plugins/plugin-finder.d.ts +0 -17
  447. package/node_modules/@pi-harness/core/dist/plugins/plugin-finder.d.ts.map +0 -1
  448. package/node_modules/@pi-harness/core/dist/plugins/plugin-finder.js +0 -216
  449. package/node_modules/@pi-harness/core/dist/plugins/plugin-finder.js.map +0 -1
  450. package/node_modules/@pi-harness/core/dist/plugins/plugin-radar.d.ts +0 -33
  451. package/node_modules/@pi-harness/core/dist/plugins/plugin-radar.d.ts.map +0 -1
  452. package/node_modules/@pi-harness/core/dist/plugins/plugin-radar.js +0 -247
  453. package/node_modules/@pi-harness/core/dist/plugins/plugin-radar.js.map +0 -1
  454. package/node_modules/@pi-harness/core/dist/plugins/plugin-stars.d.ts +0 -45
  455. package/node_modules/@pi-harness/core/dist/plugins/plugin-stars.d.ts.map +0 -1
  456. package/node_modules/@pi-harness/core/dist/plugins/plugin-stars.js +0 -366
  457. package/node_modules/@pi-harness/core/dist/plugins/plugin-stars.js.map +0 -1
  458. package/node_modules/@pi-harness/core/dist/plugins/prompt-guard.d.ts +0 -9
  459. package/node_modules/@pi-harness/core/dist/plugins/prompt-guard.d.ts.map +0 -1
  460. package/node_modules/@pi-harness/core/dist/plugins/prompt-guard.js +0 -165
  461. package/node_modules/@pi-harness/core/dist/plugins/prompt-guard.js.map +0 -1
  462. package/node_modules/@pi-harness/core/dist/plugins/prompt-library.d.ts +0 -26
  463. package/node_modules/@pi-harness/core/dist/plugins/prompt-library.d.ts.map +0 -1
  464. package/node_modules/@pi-harness/core/dist/plugins/prompt-library.js +0 -145
  465. package/node_modules/@pi-harness/core/dist/plugins/prompt-library.js.map +0 -1
  466. package/node_modules/@pi-harness/core/dist/plugins/readme-gen.d.ts +0 -29
  467. package/node_modules/@pi-harness/core/dist/plugins/readme-gen.d.ts.map +0 -1
  468. package/node_modules/@pi-harness/core/dist/plugins/readme-gen.js +0 -580
  469. package/node_modules/@pi-harness/core/dist/plugins/readme-gen.js.map +0 -1
  470. package/node_modules/@pi-harness/core/dist/plugins/recall-unread.d.ts +0 -24
  471. package/node_modules/@pi-harness/core/dist/plugins/recall-unread.d.ts.map +0 -1
  472. package/node_modules/@pi-harness/core/dist/plugins/recall-unread.js +0 -467
  473. package/node_modules/@pi-harness/core/dist/plugins/recall-unread.js.map +0 -1
  474. package/node_modules/@pi-harness/core/dist/plugins/resources.d.ts +0 -19
  475. package/node_modules/@pi-harness/core/dist/plugins/resources.d.ts.map +0 -1
  476. package/node_modules/@pi-harness/core/dist/plugins/resources.js +0 -126
  477. package/node_modules/@pi-harness/core/dist/plugins/resources.js.map +0 -1
  478. package/node_modules/@pi-harness/core/dist/plugins/reverse-skill.d.ts +0 -23
  479. package/node_modules/@pi-harness/core/dist/plugins/reverse-skill.d.ts.map +0 -1
  480. package/node_modules/@pi-harness/core/dist/plugins/reverse-skill.js +0 -61
  481. package/node_modules/@pi-harness/core/dist/plugins/reverse-skill.js.map +0 -1
  482. package/node_modules/@pi-harness/core/dist/plugins/reviewer-bot.d.ts +0 -15
  483. package/node_modules/@pi-harness/core/dist/plugins/reviewer-bot.d.ts.map +0 -1
  484. package/node_modules/@pi-harness/core/dist/plugins/reviewer-bot.js +0 -152
  485. package/node_modules/@pi-harness/core/dist/plugins/reviewer-bot.js.map +0 -1
  486. package/node_modules/@pi-harness/core/dist/plugins/runtime-doctor.d.ts +0 -34
  487. package/node_modules/@pi-harness/core/dist/plugins/runtime-doctor.d.ts.map +0 -1
  488. package/node_modules/@pi-harness/core/dist/plugins/runtime-doctor.js +0 -117
  489. package/node_modules/@pi-harness/core/dist/plugins/runtime-doctor.js.map +0 -1
  490. package/node_modules/@pi-harness/core/dist/plugins/runtime.d.ts +0 -14
  491. package/node_modules/@pi-harness/core/dist/plugins/runtime.d.ts.map +0 -1
  492. package/node_modules/@pi-harness/core/dist/plugins/runtime.js +0 -159
  493. package/node_modules/@pi-harness/core/dist/plugins/runtime.js.map +0 -1
  494. package/node_modules/@pi-harness/core/dist/plugins/secure-audit.d.ts +0 -32
  495. package/node_modules/@pi-harness/core/dist/plugins/secure-audit.d.ts.map +0 -1
  496. package/node_modules/@pi-harness/core/dist/plugins/secure-audit.js +0 -139
  497. package/node_modules/@pi-harness/core/dist/plugins/secure-audit.js.map +0 -1
  498. package/node_modules/@pi-harness/core/dist/plugins/session-bookmarks.d.ts +0 -16
  499. package/node_modules/@pi-harness/core/dist/plugins/session-bookmarks.d.ts.map +0 -1
  500. package/node_modules/@pi-harness/core/dist/plugins/session-bookmarks.js +0 -90
  501. package/node_modules/@pi-harness/core/dist/plugins/session-bookmarks.js.map +0 -1
  502. package/node_modules/@pi-harness/core/dist/plugins/session-bridge.d.ts +0 -45
  503. package/node_modules/@pi-harness/core/dist/plugins/session-bridge.d.ts.map +0 -1
  504. package/node_modules/@pi-harness/core/dist/plugins/session-bridge.js +0 -578
  505. package/node_modules/@pi-harness/core/dist/plugins/session-bridge.js.map +0 -1
  506. package/node_modules/@pi-harness/core/dist/plugins/session-compare.d.ts +0 -34
  507. package/node_modules/@pi-harness/core/dist/plugins/session-compare.d.ts.map +0 -1
  508. package/node_modules/@pi-harness/core/dist/plugins/session-compare.js +0 -153
  509. package/node_modules/@pi-harness/core/dist/plugins/session-compare.js.map +0 -1
  510. package/node_modules/@pi-harness/core/dist/plugins/session-export.d.ts +0 -10
  511. package/node_modules/@pi-harness/core/dist/plugins/session-export.d.ts.map +0 -1
  512. package/node_modules/@pi-harness/core/dist/plugins/session-export.js +0 -93
  513. package/node_modules/@pi-harness/core/dist/plugins/session-export.js.map +0 -1
  514. package/node_modules/@pi-harness/core/dist/plugins/session-insights.d.ts +0 -44
  515. package/node_modules/@pi-harness/core/dist/plugins/session-insights.d.ts.map +0 -1
  516. package/node_modules/@pi-harness/core/dist/plugins/session-insights.js +0 -432
  517. package/node_modules/@pi-harness/core/dist/plugins/session-insights.js.map +0 -1
  518. package/node_modules/@pi-harness/core/dist/plugins/session-search.d.ts +0 -21
  519. package/node_modules/@pi-harness/core/dist/plugins/session-search.d.ts.map +0 -1
  520. package/node_modules/@pi-harness/core/dist/plugins/session-search.js +0 -125
  521. package/node_modules/@pi-harness/core/dist/plugins/session-search.js.map +0 -1
  522. package/node_modules/@pi-harness/core/dist/plugins/session.d.ts +0 -15
  523. package/node_modules/@pi-harness/core/dist/plugins/session.d.ts.map +0 -1
  524. package/node_modules/@pi-harness/core/dist/plugins/session.js +0 -29
  525. package/node_modules/@pi-harness/core/dist/plugins/session.js.map +0 -1
  526. package/node_modules/@pi-harness/core/dist/plugins/skill-catalog.d.ts +0 -27
  527. package/node_modules/@pi-harness/core/dist/plugins/skill-catalog.d.ts.map +0 -1
  528. package/node_modules/@pi-harness/core/dist/plugins/skill-catalog.js +0 -98
  529. package/node_modules/@pi-harness/core/dist/plugins/skill-catalog.js.map +0 -1
  530. package/node_modules/@pi-harness/core/dist/plugins/skill-guard.d.ts +0 -27
  531. package/node_modules/@pi-harness/core/dist/plugins/skill-guard.d.ts.map +0 -1
  532. package/node_modules/@pi-harness/core/dist/plugins/skill-guard.js +0 -319
  533. package/node_modules/@pi-harness/core/dist/plugins/skill-guard.js.map +0 -1
  534. package/node_modules/@pi-harness/core/dist/plugins/sql-lens-worker.d.ts +0 -2
  535. package/node_modules/@pi-harness/core/dist/plugins/sql-lens-worker.d.ts.map +0 -1
  536. package/node_modules/@pi-harness/core/dist/plugins/sql-lens-worker.js +0 -206
  537. package/node_modules/@pi-harness/core/dist/plugins/sql-lens-worker.js.map +0 -1
  538. package/node_modules/@pi-harness/core/dist/plugins/sql-lens.d.ts +0 -14
  539. package/node_modules/@pi-harness/core/dist/plugins/sql-lens.d.ts.map +0 -1
  540. package/node_modules/@pi-harness/core/dist/plugins/sql-lens.js +0 -318
  541. package/node_modules/@pi-harness/core/dist/plugins/sql-lens.js.map +0 -1
  542. package/node_modules/@pi-harness/core/dist/plugins/stdio.d.ts +0 -11
  543. package/node_modules/@pi-harness/core/dist/plugins/stdio.d.ts.map +0 -1
  544. package/node_modules/@pi-harness/core/dist/plugins/stdio.js +0 -80
  545. package/node_modules/@pi-harness/core/dist/plugins/stdio.js.map +0 -1
  546. package/node_modules/@pi-harness/core/dist/plugins/synapse.d.ts +0 -38
  547. package/node_modules/@pi-harness/core/dist/plugins/synapse.d.ts.map +0 -1
  548. package/node_modules/@pi-harness/core/dist/plugins/synapse.js +0 -101
  549. package/node_modules/@pi-harness/core/dist/plugins/synapse.js.map +0 -1
  550. package/node_modules/@pi-harness/core/dist/plugins/tab-manager.d.ts +0 -9
  551. package/node_modules/@pi-harness/core/dist/plugins/tab-manager.d.ts.map +0 -1
  552. package/node_modules/@pi-harness/core/dist/plugins/tab-manager.js +0 -240
  553. package/node_modules/@pi-harness/core/dist/plugins/tab-manager.js.map +0 -1
  554. package/node_modules/@pi-harness/core/dist/plugins/taskboard.d.ts +0 -15
  555. package/node_modules/@pi-harness/core/dist/plugins/taskboard.d.ts.map +0 -1
  556. package/node_modules/@pi-harness/core/dist/plugins/taskboard.js +0 -375
  557. package/node_modules/@pi-harness/core/dist/plugins/taskboard.js.map +0 -1
  558. package/node_modules/@pi-harness/core/dist/plugins/telemetry-blocker.d.ts +0 -11
  559. package/node_modules/@pi-harness/core/dist/plugins/telemetry-blocker.d.ts.map +0 -1
  560. package/node_modules/@pi-harness/core/dist/plugins/telemetry-blocker.js +0 -76
  561. package/node_modules/@pi-harness/core/dist/plugins/telemetry-blocker.js.map +0 -1
  562. package/node_modules/@pi-harness/core/dist/plugins/test-harness.d.ts +0 -14
  563. package/node_modules/@pi-harness/core/dist/plugins/test-harness.d.ts.map +0 -1
  564. package/node_modules/@pi-harness/core/dist/plugins/test-harness.js +0 -276
  565. package/node_modules/@pi-harness/core/dist/plugins/test-harness.js.map +0 -1
  566. package/node_modules/@pi-harness/core/dist/plugins/theme-studio.d.ts +0 -29
  567. package/node_modules/@pi-harness/core/dist/plugins/theme-studio.d.ts.map +0 -1
  568. package/node_modules/@pi-harness/core/dist/plugins/theme-studio.js +0 -143
  569. package/node_modules/@pi-harness/core/dist/plugins/theme-studio.js.map +0 -1
  570. package/node_modules/@pi-harness/core/dist/plugins/token-guard.d.ts +0 -15
  571. package/node_modules/@pi-harness/core/dist/plugins/token-guard.d.ts.map +0 -1
  572. package/node_modules/@pi-harness/core/dist/plugins/token-guard.js +0 -210
  573. package/node_modules/@pi-harness/core/dist/plugins/token-guard.js.map +0 -1
  574. package/node_modules/@pi-harness/core/dist/plugins/tools.d.ts +0 -13
  575. package/node_modules/@pi-harness/core/dist/plugins/tools.d.ts.map +0 -1
  576. package/node_modules/@pi-harness/core/dist/plugins/tools.js +0 -23
  577. package/node_modules/@pi-harness/core/dist/plugins/tools.js.map +0 -1
  578. package/node_modules/@pi-harness/core/dist/plugins/turn-rewind.d.ts +0 -36
  579. package/node_modules/@pi-harness/core/dist/plugins/turn-rewind.d.ts.map +0 -1
  580. package/node_modules/@pi-harness/core/dist/plugins/turn-rewind.js +0 -378
  581. package/node_modules/@pi-harness/core/dist/plugins/turn-rewind.js.map +0 -1
  582. package/node_modules/@pi-harness/core/dist/plugins/undo-savepoint.d.ts +0 -17
  583. package/node_modules/@pi-harness/core/dist/plugins/undo-savepoint.d.ts.map +0 -1
  584. package/node_modules/@pi-harness/core/dist/plugins/undo-savepoint.js +0 -353
  585. package/node_modules/@pi-harness/core/dist/plugins/undo-savepoint.js.map +0 -1
  586. package/node_modules/@pi-harness/core/dist/plugins/vision-toolkit.d.ts +0 -36
  587. package/node_modules/@pi-harness/core/dist/plugins/vision-toolkit.d.ts.map +0 -1
  588. package/node_modules/@pi-harness/core/dist/plugins/vision-toolkit.js +0 -468
  589. package/node_modules/@pi-harness/core/dist/plugins/vision-toolkit.js.map +0 -1
  590. package/node_modules/@pi-harness/core/dist/plugins/web-research.d.ts +0 -17
  591. package/node_modules/@pi-harness/core/dist/plugins/web-research.d.ts.map +0 -1
  592. package/node_modules/@pi-harness/core/dist/plugins/web-research.js +0 -284
  593. package/node_modules/@pi-harness/core/dist/plugins/web-research.js.map +0 -1
  594. package/node_modules/@pi-harness/core/dist/plugins/workspace-navigator.d.ts +0 -42
  595. package/node_modules/@pi-harness/core/dist/plugins/workspace-navigator.d.ts.map +0 -1
  596. package/node_modules/@pi-harness/core/dist/plugins/workspace-navigator.js +0 -168
  597. package/node_modules/@pi-harness/core/dist/plugins/workspace-navigator.js.map +0 -1
  598. package/node_modules/@pi-harness/core/dist/plugins/workspace-search.d.ts +0 -15
  599. package/node_modules/@pi-harness/core/dist/plugins/workspace-search.d.ts.map +0 -1
  600. package/node_modules/@pi-harness/core/dist/plugins/workspace-search.js +0 -167
  601. package/node_modules/@pi-harness/core/dist/plugins/workspace-search.js.map +0 -1
  602. package/node_modules/@pi-harness/core/dist/plugins/yaml-validator.d.ts +0 -9
  603. package/node_modules/@pi-harness/core/dist/plugins/yaml-validator.d.ts.map +0 -1
  604. package/node_modules/@pi-harness/core/dist/plugins/yaml-validator.js +0 -203
  605. package/node_modules/@pi-harness/core/dist/plugins/yaml-validator.js.map +0 -1
  606. package/node_modules/@pi-harness/core/dist/profile.d.ts +0 -9
  607. package/node_modules/@pi-harness/core/dist/profile.d.ts.map +0 -1
  608. package/node_modules/@pi-harness/core/dist/profile.js +0 -33
  609. package/node_modules/@pi-harness/core/dist/profile.js.map +0 -1
  610. package/node_modules/@pi-harness/core/dist/runtime.d.ts +0 -16
  611. package/node_modules/@pi-harness/core/dist/runtime.d.ts.map +0 -1
  612. package/node_modules/@pi-harness/core/dist/runtime.js +0 -47
  613. package/node_modules/@pi-harness/core/dist/runtime.js.map +0 -1
  614. package/node_modules/@pi-harness/core/dist/services.d.ts +0 -118
  615. package/node_modules/@pi-harness/core/dist/services.d.ts.map +0 -1
  616. package/node_modules/@pi-harness/core/dist/services.js +0 -115
  617. package/node_modules/@pi-harness/core/dist/services.js.map +0 -1
  618. package/node_modules/@pi-harness/core/dist/stdio.d.ts +0 -37
  619. package/node_modules/@pi-harness/core/dist/stdio.d.ts.map +0 -1
  620. package/node_modules/@pi-harness/core/dist/stdio.js +0 -356
  621. package/node_modules/@pi-harness/core/dist/stdio.js.map +0 -1
  622. package/node_modules/@pi-harness/core/dist/workspace-path.d.ts +0 -13
  623. package/node_modules/@pi-harness/core/dist/workspace-path.d.ts.map +0 -1
  624. package/node_modules/@pi-harness/core/dist/workspace-path.js +0 -71
  625. package/node_modules/@pi-harness/core/dist/workspace-path.js.map +0 -1
  626. package/node_modules/@pi-harness/core/package.json +0 -42
  627. package/node_modules/@pi-harness/core/profiles/default/cordis.yml +0 -122
  628. package/node_modules/@pi-harness/core/profiles/development/cordis.yml +0 -47
  629. package/packages/client-web/LICENSE +0 -9
  630. package/packages/client-web/dist/agent-teams-view.d.ts +0 -70
  631. package/packages/client-web/dist/agent-teams-view.d.ts.map +0 -1
  632. package/packages/client-web/dist/agent-teams-view.js +0 -159
  633. package/packages/client-web/dist/agent-teams-view.js.map +0 -1
  634. package/packages/client-web/dist/annotation-ui.d.ts +0 -11
  635. package/packages/client-web/dist/annotation-ui.d.ts.map +0 -1
  636. package/packages/client-web/dist/annotation-ui.js +0 -24
  637. package/packages/client-web/dist/annotation-ui.js.map +0 -1
  638. package/packages/client-web/dist/at-file-view.d.ts +0 -10
  639. package/packages/client-web/dist/at-file-view.d.ts.map +0 -1
  640. package/packages/client-web/dist/at-file-view.js +0 -65
  641. package/packages/client-web/dist/at-file-view.js.map +0 -1
  642. package/packages/client-web/dist/browser-fetch-view.d.ts +0 -22
  643. package/packages/client-web/dist/browser-fetch-view.d.ts.map +0 -1
  644. package/packages/client-web/dist/browser-fetch-view.js +0 -101
  645. package/packages/client-web/dist/browser-fetch-view.js.map +0 -1
  646. package/packages/client-web/dist/browser-session-view.d.ts +0 -39
  647. package/packages/client-web/dist/browser-session-view.d.ts.map +0 -1
  648. package/packages/client-web/dist/browser-session-view.js +0 -211
  649. package/packages/client-web/dist/browser-session-view.js.map +0 -1
  650. package/packages/client-web/dist/cleaner-view.d.ts +0 -29
  651. package/packages/client-web/dist/cleaner-view.d.ts.map +0 -1
  652. package/packages/client-web/dist/cleaner-view.js +0 -191
  653. package/packages/client-web/dist/cleaner-view.js.map +0 -1
  654. package/packages/client-web/dist/context-doctor-view.d.ts +0 -35
  655. package/packages/client-web/dist/context-doctor-view.d.ts.map +0 -1
  656. package/packages/client-web/dist/context-doctor-view.js +0 -129
  657. package/packages/client-web/dist/context-doctor-view.js.map +0 -1
  658. package/packages/client-web/dist/context-insights-view.d.ts +0 -31
  659. package/packages/client-web/dist/context-insights-view.d.ts.map +0 -1
  660. package/packages/client-web/dist/context-insights-view.js +0 -90
  661. package/packages/client-web/dist/context-insights-view.js.map +0 -1
  662. package/packages/client-web/dist/control-room.d.ts +0 -270
  663. package/packages/client-web/dist/control-room.d.ts.map +0 -1
  664. package/packages/client-web/dist/control-room.js +0 -157
  665. package/packages/client-web/dist/control-room.js.map +0 -1
  666. package/packages/client-web/dist/cost-meter-view.d.ts +0 -16
  667. package/packages/client-web/dist/cost-meter-view.d.ts.map +0 -1
  668. package/packages/client-web/dist/cost-meter-view.js +0 -43
  669. package/packages/client-web/dist/cost-meter-view.js.map +0 -1
  670. package/packages/client-web/dist/dependency-checker-view.d.ts +0 -24
  671. package/packages/client-web/dist/dependency-checker-view.d.ts.map +0 -1
  672. package/packages/client-web/dist/dependency-checker-view.js +0 -195
  673. package/packages/client-web/dist/dependency-checker-view.js.map +0 -1
  674. package/packages/client-web/dist/design-contract.d.ts +0 -85
  675. package/packages/client-web/dist/design-contract.d.ts.map +0 -1
  676. package/packages/client-web/dist/design-contract.js +0 -258
  677. package/packages/client-web/dist/design-contract.js.map +0 -1
  678. package/packages/client-web/dist/docker-sandbox-view.d.ts +0 -28
  679. package/packages/client-web/dist/docker-sandbox-view.d.ts.map +0 -1
  680. package/packages/client-web/dist/docker-sandbox-view.js +0 -152
  681. package/packages/client-web/dist/docker-sandbox-view.js.map +0 -1
  682. package/packages/client-web/dist/fail-logger-view.d.ts +0 -16
  683. package/packages/client-web/dist/fail-logger-view.d.ts.map +0 -1
  684. package/packages/client-web/dist/fail-logger-view.js +0 -97
  685. package/packages/client-web/dist/fail-logger-view.js.map +0 -1
  686. package/packages/client-web/dist/genui-view.d.ts +0 -28
  687. package/packages/client-web/dist/genui-view.d.ts.map +0 -1
  688. package/packages/client-web/dist/genui-view.js +0 -62
  689. package/packages/client-web/dist/genui-view.js.map +0 -1
  690. package/packages/client-web/dist/git-time-capsule-view.d.ts +0 -31
  691. package/packages/client-web/dist/git-time-capsule-view.d.ts.map +0 -1
  692. package/packages/client-web/dist/git-time-capsule-view.js +0 -203
  693. package/packages/client-web/dist/git-time-capsule-view.js.map +0 -1
  694. package/packages/client-web/dist/graph-memory-view.d.ts +0 -39
  695. package/packages/client-web/dist/graph-memory-view.d.ts.map +0 -1
  696. package/packages/client-web/dist/graph-memory-view.js +0 -82
  697. package/packages/client-web/dist/graph-memory-view.js.map +0 -1
  698. package/packages/client-web/dist/i18n-pair-view.d.ts +0 -32
  699. package/packages/client-web/dist/i18n-pair-view.d.ts.map +0 -1
  700. package/packages/client-web/dist/i18n-pair-view.js +0 -182
  701. package/packages/client-web/dist/i18n-pair-view.js.map +0 -1
  702. package/packages/client-web/dist/index.d.ts +0 -20
  703. package/packages/client-web/dist/index.d.ts.map +0 -1
  704. package/packages/client-web/dist/index.js +0 -27
  705. package/packages/client-web/dist/index.js.map +0 -1
  706. package/packages/client-web/dist/markdown.d.ts +0 -5
  707. package/packages/client-web/dist/markdown.d.ts.map +0 -1
  708. package/packages/client-web/dist/markdown.js +0 -20
  709. package/packages/client-web/dist/markdown.js.map +0 -1
  710. package/packages/client-web/dist/marketplace-catalog.d.ts +0 -3
  711. package/packages/client-web/dist/marketplace-catalog.d.ts.map +0 -1
  712. package/packages/client-web/dist/marketplace-catalog.js +0 -10
  713. package/packages/client-web/dist/marketplace-catalog.js.map +0 -1
  714. package/packages/client-web/dist/marketplace-navigation.d.ts +0 -19
  715. package/packages/client-web/dist/marketplace-navigation.d.ts.map +0 -1
  716. package/packages/client-web/dist/marketplace-navigation.js +0 -31
  717. package/packages/client-web/dist/marketplace-navigation.js.map +0 -1
  718. package/packages/client-web/dist/mcp-client-view.d.ts +0 -58
  719. package/packages/client-web/dist/mcp-client-view.d.ts.map +0 -1
  720. package/packages/client-web/dist/mcp-client-view.js +0 -121
  721. package/packages/client-web/dist/mcp-client-view.js.map +0 -1
  722. package/packages/client-web/dist/message-content.d.ts +0 -9
  723. package/packages/client-web/dist/message-content.d.ts.map +0 -1
  724. package/packages/client-web/dist/message-content.js +0 -54
  725. package/packages/client-web/dist/message-content.js.map +0 -1
  726. package/packages/client-web/dist/modlens-view.d.ts +0 -43
  727. package/packages/client-web/dist/modlens-view.d.ts.map +0 -1
  728. package/packages/client-web/dist/modlens-view.js +0 -176
  729. package/packages/client-web/dist/modlens-view.js.map +0 -1
  730. package/packages/client-web/dist/openpets-view.d.ts +0 -26
  731. package/packages/client-web/dist/openpets-view.d.ts.map +0 -1
  732. package/packages/client-web/dist/openpets-view.js +0 -62
  733. package/packages/client-web/dist/openpets-view.js.map +0 -1
  734. package/packages/client-web/dist/panel-safe.d.ts +0 -5
  735. package/packages/client-web/dist/panel-safe.d.ts.map +0 -1
  736. package/packages/client-web/dist/panel-safe.js +0 -58
  737. package/packages/client-web/dist/panel-safe.js.map +0 -1
  738. package/packages/client-web/dist/plugin-card.d.ts +0 -8
  739. package/packages/client-web/dist/plugin-card.d.ts.map +0 -1
  740. package/packages/client-web/dist/plugin-card.js +0 -15
  741. package/packages/client-web/dist/plugin-card.js.map +0 -1
  742. package/packages/client-web/dist/plugin-dev-view.d.ts +0 -15
  743. package/packages/client-web/dist/plugin-dev-view.d.ts.map +0 -1
  744. package/packages/client-web/dist/plugin-dev-view.js +0 -33
  745. package/packages/client-web/dist/plugin-dev-view.js.map +0 -1
  746. package/packages/client-web/dist/plugin-navigation.d.ts +0 -3
  747. package/packages/client-web/dist/plugin-navigation.d.ts.map +0 -1
  748. package/packages/client-web/dist/plugin-navigation.js +0 -10
  749. package/packages/client-web/dist/plugin-navigation.js.map +0 -1
  750. package/packages/client-web/dist/plugin-search.d.ts +0 -2
  751. package/packages/client-web/dist/plugin-search.d.ts.map +0 -1
  752. package/packages/client-web/dist/plugin-search.js +0 -7
  753. package/packages/client-web/dist/plugin-search.js.map +0 -1
  754. package/packages/client-web/dist/plugin-stars-view.d.ts +0 -40
  755. package/packages/client-web/dist/plugin-stars-view.d.ts.map +0 -1
  756. package/packages/client-web/dist/plugin-stars-view.js +0 -216
  757. package/packages/client-web/dist/plugin-stars-view.js.map +0 -1
  758. package/packages/client-web/dist/prompt-completion.d.ts +0 -13
  759. package/packages/client-web/dist/prompt-completion.d.ts.map +0 -1
  760. package/packages/client-web/dist/prompt-completion.js +0 -17
  761. package/packages/client-web/dist/prompt-completion.js.map +0 -1
  762. package/packages/client-web/dist/react-room.d.ts +0 -11
  763. package/packages/client-web/dist/react-room.d.ts.map +0 -1
  764. package/packages/client-web/dist/react-room.js +0 -2844
  765. package/packages/client-web/dist/react-room.js.map +0 -1
  766. package/packages/client-web/dist/readme-gen-view.d.ts +0 -30
  767. package/packages/client-web/dist/readme-gen-view.d.ts.map +0 -1
  768. package/packages/client-web/dist/readme-gen-view.js +0 -134
  769. package/packages/client-web/dist/readme-gen-view.js.map +0 -1
  770. package/packages/client-web/dist/recall-unread-view.d.ts +0 -46
  771. package/packages/client-web/dist/recall-unread-view.d.ts.map +0 -1
  772. package/packages/client-web/dist/recall-unread-view.js +0 -104
  773. package/packages/client-web/dist/recall-unread-view.js.map +0 -1
  774. package/packages/client-web/dist/runtime-events.d.ts +0 -4
  775. package/packages/client-web/dist/runtime-events.d.ts.map +0 -1
  776. package/packages/client-web/dist/runtime-events.js +0 -29
  777. package/packages/client-web/dist/runtime-events.js.map +0 -1
  778. package/packages/client-web/dist/session-bridge-view.d.ts +0 -50
  779. package/packages/client-web/dist/session-bridge-view.d.ts.map +0 -1
  780. package/packages/client-web/dist/session-bridge-view.js +0 -113
  781. package/packages/client-web/dist/session-bridge-view.js.map +0 -1
  782. package/packages/client-web/dist/session-insights-view.d.ts +0 -40
  783. package/packages/client-web/dist/session-insights-view.d.ts.map +0 -1
  784. package/packages/client-web/dist/session-insights-view.js +0 -157
  785. package/packages/client-web/dist/session-insights-view.js.map +0 -1
  786. package/packages/client-web/dist/skill-guard-view.d.ts +0 -47
  787. package/packages/client-web/dist/skill-guard-view.d.ts.map +0 -1
  788. package/packages/client-web/dist/skill-guard-view.js +0 -93
  789. package/packages/client-web/dist/skill-guard-view.js.map +0 -1
  790. package/packages/client-web/dist/sql-lens-view.d.ts +0 -37
  791. package/packages/client-web/dist/sql-lens-view.d.ts.map +0 -1
  792. package/packages/client-web/dist/sql-lens-view.js +0 -235
  793. package/packages/client-web/dist/sql-lens-view.js.map +0 -1
  794. package/packages/client-web/dist/test-harness-view.d.ts +0 -24
  795. package/packages/client-web/dist/test-harness-view.d.ts.map +0 -1
  796. package/packages/client-web/dist/test-harness-view.js +0 -149
  797. package/packages/client-web/dist/test-harness-view.js.map +0 -1
  798. package/packages/client-web/dist/token-guard-view.d.ts +0 -19
  799. package/packages/client-web/dist/token-guard-view.d.ts.map +0 -1
  800. package/packages/client-web/dist/token-guard-view.js +0 -56
  801. package/packages/client-web/dist/token-guard-view.js.map +0 -1
  802. package/packages/client-web/dist/turn-rewind-view.d.ts +0 -41
  803. package/packages/client-web/dist/turn-rewind-view.d.ts.map +0 -1
  804. package/packages/client-web/dist/turn-rewind-view.js +0 -117
  805. package/packages/client-web/dist/turn-rewind-view.js.map +0 -1
  806. package/packages/client-web/dist/vision-toolkit-view.d.ts +0 -66
  807. package/packages/client-web/dist/vision-toolkit-view.d.ts.map +0 -1
  808. package/packages/client-web/dist/vision-toolkit-view.js +0 -238
  809. package/packages/client-web/dist/vision-toolkit-view.js.map +0 -1
  810. package/packages/client-web/dist/yaml-validator-view.d.ts +0 -52
  811. package/packages/client-web/dist/yaml-validator-view.d.ts.map +0 -1
  812. package/packages/client-web/dist/yaml-validator-view.js +0 -96
  813. package/packages/client-web/dist/yaml-validator-view.js.map +0 -1
  814. package/packages/client-web/package.json +0 -42
  815. package/packages/client-web/src/agent-teams-view.ts +0 -189
  816. package/packages/client-web/src/annotation-ui.ts +0 -29
  817. package/packages/client-web/src/at-file-view.ts +0 -69
  818. package/packages/client-web/src/browser-fetch-view.ts +0 -114
  819. package/packages/client-web/src/browser-session-view.ts +0 -232
  820. package/packages/client-web/src/cleaner-view.ts +0 -207
  821. package/packages/client-web/src/context-doctor-view.ts +0 -140
  822. package/packages/client-web/src/context-insights-view.ts +0 -125
  823. package/packages/client-web/src/control-room.ts +0 -359
  824. package/packages/client-web/src/cost-meter-view.ts +0 -63
  825. package/packages/client-web/src/dependency-checker-view.ts +0 -215
  826. package/packages/client-web/src/design-contract.ts +0 -334
  827. package/packages/client-web/src/docker-sandbox-view.ts +0 -177
  828. package/packages/client-web/src/fail-logger-view.ts +0 -112
  829. package/packages/client-web/src/genui-view.ts +0 -88
  830. package/packages/client-web/src/git-time-capsule-view.ts +0 -215
  831. package/packages/client-web/src/graph-memory-view.ts +0 -91
  832. package/packages/client-web/src/i18n-pair-view.ts +0 -194
  833. package/packages/client-web/src/index.ts +0 -34
  834. package/packages/client-web/src/markdown.tsx +0 -22
  835. package/packages/client-web/src/marketplace-catalog.ts +0 -10
  836. package/packages/client-web/src/marketplace-navigation.ts +0 -46
  837. package/packages/client-web/src/mcp-client-view.ts +0 -122
  838. package/packages/client-web/src/message-content.ts +0 -51
  839. package/packages/client-web/src/modlens-view.ts +0 -210
  840. package/packages/client-web/src/openpets-view.ts +0 -67
  841. package/packages/client-web/src/panel-safe.ts +0 -47
  842. package/packages/client-web/src/plugin-card.ts +0 -22
  843. package/packages/client-web/src/plugin-dev-view.ts +0 -39
  844. package/packages/client-web/src/plugin-navigation.ts +0 -9
  845. package/packages/client-web/src/plugin-search.ts +0 -5
  846. package/packages/client-web/src/plugin-stars-view.ts +0 -257
  847. package/packages/client-web/src/prompt-completion.ts +0 -24
  848. package/packages/client-web/src/react-room.tsx +0 -8581
  849. package/packages/client-web/src/readme-gen-view.ts +0 -145
  850. package/packages/client-web/src/recall-unread-view.ts +0 -105
  851. package/packages/client-web/src/runtime-events.ts +0 -29
  852. package/packages/client-web/src/session-bridge-view.ts +0 -118
  853. package/packages/client-web/src/session-insights-view.ts +0 -205
  854. package/packages/client-web/src/skill-guard-view.ts +0 -94
  855. package/packages/client-web/src/sql-lens-view.ts +0 -247
  856. package/packages/client-web/src/test-harness-view.ts +0 -170
  857. package/packages/client-web/src/token-guard-view.ts +0 -75
  858. package/packages/client-web/src/turn-rewind-view.ts +0 -120
  859. package/packages/client-web/src/vision-toolkit-view.ts +0 -280
  860. package/packages/client-web/src/yaml-validator-view.ts +0 -102
  861. package/packages/client-web/test/agent-teams-view.test.ts +0 -198
  862. package/packages/client-web/test/annotation-ui.test.ts +0 -21
  863. package/packages/client-web/test/at-file-panel.test.ts +0 -76
  864. package/packages/client-web/test/browser-fetch-panel.test.ts +0 -44
  865. package/packages/client-web/test/browser-fetch-view.test.ts +0 -89
  866. package/packages/client-web/test/browser-session-panel.test.ts +0 -55
  867. package/packages/client-web/test/browser-session-view.test.ts +0 -115
  868. package/packages/client-web/test/cleaner-panel.test.ts +0 -66
  869. package/packages/client-web/test/cleaner-view.test.ts +0 -143
  870. package/packages/client-web/test/context-doctor-view.test.ts +0 -169
  871. package/packages/client-web/test/context-insights-view.test.ts +0 -120
  872. package/packages/client-web/test/cost-meter-view.test.ts +0 -53
  873. package/packages/client-web/test/dependency-checker-panel.test.ts +0 -51
  874. package/packages/client-web/test/dependency-checker-view.test.ts +0 -266
  875. package/packages/client-web/test/design-contract.test.ts +0 -69
  876. package/packages/client-web/test/docker-sandbox-panel.test.ts +0 -44
  877. package/packages/client-web/test/docker-sandbox-view.test.ts +0 -127
  878. package/packages/client-web/test/fail-logger-view.test.ts +0 -155
  879. package/packages/client-web/test/genui-view.test.ts +0 -55
  880. package/packages/client-web/test/git-time-capsule-view.test.ts +0 -252
  881. package/packages/client-web/test/graph-memory-view.test.ts +0 -67
  882. package/packages/client-web/test/i18n-pair-panel.test.ts +0 -72
  883. package/packages/client-web/test/i18n-pair-view.test.ts +0 -164
  884. package/packages/client-web/test/marketplace-catalog.test.ts +0 -52
  885. package/packages/client-web/test/mcp-client-view.test.ts +0 -106
  886. package/packages/client-web/test/message-content.test.ts +0 -43
  887. package/packages/client-web/test/modlens-view.test.ts +0 -198
  888. package/packages/client-web/test/openpets-view.test.ts +0 -57
  889. package/packages/client-web/test/plugin-card.test.ts +0 -46
  890. package/packages/client-web/test/plugin-dev-view.test.ts +0 -63
  891. package/packages/client-web/test/plugin-navigation.test.ts +0 -14
  892. package/packages/client-web/test/plugin-search.test.ts +0 -22
  893. package/packages/client-web/test/plugin-stars-panel.test.ts +0 -44
  894. package/packages/client-web/test/plugin-stars-view.test.ts +0 -107
  895. package/packages/client-web/test/prompt-completion.test.ts +0 -21
  896. package/packages/client-web/test/readme-gen-panel.test.ts +0 -81
  897. package/packages/client-web/test/readme-gen-view.test.ts +0 -91
  898. package/packages/client-web/test/recall-unread-view.test.ts +0 -153
  899. package/packages/client-web/test/runtime-events.test.ts +0 -28
  900. package/packages/client-web/test/session-bridge-view.test.ts +0 -102
  901. package/packages/client-web/test/session-insights-panel.test.ts +0 -85
  902. package/packages/client-web/test/session-insights-view.test.ts +0 -152
  903. package/packages/client-web/test/skill-guard-view.test.ts +0 -138
  904. package/packages/client-web/test/sql-lens-panel.test.ts +0 -52
  905. package/packages/client-web/test/sql-lens-view.test.ts +0 -134
  906. package/packages/client-web/test/test-harness-panel.test.ts +0 -228
  907. package/packages/client-web/test/token-guard-view.test.ts +0 -93
  908. package/packages/client-web/test/turn-rewind-view.test.ts +0 -159
  909. package/packages/client-web/test/vision-toolkit-view.test.ts +0 -152
  910. package/packages/client-web/test/yaml-validator-view.test.ts +0 -100
  911. package/packages/client-web/tsconfig.build.json +0 -13
  912. package/packages/client-web/tsconfig.json +0 -11
  913. package/packages/core/LICENSE +0 -9
  914. package/packages/core/dist/atomic-write.d.ts +0 -8
  915. package/packages/core/dist/atomic-write.d.ts.map +0 -1
  916. package/packages/core/dist/atomic-write.js +0 -40
  917. package/packages/core/dist/atomic-write.js.map +0 -1
  918. package/packages/core/dist/boot.d.ts +0 -13
  919. package/packages/core/dist/boot.d.ts.map +0 -1
  920. package/packages/core/dist/boot.js +0 -257
  921. package/packages/core/dist/boot.js.map +0 -1
  922. package/packages/core/dist/bounded-file.d.ts +0 -7
  923. package/packages/core/dist/bounded-file.d.ts.map +0 -1
  924. package/packages/core/dist/bounded-file.js +0 -50
  925. package/packages/core/dist/bounded-file.js.map +0 -1
  926. package/packages/core/dist/config.d.ts +0 -4
  927. package/packages/core/dist/config.d.ts.map +0 -1
  928. package/packages/core/dist/config.js +0 -29
  929. package/packages/core/dist/config.js.map +0 -1
  930. package/packages/core/dist/context.d.ts +0 -3
  931. package/packages/core/dist/context.d.ts.map +0 -1
  932. package/packages/core/dist/context.js +0 -2
  933. package/packages/core/dist/context.js.map +0 -1
  934. package/packages/core/dist/cordis-timer.d.ts +0 -15
  935. package/packages/core/dist/cordis-timer.d.ts.map +0 -1
  936. package/packages/core/dist/cordis-timer.js +0 -99
  937. package/packages/core/dist/cordis-timer.js.map +0 -1
  938. package/packages/core/dist/http.d.ts +0 -8
  939. package/packages/core/dist/http.d.ts.map +0 -1
  940. package/packages/core/dist/http.js +0 -27
  941. package/packages/core/dist/http.js.map +0 -1
  942. package/packages/core/dist/index.d.ts +0 -9
  943. package/packages/core/dist/index.d.ts.map +0 -1
  944. package/packages/core/dist/index.js +0 -8
  945. package/packages/core/dist/index.js.map +0 -1
  946. package/packages/core/dist/plugins/agent-teams.d.ts +0 -21
  947. package/packages/core/dist/plugins/agent-teams.d.ts.map +0 -1
  948. package/packages/core/dist/plugins/agent-teams.js +0 -1179
  949. package/packages/core/dist/plugins/agent-teams.js.map +0 -1
  950. package/packages/core/dist/plugins/anchored-standard.d.ts +0 -15
  951. package/packages/core/dist/plugins/anchored-standard.d.ts.map +0 -1
  952. package/packages/core/dist/plugins/anchored-standard.js +0 -112
  953. package/packages/core/dist/plugins/anchored-standard.js.map +0 -1
  954. package/packages/core/dist/plugins/annotation.d.ts +0 -19
  955. package/packages/core/dist/plugins/annotation.d.ts.map +0 -1
  956. package/packages/core/dist/plugins/annotation.js +0 -112
  957. package/packages/core/dist/plugins/annotation.js.map +0 -1
  958. package/packages/core/dist/plugins/archify.d.ts +0 -24
  959. package/packages/core/dist/plugins/archify.d.ts.map +0 -1
  960. package/packages/core/dist/plugins/archify.js +0 -145
  961. package/packages/core/dist/plugins/archify.js.map +0 -1
  962. package/packages/core/dist/plugins/at-file.d.ts +0 -12
  963. package/packages/core/dist/plugins/at-file.d.ts.map +0 -1
  964. package/packages/core/dist/plugins/at-file.js +0 -143
  965. package/packages/core/dist/plugins/at-file.js.map +0 -1
  966. package/packages/core/dist/plugins/auto-mode.d.ts +0 -15
  967. package/packages/core/dist/plugins/auto-mode.d.ts.map +0 -1
  968. package/packages/core/dist/plugins/auto-mode.js +0 -183
  969. package/packages/core/dist/plugins/auto-mode.js.map +0 -1
  970. package/packages/core/dist/plugins/better-sidebar.d.ts +0 -38
  971. package/packages/core/dist/plugins/better-sidebar.d.ts.map +0 -1
  972. package/packages/core/dist/plugins/better-sidebar.js +0 -99
  973. package/packages/core/dist/plugins/better-sidebar.js.map +0 -1
  974. package/packages/core/dist/plugins/browser-fetch.d.ts +0 -15
  975. package/packages/core/dist/plugins/browser-fetch.d.ts.map +0 -1
  976. package/packages/core/dist/plugins/browser-fetch.js +0 -359
  977. package/packages/core/dist/plugins/browser-fetch.js.map +0 -1
  978. package/packages/core/dist/plugins/browser-session.d.ts +0 -14
  979. package/packages/core/dist/plugins/browser-session.d.ts.map +0 -1
  980. package/packages/core/dist/plugins/browser-session.js +0 -604
  981. package/packages/core/dist/plugins/browser-session.js.map +0 -1
  982. package/packages/core/dist/plugins/canvas-draw.d.ts +0 -9
  983. package/packages/core/dist/plugins/canvas-draw.d.ts.map +0 -1
  984. package/packages/core/dist/plugins/canvas-draw.js +0 -140
  985. package/packages/core/dist/plugins/canvas-draw.js.map +0 -1
  986. package/packages/core/dist/plugins/change-verifier.d.ts +0 -9
  987. package/packages/core/dist/plugins/change-verifier.d.ts.map +0 -1
  988. package/packages/core/dist/plugins/change-verifier.js +0 -88
  989. package/packages/core/dist/plugins/change-verifier.js.map +0 -1
  990. package/packages/core/dist/plugins/cleaner.d.ts +0 -12
  991. package/packages/core/dist/plugins/cleaner.d.ts.map +0 -1
  992. package/packages/core/dist/plugins/cleaner.js +0 -353
  993. package/packages/core/dist/plugins/cleaner.js.map +0 -1
  994. package/packages/core/dist/plugins/cli-notifier.d.ts +0 -16
  995. package/packages/core/dist/plugins/cli-notifier.d.ts.map +0 -1
  996. package/packages/core/dist/plugins/cli-notifier.js +0 -167
  997. package/packages/core/dist/plugins/cli-notifier.js.map +0 -1
  998. package/packages/core/dist/plugins/code2skill.d.ts +0 -9
  999. package/packages/core/dist/plugins/code2skill.d.ts.map +0 -1
  1000. package/packages/core/dist/plugins/code2skill.js +0 -235
  1001. package/packages/core/dist/plugins/code2skill.js.map +0 -1
  1002. package/packages/core/dist/plugins/colleague-skill.d.ts +0 -28
  1003. package/packages/core/dist/plugins/colleague-skill.d.ts.map +0 -1
  1004. package/packages/core/dist/plugins/colleague-skill.js +0 -129
  1005. package/packages/core/dist/plugins/colleague-skill.js.map +0 -1
  1006. package/packages/core/dist/plugins/context-doctor.d.ts +0 -35
  1007. package/packages/core/dist/plugins/context-doctor.d.ts.map +0 -1
  1008. package/packages/core/dist/plugins/context-doctor.js +0 -459
  1009. package/packages/core/dist/plugins/context-doctor.js.map +0 -1
  1010. package/packages/core/dist/plugins/context.d.ts +0 -9
  1011. package/packages/core/dist/plugins/context.d.ts.map +0 -1
  1012. package/packages/core/dist/plugins/context.js +0 -214
  1013. package/packages/core/dist/plugins/context.js.map +0 -1
  1014. package/packages/core/dist/plugins/cost-meter.d.ts +0 -36
  1015. package/packages/core/dist/plugins/cost-meter.d.ts.map +0 -1
  1016. package/packages/core/dist/plugins/cost-meter.js +0 -430
  1017. package/packages/core/dist/plugins/cost-meter.js.map +0 -1
  1018. package/packages/core/dist/plugins/dependency-checker.d.ts +0 -36
  1019. package/packages/core/dist/plugins/dependency-checker.d.ts.map +0 -1
  1020. package/packages/core/dist/plugins/dependency-checker.js +0 -570
  1021. package/packages/core/dist/plugins/dependency-checker.js.map +0 -1
  1022. package/packages/core/dist/plugins/docker-sandbox.d.ts +0 -9
  1023. package/packages/core/dist/plugins/docker-sandbox.d.ts.map +0 -1
  1024. package/packages/core/dist/plugins/docker-sandbox.js +0 -344
  1025. package/packages/core/dist/plugins/docker-sandbox.js.map +0 -1
  1026. package/packages/core/dist/plugins/fail-logger.d.ts +0 -9
  1027. package/packages/core/dist/plugins/fail-logger.d.ts.map +0 -1
  1028. package/packages/core/dist/plugins/fail-logger.js +0 -218
  1029. package/packages/core/dist/plugins/fail-logger.js.map +0 -1
  1030. package/packages/core/dist/plugins/genui.d.ts +0 -9
  1031. package/packages/core/dist/plugins/genui.d.ts.map +0 -1
  1032. package/packages/core/dist/plugins/genui.js +0 -144
  1033. package/packages/core/dist/plugins/genui.js.map +0 -1
  1034. package/packages/core/dist/plugins/git-time-capsule.d.ts +0 -15
  1035. package/packages/core/dist/plugins/git-time-capsule.d.ts.map +0 -1
  1036. package/packages/core/dist/plugins/git-time-capsule.js +0 -436
  1037. package/packages/core/dist/plugins/git-time-capsule.js.map +0 -1
  1038. package/packages/core/dist/plugins/graph-memory.d.ts +0 -16
  1039. package/packages/core/dist/plugins/graph-memory.d.ts.map +0 -1
  1040. package/packages/core/dist/plugins/graph-memory.js +0 -669
  1041. package/packages/core/dist/plugins/graph-memory.js.map +0 -1
  1042. package/packages/core/dist/plugins/history-compressor.d.ts +0 -15
  1043. package/packages/core/dist/plugins/history-compressor.d.ts.map +0 -1
  1044. package/packages/core/dist/plugins/history-compressor.js +0 -99
  1045. package/packages/core/dist/plugins/history-compressor.js.map +0 -1
  1046. package/packages/core/dist/plugins/hol-guard.d.ts +0 -29
  1047. package/packages/core/dist/plugins/hol-guard.d.ts.map +0 -1
  1048. package/packages/core/dist/plugins/hol-guard.js +0 -159
  1049. package/packages/core/dist/plugins/hol-guard.js.map +0 -1
  1050. package/packages/core/dist/plugins/i18n-pair.d.ts +0 -12
  1051. package/packages/core/dist/plugins/i18n-pair.d.ts.map +0 -1
  1052. package/packages/core/dist/plugins/i18n-pair.js +0 -332
  1053. package/packages/core/dist/plugins/i18n-pair.js.map +0 -1
  1054. package/packages/core/dist/plugins/image-compressor.d.ts +0 -15
  1055. package/packages/core/dist/plugins/image-compressor.d.ts.map +0 -1
  1056. package/packages/core/dist/plugins/image-compressor.js +0 -223
  1057. package/packages/core/dist/plugins/image-compressor.js.map +0 -1
  1058. package/packages/core/dist/plugins/llm-verifier.d.ts +0 -42
  1059. package/packages/core/dist/plugins/llm-verifier.d.ts.map +0 -1
  1060. package/packages/core/dist/plugins/llm-verifier.js +0 -138
  1061. package/packages/core/dist/plugins/llm-verifier.js.map +0 -1
  1062. package/packages/core/dist/plugins/mcp-client.d.ts +0 -19
  1063. package/packages/core/dist/plugins/mcp-client.d.ts.map +0 -1
  1064. package/packages/core/dist/plugins/mcp-client.js +0 -1288
  1065. package/packages/core/dist/plugins/mcp-client.js.map +0 -1
  1066. package/packages/core/dist/plugins/mcp-panel.d.ts +0 -14
  1067. package/packages/core/dist/plugins/mcp-panel.d.ts.map +0 -1
  1068. package/packages/core/dist/plugins/mcp-panel.js +0 -194
  1069. package/packages/core/dist/plugins/mcp-panel.js.map +0 -1
  1070. package/packages/core/dist/plugins/memory.d.ts +0 -15
  1071. package/packages/core/dist/plugins/memory.d.ts.map +0 -1
  1072. package/packages/core/dist/plugins/memory.js +0 -394
  1073. package/packages/core/dist/plugins/memory.js.map +0 -1
  1074. package/packages/core/dist/plugins/mirage-bridge.d.ts +0 -23
  1075. package/packages/core/dist/plugins/mirage-bridge.d.ts.map +0 -1
  1076. package/packages/core/dist/plugins/mirage-bridge.js +0 -159
  1077. package/packages/core/dist/plugins/mirage-bridge.js.map +0 -1
  1078. package/packages/core/dist/plugins/mock-server.d.ts +0 -22
  1079. package/packages/core/dist/plugins/mock-server.d.ts.map +0 -1
  1080. package/packages/core/dist/plugins/mock-server.js +0 -180
  1081. package/packages/core/dist/plugins/mock-server.js.map +0 -1
  1082. package/packages/core/dist/plugins/model.d.ts +0 -11
  1083. package/packages/core/dist/plugins/model.d.ts.map +0 -1
  1084. package/packages/core/dist/plugins/model.js +0 -17
  1085. package/packages/core/dist/plugins/model.js.map +0 -1
  1086. package/packages/core/dist/plugins/models.d.ts +0 -16
  1087. package/packages/core/dist/plugins/models.d.ts.map +0 -1
  1088. package/packages/core/dist/plugins/models.js +0 -35
  1089. package/packages/core/dist/plugins/models.js.map +0 -1
  1090. package/packages/core/dist/plugins/modlens.d.ts +0 -15
  1091. package/packages/core/dist/plugins/modlens.d.ts.map +0 -1
  1092. package/packages/core/dist/plugins/modlens.js +0 -470
  1093. package/packages/core/dist/plugins/modlens.js.map +0 -1
  1094. package/packages/core/dist/plugins/module-search.d.ts +0 -28
  1095. package/packages/core/dist/plugins/module-search.d.ts.map +0 -1
  1096. package/packages/core/dist/plugins/module-search.js +0 -193
  1097. package/packages/core/dist/plugins/module-search.js.map +0 -1
  1098. package/packages/core/dist/plugins/obsidian-sync.d.ts +0 -14
  1099. package/packages/core/dist/plugins/obsidian-sync.d.ts.map +0 -1
  1100. package/packages/core/dist/plugins/obsidian-sync.js +0 -88
  1101. package/packages/core/dist/plugins/obsidian-sync.js.map +0 -1
  1102. package/packages/core/dist/plugins/openpets.d.ts +0 -14
  1103. package/packages/core/dist/plugins/openpets.d.ts.map +0 -1
  1104. package/packages/core/dist/plugins/openpets.js +0 -258
  1105. package/packages/core/dist/plugins/openpets.js.map +0 -1
  1106. package/packages/core/dist/plugins/plan-execute.d.ts +0 -11
  1107. package/packages/core/dist/plugins/plan-execute.d.ts.map +0 -1
  1108. package/packages/core/dist/plugins/plan-execute.js +0 -91
  1109. package/packages/core/dist/plugins/plan-execute.js.map +0 -1
  1110. package/packages/core/dist/plugins/plugin-check.d.ts +0 -47
  1111. package/packages/core/dist/plugins/plugin-check.d.ts.map +0 -1
  1112. package/packages/core/dist/plugins/plugin-check.js +0 -298
  1113. package/packages/core/dist/plugins/plugin-check.js.map +0 -1
  1114. package/packages/core/dist/plugins/plugin-dev.d.ts +0 -9
  1115. package/packages/core/dist/plugins/plugin-dev.d.ts.map +0 -1
  1116. package/packages/core/dist/plugins/plugin-dev.js +0 -177
  1117. package/packages/core/dist/plugins/plugin-dev.js.map +0 -1
  1118. package/packages/core/dist/plugins/plugin-finder.d.ts +0 -17
  1119. package/packages/core/dist/plugins/plugin-finder.d.ts.map +0 -1
  1120. package/packages/core/dist/plugins/plugin-finder.js +0 -216
  1121. package/packages/core/dist/plugins/plugin-finder.js.map +0 -1
  1122. package/packages/core/dist/plugins/plugin-radar.d.ts +0 -33
  1123. package/packages/core/dist/plugins/plugin-radar.d.ts.map +0 -1
  1124. package/packages/core/dist/plugins/plugin-radar.js +0 -247
  1125. package/packages/core/dist/plugins/plugin-radar.js.map +0 -1
  1126. package/packages/core/dist/plugins/plugin-stars.d.ts +0 -45
  1127. package/packages/core/dist/plugins/plugin-stars.d.ts.map +0 -1
  1128. package/packages/core/dist/plugins/plugin-stars.js +0 -366
  1129. package/packages/core/dist/plugins/plugin-stars.js.map +0 -1
  1130. package/packages/core/dist/plugins/prompt-guard.d.ts +0 -9
  1131. package/packages/core/dist/plugins/prompt-guard.d.ts.map +0 -1
  1132. package/packages/core/dist/plugins/prompt-guard.js +0 -165
  1133. package/packages/core/dist/plugins/prompt-guard.js.map +0 -1
  1134. package/packages/core/dist/plugins/prompt-library.d.ts +0 -26
  1135. package/packages/core/dist/plugins/prompt-library.d.ts.map +0 -1
  1136. package/packages/core/dist/plugins/prompt-library.js +0 -145
  1137. package/packages/core/dist/plugins/prompt-library.js.map +0 -1
  1138. package/packages/core/dist/plugins/readme-gen.d.ts +0 -29
  1139. package/packages/core/dist/plugins/readme-gen.d.ts.map +0 -1
  1140. package/packages/core/dist/plugins/readme-gen.js +0 -580
  1141. package/packages/core/dist/plugins/readme-gen.js.map +0 -1
  1142. package/packages/core/dist/plugins/recall-unread.d.ts +0 -24
  1143. package/packages/core/dist/plugins/recall-unread.d.ts.map +0 -1
  1144. package/packages/core/dist/plugins/recall-unread.js +0 -467
  1145. package/packages/core/dist/plugins/recall-unread.js.map +0 -1
  1146. package/packages/core/dist/plugins/resources.d.ts +0 -19
  1147. package/packages/core/dist/plugins/resources.d.ts.map +0 -1
  1148. package/packages/core/dist/plugins/resources.js +0 -126
  1149. package/packages/core/dist/plugins/resources.js.map +0 -1
  1150. package/packages/core/dist/plugins/reverse-skill.d.ts +0 -23
  1151. package/packages/core/dist/plugins/reverse-skill.d.ts.map +0 -1
  1152. package/packages/core/dist/plugins/reverse-skill.js +0 -61
  1153. package/packages/core/dist/plugins/reverse-skill.js.map +0 -1
  1154. package/packages/core/dist/plugins/reviewer-bot.d.ts +0 -15
  1155. package/packages/core/dist/plugins/reviewer-bot.d.ts.map +0 -1
  1156. package/packages/core/dist/plugins/reviewer-bot.js +0 -152
  1157. package/packages/core/dist/plugins/reviewer-bot.js.map +0 -1
  1158. package/packages/core/dist/plugins/runtime-doctor.d.ts +0 -34
  1159. package/packages/core/dist/plugins/runtime-doctor.d.ts.map +0 -1
  1160. package/packages/core/dist/plugins/runtime-doctor.js +0 -117
  1161. package/packages/core/dist/plugins/runtime-doctor.js.map +0 -1
  1162. package/packages/core/dist/plugins/runtime.d.ts +0 -14
  1163. package/packages/core/dist/plugins/runtime.d.ts.map +0 -1
  1164. package/packages/core/dist/plugins/runtime.js +0 -159
  1165. package/packages/core/dist/plugins/runtime.js.map +0 -1
  1166. package/packages/core/dist/plugins/secure-audit.d.ts +0 -32
  1167. package/packages/core/dist/plugins/secure-audit.d.ts.map +0 -1
  1168. package/packages/core/dist/plugins/secure-audit.js +0 -139
  1169. package/packages/core/dist/plugins/secure-audit.js.map +0 -1
  1170. package/packages/core/dist/plugins/session-bookmarks.d.ts +0 -16
  1171. package/packages/core/dist/plugins/session-bookmarks.d.ts.map +0 -1
  1172. package/packages/core/dist/plugins/session-bookmarks.js +0 -90
  1173. package/packages/core/dist/plugins/session-bookmarks.js.map +0 -1
  1174. package/packages/core/dist/plugins/session-bridge.d.ts +0 -45
  1175. package/packages/core/dist/plugins/session-bridge.d.ts.map +0 -1
  1176. package/packages/core/dist/plugins/session-bridge.js +0 -578
  1177. package/packages/core/dist/plugins/session-bridge.js.map +0 -1
  1178. package/packages/core/dist/plugins/session-compare.d.ts +0 -34
  1179. package/packages/core/dist/plugins/session-compare.d.ts.map +0 -1
  1180. package/packages/core/dist/plugins/session-compare.js +0 -153
  1181. package/packages/core/dist/plugins/session-compare.js.map +0 -1
  1182. package/packages/core/dist/plugins/session-export.d.ts +0 -10
  1183. package/packages/core/dist/plugins/session-export.d.ts.map +0 -1
  1184. package/packages/core/dist/plugins/session-export.js +0 -93
  1185. package/packages/core/dist/plugins/session-export.js.map +0 -1
  1186. package/packages/core/dist/plugins/session-insights.d.ts +0 -44
  1187. package/packages/core/dist/plugins/session-insights.d.ts.map +0 -1
  1188. package/packages/core/dist/plugins/session-insights.js +0 -432
  1189. package/packages/core/dist/plugins/session-insights.js.map +0 -1
  1190. package/packages/core/dist/plugins/session-search.d.ts +0 -21
  1191. package/packages/core/dist/plugins/session-search.d.ts.map +0 -1
  1192. package/packages/core/dist/plugins/session-search.js +0 -125
  1193. package/packages/core/dist/plugins/session-search.js.map +0 -1
  1194. package/packages/core/dist/plugins/session.d.ts +0 -15
  1195. package/packages/core/dist/plugins/session.d.ts.map +0 -1
  1196. package/packages/core/dist/plugins/session.js +0 -29
  1197. package/packages/core/dist/plugins/session.js.map +0 -1
  1198. package/packages/core/dist/plugins/skill-catalog.d.ts +0 -27
  1199. package/packages/core/dist/plugins/skill-catalog.d.ts.map +0 -1
  1200. package/packages/core/dist/plugins/skill-catalog.js +0 -98
  1201. package/packages/core/dist/plugins/skill-catalog.js.map +0 -1
  1202. package/packages/core/dist/plugins/skill-guard.d.ts +0 -27
  1203. package/packages/core/dist/plugins/skill-guard.d.ts.map +0 -1
  1204. package/packages/core/dist/plugins/skill-guard.js +0 -319
  1205. package/packages/core/dist/plugins/skill-guard.js.map +0 -1
  1206. package/packages/core/dist/plugins/sql-lens-worker.d.ts +0 -2
  1207. package/packages/core/dist/plugins/sql-lens-worker.d.ts.map +0 -1
  1208. package/packages/core/dist/plugins/sql-lens-worker.js +0 -206
  1209. package/packages/core/dist/plugins/sql-lens-worker.js.map +0 -1
  1210. package/packages/core/dist/plugins/sql-lens.d.ts +0 -14
  1211. package/packages/core/dist/plugins/sql-lens.d.ts.map +0 -1
  1212. package/packages/core/dist/plugins/sql-lens.js +0 -318
  1213. package/packages/core/dist/plugins/sql-lens.js.map +0 -1
  1214. package/packages/core/dist/plugins/stdio.d.ts +0 -11
  1215. package/packages/core/dist/plugins/stdio.d.ts.map +0 -1
  1216. package/packages/core/dist/plugins/stdio.js +0 -80
  1217. package/packages/core/dist/plugins/stdio.js.map +0 -1
  1218. package/packages/core/dist/plugins/synapse.d.ts +0 -38
  1219. package/packages/core/dist/plugins/synapse.d.ts.map +0 -1
  1220. package/packages/core/dist/plugins/synapse.js +0 -101
  1221. package/packages/core/dist/plugins/synapse.js.map +0 -1
  1222. package/packages/core/dist/plugins/tab-manager.d.ts +0 -9
  1223. package/packages/core/dist/plugins/tab-manager.d.ts.map +0 -1
  1224. package/packages/core/dist/plugins/tab-manager.js +0 -240
  1225. package/packages/core/dist/plugins/tab-manager.js.map +0 -1
  1226. package/packages/core/dist/plugins/taskboard.d.ts +0 -15
  1227. package/packages/core/dist/plugins/taskboard.d.ts.map +0 -1
  1228. package/packages/core/dist/plugins/taskboard.js +0 -375
  1229. package/packages/core/dist/plugins/taskboard.js.map +0 -1
  1230. package/packages/core/dist/plugins/telemetry-blocker.d.ts +0 -11
  1231. package/packages/core/dist/plugins/telemetry-blocker.d.ts.map +0 -1
  1232. package/packages/core/dist/plugins/telemetry-blocker.js +0 -76
  1233. package/packages/core/dist/plugins/telemetry-blocker.js.map +0 -1
  1234. package/packages/core/dist/plugins/test-harness.d.ts +0 -14
  1235. package/packages/core/dist/plugins/test-harness.d.ts.map +0 -1
  1236. package/packages/core/dist/plugins/test-harness.js +0 -276
  1237. package/packages/core/dist/plugins/test-harness.js.map +0 -1
  1238. package/packages/core/dist/plugins/theme-studio.d.ts +0 -29
  1239. package/packages/core/dist/plugins/theme-studio.d.ts.map +0 -1
  1240. package/packages/core/dist/plugins/theme-studio.js +0 -143
  1241. package/packages/core/dist/plugins/theme-studio.js.map +0 -1
  1242. package/packages/core/dist/plugins/token-guard.d.ts +0 -15
  1243. package/packages/core/dist/plugins/token-guard.d.ts.map +0 -1
  1244. package/packages/core/dist/plugins/token-guard.js +0 -210
  1245. package/packages/core/dist/plugins/token-guard.js.map +0 -1
  1246. package/packages/core/dist/plugins/tools.d.ts +0 -13
  1247. package/packages/core/dist/plugins/tools.d.ts.map +0 -1
  1248. package/packages/core/dist/plugins/tools.js +0 -23
  1249. package/packages/core/dist/plugins/tools.js.map +0 -1
  1250. package/packages/core/dist/plugins/turn-rewind.d.ts +0 -36
  1251. package/packages/core/dist/plugins/turn-rewind.d.ts.map +0 -1
  1252. package/packages/core/dist/plugins/turn-rewind.js +0 -378
  1253. package/packages/core/dist/plugins/turn-rewind.js.map +0 -1
  1254. package/packages/core/dist/plugins/undo-savepoint.d.ts +0 -17
  1255. package/packages/core/dist/plugins/undo-savepoint.d.ts.map +0 -1
  1256. package/packages/core/dist/plugins/undo-savepoint.js +0 -353
  1257. package/packages/core/dist/plugins/undo-savepoint.js.map +0 -1
  1258. package/packages/core/dist/plugins/vision-toolkit.d.ts +0 -36
  1259. package/packages/core/dist/plugins/vision-toolkit.d.ts.map +0 -1
  1260. package/packages/core/dist/plugins/vision-toolkit.js +0 -468
  1261. package/packages/core/dist/plugins/vision-toolkit.js.map +0 -1
  1262. package/packages/core/dist/plugins/web-research.d.ts +0 -17
  1263. package/packages/core/dist/plugins/web-research.d.ts.map +0 -1
  1264. package/packages/core/dist/plugins/web-research.js +0 -284
  1265. package/packages/core/dist/plugins/web-research.js.map +0 -1
  1266. package/packages/core/dist/plugins/workspace-navigator.d.ts +0 -42
  1267. package/packages/core/dist/plugins/workspace-navigator.d.ts.map +0 -1
  1268. package/packages/core/dist/plugins/workspace-navigator.js +0 -168
  1269. package/packages/core/dist/plugins/workspace-navigator.js.map +0 -1
  1270. package/packages/core/dist/plugins/workspace-search.d.ts +0 -15
  1271. package/packages/core/dist/plugins/workspace-search.d.ts.map +0 -1
  1272. package/packages/core/dist/plugins/workspace-search.js +0 -167
  1273. package/packages/core/dist/plugins/workspace-search.js.map +0 -1
  1274. package/packages/core/dist/plugins/yaml-validator.d.ts +0 -9
  1275. package/packages/core/dist/plugins/yaml-validator.d.ts.map +0 -1
  1276. package/packages/core/dist/plugins/yaml-validator.js +0 -203
  1277. package/packages/core/dist/plugins/yaml-validator.js.map +0 -1
  1278. package/packages/core/dist/profile.d.ts +0 -9
  1279. package/packages/core/dist/profile.d.ts.map +0 -1
  1280. package/packages/core/dist/profile.js +0 -33
  1281. package/packages/core/dist/profile.js.map +0 -1
  1282. package/packages/core/dist/runtime.d.ts +0 -16
  1283. package/packages/core/dist/runtime.d.ts.map +0 -1
  1284. package/packages/core/dist/runtime.js +0 -47
  1285. package/packages/core/dist/runtime.js.map +0 -1
  1286. package/packages/core/dist/services.d.ts +0 -118
  1287. package/packages/core/dist/services.d.ts.map +0 -1
  1288. package/packages/core/dist/services.js +0 -115
  1289. package/packages/core/dist/services.js.map +0 -1
  1290. package/packages/core/dist/stdio.d.ts +0 -37
  1291. package/packages/core/dist/stdio.d.ts.map +0 -1
  1292. package/packages/core/dist/stdio.js +0 -356
  1293. package/packages/core/dist/stdio.js.map +0 -1
  1294. package/packages/core/dist/workspace-path.d.ts +0 -13
  1295. package/packages/core/dist/workspace-path.d.ts.map +0 -1
  1296. package/packages/core/dist/workspace-path.js +0 -71
  1297. package/packages/core/dist/workspace-path.js.map +0 -1
  1298. package/packages/core/package.json +0 -42
  1299. package/packages/core/profiles/default/cordis.yml +0 -122
  1300. package/packages/core/profiles/development/cordis.yml +0 -47
  1301. package/packages/core/src/atomic-write.ts +0 -45
  1302. package/packages/core/src/boot.ts +0 -255
  1303. package/packages/core/src/bounded-file.ts +0 -41
  1304. package/packages/core/src/config.ts +0 -24
  1305. package/packages/core/src/context.ts +0 -3
  1306. package/packages/core/src/cordis-timer.ts +0 -107
  1307. package/packages/core/src/http.ts +0 -32
  1308. package/packages/core/src/index.ts +0 -8
  1309. package/packages/core/src/plugins/agent-teams.ts +0 -1191
  1310. package/packages/core/src/plugins/anchored-standard.ts +0 -115
  1311. package/packages/core/src/plugins/annotation.ts +0 -123
  1312. package/packages/core/src/plugins/archify.ts +0 -171
  1313. package/packages/core/src/plugins/at-file.ts +0 -138
  1314. package/packages/core/src/plugins/auto-mode.ts +0 -190
  1315. package/packages/core/src/plugins/better-sidebar.ts +0 -128
  1316. package/packages/core/src/plugins/browser-fetch.ts +0 -362
  1317. package/packages/core/src/plugins/browser-session.ts +0 -606
  1318. package/packages/core/src/plugins/canvas-draw.ts +0 -143
  1319. package/packages/core/src/plugins/change-verifier.ts +0 -103
  1320. package/packages/core/src/plugins/cleaner.ts +0 -363
  1321. package/packages/core/src/plugins/cli-notifier.ts +0 -194
  1322. package/packages/core/src/plugins/code2skill.ts +0 -237
  1323. package/packages/core/src/plugins/colleague-skill.ts +0 -147
  1324. package/packages/core/src/plugins/context-doctor.ts +0 -487
  1325. package/packages/core/src/plugins/context.ts +0 -227
  1326. package/packages/core/src/plugins/cost-meter.ts +0 -478
  1327. package/packages/core/src/plugins/dependency-checker.ts +0 -578
  1328. package/packages/core/src/plugins/docker-sandbox.ts +0 -336
  1329. package/packages/core/src/plugins/fail-logger.ts +0 -202
  1330. package/packages/core/src/plugins/genui.ts +0 -150
  1331. package/packages/core/src/plugins/git-time-capsule.ts +0 -466
  1332. package/packages/core/src/plugins/graph-memory.ts +0 -667
  1333. package/packages/core/src/plugins/history-compressor.ts +0 -98
  1334. package/packages/core/src/plugins/hol-guard.ts +0 -171
  1335. package/packages/core/src/plugins/i18n-pair.ts +0 -326
  1336. package/packages/core/src/plugins/image-compressor.ts +0 -217
  1337. package/packages/core/src/plugins/llm-verifier.ts +0 -182
  1338. package/packages/core/src/plugins/mcp-client.ts +0 -1379
  1339. package/packages/core/src/plugins/mcp-panel.ts +0 -206
  1340. package/packages/core/src/plugins/memory.ts +0 -381
  1341. package/packages/core/src/plugins/mirage-bridge.ts +0 -191
  1342. package/packages/core/src/plugins/mock-server.ts +0 -189
  1343. package/packages/core/src/plugins/model.ts +0 -18
  1344. package/packages/core/src/plugins/models.ts +0 -43
  1345. package/packages/core/src/plugins/modlens.ts +0 -497
  1346. package/packages/core/src/plugins/module-search.ts +0 -222
  1347. package/packages/core/src/plugins/obsidian-sync.ts +0 -94
  1348. package/packages/core/src/plugins/openpets.ts +0 -260
  1349. package/packages/core/src/plugins/plan-execute.ts +0 -104
  1350. package/packages/core/src/plugins/plugin-check.ts +0 -316
  1351. package/packages/core/src/plugins/plugin-dev.ts +0 -191
  1352. package/packages/core/src/plugins/plugin-finder.ts +0 -215
  1353. package/packages/core/src/plugins/plugin-radar.ts +0 -270
  1354. package/packages/core/src/plugins/plugin-stars.ts +0 -377
  1355. package/packages/core/src/plugins/prompt-guard.ts +0 -161
  1356. package/packages/core/src/plugins/prompt-library.ts +0 -171
  1357. package/packages/core/src/plugins/readme-gen.ts +0 -544
  1358. package/packages/core/src/plugins/recall-unread.ts +0 -486
  1359. package/packages/core/src/plugins/resources.ts +0 -146
  1360. package/packages/core/src/plugins/reverse-skill.ts +0 -83
  1361. package/packages/core/src/plugins/reviewer-bot.ts +0 -164
  1362. package/packages/core/src/plugins/runtime-doctor.ts +0 -140
  1363. package/packages/core/src/plugins/runtime.ts +0 -171
  1364. package/packages/core/src/plugins/secure-audit.ts +0 -167
  1365. package/packages/core/src/plugins/session-bookmarks.ts +0 -95
  1366. package/packages/core/src/plugins/session-bridge.ts +0 -614
  1367. package/packages/core/src/plugins/session-compare.ts +0 -186
  1368. package/packages/core/src/plugins/session-export.ts +0 -102
  1369. package/packages/core/src/plugins/session-insights.ts +0 -470
  1370. package/packages/core/src/plugins/session-search.ts +0 -129
  1371. package/packages/core/src/plugins/session.ts +0 -40
  1372. package/packages/core/src/plugins/skill-catalog.ts +0 -122
  1373. package/packages/core/src/plugins/skill-guard.ts +0 -345
  1374. package/packages/core/src/plugins/sql-lens-worker.ts +0 -202
  1375. package/packages/core/src/plugins/sql-lens.ts +0 -344
  1376. package/packages/core/src/plugins/stdio.ts +0 -77
  1377. package/packages/core/src/plugins/synapse.ts +0 -137
  1378. package/packages/core/src/plugins/tab-manager.ts +0 -233
  1379. package/packages/core/src/plugins/taskboard.ts +0 -446
  1380. package/packages/core/src/plugins/telemetry-blocker.ts +0 -78
  1381. package/packages/core/src/plugins/test-harness.ts +0 -300
  1382. package/packages/core/src/plugins/theme-studio.ts +0 -170
  1383. package/packages/core/src/plugins/token-guard.ts +0 -224
  1384. package/packages/core/src/plugins/tools.ts +0 -29
  1385. package/packages/core/src/plugins/turn-rewind.ts +0 -400
  1386. package/packages/core/src/plugins/undo-savepoint.ts +0 -385
  1387. package/packages/core/src/plugins/vision-toolkit.ts +0 -510
  1388. package/packages/core/src/plugins/web-research.ts +0 -301
  1389. package/packages/core/src/plugins/workspace-navigator.ts +0 -189
  1390. package/packages/core/src/plugins/workspace-search.ts +0 -177
  1391. package/packages/core/src/plugins/yaml-validator.ts +0 -216
  1392. package/packages/core/src/profile.ts +0 -37
  1393. package/packages/core/src/runtime.ts +0 -52
  1394. package/packages/core/src/services.ts +0 -232
  1395. package/packages/core/src/stdio.ts +0 -355
  1396. package/packages/core/src/workspace-path.ts +0 -79
  1397. package/packages/core/test/agent-teams.test.ts +0 -517
  1398. package/packages/core/test/anchored-standard.test.ts +0 -60
  1399. package/packages/core/test/annotation.test.ts +0 -69
  1400. package/packages/core/test/archify.test.ts +0 -244
  1401. package/packages/core/test/at-file.test.ts +0 -666
  1402. package/packages/core/test/atomic-write.test.ts +0 -52
  1403. package/packages/core/test/auto-mode.test.ts +0 -629
  1404. package/packages/core/test/better-sidebar.test.ts +0 -232
  1405. package/packages/core/test/boot.test.ts +0 -265
  1406. package/packages/core/test/bounded-file.test.ts +0 -55
  1407. package/packages/core/test/browser-fetch-rebinding.test.ts +0 -93
  1408. package/packages/core/test/browser-fetch.test.ts +0 -844
  1409. package/packages/core/test/browser-session.test.ts +0 -1236
  1410. package/packages/core/test/canvas-draw.test.ts +0 -164
  1411. package/packages/core/test/change-verifier.test.ts +0 -200
  1412. package/packages/core/test/cleaner.test.ts +0 -316
  1413. package/packages/core/test/cli-notifier.test.ts +0 -235
  1414. package/packages/core/test/code2skill.test.ts +0 -264
  1415. package/packages/core/test/colleague-skill.test.ts +0 -241
  1416. package/packages/core/test/config.test.ts +0 -147
  1417. package/packages/core/test/context-doctor.test.ts +0 -627
  1418. package/packages/core/test/context-insights.test.ts +0 -396
  1419. package/packages/core/test/cordis-timer.test.ts +0 -147
  1420. package/packages/core/test/cost-meter.test.ts +0 -362
  1421. package/packages/core/test/dependency-checker.test.ts +0 -633
  1422. package/packages/core/test/docker-sandbox.test.ts +0 -170
  1423. package/packages/core/test/fail-logger.test.ts +0 -363
  1424. package/packages/core/test/genui.test.ts +0 -162
  1425. package/packages/core/test/git-time-capsule.test.ts +0 -1476
  1426. package/packages/core/test/graph-memory.test.ts +0 -508
  1427. package/packages/core/test/history-compressor.test.ts +0 -47
  1428. package/packages/core/test/hol-guard.test.ts +0 -61
  1429. package/packages/core/test/http.test.ts +0 -36
  1430. package/packages/core/test/i18n-pair.test.ts +0 -367
  1431. package/packages/core/test/image-compressor.test.ts +0 -59
  1432. package/packages/core/test/llm-verifier.test.ts +0 -76
  1433. package/packages/core/test/mcp-client.test.ts +0 -1037
  1434. package/packages/core/test/mcp-panel.test.ts +0 -91
  1435. package/packages/core/test/memory.test.ts +0 -125
  1436. package/packages/core/test/mirage-bridge.test.ts +0 -58
  1437. package/packages/core/test/mock-server.test.ts +0 -63
  1438. package/packages/core/test/model.test.ts +0 -62
  1439. package/packages/core/test/models.test.ts +0 -85
  1440. package/packages/core/test/modlens.test.ts +0 -615
  1441. package/packages/core/test/module-search.test.ts +0 -98
  1442. package/packages/core/test/obsidian-sync.test.ts +0 -57
  1443. package/packages/core/test/openpets.test.ts +0 -273
  1444. package/packages/core/test/plan-execute.test.ts +0 -86
  1445. package/packages/core/test/plugin-check.test.ts +0 -16
  1446. package/packages/core/test/plugin-dev.test.ts +0 -246
  1447. package/packages/core/test/plugin-finder.test.ts +0 -105
  1448. package/packages/core/test/plugin-radar.test.ts +0 -87
  1449. package/packages/core/test/plugin-stars.test.ts +0 -480
  1450. package/packages/core/test/profile.test.ts +0 -39
  1451. package/packages/core/test/profiles.integration.test.ts +0 -576
  1452. package/packages/core/test/prompt-guard.test.ts +0 -78
  1453. package/packages/core/test/prompt-library.test.ts +0 -56
  1454. package/packages/core/test/readme-gen.test.ts +0 -445
  1455. package/packages/core/test/recall-unread.test.ts +0 -592
  1456. package/packages/core/test/registry.test.ts +0 -64
  1457. package/packages/core/test/resources.test.ts +0 -310
  1458. package/packages/core/test/reverse-skill.test.ts +0 -40
  1459. package/packages/core/test/reviewer-bot.test.ts +0 -55
  1460. package/packages/core/test/runtime-doctor.test.ts +0 -55
  1461. package/packages/core/test/runtime-fixture.ts +0 -55
  1462. package/packages/core/test/runtime.test.ts +0 -313
  1463. package/packages/core/test/secure-audit.test.ts +0 -29
  1464. package/packages/core/test/services.test.ts +0 -4805
  1465. package/packages/core/test/session-bookmarks.test.ts +0 -62
  1466. package/packages/core/test/session-bridge.test.ts +0 -411
  1467. package/packages/core/test/session-compare.test.ts +0 -94
  1468. package/packages/core/test/session-export.test.ts +0 -54
  1469. package/packages/core/test/session-insights.test.ts +0 -486
  1470. package/packages/core/test/session-search.test.ts +0 -30
  1471. package/packages/core/test/session.test.ts +0 -153
  1472. package/packages/core/test/skill-catalog.test.ts +0 -18
  1473. package/packages/core/test/skill-guard.test.ts +0 -280
  1474. package/packages/core/test/sql-lens.test.ts +0 -244
  1475. package/packages/core/test/stdio-args.test.ts +0 -661
  1476. package/packages/core/test/stdio.test.ts +0 -246
  1477. package/packages/core/test/synapse.test.ts +0 -67
  1478. package/packages/core/test/tab-manager.test.ts +0 -58
  1479. package/packages/core/test/taskboard.test.ts +0 -73
  1480. package/packages/core/test/telemetry-blocker.test.ts +0 -61
  1481. package/packages/core/test/test-harness.test.ts +0 -297
  1482. package/packages/core/test/theme-studio.test.ts +0 -39
  1483. package/packages/core/test/token-guard.test.ts +0 -395
  1484. package/packages/core/test/tools.test.ts +0 -118
  1485. package/packages/core/test/turn-rewind.test.ts +0 -549
  1486. package/packages/core/test/undo-savepoint.test.ts +0 -222
  1487. package/packages/core/test/vision-toolkit.test.ts +0 -511
  1488. package/packages/core/test/web-research.test.ts +0 -63
  1489. package/packages/core/test/workspace-git-status.test.ts +0 -54
  1490. package/packages/core/test/workspace-navigator.test.ts +0 -43
  1491. package/packages/core/test/workspace-path.test.ts +0 -34
  1492. package/packages/core/test/workspace-search.test.ts +0 -88
  1493. package/packages/core/test/yaml-validator.test.ts +0 -195
  1494. package/packages/core/tsconfig.build.json +0 -8
  1495. package/packages/core/tsconfig.json +0 -7
@@ -1,1476 +0,0 @@
1
- import { execFile } from "node:child_process";
2
- import { chmod, mkdir, mkdtemp, readFile, readdir, rm, symlink, writeFile } from "node:fs/promises";
3
- import { tmpdir } from "node:os";
4
- import { delimiter, join } from "node:path";
5
- import { promisify } from "node:util";
6
- import { Context } from "@deepseek-ai/cordis";
7
- import { afterEach, describe, expect, test } from "vitest";
8
- import { PiPluginUiRegistry, PiToolRegistry } from "../src/services.js";
9
- import { applyCapsule } from "../src/plugins/git-time-capsule.js";
10
- import gitTimeCapsulePlugin from "../src/plugins/git-time-capsule.js";
11
-
12
- const execFileAsync = promisify(execFile);
13
- const temporaryDirectories: string[] = [];
14
-
15
- async function waitForFile(path: string, description: string, timeoutMs = 5_000): Promise<string> {
16
- const startedAt = Date.now();
17
- while (true) {
18
- const value = await readFile(path, "utf8").catch(() => undefined);
19
- if (value !== undefined) return value;
20
- if (Date.now() - startedAt >= timeoutMs) throw new Error(`Timed out waiting for ${description}`);
21
- await new Promise((resolve) => setTimeout(resolve, 10));
22
- }
23
- }
24
-
25
- afterEach(async () => {
26
- await Promise.all(temporaryDirectories.splice(0).map((directory) => rm(directory, { recursive: true, force: true })));
27
- });
28
-
29
- describe("git time capsule restore", () => {
30
- test("checks and applies a capsule to a real git workspace", async () => {
31
- const workspace = await mkdtemp(join(tmpdir(), "pi-harness-capsule-workspace-"));
32
- const capsules = await mkdtemp(join(tmpdir(), "pi-harness-capsules-"));
33
- temporaryDirectories.push(workspace, capsules);
34
- await execFileAsync("git", ["init", "-q", "-b", "main"], { cwd: workspace });
35
- await execFileAsync("git", ["config", "user.email", "test@example.invalid"], { cwd: workspace });
36
- await execFileAsync("git", ["config", "user.name", "Pi Harness Test"], { cwd: workspace });
37
- await writeFile(join(workspace, "note.txt"), "before\n", "utf8");
38
- await execFileAsync("git", ["add", "note.txt"], { cwd: workspace });
39
- await execFileAsync("git", ["commit", "-qm", "fixture"], { cwd: workspace });
40
- await writeFile(join(workspace, "note.txt"), "after\n", "utf8");
41
- const { stdout: patch } = await execFileAsync("git", ["diff", "--binary"], { cwd: workspace });
42
- const capsule = join(capsules, "restore.patch");
43
- await writeFile(capsule, patch, "utf8");
44
-
45
- await applyCapsule(workspace, capsule);
46
-
47
- await expect(readFile(join(workspace, "note.txt"), "utf8")).resolves.toBe("before\n");
48
- });
49
-
50
- test("rejects a capsule that does not apply cleanly", async () => {
51
- const workspace = await mkdtemp(join(tmpdir(), "pi-harness-capsule-conflict-"));
52
- const capsules = await mkdtemp(join(tmpdir(), "pi-harness-capsules-conflict-"));
53
- temporaryDirectories.push(workspace, capsules);
54
- await execFileAsync("git", ["init", "-q", "-b", "main"], { cwd: workspace });
55
- await writeFile(join(workspace, "note.txt"), "current\n", "utf8");
56
- const capsule = join(capsules, "conflict.patch");
57
- await writeFile(capsule, "diff --git a/note.txt b/note.txt\n--- a/note.txt\n+++ b/note.txt\n@@ -1 +1 @@\n-old\n+restored\n", "utf8");
58
-
59
- await expect(applyCapsule(workspace, capsule)).rejects.toThrow("does not apply cleanly");
60
- await expect(readFile(join(workspace, "note.txt"), "utf8")).resolves.toBe("current\n");
61
- });
62
-
63
- test("uses the default timeout when direct restore configuration is not finite", async () => {
64
- const workspace = await mkdtemp(join(tmpdir(), "pi-harness-capsule-direct-timeout-workspace-"));
65
- const capsules = await mkdtemp(join(tmpdir(), "pi-harness-capsule-direct-timeout-input-"));
66
- temporaryDirectories.push(workspace, capsules);
67
- await execFileAsync("git", ["init", "-q", "-b", "main"], { cwd: workspace });
68
- await execFileAsync("git", ["config", "user.email", "test@example.invalid"], { cwd: workspace });
69
- await execFileAsync("git", ["config", "user.name", "Pi Harness Test"], { cwd: workspace });
70
- await writeFile(join(workspace, "note.txt"), "before\n", "utf8");
71
- await execFileAsync("git", ["add", "note.txt"], { cwd: workspace });
72
- await execFileAsync("git", ["commit", "-qm", "fixture"], { cwd: workspace });
73
- await writeFile(join(workspace, "note.txt"), "after\n", "utf8");
74
- const { stdout: patch } = await execFileAsync("git", ["diff", "--binary"], { cwd: workspace });
75
- const capsule = join(capsules, "restore.patch");
76
- await writeFile(capsule, patch, "utf8");
77
-
78
- await applyCapsule(workspace, capsule, Number.NaN);
79
-
80
- await expect(readFile(join(workspace, "note.txt"), "utf8")).resolves.toBe("before\n");
81
- });
82
-
83
- test("rejects a symbolic-link capsule before Git reads its target", async () => {
84
- if (process.platform === "win32") return;
85
- const workspace = await mkdtemp(join(tmpdir(), "pi-harness-capsule-symlink-workspace-"));
86
- const capsules = await mkdtemp(join(tmpdir(), "pi-harness-capsule-symlink-input-"));
87
- temporaryDirectories.push(workspace, capsules);
88
- await execFileAsync("git", ["init", "-q", "-b", "main"], { cwd: workspace });
89
- await execFileAsync("git", ["config", "user.email", "test@example.invalid"], { cwd: workspace });
90
- await execFileAsync("git", ["config", "user.name", "Pi Harness Test"], { cwd: workspace });
91
- await writeFile(join(workspace, "note.txt"), "before\n", "utf8");
92
- await execFileAsync("git", ["add", "note.txt"], { cwd: workspace });
93
- await execFileAsync("git", ["commit", "-qm", "fixture"], { cwd: workspace });
94
- await writeFile(join(workspace, "note.txt"), "after\n", "utf8");
95
- const { stdout: patch } = await execFileAsync("git", ["diff", "--binary"], { cwd: workspace });
96
- const target = join(capsules, "target.patch");
97
- const link = join(capsules, "restore.patch");
98
- await writeFile(target, patch, "utf8");
99
- await symlink(target, link);
100
-
101
- await expect(applyCapsule(workspace, link)).rejects.toThrow(/symbolic link/iu);
102
- await expect(readFile(join(workspace, "note.txt"), "utf8")).resolves.toBe("after\n");
103
- });
104
-
105
- test("rejects an oversized capsule before invoking Git", async () => {
106
- const workspace = await mkdtemp(join(tmpdir(), "pi-harness-capsule-oversized-workspace-"));
107
- const capsules = await mkdtemp(join(tmpdir(), "pi-harness-capsule-oversized-input-"));
108
- temporaryDirectories.push(workspace, capsules);
109
- await execFileAsync("git", ["init", "-q", "-b", "main"], { cwd: workspace });
110
- const capsule = join(capsules, "oversized.patch");
111
- await writeFile(capsule, Buffer.alloc(8 * 1024 * 1024 + 1, 0x78));
112
-
113
- await expect(applyCapsule(workspace, capsule)).rejects.toThrow(/exceeds.*8388608-byte limit/iu);
114
- });
115
-
116
- test("preserves caller cancellation while checking a restore", async () => {
117
- if (process.platform === "win32") return;
118
- const workspace = await mkdtemp(join(tmpdir(), "pi-harness-capsule-apply-cancel-workspace-"));
119
- const capsules = await mkdtemp(join(tmpdir(), "pi-harness-capsule-apply-cancel-input-"));
120
- temporaryDirectories.push(workspace, capsules);
121
- const capsule = join(capsules, "restore.patch");
122
- await writeFile(capsule, "non-empty patch fixture\n", "utf8");
123
- const bin = join(workspace, "bin");
124
- const started = join(workspace, "git-started");
125
- await mkdir(bin);
126
- await writeFile(join(bin, "git"), '#!/bin/sh\n: > "$CAPSULE_GIT_STARTED"\nexec sleep 5\n', "utf8");
127
- await chmod(join(bin, "git"), 0o700);
128
- const originalPath = process.env.PATH;
129
- const originalStarted = process.env.CAPSULE_GIT_STARTED;
130
- process.env.PATH = `${bin}${delimiter}${originalPath ?? ""}`;
131
- process.env.CAPSULE_GIT_STARTED = started;
132
- const controller = new AbortController();
133
- let pending: Promise<unknown> | undefined;
134
- try {
135
- pending = applyCapsule(workspace, capsule, 1_000, controller.signal);
136
- await waitForFile(started, "Git restore check to start");
137
-
138
- controller.abort(new Error("restore caller cancelled"));
139
-
140
- await expect(pending).rejects.toThrow("restore caller cancelled");
141
- } finally {
142
- if (!controller.signal.aborted) controller.abort(new Error("restore cancellation test cleanup"));
143
- await pending?.catch(() => undefined);
144
- process.env.PATH = originalPath;
145
- if (originalStarted === undefined) delete process.env.CAPSULE_GIT_STARTED;
146
- else process.env.CAPSULE_GIT_STARTED = originalStarted;
147
- }
148
- });
149
-
150
- test("requires explicit confirmation through the restore tool", async () => {
151
- const workspace = await mkdtemp(join(tmpdir(), "pi-harness-capsule-tool-"));
152
- const agentDir = await mkdtemp(join(tmpdir(), "pi-harness-capsule-agent-"));
153
- temporaryDirectories.push(workspace, agentDir);
154
- const capsuleDirectory = join(agentDir, "capsules");
155
- await mkdir(capsuleDirectory, { recursive: true });
156
- await execFileAsync("git", ["init", "-q", "-b", "main"], { cwd: workspace });
157
- await execFileAsync("git", ["config", "user.email", "test@example.invalid"], { cwd: workspace });
158
- await execFileAsync("git", ["config", "user.name", "Pi Harness Test"], { cwd: workspace });
159
- await writeFile(join(workspace, "note.txt"), "before\n", "utf8");
160
- await execFileAsync("git", ["add", "note.txt"], { cwd: workspace });
161
- await execFileAsync("git", ["commit", "-qm", "fixture"], { cwd: workspace });
162
- await writeFile(join(workspace, "note.txt"), "after\n", "utf8");
163
- const { stdout: patch } = await execFileAsync("git", ["diff", "--binary"], { cwd: workspace });
164
- await writeFile(join(capsuleDirectory, "restore.patch"), patch, "utf8");
165
- const context = new Context();
166
- const tools = new PiToolRegistry();
167
- const panels = new PiPluginUiRegistry();
168
- context.provide("piHarnessLaunch", { cwd: workspace, agentDir, args: [], requestExit() {} });
169
- context.provide("piTools", tools);
170
- context.provide("piPluginUi", panels);
171
- try {
172
- await context.plugin(gitTimeCapsulePlugin);
173
- const tool = tools.snapshot().customTools.find((candidate) => candidate.name === "git_restore");
174
- expect(tool).toBeDefined();
175
- await expect(tool!.execute("call-1", { name: "restore.patch", confirm: false }, undefined, undefined, {} as never)).rejects.toThrow("confirm=true");
176
- await expect(tool!.execute("call-2", { name: "restore.patch", confirm: true }, undefined, undefined, {} as never)).resolves.toMatchObject({
177
- details: { restored: true },
178
- });
179
- await expect(readFile(join(workspace, "note.txt"), "utf8")).resolves.toBe("before\n");
180
- await expect(panels.snapshot()).resolves.toMatchObject([{ data: { latest: { action: "restore", status: "completed", files: 1 } } }]);
181
- } finally {
182
- await context.fiber.dispose();
183
- }
184
- });
185
-
186
- test("reports a completed restore even if the source capsule disappears afterward", async () => {
187
- if (process.platform === "win32") return;
188
- const workspace = await mkdtemp(join(tmpdir(), "pi-harness-capsule-restore-race-workspace-"));
189
- const agentDir = await mkdtemp(join(tmpdir(), "pi-harness-capsule-restore-race-agent-"));
190
- temporaryDirectories.push(workspace, agentDir);
191
- const directory = join(agentDir, "capsules");
192
- await mkdir(directory);
193
- await execFileAsync("git", ["init", "-q", "-b", "main"], { cwd: workspace });
194
- await execFileAsync("git", ["config", "user.email", "test@example.invalid"], { cwd: workspace });
195
- await execFileAsync("git", ["config", "user.name", "Pi Harness Test"], { cwd: workspace });
196
- await writeFile(join(workspace, "note.txt"), "before\n", "utf8");
197
- await execFileAsync("git", ["add", "note.txt"], { cwd: workspace });
198
- await execFileAsync("git", ["commit", "-qm", "fixture"], { cwd: workspace });
199
- await writeFile(join(workspace, "note.txt"), "after\n", "utf8");
200
- const { stdout: patch } = await execFileAsync("git", ["diff", "--binary", "--no-textconv"], { cwd: workspace });
201
- const capsule = join(directory, "restore-race.patch");
202
- await writeFile(capsule, patch, "utf8");
203
- const { stdout: realGit } = await execFileAsync("which", ["git"]);
204
- const bin = join(workspace, "bin");
205
- await mkdir(bin);
206
- await writeFile(
207
- join(bin, "git"),
208
- '#!/bin/sh\n"$CAPSULE_REAL_GIT" "$@"\nstatus=$?\ncase " $* " in\n *" apply --reverse --binary "*) rm "$CAPSULE_SOURCE" ;;\nesac\nexit "$status"\n',
209
- "utf8",
210
- );
211
- await chmod(join(bin, "git"), 0o700);
212
- const original = { path: process.env.PATH, realGit: process.env.CAPSULE_REAL_GIT, source: process.env.CAPSULE_SOURCE };
213
- process.env.PATH = `${bin}${delimiter}${original.path ?? ""}`;
214
- process.env.CAPSULE_REAL_GIT = realGit.trim();
215
- process.env.CAPSULE_SOURCE = capsule;
216
- const context = new Context();
217
- const tools = new PiToolRegistry();
218
- const panels = new PiPluginUiRegistry();
219
- context.provide("piHarnessLaunch", { cwd: workspace, agentDir, args: [], requestExit() {} });
220
- context.provide("piTools", tools);
221
- context.provide("piPluginUi", panels);
222
- try {
223
- await context.plugin(gitTimeCapsulePlugin);
224
- const restore = tools.snapshot().customTools.find((candidate) => candidate.name === "git_restore")!;
225
-
226
- await expect(
227
- restore.execute("call-restore-race", { name: "restore-race.patch", confirm: true }, undefined, undefined, {} as never),
228
- ).resolves.toMatchObject({
229
- details: { restored: true },
230
- });
231
- await expect(readFile(join(workspace, "note.txt"), "utf8")).resolves.toBe("before\n");
232
- } finally {
233
- for (const [name, value] of [
234
- ["PATH", original.path],
235
- ["CAPSULE_REAL_GIT", original.realGit],
236
- ["CAPSULE_SOURCE", original.source],
237
- ] as const) {
238
- if (value === undefined) delete process.env[name];
239
- else process.env[name] = value;
240
- }
241
- await context.fiber.dispose();
242
- }
243
- });
244
-
245
- test("rejects accessor restore parameters without invoking them", async () => {
246
- const workspace = await mkdtemp(join(tmpdir(), "pi-harness-capsule-restore-params-workspace-"));
247
- const agentDir = await mkdtemp(join(tmpdir(), "pi-harness-capsule-restore-params-agent-"));
248
- temporaryDirectories.push(workspace, agentDir);
249
- const context = new Context();
250
- const tools = new PiToolRegistry();
251
- const panels = new PiPluginUiRegistry();
252
- context.provide("piHarnessLaunch", { cwd: workspace, agentDir, args: [], requestExit() {} });
253
- context.provide("piTools", tools);
254
- context.provide("piPluginUi", panels);
255
- let accessed = false;
256
- const rawParams = { name: "restore.patch" } as { name: string; confirm?: boolean };
257
- Object.defineProperty(rawParams, "confirm", {
258
- enumerable: true,
259
- get() {
260
- accessed = true;
261
- throw new Error("accessor executed");
262
- },
263
- });
264
- try {
265
- await context.plugin(gitTimeCapsulePlugin);
266
- const tool = tools.snapshot().customTools.find((candidate) => candidate.name === "git_restore")!;
267
-
268
- await expect(tool.execute("call-restore-params", rawParams, undefined, undefined, {} as never)).rejects.toThrow(/parameters.*data properties/iu);
269
- expect(accessed).toBe(false);
270
- await expect(panels.snapshot()).resolves.toMatchObject([
271
- { data: { latest: { action: "restore", status: "failed", error: "Git restore parameters must use data properties" } } },
272
- ]);
273
- } finally {
274
- await context.fiber.dispose();
275
- }
276
- });
277
-
278
- test("rejects NUL bytes in restore capsule names before filesystem access", async () => {
279
- const workspace = await mkdtemp(join(tmpdir(), "pi-harness-capsule-restore-nul-workspace-"));
280
- const agentDir = await mkdtemp(join(tmpdir(), "pi-harness-capsule-restore-nul-agent-"));
281
- temporaryDirectories.push(workspace, agentDir);
282
- const context = new Context();
283
- const tools = new PiToolRegistry();
284
- context.provide("piHarnessLaunch", { cwd: workspace, agentDir, args: [], requestExit() {} });
285
- context.provide("piTools", tools);
286
- context.provide("piPluginUi", new PiPluginUiRegistry());
287
- try {
288
- await context.plugin(gitTimeCapsulePlugin);
289
- const tool = tools.snapshot().customTools.find((candidate) => candidate.name === "git_restore")!;
290
-
291
- await expect(tool.execute("call-restore-nul", { name: "restore\0.patch", confirm: true }, undefined, undefined, {} as never)).rejects.toThrow(
292
- /name.*must not contain NUL/iu,
293
- );
294
- } finally {
295
- await context.fiber.dispose();
296
- }
297
- });
298
-
299
- test("rejects ambiguous or unsafe restore capsule names before filesystem access", async () => {
300
- const workspace = await mkdtemp(join(tmpdir(), "pi-harness-capsule-restore-name-workspace-"));
301
- const agentDir = await mkdtemp(join(tmpdir(), "pi-harness-capsule-restore-name-agent-"));
302
- temporaryDirectories.push(workspace, agentDir);
303
- const context = new Context();
304
- const tools = new PiToolRegistry();
305
- context.provide("piHarnessLaunch", { cwd: workspace, agentDir, args: [], requestExit() {} });
306
- context.provide("piTools", tools);
307
- context.provide("piPluginUi", new PiPluginUiRegistry());
308
- try {
309
- await context.plugin(gitTimeCapsulePlugin);
310
- const restore = tools.snapshot().customTools.find((candidate) => candidate.name === "git_restore")!;
311
-
312
- for (const [index, name] of [
313
- " restore.patch",
314
- "restore.patch ",
315
- "folder\\restore.patch",
316
- "restore\n.patch",
317
- "restore\u202e.patch",
318
- `${"😀".repeat(64)}.patch`,
319
- ].entries())
320
- await expect(restore.execute(`call-unsafe-name-${index}`, { name, confirm: true }, undefined, undefined, {} as never)).rejects.toThrow(
321
- /safe \.patch filename/iu,
322
- );
323
- } finally {
324
- await context.fiber.dispose();
325
- }
326
- });
327
-
328
- test("rejects restore through a symbolic-link capsule directory", async () => {
329
- if (process.platform === "win32") return;
330
- const workspace = await mkdtemp(join(tmpdir(), "pi-harness-capsule-restore-directory-workspace-"));
331
- const agentDir = await mkdtemp(join(tmpdir(), "pi-harness-capsule-restore-directory-agent-"));
332
- const outside = await mkdtemp(join(tmpdir(), "pi-harness-capsule-restore-directory-outside-"));
333
- temporaryDirectories.push(workspace, agentDir, outside);
334
- await execFileAsync("git", ["init", "-q", "-b", "main"], { cwd: workspace });
335
- await execFileAsync("git", ["config", "user.email", "test@example.invalid"], { cwd: workspace });
336
- await execFileAsync("git", ["config", "user.name", "Pi Harness Test"], { cwd: workspace });
337
- await writeFile(join(workspace, "note.txt"), "before\n", "utf8");
338
- await execFileAsync("git", ["add", "note.txt"], { cwd: workspace });
339
- await execFileAsync("git", ["commit", "-qm", "fixture"], { cwd: workspace });
340
- await writeFile(join(workspace, "note.txt"), "after\n", "utf8");
341
- const { stdout: patch } = await execFileAsync("git", ["diff", "--binary"], { cwd: workspace });
342
- await writeFile(join(outside, "restore.patch"), patch, "utf8");
343
- await symlink(outside, join(agentDir, "capsules"));
344
- const context = new Context();
345
- const tools = new PiToolRegistry();
346
- context.provide("piHarnessLaunch", { cwd: workspace, agentDir, args: [], requestExit() {} });
347
- context.provide("piTools", tools);
348
- context.provide("piPluginUi", new PiPluginUiRegistry());
349
- try {
350
- await context.plugin(gitTimeCapsulePlugin);
351
- const tool = tools.snapshot().customTools.find((candidate) => candidate.name === "git_restore")!;
352
-
353
- await expect(tool.execute("call-directory-link", { name: "restore.patch", confirm: true }, undefined, undefined, {} as never)).rejects.toThrow(
354
- /directory.*symbolic link/iu,
355
- );
356
- await expect(readFile(join(workspace, "note.txt"), "utf8")).resolves.toBe("after\n");
357
- } finally {
358
- await context.fiber.dispose();
359
- }
360
- });
361
-
362
- test("creates distinct capsules and excludes untracked files from the recoverable count", async () => {
363
- const workspace = await mkdtemp(join(tmpdir(), "pi-harness-capsule-distinct-workspace-"));
364
- const agentDir = await mkdtemp(join(tmpdir(), "pi-harness-capsule-distinct-agent-"));
365
- temporaryDirectories.push(workspace, agentDir);
366
- await execFileAsync("git", ["init", "-q", "-b", "main"], { cwd: workspace });
367
- await execFileAsync("git", ["config", "user.email", "test@example.invalid"], { cwd: workspace });
368
- await execFileAsync("git", ["config", "user.name", "Pi Harness Test"], { cwd: workspace });
369
- await writeFile(join(workspace, "tracked.txt"), "before\n", "utf8");
370
- await execFileAsync("git", ["add", "tracked.txt"], { cwd: workspace });
371
- await execFileAsync("git", ["commit", "-qm", "fixture"], { cwd: workspace });
372
- await writeFile(join(workspace, "tracked.txt"), "after\n", "utf8");
373
- await writeFile(join(workspace, "untracked.txt"), "not in the patch\n", "utf8");
374
- const context = new Context();
375
- const tools = new PiToolRegistry();
376
- context.provide("piHarnessLaunch", { cwd: workspace, agentDir, args: [], requestExit() {} });
377
- context.provide("piTools", tools);
378
- context.provide("piPluginUi", new PiPluginUiRegistry());
379
- try {
380
- await context.plugin(gitTimeCapsulePlugin);
381
- const tool = tools.snapshot().customTools.find((candidate) => candidate.name === "git_snapshot");
382
- const first = await tool!.execute("call-1", {}, undefined, undefined, {} as never);
383
- expect(first).toMatchObject({ details: { files: 1 } });
384
- expect(JSON.stringify(first)).not.toContain(agentDir);
385
- expect(JSON.stringify(first)).not.toContain(workspace);
386
- await expect(tool!.execute("call-2", {}, undefined, undefined, {} as never)).resolves.toMatchObject({ details: { files: 1 } });
387
- await expect(readdir(join(agentDir, "capsules"))).resolves.toHaveLength(2);
388
- } finally {
389
- await context.fiber.dispose();
390
- }
391
- });
392
-
393
- test("returns detached panel state that cannot mutate the latest capsule", async () => {
394
- const workspace = await mkdtemp(join(tmpdir(), "pi-harness-capsule-panel-clone-workspace-"));
395
- const agentDir = await mkdtemp(join(tmpdir(), "pi-harness-capsule-panel-clone-agent-"));
396
- temporaryDirectories.push(workspace, agentDir);
397
- await execFileAsync("git", ["init", "-q", "-b", "main"], { cwd: workspace });
398
- await execFileAsync("git", ["config", "user.email", "test@example.invalid"], { cwd: workspace });
399
- await execFileAsync("git", ["config", "user.name", "Pi Harness Test"], { cwd: workspace });
400
- await writeFile(join(workspace, "tracked.txt"), "before\n", "utf8");
401
- await execFileAsync("git", ["add", "tracked.txt"], { cwd: workspace });
402
- await execFileAsync("git", ["commit", "-qm", "fixture"], { cwd: workspace });
403
- await writeFile(join(workspace, "tracked.txt"), "after\n", "utf8");
404
- const context = new Context();
405
- const tools = new PiToolRegistry();
406
- const panels = new PiPluginUiRegistry();
407
- context.provide("piHarnessLaunch", { cwd: workspace, agentDir, args: [], requestExit() {} });
408
- context.provide("piTools", tools);
409
- context.provide("piPluginUi", panels);
410
- try {
411
- await context.plugin(gitTimeCapsulePlugin);
412
- const tool = tools.snapshot().customTools.find((candidate) => candidate.name === "git_snapshot")!;
413
- await tool.execute("call-panel-clone", {}, undefined, undefined, {} as never);
414
- const first = await panels.snapshot();
415
- const firstData = first[0]?.data as { latest: { name: string } };
416
- const originalName = firstData.latest.name;
417
- firstData.latest.name = "mutated.patch";
418
-
419
- const second = await panels.snapshot();
420
-
421
- expect((second[0]?.data as { latest: { name: string } }).latest.name).toBe(originalName);
422
- } finally {
423
- await context.fiber.dispose();
424
- }
425
- });
426
-
427
- test("records a bounded failed capture for the panel", async () => {
428
- const workspace = await mkdtemp(join(tmpdir(), "pi-harness-capsule-failure-workspace-"));
429
- const agentDir = await mkdtemp(join(tmpdir(), "pi-harness-capsule-failure-agent-"));
430
- temporaryDirectories.push(workspace, agentDir);
431
- const context = new Context();
432
- const tools = new PiToolRegistry();
433
- const panels = new PiPluginUiRegistry();
434
- context.provide("piHarnessLaunch", { cwd: workspace, agentDir, args: [], requestExit() {} });
435
- context.provide("piTools", tools);
436
- context.provide("piPluginUi", panels);
437
- try {
438
- await context.plugin(gitTimeCapsulePlugin);
439
- const tool = tools.snapshot().customTools.find((candidate) => candidate.name === "git_snapshot")!;
440
- await expect(tool.execute("call-failure", {}, undefined, undefined, {} as never)).rejects.toThrow("Git time capsule requires a Git working tree");
441
-
442
- await expect(panels.snapshot()).resolves.toMatchObject([
443
- {
444
- id: "git-time-capsule-panel",
445
- data: { latest: { action: "capture", status: "failed", error: "Git time capsule requires a Git working tree" } },
446
- },
447
- ]);
448
- const snapshot = await panels.snapshot();
449
- expect((snapshot[0]?.data as { latest: { error: string } }).latest.error.length).toBeLessThanOrEqual(2_000);
450
- } finally {
451
- await context.fiber.dispose();
452
- }
453
- });
454
-
455
- test("sanitizes tool and panel failures while preserving the original cause", async () => {
456
- if (process.platform === "win32") return;
457
- const workspace = await mkdtemp(join(tmpdir(), "pi-harness-capsule-safe-error-workspace-"));
458
- const agentDir = await mkdtemp(join(tmpdir(), "pi-harness-capsule-safe-error-agent-"));
459
- temporaryDirectories.push(workspace, agentDir);
460
- const bin = join(workspace, "bin");
461
- await mkdir(bin);
462
- await writeFile(
463
- join(bin, "git"),
464
- '#!/bin/sh\nif [ "$1" = "rev-parse" ]; then printf "true\\n"; exit 0; fi\nprintf "fatal: %s\\342\\200\\256\\001\\n" "$CAPSULE_ERROR_PATH" >&2\nexit 2\n',
465
- "utf8",
466
- );
467
- await chmod(join(bin, "git"), 0o700);
468
- const originalPath = process.env.PATH;
469
- const originalErrorPath = process.env.CAPSULE_ERROR_PATH;
470
- process.env.PATH = `${bin}${delimiter}${originalPath ?? ""}`;
471
- process.env.CAPSULE_ERROR_PATH = workspace;
472
- const context = new Context();
473
- const tools = new PiToolRegistry();
474
- const panels = new PiPluginUiRegistry();
475
- context.provide("piHarnessLaunch", { cwd: workspace, agentDir, args: [], requestExit() {} });
476
- context.provide("piTools", tools);
477
- context.provide("piPluginUi", panels);
478
- try {
479
- await context.plugin(gitTimeCapsulePlugin);
480
- const tool = tools.snapshot().customTools.find((candidate) => candidate.name === "git_snapshot")!;
481
- let failure: unknown;
482
- try {
483
- await tool.execute("call-safe-error", {}, undefined, undefined, {} as never);
484
- } catch (error) {
485
- failure = error;
486
- }
487
-
488
- expect(failure).toBeInstanceOf(Error);
489
- expect((failure as Error).message.length).toBeLessThanOrEqual(2_000);
490
- expect((failure as Error).message).not.toContain(workspace);
491
- expect((failure as Error).message).not.toMatch(/[\p{Cc}\p{Cf}]/u);
492
- expect((failure as Error).cause).toBeInstanceOf(Error);
493
- const data = (await panels.snapshot())[0]?.data as { latest: { error: string } };
494
- expect(data.latest.error).toBe((failure as Error).message);
495
- } finally {
496
- process.env.PATH = originalPath;
497
- if (originalErrorPath === undefined) delete process.env.CAPSULE_ERROR_PATH;
498
- else process.env.CAPSULE_ERROR_PATH = originalErrorPath;
499
- await context.fiber.dispose();
500
- }
501
- });
502
-
503
- test("times out a hung Git process while creating a capsule", async () => {
504
- if (process.platform === "win32") return;
505
- const workspace = await mkdtemp(join(tmpdir(), "pi-harness-capsule-timeout-workspace-"));
506
- const agentDir = await mkdtemp(join(tmpdir(), "pi-harness-capsule-timeout-agent-"));
507
- temporaryDirectories.push(workspace, agentDir);
508
- const bin = join(workspace, "bin");
509
- await mkdir(bin);
510
- await writeFile(join(bin, "git"), "#!/bin/sh\nexec sleep 1\n", "utf8");
511
- await chmod(join(bin, "git"), 0o700);
512
- const originalPath = process.env.PATH;
513
- process.env.PATH = `${bin}${delimiter}${originalPath ?? ""}`;
514
- const context = new Context();
515
- const tools = new PiToolRegistry();
516
- context.provide("piHarnessLaunch", { cwd: workspace, agentDir, args: [], requestExit() {} });
517
- context.provide("piTools", tools);
518
- context.provide("piPluginUi", new PiPluginUiRegistry());
519
- try {
520
- await context.plugin(gitTimeCapsulePlugin, { timeoutMs: 500 });
521
- const pending = tools
522
- .snapshot()
523
- .customTools.find((candidate) => candidate.name === "git_snapshot")!
524
- .execute("call-1", {}, undefined, undefined, {} as never);
525
- await expect(pending).rejects.toThrow(/timed out after 500 ms/iu);
526
- } finally {
527
- process.env.PATH = originalPath;
528
- await context.fiber.dispose();
529
- }
530
- });
531
-
532
- test("cancels an in-flight Git snapshot when the caller aborts", async () => {
533
- if (process.platform === "win32") return;
534
- const workspace = await mkdtemp(join(tmpdir(), "pi-harness-capsule-cancel-workspace-"));
535
- const agentDir = await mkdtemp(join(tmpdir(), "pi-harness-capsule-cancel-agent-"));
536
- temporaryDirectories.push(workspace, agentDir);
537
- const bin = join(workspace, "bin");
538
- const started = join(workspace, "git-started");
539
- await mkdir(bin);
540
- await writeFile(join(bin, "git"), '#!/bin/sh\necho "$$" > "$CAPSULE_GIT_STARTED"\nexec sleep 5\n', "utf8");
541
- await chmod(join(bin, "git"), 0o700);
542
- const originalPath = process.env.PATH;
543
- const originalStarted = process.env.CAPSULE_GIT_STARTED;
544
- process.env.PATH = `${bin}${delimiter}${originalPath ?? ""}`;
545
- process.env.CAPSULE_GIT_STARTED = started;
546
- const context = new Context();
547
- const tools = new PiToolRegistry();
548
- context.provide("piHarnessLaunch", { cwd: workspace, agentDir, args: [], requestExit() {} });
549
- context.provide("piTools", tools);
550
- context.provide("piPluginUi", new PiPluginUiRegistry());
551
- try {
552
- await context.plugin(gitTimeCapsulePlugin, { timeoutMs: 1_000 });
553
- const tool = tools.snapshot().customTools.find((candidate) => candidate.name === "git_snapshot")!;
554
- const controller = new AbortController();
555
- const pending = tool.execute("call-cancel", {}, controller.signal, undefined, {} as never);
556
- await waitForFile(started, "Git snapshot process to start");
557
-
558
- controller.abort(new Error("snapshot caller cancelled"));
559
-
560
- await expect(pending).rejects.toThrow("snapshot caller cancelled");
561
- } finally {
562
- process.env.PATH = originalPath;
563
- if (originalStarted === undefined) delete process.env.CAPSULE_GIT_STARTED;
564
- else process.env.CAPSULE_GIT_STARTED = originalStarted;
565
- await context.fiber.dispose();
566
- }
567
- });
568
-
569
- test("records a caller cancellation that arrives before execution starts", async () => {
570
- const workspace = await mkdtemp(join(tmpdir(), "pi-harness-capsule-pre-cancel-workspace-"));
571
- const agentDir = await mkdtemp(join(tmpdir(), "pi-harness-capsule-pre-cancel-agent-"));
572
- temporaryDirectories.push(workspace, agentDir);
573
- const context = new Context();
574
- const tools = new PiToolRegistry();
575
- const panels = new PiPluginUiRegistry();
576
- context.provide("piHarnessLaunch", { cwd: workspace, agentDir, args: [], requestExit() {} });
577
- context.provide("piTools", tools);
578
- context.provide("piPluginUi", panels);
579
- const controller = new AbortController();
580
- controller.abort(new Error("caller cancelled before start"));
581
- try {
582
- await context.plugin(gitTimeCapsulePlugin);
583
- const tool = tools.snapshot().customTools.find((candidate) => candidate.name === "git_snapshot")!;
584
-
585
- await expect(tool.execute("call-pre-cancel", {}, controller.signal, undefined, {} as never)).rejects.toThrow("caller cancelled before start");
586
- await expect(panels.snapshot()).resolves.toMatchObject([
587
- { data: { latest: { action: "capture", status: "cancelled", error: "caller cancelled before start" } } },
588
- ]);
589
- } finally {
590
- await context.fiber.dispose();
591
- }
592
- });
593
-
594
- test("cancels an in-flight Git snapshot when the plugin is disposed", async () => {
595
- if (process.platform === "win32") return;
596
- const workspace = await mkdtemp(join(tmpdir(), "pi-harness-capsule-dispose-workspace-"));
597
- const agentDir = await mkdtemp(join(tmpdir(), "pi-harness-capsule-dispose-agent-"));
598
- temporaryDirectories.push(workspace, agentDir);
599
- const bin = join(workspace, "bin");
600
- const started = join(workspace, "git-started");
601
- await mkdir(bin);
602
- await writeFile(join(bin, "git"), '#!/bin/sh\necho "$$" > "$CAPSULE_GIT_STARTED"\nexec sleep 5\n', "utf8");
603
- await chmod(join(bin, "git"), 0o700);
604
- const originalPath = process.env.PATH;
605
- const originalStarted = process.env.CAPSULE_GIT_STARTED;
606
- process.env.PATH = `${bin}${delimiter}${originalPath ?? ""}`;
607
- process.env.CAPSULE_GIT_STARTED = started;
608
- const context = new Context();
609
- const tools = new PiToolRegistry();
610
- context.provide("piHarnessLaunch", { cwd: workspace, agentDir, args: [], requestExit() {} });
611
- context.provide("piTools", tools);
612
- context.provide("piPluginUi", new PiPluginUiRegistry());
613
- let disposed = false;
614
- try {
615
- await context.plugin(gitTimeCapsulePlugin, { timeoutMs: 1_000 });
616
- const tool = tools.snapshot().customTools.find((candidate) => candidate.name === "git_snapshot")!;
617
- const pending = tool.execute("call-dispose", {}, undefined, undefined, {} as never);
618
- await waitForFile(started, "Git snapshot process to start");
619
-
620
- await context.fiber.dispose();
621
- disposed = true;
622
-
623
- await expect(pending).rejects.toThrow("Git time capsule plugin disposed");
624
- } finally {
625
- process.env.PATH = originalPath;
626
- if (originalStarted === undefined) delete process.env.CAPSULE_GIT_STARTED;
627
- else process.env.CAPSULE_GIT_STARTED = originalStarted;
628
- if (!disposed) await context.fiber.dispose();
629
- }
630
- });
631
-
632
- test("serializes concurrent capsule operations", async () => {
633
- if (process.platform === "win32") return;
634
- const workspace = await mkdtemp(join(tmpdir(), "pi-harness-capsule-serial-workspace-"));
635
- const agentDir = await mkdtemp(join(tmpdir(), "pi-harness-capsule-serial-agent-"));
636
- temporaryDirectories.push(workspace, agentDir);
637
- await execFileAsync("git", ["init", "-q", "-b", "main"], { cwd: workspace });
638
- await execFileAsync("git", ["config", "user.email", "test@example.invalid"], { cwd: workspace });
639
- await execFileAsync("git", ["config", "user.name", "Pi Harness Test"], { cwd: workspace });
640
- await writeFile(join(workspace, "tracked.txt"), "before\n", "utf8");
641
- await execFileAsync("git", ["add", "tracked.txt"], { cwd: workspace });
642
- await execFileAsync("git", ["commit", "-qm", "fixture"], { cwd: workspace });
643
- await writeFile(join(workspace, "tracked.txt"), "after\n", "utf8");
644
- const { stdout } = await execFileAsync("which", ["git"]);
645
- const bin = join(workspace, "bin");
646
- const started = join(workspace, "git-started");
647
- const once = join(workspace, "git-once");
648
- const lock = join(workspace, "git-lock");
649
- await mkdir(bin);
650
- await writeFile(
651
- join(bin, "git"),
652
- '#!/bin/sh\nif mkdir "$CAPSULE_GIT_ONCE" 2>/dev/null; then\n mkdir "$CAPSULE_GIT_LOCK"\n : > "$CAPSULE_GIT_STARTED"\n sleep 1\n rmdir "$CAPSULE_GIT_LOCK"\nelif [ -d "$CAPSULE_GIT_LOCK" ]; then\n echo "concurrent Git invocation" >&2\n exit 92\nfi\nexec "$REAL_GIT" "$@"\n',
653
- "utf8",
654
- );
655
- await chmod(join(bin, "git"), 0o700);
656
- const environment = {
657
- PATH: process.env.PATH,
658
- REAL_GIT: process.env.REAL_GIT,
659
- CAPSULE_GIT_STARTED: process.env.CAPSULE_GIT_STARTED,
660
- CAPSULE_GIT_ONCE: process.env.CAPSULE_GIT_ONCE,
661
- CAPSULE_GIT_LOCK: process.env.CAPSULE_GIT_LOCK,
662
- };
663
- process.env.PATH = `${bin}${delimiter}${process.env.PATH ?? ""}`;
664
- process.env.REAL_GIT = stdout.trim();
665
- process.env.CAPSULE_GIT_STARTED = started;
666
- process.env.CAPSULE_GIT_ONCE = once;
667
- process.env.CAPSULE_GIT_LOCK = lock;
668
- const context = new Context();
669
- const tools = new PiToolRegistry();
670
- context.provide("piHarnessLaunch", { cwd: workspace, agentDir, args: [], requestExit() {} });
671
- context.provide("piTools", tools);
672
- context.provide("piPluginUi", new PiPluginUiRegistry());
673
- try {
674
- await context.plugin(gitTimeCapsulePlugin, { timeoutMs: 5_000 });
675
- const tool = tools.snapshot().customTools.find((candidate) => candidate.name === "git_snapshot")!;
676
- const first = tool.execute("call-serial-1", {}, undefined, undefined, {} as never);
677
- await waitForFile(started, "first serialized Git operation to start");
678
- const second = tool.execute("call-serial-2", {}, undefined, undefined, {} as never);
679
-
680
- await expect(Promise.all([first, second])).resolves.toHaveLength(2);
681
- } finally {
682
- for (const [name, value] of Object.entries(environment)) {
683
- if (value === undefined) delete process.env[name];
684
- else process.env[name] = value;
685
- }
686
- await context.fiber.dispose();
687
- }
688
- });
689
-
690
- test("rejects a queued operation promptly when its caller aborts", async () => {
691
- if (process.platform === "win32") return;
692
- const workspace = await mkdtemp(join(tmpdir(), "pi-harness-capsule-queued-cancel-workspace-"));
693
- const agentDir = await mkdtemp(join(tmpdir(), "pi-harness-capsule-queued-cancel-agent-"));
694
- temporaryDirectories.push(workspace, agentDir);
695
- const bin = join(workspace, "bin");
696
- const started = join(workspace, "git-started");
697
- const rejected = join(workspace, "queued-rejected");
698
- await mkdir(bin);
699
- await writeFile(join(bin, "git"), '#!/bin/sh\n: > "$CAPSULE_GIT_STARTED"\nexec sleep 5\n', "utf8");
700
- await chmod(join(bin, "git"), 0o700);
701
- const originalPath = process.env.PATH;
702
- const originalStarted = process.env.CAPSULE_GIT_STARTED;
703
- process.env.PATH = `${bin}${delimiter}${originalPath ?? ""}`;
704
- process.env.CAPSULE_GIT_STARTED = started;
705
- const context = new Context();
706
- const tools = new PiToolRegistry();
707
- context.provide("piHarnessLaunch", { cwd: workspace, agentDir, args: [], requestExit() {} });
708
- context.provide("piTools", tools);
709
- context.provide("piPluginUi", new PiPluginUiRegistry());
710
- let first: Promise<unknown> | undefined;
711
- try {
712
- await context.plugin(gitTimeCapsulePlugin, { timeoutMs: 10_000 });
713
- const tool = tools.snapshot().customTools.find((candidate) => candidate.name === "git_snapshot")!;
714
- first = tool.execute("call-blocking", {}, undefined, undefined, {} as never);
715
- void first.catch(() => undefined);
716
- await waitForFile(started, "blocking Git operation to start");
717
- const controller = new AbortController();
718
- const second = tool.execute("call-queued", {}, controller.signal, undefined, {} as never);
719
- let rejection: unknown;
720
- void second.catch(async (error: unknown) => {
721
- rejection = error;
722
- await writeFile(rejected, "rejected", "utf8");
723
- });
724
-
725
- controller.abort(new Error("queued caller cancelled"));
726
-
727
- await waitForFile(rejected, "queued operation cancellation", 500);
728
- expect(rejection).toMatchObject({ message: "queued caller cancelled" });
729
- } finally {
730
- process.env.PATH = originalPath;
731
- if (originalStarted === undefined) delete process.env.CAPSULE_GIT_STARTED;
732
- else process.env.CAPSULE_GIT_STARTED = originalStarted;
733
- await context.fiber.dispose();
734
- await first?.catch(() => undefined);
735
- }
736
- });
737
-
738
- test("omits symbolic links from the recent capsule panel", async () => {
739
- if (process.platform === "win32") return;
740
- const workspace = await mkdtemp(join(tmpdir(), "pi-harness-capsule-panel-workspace-"));
741
- const agentDir = await mkdtemp(join(tmpdir(), "pi-harness-capsule-panel-agent-"));
742
- temporaryDirectories.push(workspace, agentDir);
743
- const directory = join(agentDir, "capsules");
744
- await mkdir(directory);
745
- const outside = join(workspace, "outside.patch");
746
- await writeFile(outside, "outside", "utf8");
747
- await symlink(outside, join(directory, "linked.patch"));
748
- const context = new Context();
749
- context.provide("piHarnessLaunch", { cwd: workspace, agentDir, args: [], requestExit() {} });
750
- context.provide("piTools", new PiToolRegistry());
751
- const panels = new PiPluginUiRegistry();
752
- context.provide("piPluginUi", panels);
753
- try {
754
- await context.plugin(gitTimeCapsulePlugin);
755
- await expect(panels.snapshot()).resolves.toMatchObject([{ id: "git-time-capsule-panel", data: { capsules: [] } }]);
756
- } finally {
757
- await context.fiber.dispose();
758
- }
759
- });
760
-
761
- test("rejects a symbolic-link capsule directory before listing its target", async () => {
762
- if (process.platform === "win32") return;
763
- const workspace = await mkdtemp(join(tmpdir(), "pi-harness-capsule-panel-directory-workspace-"));
764
- const agentDir = await mkdtemp(join(tmpdir(), "pi-harness-capsule-panel-directory-agent-"));
765
- const outside = await mkdtemp(join(tmpdir(), "pi-harness-capsule-panel-directory-outside-"));
766
- temporaryDirectories.push(workspace, agentDir, outside);
767
- await writeFile(join(outside, "outside.patch"), "outside", "utf8");
768
- await symlink(outside, join(agentDir, "capsules"));
769
- const context = new Context();
770
- context.provide("piHarnessLaunch", { cwd: workspace, agentDir, args: [], requestExit() {} });
771
- context.provide("piTools", new PiToolRegistry());
772
- const panels = new PiPluginUiRegistry();
773
- context.provide("piPluginUi", panels);
774
- try {
775
- await context.plugin(gitTimeCapsulePlugin);
776
-
777
- const snapshot = await panels.snapshot();
778
- expect(snapshot[0]?.id).toBe("git-time-capsule-panel");
779
- expect(snapshot[0]?.error).toMatch(/directory.*symbolic link/iu);
780
- } finally {
781
- await context.fiber.dispose();
782
- }
783
- });
784
-
785
- test("does not expose the private capsule directory through panel read errors", async () => {
786
- if (process.platform === "win32" || typeof process.getuid !== "function" || process.getuid() === 0) return;
787
- const workspace = await mkdtemp(join(tmpdir(), "pi-harness-capsule-panel-error-workspace-"));
788
- const agentDir = await mkdtemp(join(tmpdir(), "pi-harness-capsule-panel-error-agent-"));
789
- temporaryDirectories.push(workspace, agentDir);
790
- const directory = join(agentDir, "capsules");
791
- await mkdir(directory);
792
- await chmod(directory, 0o000);
793
- const context = new Context();
794
- context.provide("piHarnessLaunch", { cwd: workspace, agentDir, args: [], requestExit() {} });
795
- context.provide("piTools", new PiToolRegistry());
796
- const panels = new PiPluginUiRegistry();
797
- context.provide("piPluginUi", panels);
798
- try {
799
- await context.plugin(gitTimeCapsulePlugin);
800
-
801
- const snapshot = await panels.snapshot();
802
- expect(snapshot[0]?.error).toBeDefined();
803
- expect(snapshot[0]?.error).not.toContain(agentDir);
804
- expect(snapshot[0]?.error).not.toMatch(/[\p{Cc}\p{Cf}]/u);
805
- } finally {
806
- await chmod(directory, 0o700);
807
- await context.fiber.dispose();
808
- }
809
- });
810
-
811
- test("bounds the capsule inventory before rendering recent entries", async () => {
812
- const workspace = await mkdtemp(join(tmpdir(), "pi-harness-capsule-inventory-workspace-"));
813
- const agentDir = await mkdtemp(join(tmpdir(), "pi-harness-capsule-inventory-agent-"));
814
- temporaryDirectories.push(workspace, agentDir);
815
- const directory = join(agentDir, "capsules");
816
- await mkdir(directory);
817
- await Promise.all(Array.from({ length: 257 }, (_, index) => writeFile(join(directory, `${String(index).padStart(4, "0")}.patch`), "x", "utf8")));
818
- const context = new Context();
819
- context.provide("piHarnessLaunch", { cwd: workspace, agentDir, args: [], requestExit() {} });
820
- context.provide("piTools", new PiToolRegistry());
821
- const panels = new PiPluginUiRegistry();
822
- context.provide("piPluginUi", panels);
823
- try {
824
- await context.plugin(gitTimeCapsulePlugin);
825
- const snapshot = await panels.snapshot();
826
- expect(snapshot[0]?.id).toBe("git-time-capsule-panel");
827
- expect(snapshot[0]?.error).toMatch(/exceeds.*256.*capsule/iu);
828
- } finally {
829
- await context.fiber.dispose();
830
- }
831
- });
832
-
833
- test("refuses a new capture before the bounded inventory becomes unusable", async () => {
834
- const workspace = await mkdtemp(join(tmpdir(), "pi-harness-capsule-full-inventory-workspace-"));
835
- const agentDir = await mkdtemp(join(tmpdir(), "pi-harness-capsule-full-inventory-agent-"));
836
- temporaryDirectories.push(workspace, agentDir);
837
- const directory = join(agentDir, "capsules");
838
- await mkdir(directory);
839
- await Promise.all(Array.from({ length: 256 }, (_, index) => writeFile(join(directory, `${String(index).padStart(4, "0")}.patch`), "x", "utf8")));
840
- await execFileAsync("git", ["init", "-q", "-b", "main"], { cwd: workspace });
841
- await execFileAsync("git", ["config", "user.email", "test@example.invalid"], { cwd: workspace });
842
- await execFileAsync("git", ["config", "user.name", "Pi Harness Test"], { cwd: workspace });
843
- await writeFile(join(workspace, "tracked.txt"), "before\n", "utf8");
844
- await execFileAsync("git", ["add", "tracked.txt"], { cwd: workspace });
845
- await execFileAsync("git", ["commit", "-qm", "fixture"], { cwd: workspace });
846
- await writeFile(join(workspace, "tracked.txt"), "after\n", "utf8");
847
- const context = new Context();
848
- const tools = new PiToolRegistry();
849
- const panels = new PiPluginUiRegistry();
850
- context.provide("piHarnessLaunch", { cwd: workspace, agentDir, args: [], requestExit() {} });
851
- context.provide("piTools", tools);
852
- context.provide("piPluginUi", panels);
853
- try {
854
- await context.plugin(gitTimeCapsulePlugin);
855
- const snapshot = tools.snapshot().customTools.find((candidate) => candidate.name === "git_snapshot")!;
856
-
857
- await expect(snapshot.execute("call-full-inventory", {}, undefined, undefined, {} as never)).rejects.toThrow(/inventory.*256.*limit/iu);
858
- await expect(readdir(directory)).resolves.toHaveLength(256);
859
- const panelSnapshot = await panels.snapshot();
860
- expect(panelSnapshot[0]?.error).toBeUndefined();
861
- expect(panelSnapshot).toMatchObject([{ data: { inventory: { total: 256 } } }]);
862
- } finally {
863
- await context.fiber.dispose();
864
- }
865
- });
866
-
867
- test("refuses a new capture before exceeding the directory entry scan limit", async () => {
868
- const workspace = await mkdtemp(join(tmpdir(), "pi-harness-capsule-full-directory-workspace-"));
869
- const agentDir = await mkdtemp(join(tmpdir(), "pi-harness-capsule-full-directory-agent-"));
870
- temporaryDirectories.push(workspace, agentDir);
871
- const directory = join(agentDir, "capsules");
872
- await mkdir(directory);
873
- await Promise.all(Array.from({ length: 4_096 }, (_, index) => writeFile(join(directory, `entry-${String(index).padStart(4, "0")}.tmp`), "x", "utf8")));
874
- await execFileAsync("git", ["init", "-q", "-b", "main"], { cwd: workspace });
875
- await execFileAsync("git", ["config", "user.email", "test@example.invalid"], { cwd: workspace });
876
- await execFileAsync("git", ["config", "user.name", "Pi Harness Test"], { cwd: workspace });
877
- await writeFile(join(workspace, "tracked.txt"), "before\n", "utf8");
878
- await execFileAsync("git", ["add", "tracked.txt"], { cwd: workspace });
879
- await execFileAsync("git", ["commit", "-qm", "fixture"], { cwd: workspace });
880
- await writeFile(join(workspace, "tracked.txt"), "after\n", "utf8");
881
- const context = new Context();
882
- const tools = new PiToolRegistry();
883
- context.provide("piHarnessLaunch", { cwd: workspace, agentDir, args: [], requestExit() {} });
884
- context.provide("piTools", tools);
885
- context.provide("piPluginUi", new PiPluginUiRegistry());
886
- try {
887
- await context.plugin(gitTimeCapsulePlugin);
888
- const snapshot = tools.snapshot().customTools.find((candidate) => candidate.name === "git_snapshot")!;
889
-
890
- await expect(snapshot.execute("call-full-directory", {}, undefined, undefined, {} as never)).rejects.toThrow(/directory.*4096.*limit/iu);
891
- await expect(readdir(directory)).resolves.toHaveLength(4_096);
892
- } finally {
893
- await context.fiber.dispose();
894
- }
895
- });
896
-
897
- test("reports when the recent capsule inventory is truncated", async () => {
898
- const workspace = await mkdtemp(join(tmpdir(), "pi-harness-capsule-truncated-workspace-"));
899
- const agentDir = await mkdtemp(join(tmpdir(), "pi-harness-capsule-truncated-agent-"));
900
- temporaryDirectories.push(workspace, agentDir);
901
- const directory = join(agentDir, "capsules");
902
- await mkdir(directory);
903
- await Promise.all(Array.from({ length: 21 }, (_, index) => writeFile(join(directory, `${String(index).padStart(4, "0")}.patch`), "x", "utf8")));
904
- const context = new Context();
905
- context.provide("piHarnessLaunch", { cwd: workspace, agentDir, args: [], requestExit() {} });
906
- context.provide("piTools", new PiToolRegistry());
907
- const panels = new PiPluginUiRegistry();
908
- context.provide("piPluginUi", panels);
909
- try {
910
- await context.plugin(gitTimeCapsulePlugin);
911
-
912
- const snapshot = await panels.snapshot();
913
- expect(snapshot[0]?.id).toBe("git-time-capsule-panel");
914
- const data = snapshot[0]?.data as { capsules: unknown[]; inventory: Record<string, unknown> };
915
- expect(data.capsules).toHaveLength(20);
916
- expect(data.inventory).toEqual({ total: 21, shown: 20, truncated: true, displayLimit: 20 });
917
- } finally {
918
- await context.fiber.dispose();
919
- }
920
- });
921
-
922
- test("uses the default timeout when configuration is not finite", async () => {
923
- const workspace = await mkdtemp(join(tmpdir(), "pi-harness-capsule-config-workspace-"));
924
- const agentDir = await mkdtemp(join(tmpdir(), "pi-harness-capsule-config-agent-"));
925
- temporaryDirectories.push(workspace, agentDir);
926
- const context = new Context();
927
- context.provide("piHarnessLaunch", { cwd: workspace, agentDir, args: [], requestExit() {} });
928
- context.provide("piTools", new PiToolRegistry());
929
- const panels = new PiPluginUiRegistry();
930
- context.provide("piPluginUi", panels);
931
- try {
932
- await context.plugin(gitTimeCapsulePlugin, { timeoutMs: Number.NaN });
933
-
934
- await expect(panels.snapshot()).resolves.toMatchObject([{ id: "git-time-capsule-panel", data: { timeoutMs: 15_000 } }]);
935
- } finally {
936
- await context.fiber.dispose();
937
- }
938
- });
939
-
940
- test("rejects unknown configuration before registering tools or panels", async () => {
941
- const workspace = await mkdtemp(join(tmpdir(), "pi-harness-capsule-unknown-config-workspace-"));
942
- const agentDir = await mkdtemp(join(tmpdir(), "pi-harness-capsule-unknown-config-agent-"));
943
- temporaryDirectories.push(workspace, agentDir);
944
- const context = new Context();
945
- const tools = new PiToolRegistry();
946
- const panels = new PiPluginUiRegistry();
947
- context.provide("piHarnessLaunch", { cwd: workspace, agentDir, args: [], requestExit() {} });
948
- context.provide("piTools", tools);
949
- context.provide("piPluginUi", panels);
950
- try {
951
- let failure: unknown;
952
- try {
953
- await context.plugin(gitTimeCapsulePlugin, { timeoutMs: 15_000, unexpected: true } as never);
954
- } catch (error) {
955
- failure = error;
956
- }
957
-
958
- expect(failure).toBeInstanceOf(Error);
959
- expect((failure as Error).message).toMatch(/unknown.*unexpected/iu);
960
-
961
- expect(tools.snapshot().customTools).toEqual([]);
962
- await expect(panels.snapshot()).resolves.toEqual([]);
963
- } finally {
964
- await context.fiber.dispose();
965
- }
966
- });
967
-
968
- test("rolls back both tools when panel registration fails", async () => {
969
- const workspace = await mkdtemp(join(tmpdir(), "pi-harness-capsule-panel-conflict-workspace-"));
970
- const agentDir = await mkdtemp(join(tmpdir(), "pi-harness-capsule-panel-conflict-agent-"));
971
- temporaryDirectories.push(workspace, agentDir);
972
- const context = new Context();
973
- const tools = new PiToolRegistry();
974
- const panels = new PiPluginUiRegistry();
975
- context.provide("piHarnessLaunch", { cwd: workspace, agentDir, args: [], requestExit() {} });
976
- context.provide("piTools", tools);
977
- context.provide("piPluginUi", panels);
978
- panels.register({ id: "git-time-capsule-panel", pluginId: "fixture", title: "Fixture", read: () => ({}) });
979
- try {
980
- await expect(context.plugin(gitTimeCapsulePlugin)).rejects.toThrow(/panel is already registered: git-time-capsule-panel/iu);
981
-
982
- expect(tools.snapshot().customTools).toEqual([]);
983
- await expect(panels.snapshot()).resolves.toMatchObject([{ id: "git-time-capsule-panel", pluginId: "fixture" }]);
984
- } finally {
985
- await context.fiber.dispose();
986
- }
987
- });
988
-
989
- test("rejects a clean worktree instead of creating an unusable empty capsule", async () => {
990
- const workspace = await mkdtemp(join(tmpdir(), "pi-harness-capsule-clean-workspace-"));
991
- const agentDir = await mkdtemp(join(tmpdir(), "pi-harness-capsule-clean-agent-"));
992
- temporaryDirectories.push(workspace, agentDir);
993
- await execFileAsync("git", ["init", "-q", "-b", "main"], { cwd: workspace });
994
- await execFileAsync("git", ["config", "user.email", "test@example.invalid"], { cwd: workspace });
995
- await execFileAsync("git", ["config", "user.name", "Pi Harness Test"], { cwd: workspace });
996
- await writeFile(join(workspace, "tracked.txt"), "clean\n", "utf8");
997
- await execFileAsync("git", ["add", "tracked.txt"], { cwd: workspace });
998
- await execFileAsync("git", ["commit", "-qm", "fixture"], { cwd: workspace });
999
- const context = new Context();
1000
- const tools = new PiToolRegistry();
1001
- context.provide("piHarnessLaunch", { cwd: workspace, agentDir, args: [], requestExit() {} });
1002
- context.provide("piTools", tools);
1003
- context.provide("piPluginUi", new PiPluginUiRegistry());
1004
- try {
1005
- await context.plugin(gitTimeCapsulePlugin);
1006
- const tool = tools.snapshot().customTools.find((candidate) => candidate.name === "git_snapshot")!;
1007
-
1008
- await expect(tool.execute("call-clean", {}, undefined, undefined, {} as never)).rejects.toThrow(/no tracked git changes/iu);
1009
- await expect(readdir(join(agentDir, "capsules"))).rejects.toMatchObject({ code: "ENOENT" });
1010
- } finally {
1011
- await context.fiber.dispose();
1012
- }
1013
- });
1014
-
1015
- test("does not capture staged changes that restore cannot safely remove from the index", async () => {
1016
- const workspace = await mkdtemp(join(tmpdir(), "pi-harness-capsule-staged-workspace-"));
1017
- const agentDir = await mkdtemp(join(tmpdir(), "pi-harness-capsule-staged-agent-"));
1018
- temporaryDirectories.push(workspace, agentDir);
1019
- await execFileAsync("git", ["init", "-q", "-b", "main"], { cwd: workspace });
1020
- await execFileAsync("git", ["config", "user.email", "test@example.invalid"], { cwd: workspace });
1021
- await execFileAsync("git", ["config", "user.name", "Pi Harness Test"], { cwd: workspace });
1022
- await writeFile(join(workspace, "tracked.txt"), "before\n", "utf8");
1023
- await execFileAsync("git", ["add", "tracked.txt"], { cwd: workspace });
1024
- await execFileAsync("git", ["commit", "-qm", "fixture"], { cwd: workspace });
1025
- await writeFile(join(workspace, "tracked.txt"), "staged\n", "utf8");
1026
- await execFileAsync("git", ["add", "tracked.txt"], { cwd: workspace });
1027
- const context = new Context();
1028
- const tools = new PiToolRegistry();
1029
- context.provide("piHarnessLaunch", { cwd: workspace, agentDir, args: [], requestExit() {} });
1030
- context.provide("piTools", tools);
1031
- context.provide("piPluginUi", new PiPluginUiRegistry());
1032
- try {
1033
- await context.plugin(gitTimeCapsulePlugin);
1034
- const tool = tools.snapshot().customTools.find((candidate) => candidate.name === "git_snapshot")!;
1035
-
1036
- await expect(tool.execute("call-staged", {}, undefined, undefined, {} as never)).rejects.toThrow(/staged.*excluded/iu);
1037
- const { stdout: staged } = await execFileAsync("git", ["diff", "--cached", "--name-only"], { cwd: workspace });
1038
- expect(staged.trim()).toBe("tracked.txt");
1039
- await expect(readdir(join(agentDir, "capsules"))).rejects.toMatchObject({ code: "ENOENT" });
1040
- } finally {
1041
- await context.fiber.dispose();
1042
- }
1043
- });
1044
-
1045
- test("does not write snapshots through a symbolic-link capsule directory", async () => {
1046
- if (process.platform === "win32") return;
1047
- const workspace = await mkdtemp(join(tmpdir(), "pi-harness-capsule-snapshot-directory-workspace-"));
1048
- const agentDir = await mkdtemp(join(tmpdir(), "pi-harness-capsule-snapshot-directory-agent-"));
1049
- const outside = await mkdtemp(join(tmpdir(), "pi-harness-capsule-snapshot-directory-outside-"));
1050
- temporaryDirectories.push(workspace, agentDir, outside);
1051
- await execFileAsync("git", ["init", "-q", "-b", "main"], { cwd: workspace });
1052
- await execFileAsync("git", ["config", "user.email", "test@example.invalid"], { cwd: workspace });
1053
- await execFileAsync("git", ["config", "user.name", "Pi Harness Test"], { cwd: workspace });
1054
- await writeFile(join(workspace, "tracked.txt"), "before\n", "utf8");
1055
- await execFileAsync("git", ["add", "tracked.txt"], { cwd: workspace });
1056
- await execFileAsync("git", ["commit", "-qm", "fixture"], { cwd: workspace });
1057
- await writeFile(join(workspace, "tracked.txt"), "after\n", "utf8");
1058
- await symlink(outside, join(agentDir, "capsules"));
1059
- const context = new Context();
1060
- const tools = new PiToolRegistry();
1061
- context.provide("piHarnessLaunch", { cwd: workspace, agentDir, args: [], requestExit() {} });
1062
- context.provide("piTools", tools);
1063
- context.provide("piPluginUi", new PiPluginUiRegistry());
1064
- try {
1065
- await context.plugin(gitTimeCapsulePlugin);
1066
- const tool = tools.snapshot().customTools.find((candidate) => candidate.name === "git_snapshot")!;
1067
-
1068
- await expect(tool.execute("call-directory-link", {}, undefined, undefined, {} as never)).rejects.toThrow(/directory.*symbolic link/iu);
1069
- await expect(readdir(outside)).resolves.toEqual([]);
1070
- } finally {
1071
- await context.fiber.dispose();
1072
- }
1073
- });
1074
-
1075
- test("rejects unexpected raw snapshot parameters without invoking accessors", async () => {
1076
- const workspace = await mkdtemp(join(tmpdir(), "pi-harness-capsule-snapshot-params-workspace-"));
1077
- const agentDir = await mkdtemp(join(tmpdir(), "pi-harness-capsule-snapshot-params-agent-"));
1078
- temporaryDirectories.push(workspace, agentDir);
1079
- const context = new Context();
1080
- const tools = new PiToolRegistry();
1081
- const panels = new PiPluginUiRegistry();
1082
- context.provide("piHarnessLaunch", { cwd: workspace, agentDir, args: [], requestExit() {} });
1083
- context.provide("piTools", tools);
1084
- context.provide("piPluginUi", panels);
1085
- let accessed = false;
1086
- const rawParams = Object.create(null) as Record<string, unknown>;
1087
- Object.defineProperty(rawParams, "unexpected", {
1088
- enumerable: true,
1089
- get() {
1090
- accessed = true;
1091
- throw new Error("accessor executed");
1092
- },
1093
- });
1094
- try {
1095
- await context.plugin(gitTimeCapsulePlugin);
1096
- const tool = tools.snapshot().customTools.find((candidate) => candidate.name === "git_snapshot")!;
1097
-
1098
- await expect(tool.execute("call-params", rawParams, undefined, undefined, {} as never)).rejects.toThrow(/parameters.*unknown property/iu);
1099
- expect(accessed).toBe(false);
1100
- await expect(panels.snapshot()).resolves.toMatchObject([
1101
- { data: { latest: { action: "capture", status: "failed", error: "Git snapshot parameters contains an unknown property" } } },
1102
- ]);
1103
- } finally {
1104
- await context.fiber.dispose();
1105
- }
1106
- });
1107
-
1108
- test("rejects inaccessible or non-plain tool parameter objects", async () => {
1109
- const workspace = await mkdtemp(join(tmpdir(), "pi-harness-capsule-hostile-params-workspace-"));
1110
- const agentDir = await mkdtemp(join(tmpdir(), "pi-harness-capsule-hostile-params-agent-"));
1111
- temporaryDirectories.push(workspace, agentDir);
1112
- const context = new Context();
1113
- const tools = new PiToolRegistry();
1114
- context.provide("piHarnessLaunch", { cwd: workspace, agentDir, args: [], requestExit() {} });
1115
- context.provide("piTools", tools);
1116
- context.provide("piPluginUi", new PiPluginUiRegistry());
1117
- const revocable = Proxy.revocable({}, {});
1118
- revocable.revoke();
1119
- try {
1120
- await context.plugin(gitTimeCapsulePlugin);
1121
- const snapshot = tools.snapshot().customTools.find((candidate) => candidate.name === "git_snapshot")!;
1122
- const restore = tools.snapshot().customTools.find((candidate) => candidate.name === "git_restore")!;
1123
-
1124
- await expect(snapshot.execute("call-revoked", revocable.proxy, undefined, undefined, {} as never)).rejects.toThrow(
1125
- /parameters.*accessible plain object/iu,
1126
- );
1127
- await expect(restore.execute("call-array", [], undefined, undefined, {} as never)).rejects.toThrow(/parameters.*object/iu);
1128
- await expect(snapshot.execute("call-instance", new Date(), undefined, undefined, {} as never)).rejects.toThrow(/parameters.*plain object/iu);
1129
- } finally {
1130
- await context.fiber.dispose();
1131
- }
1132
- });
1133
-
1134
- test("publishes sequential tools with closed parameter schemas", async () => {
1135
- const workspace = await mkdtemp(join(tmpdir(), "pi-harness-capsule-tool-contract-workspace-"));
1136
- const agentDir = await mkdtemp(join(tmpdir(), "pi-harness-capsule-tool-contract-agent-"));
1137
- temporaryDirectories.push(workspace, agentDir);
1138
- const context = new Context();
1139
- const tools = new PiToolRegistry();
1140
- context.provide("piHarnessLaunch", { cwd: workspace, agentDir, args: [], requestExit() {} });
1141
- context.provide("piTools", tools);
1142
- context.provide("piPluginUi", new PiPluginUiRegistry());
1143
- try {
1144
- await context.plugin(gitTimeCapsulePlugin);
1145
-
1146
- expect(tools.snapshot().customTools).toMatchObject([
1147
- { name: "git_snapshot", executionMode: "sequential", parameters: { additionalProperties: false } },
1148
- { name: "git_restore", executionMode: "sequential", parameters: { additionalProperties: false } },
1149
- ]);
1150
- } finally {
1151
- await context.fiber.dispose();
1152
- }
1153
- });
1154
-
1155
- test("counts tracked changes without invoking git status or scanning untracked files", async () => {
1156
- if (process.platform === "win32") return;
1157
- const workspace = await mkdtemp(join(tmpdir(), "pi-harness-capsule-no-status-workspace-"));
1158
- const agentDir = await mkdtemp(join(tmpdir(), "pi-harness-capsule-no-status-agent-"));
1159
- temporaryDirectories.push(workspace, agentDir);
1160
- await execFileAsync("git", ["init", "-q", "-b", "main"], { cwd: workspace });
1161
- await execFileAsync("git", ["config", "user.email", "test@example.invalid"], { cwd: workspace });
1162
- await execFileAsync("git", ["config", "user.name", "Pi Harness Test"], { cwd: workspace });
1163
- await writeFile(join(workspace, "tracked.txt"), "before\n", "utf8");
1164
- await execFileAsync("git", ["add", "tracked.txt"], { cwd: workspace });
1165
- await execFileAsync("git", ["commit", "-qm", "fixture"], { cwd: workspace });
1166
- await writeFile(join(workspace, "tracked.txt"), "after\n", "utf8");
1167
- await mkdir(join(workspace, "untracked"));
1168
- await writeFile(join(workspace, "untracked", "ignored.txt"), "not captured\n", "utf8");
1169
- const { stdout } = await execFileAsync("which", ["git"]);
1170
- const bin = join(workspace, "bin");
1171
- await mkdir(bin);
1172
- await writeFile(
1173
- join(bin, "git"),
1174
- '#!/bin/sh\nif [ "$1" = "status" ]; then echo "git status must not be used" >&2; exit 91; fi\nexec "$REAL_GIT" "$@"\n',
1175
- "utf8",
1176
- );
1177
- await chmod(join(bin, "git"), 0o700);
1178
- const originalPath = process.env.PATH;
1179
- const originalRealGit = process.env.REAL_GIT;
1180
- process.env.REAL_GIT = stdout.trim();
1181
- process.env.PATH = `${bin}${delimiter}${originalPath ?? ""}`;
1182
- const context = new Context();
1183
- const tools = new PiToolRegistry();
1184
- context.provide("piHarnessLaunch", { cwd: workspace, agentDir, args: [], requestExit() {} });
1185
- context.provide("piTools", tools);
1186
- context.provide("piPluginUi", new PiPluginUiRegistry());
1187
- try {
1188
- await context.plugin(gitTimeCapsulePlugin);
1189
- const tool = tools.snapshot().customTools.find((candidate) => candidate.name === "git_snapshot")!;
1190
-
1191
- await expect(tool.execute("call-no-status", {}, undefined, undefined, {} as never)).resolves.toMatchObject({ details: { files: 1 } });
1192
- } finally {
1193
- process.env.PATH = originalPath;
1194
- if (originalRealGit === undefined) delete process.env.REAL_GIT;
1195
- else process.env.REAL_GIT = originalRealGit;
1196
- await context.fiber.dispose();
1197
- }
1198
- });
1199
-
1200
- test("counts files from the captured patch instead of a racing worktree query", async () => {
1201
- if (process.platform === "win32") return;
1202
- const workspace = await mkdtemp(join(tmpdir(), "pi-harness-capsule-count-race-workspace-"));
1203
- const agentDir = await mkdtemp(join(tmpdir(), "pi-harness-capsule-count-race-agent-"));
1204
- temporaryDirectories.push(workspace, agentDir);
1205
- await execFileAsync("git", ["init", "-q", "-b", "main"], { cwd: workspace });
1206
- await execFileAsync("git", ["config", "user.email", "test@example.invalid"], { cwd: workspace });
1207
- await execFileAsync("git", ["config", "user.name", "Pi Harness Test"], { cwd: workspace });
1208
- await writeFile(join(workspace, "tracked.txt"), "before\n", "utf8");
1209
- await execFileAsync("git", ["add", "tracked.txt"], { cwd: workspace });
1210
- await execFileAsync("git", ["commit", "-qm", "fixture"], { cwd: workspace });
1211
- await writeFile(join(workspace, "tracked.txt"), "after\n", "utf8");
1212
- const { stdout: realGit } = await execFileAsync("which", ["git"]);
1213
- const bin = join(workspace, "bin");
1214
- await mkdir(bin);
1215
- await writeFile(join(bin, "git"), '#!/bin/sh\ncase " $* " in\n *" --name-only "*) exit 0 ;;\nesac\nexec "$CAPSULE_REAL_GIT" "$@"\n', "utf8");
1216
- await chmod(join(bin, "git"), 0o700);
1217
- const originalPath = process.env.PATH;
1218
- const originalRealGit = process.env.CAPSULE_REAL_GIT;
1219
- process.env.PATH = `${bin}${delimiter}${originalPath ?? ""}`;
1220
- process.env.CAPSULE_REAL_GIT = realGit.trim();
1221
- const context = new Context();
1222
- const tools = new PiToolRegistry();
1223
- context.provide("piHarnessLaunch", { cwd: workspace, agentDir, args: [], requestExit() {} });
1224
- context.provide("piTools", tools);
1225
- context.provide("piPluginUi", new PiPluginUiRegistry());
1226
- try {
1227
- await context.plugin(gitTimeCapsulePlugin);
1228
- const tool = tools.snapshot().customTools.find((candidate) => candidate.name === "git_snapshot")!;
1229
-
1230
- await expect(tool.execute("call-count-race", {}, undefined, undefined, {} as never)).resolves.toMatchObject({ details: { files: 1 } });
1231
- } finally {
1232
- process.env.PATH = originalPath;
1233
- if (originalRealGit === undefined) delete process.env.CAPSULE_REAL_GIT;
1234
- else process.env.CAPSULE_REAL_GIT = originalRealGit;
1235
- await context.fiber.dispose();
1236
- }
1237
- });
1238
-
1239
- test("captures an applyable patch without invoking repository textconv drivers", async () => {
1240
- if (process.platform === "win32") return;
1241
- const workspace = await mkdtemp(join(tmpdir(), "pi-harness-capsule-textconv-workspace-"));
1242
- const agentDir = await mkdtemp(join(tmpdir(), "pi-harness-capsule-textconv-agent-"));
1243
- temporaryDirectories.push(workspace, agentDir);
1244
- await execFileAsync("git", ["init", "-q", "-b", "main"], { cwd: workspace });
1245
- await execFileAsync("git", ["config", "user.email", "test@example.invalid"], { cwd: workspace });
1246
- await execFileAsync("git", ["config", "user.name", "Pi Harness Test"], { cwd: workspace });
1247
- const driver = join(workspace, "textconv-driver");
1248
- const invoked = join(workspace, "textconv-invoked");
1249
- await writeFile(driver, '#!/bin/sh\n: > "$CAPSULE_TEXTCONV_INVOKED"\ncat "$1"\n', "utf8");
1250
- await chmod(driver, 0o700);
1251
- await execFileAsync("git", ["config", "diff.capsule-fixture.textconv", driver], { cwd: workspace });
1252
- await writeFile(join(workspace, ".gitattributes"), "*.data diff=capsule-fixture\n", "utf8");
1253
- await writeFile(join(workspace, "tracked.data"), "before\n", "utf8");
1254
- await execFileAsync("git", ["add", ".gitattributes", "tracked.data"], { cwd: workspace });
1255
- await execFileAsync("git", ["commit", "-qm", "fixture"], { cwd: workspace });
1256
- await writeFile(join(workspace, "tracked.data"), "after\n", "utf8");
1257
- const originalInvoked = process.env.CAPSULE_TEXTCONV_INVOKED;
1258
- process.env.CAPSULE_TEXTCONV_INVOKED = invoked;
1259
- const context = new Context();
1260
- const tools = new PiToolRegistry();
1261
- context.provide("piHarnessLaunch", { cwd: workspace, agentDir, args: [], requestExit() {} });
1262
- context.provide("piTools", tools);
1263
- context.provide("piPluginUi", new PiPluginUiRegistry());
1264
- try {
1265
- await context.plugin(gitTimeCapsulePlugin);
1266
- const snapshot = tools.snapshot().customTools.find((candidate) => candidate.name === "git_snapshot")!;
1267
- const restore = tools.snapshot().customTools.find((candidate) => candidate.name === "git_restore")!;
1268
-
1269
- await expect(snapshot.execute("call-textconv-capture", {}, undefined, undefined, {} as never)).resolves.toMatchObject({ details: { files: 1 } });
1270
- await expect(readFile(invoked, "utf8")).rejects.toMatchObject({ code: "ENOENT" });
1271
- const names = await readdir(join(agentDir, "capsules"));
1272
- await restore.execute("call-textconv-restore", { name: names[0], confirm: true }, undefined, undefined, {} as never);
1273
- await expect(readFile(join(workspace, "tracked.data"), "utf8")).resolves.toBe("before\n");
1274
- } finally {
1275
- if (originalInvoked === undefined) delete process.env.CAPSULE_TEXTCONV_INVOKED;
1276
- else process.env.CAPSULE_TEXTCONV_INVOKED = originalInvoked;
1277
- await context.fiber.dispose();
1278
- }
1279
- });
1280
-
1281
- test("does not let inherited Git environment redirect capsule commands", async () => {
1282
- const workspace = await mkdtemp(join(tmpdir(), "pi-harness-capsule-env-workspace-"));
1283
- const decoy = await mkdtemp(join(tmpdir(), "pi-harness-capsule-env-decoy-"));
1284
- const agentDir = await mkdtemp(join(tmpdir(), "pi-harness-capsule-env-agent-"));
1285
- temporaryDirectories.push(workspace, decoy, agentDir);
1286
- for (const repository of [workspace, decoy]) {
1287
- await execFileAsync("git", ["init", "-q", "-b", "main"], { cwd: repository });
1288
- await execFileAsync("git", ["config", "user.email", "test@example.invalid"], { cwd: repository });
1289
- await execFileAsync("git", ["config", "user.name", "Pi Harness Test"], { cwd: repository });
1290
- }
1291
- await writeFile(join(workspace, "workspace.txt"), "before\n", "utf8");
1292
- await execFileAsync("git", ["add", "workspace.txt"], { cwd: workspace });
1293
- await execFileAsync("git", ["commit", "-qm", "fixture"], { cwd: workspace });
1294
- await writeFile(join(workspace, "workspace.txt"), "after\n", "utf8");
1295
- await writeFile(join(decoy, "decoy.txt"), "before\n", "utf8");
1296
- await execFileAsync("git", ["add", "decoy.txt"], { cwd: decoy });
1297
- await execFileAsync("git", ["commit", "-qm", "fixture"], { cwd: decoy });
1298
- await writeFile(join(decoy, "decoy.txt"), "after\n", "utf8");
1299
- const originalGitDir = process.env.GIT_DIR;
1300
- const originalGitWorkTree = process.env.GIT_WORK_TREE;
1301
- process.env.GIT_DIR = join(decoy, ".git");
1302
- process.env.GIT_WORK_TREE = decoy;
1303
- const context = new Context();
1304
- const tools = new PiToolRegistry();
1305
- context.provide("piHarnessLaunch", { cwd: workspace, agentDir, args: [], requestExit() {} });
1306
- context.provide("piTools", tools);
1307
- context.provide("piPluginUi", new PiPluginUiRegistry());
1308
- try {
1309
- await context.plugin(gitTimeCapsulePlugin);
1310
- const tool = tools.snapshot().customTools.find((candidate) => candidate.name === "git_snapshot")!;
1311
-
1312
- await expect(tool.execute("call-env", {}, undefined, undefined, {} as never)).resolves.toMatchObject({ details: { files: 1 } });
1313
- const names = await readdir(join(agentDir, "capsules"));
1314
- expect(names).toHaveLength(1);
1315
- const patch = await readFile(join(agentDir, "capsules", names[0]!), "utf8");
1316
- expect(patch).toContain("workspace.txt");
1317
- expect(patch).not.toContain("decoy.txt");
1318
- } finally {
1319
- if (originalGitDir === undefined) delete process.env.GIT_DIR;
1320
- else process.env.GIT_DIR = originalGitDir;
1321
- if (originalGitWorkTree === undefined) delete process.env.GIT_WORK_TREE;
1322
- else process.env.GIT_WORK_TREE = originalGitWorkTree;
1323
- await context.fiber.dispose();
1324
- }
1325
- });
1326
-
1327
- test("does not let inherited Git config injection block a valid restore", async () => {
1328
- const workspace = await mkdtemp(join(tmpdir(), "pi-harness-capsule-config-env-workspace-"));
1329
- const agentDir = await mkdtemp(join(tmpdir(), "pi-harness-capsule-config-env-agent-"));
1330
- temporaryDirectories.push(workspace, agentDir);
1331
- await execFileAsync("git", ["init", "-q", "-b", "main"], { cwd: workspace });
1332
- await execFileAsync("git", ["config", "user.email", "test@example.invalid"], { cwd: workspace });
1333
- await execFileAsync("git", ["config", "user.name", "Pi Harness Test"], { cwd: workspace });
1334
- await writeFile(join(workspace, "workspace.txt"), "before \n", "utf8");
1335
- await execFileAsync("git", ["add", "workspace.txt"], { cwd: workspace });
1336
- await execFileAsync("git", ["commit", "-qm", "fixture"], { cwd: workspace });
1337
- await writeFile(join(workspace, "workspace.txt"), "after\n", "utf8");
1338
- const original = {
1339
- count: process.env.GIT_CONFIG_COUNT,
1340
- key: process.env.GIT_CONFIG_KEY_0,
1341
- value: process.env.GIT_CONFIG_VALUE_0,
1342
- };
1343
- process.env.GIT_CONFIG_COUNT = "1";
1344
- process.env.GIT_CONFIG_KEY_0 = "apply.whitespace";
1345
- process.env.GIT_CONFIG_VALUE_0 = "error-all";
1346
- const context = new Context();
1347
- const tools = new PiToolRegistry();
1348
- context.provide("piHarnessLaunch", { cwd: workspace, agentDir, args: [], requestExit() {} });
1349
- context.provide("piTools", tools);
1350
- context.provide("piPluginUi", new PiPluginUiRegistry());
1351
- try {
1352
- await context.plugin(gitTimeCapsulePlugin);
1353
- const snapshot = tools.snapshot().customTools.find((candidate) => candidate.name === "git_snapshot")!;
1354
- const restore = tools.snapshot().customTools.find((candidate) => candidate.name === "git_restore")!;
1355
-
1356
- await expect(snapshot.execute("call-config-env", {}, undefined, undefined, {} as never)).resolves.toMatchObject({ details: { files: 1 } });
1357
- const names = await readdir(join(agentDir, "capsules"));
1358
- await expect(restore.execute("call-config-env-restore", { name: names[0], confirm: true }, undefined, undefined, {} as never)).resolves.toMatchObject({
1359
- details: { restored: true },
1360
- });
1361
- await expect(readFile(join(workspace, "workspace.txt"), "utf8")).resolves.toBe("before \n");
1362
- } finally {
1363
- for (const [name, value] of [
1364
- ["GIT_CONFIG_COUNT", original.count],
1365
- ["GIT_CONFIG_KEY_0", original.key],
1366
- ["GIT_CONFIG_VALUE_0", original.value],
1367
- ] as const) {
1368
- if (value === undefined) delete process.env[name];
1369
- else process.env[name] = value;
1370
- }
1371
- await context.fiber.dispose();
1372
- }
1373
- });
1374
-
1375
- test("round-trips patches containing non-UTF-8 Git path bytes", async () => {
1376
- if (process.platform === "win32") return;
1377
- const workspace = await mkdtemp(join(tmpdir(), "pi-harness-capsule-path-bytes-workspace-"));
1378
- const agentDir = await mkdtemp(join(tmpdir(), "pi-harness-capsule-path-bytes-agent-"));
1379
- temporaryDirectories.push(workspace, agentDir);
1380
- const bin = join(workspace, "bin");
1381
- await mkdir(bin);
1382
- await writeFile(
1383
- join(bin, "git"),
1384
- '#!/bin/sh\nif [ "$1" = "rev-parse" ]; then printf "true\\n"; exit 0; fi\ncase " $* " in\n *" --name-only "*) printf "fixture.txt\\000" ;;\n *) printf "diff-prefix\\377diff-suffix\\n" ;;\nesac\n',
1385
- "utf8",
1386
- );
1387
- await chmod(join(bin, "git"), 0o700);
1388
- const originalPath = process.env.PATH;
1389
- process.env.PATH = `${bin}${delimiter}${originalPath ?? ""}`;
1390
- const context = new Context();
1391
- const tools = new PiToolRegistry();
1392
- context.provide("piHarnessLaunch", { cwd: workspace, agentDir, args: [], requestExit() {} });
1393
- context.provide("piTools", tools);
1394
- context.provide("piPluginUi", new PiPluginUiRegistry());
1395
- try {
1396
- await context.plugin(gitTimeCapsulePlugin);
1397
- const snapshot = tools.snapshot().customTools.find((candidate) => candidate.name === "git_snapshot")!;
1398
-
1399
- await snapshot.execute("call-path-bytes-capture", {}, undefined, undefined, {} as never);
1400
- const names = await readdir(join(agentDir, "capsules"));
1401
- expect(names).toHaveLength(1);
1402
- await expect(readFile(join(agentDir, "capsules", names[0]!))).resolves.toEqual(
1403
- Buffer.from([...Buffer.from("diff-prefix"), 0xff, ...Buffer.from("diff-suffix\n")]),
1404
- );
1405
- } finally {
1406
- process.env.PATH = originalPath;
1407
- await context.fiber.dispose();
1408
- }
1409
- });
1410
-
1411
- test("does not publish a capsule when the captured patch cannot be validated", async () => {
1412
- if (process.platform === "win32") return;
1413
- const workspace = await mkdtemp(join(tmpdir(), "pi-harness-capsule-invalid-capture-workspace-"));
1414
- const agentDir = await mkdtemp(join(tmpdir(), "pi-harness-capsule-invalid-capture-agent-"));
1415
- temporaryDirectories.push(workspace, agentDir);
1416
- const bin = join(workspace, "bin");
1417
- await mkdir(bin);
1418
- await writeFile(
1419
- join(bin, "git"),
1420
- '#!/bin/sh\nif [ "$1" = "rev-parse" ]; then printf "true\\n"; exit 0; fi\ncase " $* " in\n *" apply --numstat "*) printf "invalid captured patch\\n" >&2; exit 3 ;;\n *) printf "not a valid patch\\n" ;;\nesac\n',
1421
- "utf8",
1422
- );
1423
- await chmod(join(bin, "git"), 0o700);
1424
- const originalPath = process.env.PATH;
1425
- process.env.PATH = `${bin}${delimiter}${originalPath ?? ""}`;
1426
- const context = new Context();
1427
- const tools = new PiToolRegistry();
1428
- context.provide("piHarnessLaunch", { cwd: workspace, agentDir, args: [], requestExit() {} });
1429
- context.provide("piTools", tools);
1430
- context.provide("piPluginUi", new PiPluginUiRegistry());
1431
- try {
1432
- await context.plugin(gitTimeCapsulePlugin);
1433
- const snapshot = tools.snapshot().customTools.find((candidate) => candidate.name === "git_snapshot")!;
1434
-
1435
- await expect(snapshot.execute("call-invalid-capture", {}, undefined, undefined, {} as never)).rejects.toThrow(/invalid captured patch/iu);
1436
- await expect(readdir(join(agentDir, "capsules"))).resolves.toEqual([]);
1437
- } finally {
1438
- process.env.PATH = originalPath;
1439
- await context.fiber.dispose();
1440
- }
1441
- });
1442
-
1443
- test("does not overwrite a capsule created concurrently at publication", async () => {
1444
- if (process.platform === "win32") return;
1445
- const workspace = await mkdtemp(join(tmpdir(), "pi-harness-capsule-publish-race-workspace-"));
1446
- const agentDir = await mkdtemp(join(tmpdir(), "pi-harness-capsule-publish-race-agent-"));
1447
- temporaryDirectories.push(workspace, agentDir);
1448
- const bin = join(workspace, "bin");
1449
- await mkdir(bin);
1450
- await writeFile(
1451
- join(bin, "git"),
1452
- '#!/bin/sh\nif [ "$1" = "rev-parse" ]; then printf "true\\n"; exit 0; fi\ncase " $* " in\n *" apply --numstat "*)\n for argument do temporary="$argument"; done\n directory=${temporary%/*}\n base=${temporary##*/}\n remainder=${base#.}\n name=${remainder%.*.tmp}\n printf "concurrent capsule\\n" > "$directory/$name"\n printf "1\\t1\\tfixture.txt\\n"\n exit 0\n ;;\n *) printf "captured patch\\n" ;;\nesac\n',
1453
- "utf8",
1454
- );
1455
- await chmod(join(bin, "git"), 0o700);
1456
- const originalPath = process.env.PATH;
1457
- process.env.PATH = `${bin}${delimiter}${originalPath ?? ""}`;
1458
- const context = new Context();
1459
- const tools = new PiToolRegistry();
1460
- context.provide("piHarnessLaunch", { cwd: workspace, agentDir, args: [], requestExit() {} });
1461
- context.provide("piTools", tools);
1462
- context.provide("piPluginUi", new PiPluginUiRegistry());
1463
- try {
1464
- await context.plugin(gitTimeCapsulePlugin);
1465
- const snapshot = tools.snapshot().customTools.find((candidate) => candidate.name === "git_snapshot")!;
1466
-
1467
- await expect(snapshot.execute("call-publish-race", {}, undefined, undefined, {} as never)).rejects.toThrow(/exist/iu);
1468
- const names = await readdir(join(agentDir, "capsules"));
1469
- expect(names).toHaveLength(1);
1470
- await expect(readFile(join(agentDir, "capsules", names[0]!), "utf8")).resolves.toBe("concurrent capsule\n");
1471
- } finally {
1472
- process.env.PATH = originalPath;
1473
- await context.fiber.dispose();
1474
- }
1475
- });
1476
- });