@pi-harness/pi-harness 0.1.35 → 0.1.37

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 (226) hide show
  1. package/apps/web/dist/assets/de-DKAiZCiT.js +1 -0
  2. package/apps/web/dist/assets/en-C4OBIACD.js +1 -0
  3. package/apps/web/dist/assets/es-Bj2z7sXT.js +1 -0
  4. package/apps/web/dist/assets/fr-C2Iqg8aA.js +1 -0
  5. package/apps/web/dist/assets/index-B1fEgaLH.js +27 -0
  6. package/apps/web/dist/assets/index-BvO1Uz-I.css +2 -0
  7. package/apps/web/dist/assets/ja-QDWzP_6S.js +1 -0
  8. package/apps/web/dist/assets/ko-CG9vWUNu.js +1 -0
  9. package/apps/web/dist/assets/pt-BR-BYKT3h_9.js +1 -0
  10. package/apps/web/dist/assets/ru-myrAE8FL.js +1 -0
  11. package/apps/web/dist/assets/zh-TW--gZYR1R8.js +1 -0
  12. package/apps/web/dist/index.html +2 -2
  13. package/apps/web/package.json +1 -1
  14. package/apps/web/src/main.ts +3 -4
  15. package/apps/web/src/style.css +169 -166
  16. package/apps/web/src/tailwind.css +6 -1
  17. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/agent-teams.json +1 -1
  18. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/anchored-standard.json +1 -1
  19. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/archify.json +1 -1
  20. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/at-file.json +1 -1
  21. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/auto-mode.json +1 -1
  22. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/better-sidebar.json +1 -1
  23. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/browser-session.json +1 -1
  24. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/canvas-draw.json +1 -1
  25. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/code2skill.json +1 -1
  26. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/colleague-skill.json +1 -1
  27. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/cost-meter.json +1 -1
  28. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/dependency-checker.json +1 -1
  29. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/docker-sandbox.json +1 -1
  30. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/git-time-capsule.json +1 -1
  31. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/graph-memory.json +1 -1
  32. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/history-compressor.json +1 -1
  33. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/hol-guard.json +1 -1
  34. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/i18n-pair.json +1 -1
  35. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/image-compressor.json +1 -1
  36. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/llm-verifier.json +1 -1
  37. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/mcp-client.json +1 -1
  38. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/mcp-panel.json +1 -1
  39. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/memory.json +1 -1
  40. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/mirage-bridge.json +1 -1
  41. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/mock-server.json +1 -1
  42. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/modlens.json +1 -1
  43. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/module-search.json +1 -1
  44. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/obsidian-sync.json +1 -1
  45. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/openpets.json +1 -1
  46. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/plan-execute.json +1 -1
  47. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/plugin-check.json +1 -1
  48. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/plugin-dev.json +1 -1
  49. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/plugin-finder.json +1 -1
  50. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/plugin-radar.json +1 -1
  51. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/plugin-stars.json +1 -1
  52. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/prompt-guard.json +1 -1
  53. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/prompt-library.json +1 -1
  54. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/readme-gen.json +1 -1
  55. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/recall-unread.json +1 -1
  56. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/reverse-skill.json +1 -1
  57. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/reviewer-bot.json +1 -1
  58. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/runtime-doctor.json +1 -1
  59. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/secure-audit.json +1 -1
  60. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/session-bookmarks.json +1 -1
  61. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/session-bridge.json +1 -1
  62. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/session-compare.json +1 -1
  63. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/session-export.json +1 -1
  64. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/session-insights.json +1 -1
  65. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/session-search.json +1 -1
  66. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/skill-catalog.json +1 -1
  67. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/skill-guard.json +1 -1
  68. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/sql-lens.json +1 -1
  69. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/synapse.json +1 -1
  70. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/tab-manager.json +1 -1
  71. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/taskboard.json +1 -1
  72. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/telemetry-blocker.json +1 -1
  73. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/test-harness.json +1 -1
  74. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/theme-studio.json +1 -1
  75. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/token-guard.json +1 -1
  76. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/turn-rewind.json +1 -1
  77. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/undo-savepoint.json +1 -1
  78. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/vision-toolkit.json +1 -1
  79. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/web-research.json +1 -1
  80. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/workspace-navigator.json +1 -1
  81. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/workspace-search.json +1 -1
  82. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/yaml-validator.json +1 -1
  83. package/node_modules/@pi-harness/api-gateway/package.json +1 -1
  84. package/node_modules/@pi-harness/cli/package.json +1 -1
  85. package/node_modules/@pi-harness/host-webserver/package.json +1 -1
  86. package/node_modules/@pi-harness/web-app/package.json +1 -1
  87. package/package.json +6 -6
  88. package/packages/api-gateway/dist/marketplace-entries/official/agent-teams.json +1 -1
  89. package/packages/api-gateway/dist/marketplace-entries/official/anchored-standard.json +1 -1
  90. package/packages/api-gateway/dist/marketplace-entries/official/archify.json +1 -1
  91. package/packages/api-gateway/dist/marketplace-entries/official/at-file.json +1 -1
  92. package/packages/api-gateway/dist/marketplace-entries/official/auto-mode.json +1 -1
  93. package/packages/api-gateway/dist/marketplace-entries/official/better-sidebar.json +1 -1
  94. package/packages/api-gateway/dist/marketplace-entries/official/browser-session.json +1 -1
  95. package/packages/api-gateway/dist/marketplace-entries/official/canvas-draw.json +1 -1
  96. package/packages/api-gateway/dist/marketplace-entries/official/code2skill.json +1 -1
  97. package/packages/api-gateway/dist/marketplace-entries/official/colleague-skill.json +1 -1
  98. package/packages/api-gateway/dist/marketplace-entries/official/cost-meter.json +1 -1
  99. package/packages/api-gateway/dist/marketplace-entries/official/dependency-checker.json +1 -1
  100. package/packages/api-gateway/dist/marketplace-entries/official/docker-sandbox.json +1 -1
  101. package/packages/api-gateway/dist/marketplace-entries/official/git-time-capsule.json +1 -1
  102. package/packages/api-gateway/dist/marketplace-entries/official/graph-memory.json +1 -1
  103. package/packages/api-gateway/dist/marketplace-entries/official/history-compressor.json +1 -1
  104. package/packages/api-gateway/dist/marketplace-entries/official/hol-guard.json +1 -1
  105. package/packages/api-gateway/dist/marketplace-entries/official/i18n-pair.json +1 -1
  106. package/packages/api-gateway/dist/marketplace-entries/official/image-compressor.json +1 -1
  107. package/packages/api-gateway/dist/marketplace-entries/official/llm-verifier.json +1 -1
  108. package/packages/api-gateway/dist/marketplace-entries/official/mcp-client.json +1 -1
  109. package/packages/api-gateway/dist/marketplace-entries/official/mcp-panel.json +1 -1
  110. package/packages/api-gateway/dist/marketplace-entries/official/memory.json +1 -1
  111. package/packages/api-gateway/dist/marketplace-entries/official/mirage-bridge.json +1 -1
  112. package/packages/api-gateway/dist/marketplace-entries/official/mock-server.json +1 -1
  113. package/packages/api-gateway/dist/marketplace-entries/official/modlens.json +1 -1
  114. package/packages/api-gateway/dist/marketplace-entries/official/module-search.json +1 -1
  115. package/packages/api-gateway/dist/marketplace-entries/official/obsidian-sync.json +1 -1
  116. package/packages/api-gateway/dist/marketplace-entries/official/openpets.json +1 -1
  117. package/packages/api-gateway/dist/marketplace-entries/official/plan-execute.json +1 -1
  118. package/packages/api-gateway/dist/marketplace-entries/official/plugin-check.json +1 -1
  119. package/packages/api-gateway/dist/marketplace-entries/official/plugin-dev.json +1 -1
  120. package/packages/api-gateway/dist/marketplace-entries/official/plugin-finder.json +1 -1
  121. package/packages/api-gateway/dist/marketplace-entries/official/plugin-radar.json +1 -1
  122. package/packages/api-gateway/dist/marketplace-entries/official/plugin-stars.json +1 -1
  123. package/packages/api-gateway/dist/marketplace-entries/official/prompt-guard.json +1 -1
  124. package/packages/api-gateway/dist/marketplace-entries/official/prompt-library.json +1 -1
  125. package/packages/api-gateway/dist/marketplace-entries/official/readme-gen.json +1 -1
  126. package/packages/api-gateway/dist/marketplace-entries/official/recall-unread.json +1 -1
  127. package/packages/api-gateway/dist/marketplace-entries/official/reverse-skill.json +1 -1
  128. package/packages/api-gateway/dist/marketplace-entries/official/reviewer-bot.json +1 -1
  129. package/packages/api-gateway/dist/marketplace-entries/official/runtime-doctor.json +1 -1
  130. package/packages/api-gateway/dist/marketplace-entries/official/secure-audit.json +1 -1
  131. package/packages/api-gateway/dist/marketplace-entries/official/session-bookmarks.json +1 -1
  132. package/packages/api-gateway/dist/marketplace-entries/official/session-bridge.json +1 -1
  133. package/packages/api-gateway/dist/marketplace-entries/official/session-compare.json +1 -1
  134. package/packages/api-gateway/dist/marketplace-entries/official/session-export.json +1 -1
  135. package/packages/api-gateway/dist/marketplace-entries/official/session-insights.json +1 -1
  136. package/packages/api-gateway/dist/marketplace-entries/official/session-search.json +1 -1
  137. package/packages/api-gateway/dist/marketplace-entries/official/skill-catalog.json +1 -1
  138. package/packages/api-gateway/dist/marketplace-entries/official/skill-guard.json +1 -1
  139. package/packages/api-gateway/dist/marketplace-entries/official/sql-lens.json +1 -1
  140. package/packages/api-gateway/dist/marketplace-entries/official/synapse.json +1 -1
  141. package/packages/api-gateway/dist/marketplace-entries/official/tab-manager.json +1 -1
  142. package/packages/api-gateway/dist/marketplace-entries/official/taskboard.json +1 -1
  143. package/packages/api-gateway/dist/marketplace-entries/official/telemetry-blocker.json +1 -1
  144. package/packages/api-gateway/dist/marketplace-entries/official/test-harness.json +1 -1
  145. package/packages/api-gateway/dist/marketplace-entries/official/theme-studio.json +1 -1
  146. package/packages/api-gateway/dist/marketplace-entries/official/token-guard.json +1 -1
  147. package/packages/api-gateway/dist/marketplace-entries/official/turn-rewind.json +1 -1
  148. package/packages/api-gateway/dist/marketplace-entries/official/undo-savepoint.json +1 -1
  149. package/packages/api-gateway/dist/marketplace-entries/official/vision-toolkit.json +1 -1
  150. package/packages/api-gateway/dist/marketplace-entries/official/web-research.json +1 -1
  151. package/packages/api-gateway/dist/marketplace-entries/official/workspace-navigator.json +1 -1
  152. package/packages/api-gateway/dist/marketplace-entries/official/workspace-search.json +1 -1
  153. package/packages/api-gateway/dist/marketplace-entries/official/yaml-validator.json +1 -1
  154. package/packages/api-gateway/package.json +1 -1
  155. package/packages/api-gateway/src/marketplace-entries/official/agent-teams.json +1 -1
  156. package/packages/api-gateway/src/marketplace-entries/official/anchored-standard.json +1 -1
  157. package/packages/api-gateway/src/marketplace-entries/official/archify.json +1 -1
  158. package/packages/api-gateway/src/marketplace-entries/official/at-file.json +1 -1
  159. package/packages/api-gateway/src/marketplace-entries/official/auto-mode.json +1 -1
  160. package/packages/api-gateway/src/marketplace-entries/official/better-sidebar.json +1 -1
  161. package/packages/api-gateway/src/marketplace-entries/official/browser-session.json +1 -1
  162. package/packages/api-gateway/src/marketplace-entries/official/canvas-draw.json +1 -1
  163. package/packages/api-gateway/src/marketplace-entries/official/code2skill.json +1 -1
  164. package/packages/api-gateway/src/marketplace-entries/official/colleague-skill.json +1 -1
  165. package/packages/api-gateway/src/marketplace-entries/official/cost-meter.json +1 -1
  166. package/packages/api-gateway/src/marketplace-entries/official/dependency-checker.json +1 -1
  167. package/packages/api-gateway/src/marketplace-entries/official/docker-sandbox.json +1 -1
  168. package/packages/api-gateway/src/marketplace-entries/official/git-time-capsule.json +1 -1
  169. package/packages/api-gateway/src/marketplace-entries/official/graph-memory.json +1 -1
  170. package/packages/api-gateway/src/marketplace-entries/official/history-compressor.json +1 -1
  171. package/packages/api-gateway/src/marketplace-entries/official/hol-guard.json +1 -1
  172. package/packages/api-gateway/src/marketplace-entries/official/i18n-pair.json +1 -1
  173. package/packages/api-gateway/src/marketplace-entries/official/image-compressor.json +1 -1
  174. package/packages/api-gateway/src/marketplace-entries/official/llm-verifier.json +1 -1
  175. package/packages/api-gateway/src/marketplace-entries/official/mcp-client.json +1 -1
  176. package/packages/api-gateway/src/marketplace-entries/official/mcp-panel.json +1 -1
  177. package/packages/api-gateway/src/marketplace-entries/official/memory.json +1 -1
  178. package/packages/api-gateway/src/marketplace-entries/official/mirage-bridge.json +1 -1
  179. package/packages/api-gateway/src/marketplace-entries/official/mock-server.json +1 -1
  180. package/packages/api-gateway/src/marketplace-entries/official/modlens.json +1 -1
  181. package/packages/api-gateway/src/marketplace-entries/official/module-search.json +1 -1
  182. package/packages/api-gateway/src/marketplace-entries/official/obsidian-sync.json +1 -1
  183. package/packages/api-gateway/src/marketplace-entries/official/openpets.json +1 -1
  184. package/packages/api-gateway/src/marketplace-entries/official/plan-execute.json +1 -1
  185. package/packages/api-gateway/src/marketplace-entries/official/plugin-check.json +1 -1
  186. package/packages/api-gateway/src/marketplace-entries/official/plugin-dev.json +1 -1
  187. package/packages/api-gateway/src/marketplace-entries/official/plugin-finder.json +1 -1
  188. package/packages/api-gateway/src/marketplace-entries/official/plugin-radar.json +1 -1
  189. package/packages/api-gateway/src/marketplace-entries/official/plugin-stars.json +1 -1
  190. package/packages/api-gateway/src/marketplace-entries/official/prompt-guard.json +1 -1
  191. package/packages/api-gateway/src/marketplace-entries/official/prompt-library.json +1 -1
  192. package/packages/api-gateway/src/marketplace-entries/official/readme-gen.json +1 -1
  193. package/packages/api-gateway/src/marketplace-entries/official/recall-unread.json +1 -1
  194. package/packages/api-gateway/src/marketplace-entries/official/reverse-skill.json +1 -1
  195. package/packages/api-gateway/src/marketplace-entries/official/reviewer-bot.json +1 -1
  196. package/packages/api-gateway/src/marketplace-entries/official/runtime-doctor.json +1 -1
  197. package/packages/api-gateway/src/marketplace-entries/official/secure-audit.json +1 -1
  198. package/packages/api-gateway/src/marketplace-entries/official/session-bookmarks.json +1 -1
  199. package/packages/api-gateway/src/marketplace-entries/official/session-bridge.json +1 -1
  200. package/packages/api-gateway/src/marketplace-entries/official/session-compare.json +1 -1
  201. package/packages/api-gateway/src/marketplace-entries/official/session-export.json +1 -1
  202. package/packages/api-gateway/src/marketplace-entries/official/session-insights.json +1 -1
  203. package/packages/api-gateway/src/marketplace-entries/official/session-search.json +1 -1
  204. package/packages/api-gateway/src/marketplace-entries/official/skill-catalog.json +1 -1
  205. package/packages/api-gateway/src/marketplace-entries/official/skill-guard.json +1 -1
  206. package/packages/api-gateway/src/marketplace-entries/official/sql-lens.json +1 -1
  207. package/packages/api-gateway/src/marketplace-entries/official/synapse.json +1 -1
  208. package/packages/api-gateway/src/marketplace-entries/official/tab-manager.json +1 -1
  209. package/packages/api-gateway/src/marketplace-entries/official/taskboard.json +1 -1
  210. package/packages/api-gateway/src/marketplace-entries/official/telemetry-blocker.json +1 -1
  211. package/packages/api-gateway/src/marketplace-entries/official/test-harness.json +1 -1
  212. package/packages/api-gateway/src/marketplace-entries/official/theme-studio.json +1 -1
  213. package/packages/api-gateway/src/marketplace-entries/official/token-guard.json +1 -1
  214. package/packages/api-gateway/src/marketplace-entries/official/turn-rewind.json +1 -1
  215. package/packages/api-gateway/src/marketplace-entries/official/undo-savepoint.json +1 -1
  216. package/packages/api-gateway/src/marketplace-entries/official/vision-toolkit.json +1 -1
  217. package/packages/api-gateway/src/marketplace-entries/official/web-research.json +1 -1
  218. package/packages/api-gateway/src/marketplace-entries/official/workspace-navigator.json +1 -1
  219. package/packages/api-gateway/src/marketplace-entries/official/workspace-search.json +1 -1
  220. package/packages/api-gateway/src/marketplace-entries/official/yaml-validator.json +1 -1
  221. package/packages/api-gateway/test/index.test.ts +108 -92
  222. package/packages/bundle-web-app/package.json +1 -1
  223. package/packages/cli/package.json +1 -1
  224. package/packages/host-webserver/package.json +1 -1
  225. package/apps/web/dist/assets/index-CZMbiZj6.css +0 -2
  226. package/apps/web/dist/assets/index-DfoTFIcm.js +0 -26
@@ -227,9 +227,7 @@ describe("API gateway plugin", () => {
227
227
  });
228
228
 
229
229
  test("publishes the persisted UTC cost ledger through its dedicated panel", async () => {
230
- const costMeterModule = (await import(/* @vite-ignore */ import.meta.resolve("@pi-harness/plugin-cost-meter"))) as {
231
- default: Parameters<Context["plugin"]>[0];
232
- };
230
+ const costMeterModule = await import("@pi-harness/plugin-cost-meter");
233
231
  const context = new Context();
234
232
  contexts.push(context);
235
233
  const agentDir = await mkdtemp(join(tmpdir(), "pi-harness-api-cost-meter-"));
@@ -285,7 +283,7 @@ describe("API gateway plugin", () => {
285
283
  });
286
284
 
287
285
  test("publishes the bounded dependency report through its dedicated panel", async () => {
288
- const dependencyCheckerModule = (await import(/* @vite-ignore */ import.meta.resolve("@pi-harness/plugin-dependency-checker"))) as {
286
+ const dependencyCheckerModule = (await import("@pi-harness/plugin-dependency-checker")) as {
289
287
  default: Parameters<Context["plugin"]>[0];
290
288
  };
291
289
  const context = new Context();
@@ -297,7 +295,14 @@ describe("API gateway plugin", () => {
297
295
  JSON.stringify({ dependencies: { missing: "^1.0.0" }, devDependencies: { missing: ">=2.0.0" }, optionalDependencies: { optional: "1.0.0" } }),
298
296
  );
299
297
  await context.plugin(webServerPlugin, { host: "127.0.0.1", port: 0 });
300
- const session = { sessionId: "dependency-panel-session", sessionFile: undefined, messages: [], isStreaming: false, subscribe: () => () => {} };
298
+ const session = {
299
+ sessionId: "dependency-panel-session",
300
+ sessionManager: SessionManager.create(workspace, join(workspace, "sessions")),
301
+ sessionFile: undefined,
302
+ messages: [],
303
+ isStreaming: false,
304
+ subscribe: () => () => {},
305
+ };
301
306
  context.provide("piRuntime", { session, prompt: () => Promise.resolve() } as never);
302
307
  context.provide("piModels", { model: { provider: "test", id: "model" } } as never);
303
308
  context.provide("piHarnessLaunch", { cwd: workspace, agentDir: workspace, args: [], requestExit() {} });
@@ -338,7 +343,7 @@ describe("API gateway plugin", () => {
338
343
  });
339
344
 
340
345
  test("publishes the enforced Docker sandbox defaults through its real plugin panel", async () => {
341
- const dockerSandboxModule = (await import(/* @vite-ignore */ import.meta.resolve("@pi-harness/plugin-docker-sandbox"))) as {
346
+ const dockerSandboxModule = (await import("@pi-harness/plugin-docker-sandbox")) as {
342
347
  default: Parameters<Context["plugin"]>[0];
343
348
  };
344
349
  const context = new Context();
@@ -346,7 +351,14 @@ describe("API gateway plugin", () => {
346
351
  const workspace = await mkdtemp(join(tmpdir(), "pi-harness-api-docker-sandbox-"));
347
352
  temporaryDirectories.push(workspace);
348
353
  await context.plugin(webServerPlugin, { host: "127.0.0.1", port: 0 });
349
- const session = { sessionId: "docker-panel-session", sessionFile: undefined, messages: [], isStreaming: false, subscribe: () => () => {} };
354
+ const session = {
355
+ sessionId: "docker-panel-session",
356
+ sessionManager: SessionManager.create(workspace, join(workspace, "sessions")),
357
+ sessionFile: undefined,
358
+ messages: [],
359
+ isStreaming: false,
360
+ subscribe: () => () => {},
361
+ };
350
362
  context.provide("piRuntime", { session, prompt: () => Promise.resolve() } as never);
351
363
  context.provide("piModels", { model: { provider: "test", id: "model" } } as never);
352
364
  context.provide("piHarnessLaunch", { cwd: workspace, agentDir: workspace, args: [], requestExit() {} });
@@ -386,9 +398,7 @@ describe("API gateway plugin", () => {
386
398
  });
387
399
 
388
400
  test("publishes aggregated failures through the real Failure Logger panel", async () => {
389
- const failLoggerModule = (await import(/* @vite-ignore */ import.meta.resolve("@pi-harness/plugin-fail-logger"))) as {
390
- default: Parameters<Context["plugin"]>[0];
391
- };
401
+ const failLoggerModule = await import("@pi-harness/plugin-fail-logger");
392
402
  const context = new Context();
393
403
  contexts.push(context);
394
404
  await context.plugin(webServerPlugin, { host: "127.0.0.1", port: 0 });
@@ -450,9 +460,7 @@ describe("API gateway plugin", () => {
450
460
  });
451
461
 
452
462
  test("publishes bounded structured cards through the real GenUI panel", async () => {
453
- const genUiModule = (await import(/* @vite-ignore */ import.meta.resolve("@pi-harness/plugin-genui"))) as {
454
- default: Parameters<Context["plugin"]>[0];
455
- };
463
+ const genUiModule = await import("@pi-harness/plugin-genui");
456
464
  const context = new Context();
457
465
  contexts.push(context);
458
466
  await context.plugin(webServerPlugin, { host: "127.0.0.1", port: 0 });
@@ -507,7 +515,7 @@ describe("API gateway plugin", () => {
507
515
  });
508
516
 
509
517
  test("publishes captured Git undo capsules through the real plugin panel", async () => {
510
- const gitTimeCapsuleModule = (await import(/* @vite-ignore */ import.meta.resolve("@pi-harness/plugin-git-time-capsule"))) as {
518
+ const gitTimeCapsuleModule = (await import("@pi-harness/plugin-git-time-capsule")) as {
511
519
  default: Parameters<Context["plugin"]>[0];
512
520
  };
513
521
  const context = new Context();
@@ -522,7 +530,14 @@ describe("API gateway plugin", () => {
522
530
  await execFile("git", ["-c", "user.name=Pi", "-c", "user.email=pi@example.invalid", "commit", "-qm", "fixture"], { cwd: workspace });
523
531
  await writeFile(join(workspace, "tracked.txt"), "after\n", "utf8");
524
532
  await context.plugin(webServerPlugin, { host: "127.0.0.1", port: 0 });
525
- const session = { sessionId: "git-capsule-panel-session", sessionFile: undefined, messages: [], isStreaming: false, subscribe: () => () => {} };
533
+ const session = {
534
+ sessionId: "git-capsule-panel-session",
535
+ sessionManager: SessionManager.create(workspace, join(agentDir, "sessions")),
536
+ sessionFile: undefined,
537
+ messages: [],
538
+ isStreaming: false,
539
+ subscribe: () => () => {},
540
+ };
526
541
  context.provide("piRuntime", { session, prompt: () => Promise.resolve() } as never);
527
542
  context.provide("piModels", { model: { provider: "test", id: "model" } } as never);
528
543
  context.provide("piHarnessLaunch", { cwd: workspace, agentDir, args: [], requestExit() {} });
@@ -576,9 +591,7 @@ describe("API gateway plugin", () => {
576
591
  });
577
592
 
578
593
  test("publishes the persisted graph memory through the real plugin panel", async () => {
579
- const graphMemoryModule = (await import(/* @vite-ignore */ import.meta.resolve("@pi-harness/plugin-graph-memory"))) as {
580
- default: Parameters<Context["plugin"]>[0];
581
- };
594
+ const graphMemoryModule = await import("@pi-harness/plugin-graph-memory");
582
595
  const context = new Context();
583
596
  contexts.push(context);
584
597
  const agentDir = await mkdtemp(join(tmpdir(), "pi-harness-api-graph-memory-"));
@@ -622,7 +635,7 @@ describe("API gateway plugin", () => {
622
635
  });
623
636
 
624
637
  test("publishes a bounded locale parity report through the real plugin panel", async () => {
625
- const i18nPairModule = (await import(/* @vite-ignore */ import.meta.resolve("@pi-harness/plugin-i18n-pair"))) as {
638
+ const i18nPairModule = (await import("@pi-harness/plugin-i18n-pair")) as {
626
639
  default: Parameters<Context["plugin"]>[0];
627
640
  };
628
641
  const context = new Context();
@@ -634,7 +647,14 @@ describe("API gateway plugin", () => {
634
647
  await writeFile(join(workspace, "locales", "en.json"), JSON.stringify({ actions: { save: "Save", cancel: "Cancel" } }), "utf8");
635
648
  await writeFile(join(workspace, "locales", "ja.json"), JSON.stringify({ actions: { save: "保存" }, onlyHere: "追加" }), "utf8");
636
649
  await context.plugin(webServerPlugin, { host: "127.0.0.1", port: 0 });
637
- const session = { sessionId: "i18n-panel-session", sessionFile: undefined, messages: [], isStreaming: false, subscribe: () => () => {} };
650
+ const session = {
651
+ sessionId: "i18n-panel-session",
652
+ sessionManager: SessionManager.create(workspace, join(agentDir, "sessions")),
653
+ sessionFile: undefined,
654
+ messages: [],
655
+ isStreaming: false,
656
+ subscribe: () => () => {},
657
+ };
638
658
  context.provide("piRuntime", { session, prompt: () => Promise.resolve() } as never);
639
659
  context.provide("piModels", { model: { provider: "test", id: "model" } } as never);
640
660
  context.provide("piHarnessLaunch", { cwd: workspace, agentDir, args: [], requestExit() {} });
@@ -677,9 +697,7 @@ describe("API gateway plugin", () => {
677
697
  });
678
698
 
679
699
  test("publishes bounded Git capsule cleanup activity through the real plugin panel", async () => {
680
- const cleanerModule = (await import(/* @vite-ignore */ import.meta.resolve("@pi-harness/plugin-cleaner"))) as {
681
- default: Parameters<Context["plugin"]>[0];
682
- };
700
+ const cleanerModule = await import("@pi-harness/plugin-cleaner");
683
701
  const context = new Context();
684
702
  contexts.push(context);
685
703
  const agentDir = await mkdtemp(join(tmpdir(), "pi-harness-api-cleaner-agent-"));
@@ -725,9 +743,7 @@ describe("API gateway plugin", () => {
725
743
  });
726
744
 
727
745
  test("publishes a bounded isolated SQLite query through the real plugin panel", async () => {
728
- const sqlLensModule = (await import(/* @vite-ignore */ import.meta.resolve("@pi-harness/plugin-sql-lens"))) as {
729
- default: Parameters<Context["plugin"]>[0];
730
- };
746
+ const sqlLensModule = await import("@pi-harness/plugin-sql-lens");
731
747
  const context = new Context();
732
748
  contexts.push(context);
733
749
  const workspace = await mkdtemp(join(tmpdir(), "pi-harness-api-sql-lens-workspace-"));
@@ -737,7 +753,15 @@ describe("API gateway plugin", () => {
737
753
  database.exec("CREATE TABLE users(id INTEGER PRIMARY KEY, name TEXT); INSERT INTO users VALUES (1, 'Ada')");
738
754
  database.close();
739
755
  await context.plugin(webServerPlugin, { host: "127.0.0.1", port: 0 });
740
- const session = { sessionId: "sql-panel-session", sessionFile: undefined, messages: [], isStreaming: false, subscribe: () => () => {} };
756
+ const manager = SessionManager.inMemory(workspace);
757
+ const session = {
758
+ sessionId: manager.getSessionId(),
759
+ sessionManager: manager,
760
+ sessionFile: undefined,
761
+ messages: [],
762
+ isStreaming: false,
763
+ subscribe: () => () => {},
764
+ };
741
765
  context.provide("piRuntime", { session, prompt: () => Promise.resolve() } as never);
742
766
  context.provide("piModels", { model: { provider: "test", id: "model" } } as never);
743
767
  context.provide("piHarnessLaunch", { cwd: workspace, agentDir, args: [], requestExit() {} });
@@ -763,6 +787,7 @@ describe("API gateway plugin", () => {
763
787
  status: { state: "completed" },
764
788
  timeoutMs: 1_500,
765
789
  latest: {
790
+ cwd: workspace,
766
791
  database: "data.db",
767
792
  columns: ["id", "name"],
768
793
  rows: [{ id: 1, name: "Ada" }],
@@ -777,9 +802,7 @@ describe("API gateway plugin", () => {
777
802
  });
778
803
 
779
804
  test("publishes bounded MCP inventories and limits through the real plugin panel", async () => {
780
- const mcpClientModule = (await import(/* @vite-ignore */ import.meta.resolve("@pi-harness/plugin-mcp-client"))) as {
781
- default: Parameters<Context["plugin"]>[0];
782
- };
805
+ const mcpClientModule = await import("@pi-harness/plugin-mcp-client");
783
806
  const context = new Context();
784
807
  contexts.push(context);
785
808
  const workspace = await mkdtemp(join(tmpdir(), "pi-harness-api-mcp-client-workspace-"));
@@ -792,7 +815,15 @@ describe("API gateway plugin", () => {
792
815
  "utf8",
793
816
  );
794
817
  await context.plugin(webServerPlugin, { host: "127.0.0.1", port: 0 });
795
- const session = { sessionId: "mcp-client-panel-session", sessionFile: undefined, messages: [], isStreaming: false, subscribe: () => () => {} };
818
+ const manager = SessionManager.inMemory(workspace);
819
+ const session = {
820
+ sessionId: manager.getSessionId(),
821
+ sessionManager: manager,
822
+ sessionFile: undefined,
823
+ messages: [],
824
+ isStreaming: false,
825
+ subscribe: () => () => {},
826
+ };
796
827
  context.provide("piRuntime", { session, prompt: () => Promise.resolve() } as never);
797
828
  context.provide("piModels", { model: { provider: "test", id: "model" } } as never);
798
829
  context.provide("piHarnessLaunch", { cwd: workspace, agentDir, args: [], requestExit() {} });
@@ -844,9 +875,7 @@ describe("API gateway plugin", () => {
844
875
  });
845
876
 
846
877
  test("publishes a bounded Browser Fetch preview through the real plugin panel", async () => {
847
- const browserFetchModule = (await import(/* @vite-ignore */ import.meta.resolve("@pi-harness/plugin-browser-fetch"))) as {
848
- default: Parameters<Context["plugin"]>[0];
849
- };
878
+ const browserFetchModule = await import("@pi-harness/plugin-browser-fetch");
850
879
  const context = new Context();
851
880
  contexts.push(context);
852
881
  const workspace = await mkdtemp(join(tmpdir(), "pi-harness-api-browser-fetch-workspace-"));
@@ -905,9 +934,7 @@ describe("API gateway plugin", () => {
905
934
  });
906
935
 
907
936
  test("publishes a bounded Browser Session inventory through the real plugin panel", async () => {
908
- const browserSessionModule = (await import(/* @vite-ignore */ import.meta.resolve("@pi-harness/plugin-browser-session"))) as {
909
- default: Parameters<Context["plugin"]>[0];
910
- };
937
+ const browserSessionModule = await import("@pi-harness/plugin-browser-session");
911
938
  const context = new Context();
912
939
  contexts.push(context);
913
940
  const workspace = await mkdtemp(join(tmpdir(), "pi-harness-api-browser-session-workspace-"));
@@ -973,9 +1000,7 @@ describe("API gateway plugin", () => {
973
1000
  });
974
1001
 
975
1002
  test("publishes a bounded Plugin Stars inventory through the real plugin panel", async () => {
976
- const pluginStarsModule = (await import(/* @vite-ignore */ import.meta.resolve("@pi-harness/plugin-plugin-stars"))) as {
977
- default: Parameters<Context["plugin"]>[0];
978
- };
1003
+ const pluginStarsModule = await import("@pi-harness/plugin-plugin-stars");
979
1004
  const originalFetch = globalThis.fetch;
980
1005
  const context = new Context();
981
1006
  contexts.push(context);
@@ -992,7 +1017,7 @@ describe("API gateway plugin", () => {
992
1017
  const tools = new PiToolRegistry();
993
1018
  context.reflect.provide("piPluginUi", registry);
994
1019
  context.reflect.provide("piTools", tools);
995
- await context.plugin(pluginStarsModule.default, { limit: 50 });
1020
+ await context.plugin(pluginStarsModule.default, { limit: 50, sourceUrl: "https://raw.githubusercontent.com/pi-harness/fixture/main/plugins.json" });
996
1021
  const plugins = Array.from({ length: 25 }, (_, index) => ({
997
1022
  id: String(index + 1),
998
1023
  name: `fixture-${index}`,
@@ -1001,7 +1026,7 @@ describe("API gateway plugin", () => {
1001
1026
  htmlUrl: `https://github.com/owner/fixture-${index}`,
1002
1027
  stars: 25 - index,
1003
1028
  updatedAt: "2026-09-05T00:00:00Z",
1004
- topics: ["dsh-plugin"],
1029
+ topics: ["pi-harness-plugin"],
1005
1030
  }));
1006
1031
  globalThis.fetch = () => Promise.resolve(Response.json({ source: "fixture", generatedAt: "2026-09-05T00:00:00Z", plugins }));
1007
1032
  const search = tools.snapshot().customTools.find((tool) => tool.name === "plugin_stars_search");
@@ -1035,7 +1060,7 @@ describe("API gateway plugin", () => {
1035
1060
  });
1036
1061
 
1037
1062
  test("publishes bounded YAML diagnostics through the real plugin panel", async () => {
1038
- const yamlValidatorModule = (await import(/* @vite-ignore */ import.meta.resolve("@pi-harness/plugin-yaml-validator"))) as {
1063
+ const yamlValidatorModule = (await import("@pi-harness/plugin-yaml-validator")) as {
1039
1064
  default: Parameters<Context["plugin"]>[0];
1040
1065
  };
1041
1066
  const context = new Context();
@@ -1045,7 +1070,14 @@ describe("API gateway plugin", () => {
1045
1070
  temporaryDirectories.push(workspace, agentDir);
1046
1071
  await writeFile(join(workspace, "invalid.yml"), "duplicate: true\n".repeat(102), "utf8");
1047
1072
  await context.plugin(webServerPlugin, { host: "127.0.0.1", port: 0 });
1048
- const session = { sessionId: "yaml-validator-panel-session", sessionFile: undefined, messages: [], isStreaming: false, subscribe: () => () => {} };
1073
+ const session = {
1074
+ sessionId: "yaml-validator-panel-session",
1075
+ sessionManager: { getCwd: () => workspace },
1076
+ sessionFile: undefined,
1077
+ messages: [],
1078
+ isStreaming: false,
1079
+ subscribe: () => () => {},
1080
+ };
1049
1081
  context.provide("piRuntime", { session, prompt: () => Promise.resolve() } as never);
1050
1082
  context.provide("piModels", { model: { provider: "test", id: "model" } } as never);
1051
1083
  context.provide("piHarnessLaunch", { cwd: workspace, agentDir, args: [], requestExit() {} });
@@ -1084,9 +1116,7 @@ describe("API gateway plugin", () => {
1084
1116
  });
1085
1117
 
1086
1118
  test("publishes bounded Plugin Dev reload state through the real plugin panel", async () => {
1087
- const pluginDevModule = (await import(/* @vite-ignore */ import.meta.resolve("@pi-harness/plugin-plugin-dev"))) as {
1088
- default: Parameters<Context["plugin"]>[0];
1089
- };
1119
+ const pluginDevModule = await import("@pi-harness/plugin-plugin-dev");
1090
1120
  const context = new Context();
1091
1121
  contexts.push(context);
1092
1122
  await context.plugin(webServerPlugin, { host: "127.0.0.1", port: 0 });
@@ -1140,26 +1170,33 @@ describe("API gateway plugin", () => {
1140
1170
  });
1141
1171
 
1142
1172
  test("publishes bounded OpenPets state through the real plugin panel", async () => {
1143
- const openPetsModule = (await import(/* @vite-ignore */ import.meta.resolve("@pi-harness/plugin-openpets"))) as {
1173
+ const openPetsModule = (await import("@pi-harness/plugin-openpets")) as {
1144
1174
  default: Parameters<Context["plugin"]>[0];
1145
1175
  };
1146
1176
  const context = new Context();
1147
1177
  contexts.push(context);
1148
1178
  await context.plugin(webServerPlugin, { host: "127.0.0.1", port: 0 });
1149
1179
  const entries: unknown[] = [];
1150
- const session = { sessionId: "openpets-panel-session", sessionFile: undefined, messages: [], isStreaming: false, subscribe: () => () => {} };
1180
+ const manager = {
1181
+ getHeader: () => null,
1182
+ getEntries: () => entries,
1183
+ appendCustomEntry: (customType: string, data: unknown) => {
1184
+ entries.push({ type: "custom", customType, data });
1185
+ return String(entries.length);
1186
+ },
1187
+ };
1188
+ const session = {
1189
+ sessionId: "openpets-panel-session",
1190
+ sessionManager: manager,
1191
+ sessionFile: undefined,
1192
+ messages: [],
1193
+ isStreaming: false,
1194
+ subscribe: () => () => {},
1195
+ };
1151
1196
  context.provide("piRuntime", { session, prompt: () => Promise.resolve() } as never);
1152
1197
  context.provide("piModels", { model: { provider: "test", id: "model" } } as never);
1153
1198
  context.provide("piHarnessLaunch", { cwd: "/tmp", agentDir: "/tmp/agent", args: [], requestExit() {} });
1154
- context.provide("piSession", {
1155
- manager: {
1156
- getEntries: () => entries,
1157
- appendCustomEntry: (customType: string, data: unknown) => {
1158
- entries.push({ type: "custom", customType, data });
1159
- return String(entries.length);
1160
- },
1161
- },
1162
- } as never);
1199
+ context.provide("piSession", { manager } as never);
1163
1200
  const registry = new PiPluginUiRegistry();
1164
1201
  const tools = new PiToolRegistry();
1165
1202
  context.reflect.provide("piPluginUi", registry);
@@ -1195,24 +1232,15 @@ describe("API gateway plugin", () => {
1195
1232
  });
1196
1233
 
1197
1234
  test("publishes bounded Session Bridge previews through the real plugin panel", async () => {
1198
- const sessionBridgeModule = (await import(/* @vite-ignore */ import.meta.resolve("@pi-harness/plugin-session-bridge"))) as {
1199
- default: Parameters<Context["plugin"]>[0];
1200
- };
1235
+ const sessionBridgeModule = await import("@pi-harness/plugin-session-bridge");
1201
1236
  const context = new Context();
1202
1237
  contexts.push(context);
1203
1238
  await context.plugin(webServerPlugin, { host: "127.0.0.1", port: 0 });
1204
- const manager = {
1205
- buildSessionContext: () => ({
1206
- model: { provider: "fixture", modelId: "model" },
1207
- messages: [{ role: "user", content: [{ type: "text", text: "Keep src/index.ts stable." }] }],
1208
- }),
1209
- getSessionId: () => "session-bridge-source",
1210
- getCwd: () => "/workspace",
1211
- getEntries: () => [],
1212
- appendCustomMessageEntry: () => "entry",
1213
- };
1239
+ const manager = SessionManager.inMemory("/workspace");
1240
+ manager.appendModelChange("fixture", "model");
1241
+ manager.appendMessage({ role: "user", content: [{ type: "text", text: "Keep src/index.ts stable." }], timestamp: Date.now() });
1214
1242
  const session = {
1215
- sessionId: "session-bridge-panel-session",
1243
+ sessionId: manager.getSessionId(),
1216
1244
  sessionFile: undefined,
1217
1245
  messages: [],
1218
1246
  isStreaming: false,
@@ -1244,7 +1272,7 @@ describe("API gateway plugin", () => {
1244
1272
  data: {
1245
1273
  latest: null,
1246
1274
  latestPreview: {
1247
- source: { sessionId: "session-bridge-source", cwd: "/workspace", model: { provider: "fixture", modelId: "model" } },
1275
+ source: { sessionId: manager.getSessionId(), cwd: "/workspace", model: { provider: "fixture", modelId: "model" } },
1248
1276
  preview: { goal: "Keep src/index.ts stable.", decisions: ["Keep src/index.ts stable."], keyFiles: ["src/index.ts"] },
1249
1277
  },
1250
1278
  currentPreview: { goal: "Keep src/index.ts stable." },
@@ -1267,9 +1295,7 @@ describe("API gateway plugin", () => {
1267
1295
  });
1268
1296
 
1269
1297
  test("publishes bounded Skill Guard audits through the real plugin panel", async () => {
1270
- const skillGuardModule = (await import(/* @vite-ignore */ import.meta.resolve("@pi-harness/plugin-skill-guard"))) as {
1271
- default: Parameters<Context["plugin"]>[0];
1272
- };
1298
+ const skillGuardModule = await import("@pi-harness/plugin-skill-guard");
1273
1299
  const cwd = await mkdtemp(join(tmpdir(), "pi-harness-api-skill-guard-"));
1274
1300
  temporaryDirectories.push(cwd);
1275
1301
  const skillPath = join(cwd, "SKILL.md");
@@ -1338,9 +1364,7 @@ describe("API gateway plugin", () => {
1338
1364
  }, 15_000);
1339
1365
 
1340
1366
  test("publishes bounded Recall Unread inventory through the real plugin panel", async () => {
1341
- const recallUnreadModule = (await import(/* @vite-ignore */ import.meta.resolve("@pi-harness/plugin-recall-unread"))) as {
1342
- default: Parameters<Context["plugin"]>[0];
1343
- };
1367
+ const recallUnreadModule = await import("@pi-harness/plugin-recall-unread");
1344
1368
  const workspace = await mkdtemp(join(tmpdir(), "pi-harness-api-recall-unread-workspace-"));
1345
1369
  const sessionDir = await mkdtemp(join(tmpdir(), "pi-harness-api-recall-unread-sessions-"));
1346
1370
  temporaryDirectories.push(workspace, sessionDir);
@@ -1422,9 +1446,7 @@ describe("API gateway plugin", () => {
1422
1446
  });
1423
1447
 
1424
1448
  test("publishes bounded Context Insights through the real plugin panel", async () => {
1425
- const contextInsightsModule = (await import(/* @vite-ignore */ import.meta.resolve("@pi-harness/plugin-context"))) as {
1426
- default: Parameters<Context["plugin"]>[0];
1427
- };
1449
+ const contextInsightsModule = await import("@pi-harness/plugin-context");
1428
1450
  const context = new Context();
1429
1451
  contexts.push(context);
1430
1452
  await context.plugin(webServerPlugin, { host: "127.0.0.1", port: 0 });
@@ -1473,9 +1495,7 @@ describe("API gateway plugin", () => {
1473
1495
  });
1474
1496
 
1475
1497
  test("publishes cached Token Guard state through the real plugin panel", async () => {
1476
- const tokenGuardModule = (await import(/* @vite-ignore */ import.meta.resolve("@pi-harness/plugin-token-guard"))) as {
1477
- default: Parameters<Context["plugin"]>[0];
1478
- };
1498
+ const tokenGuardModule = await import("@pi-harness/plugin-token-guard");
1479
1499
  const context = new Context();
1480
1500
  contexts.push(context);
1481
1501
  await context.plugin(webServerPlugin, { host: "127.0.0.1", port: 0 });
@@ -1522,9 +1542,7 @@ describe("API gateway plugin", () => {
1522
1542
  });
1523
1543
 
1524
1544
  test("publishes the bounded Context Doctor audit through the real plugin panel", async () => {
1525
- const contextDoctorModule = (await import(/* @vite-ignore */ import.meta.resolve("@pi-harness/plugin-context-doctor"))) as {
1526
- default: Parameters<Context["plugin"]>[0];
1527
- };
1545
+ const contextDoctorModule = await import("@pi-harness/plugin-context-doctor");
1528
1546
  const context = new Context();
1529
1547
  contexts.push(context);
1530
1548
  await context.plugin(webServerPlugin, { host: "127.0.0.1", port: 0 });
@@ -1589,9 +1607,7 @@ describe("API gateway plugin", () => {
1589
1607
  });
1590
1608
 
1591
1609
  test("publishes bounded current-branch Turn Rewind candidates through the real plugin panel", async () => {
1592
- const turnRewindModule = (await import(/* @vite-ignore */ import.meta.resolve("@pi-harness/plugin-turn-rewind"))) as {
1593
- default: Parameters<Context["plugin"]>[0];
1594
- };
1610
+ const turnRewindModule = await import("@pi-harness/plugin-turn-rewind");
1595
1611
  const manager = SessionManager.inMemory("/workspace");
1596
1612
  const first = manager.appendMessage({ role: "user", content: [{ type: "text", text: "first turn" }], timestamp: Date.now() });
1597
1613
  manager.appendMessage({
@@ -2950,7 +2966,7 @@ describe("API gateway plugin", () => {
2950
2966
  } finally {
2951
2967
  process.env.PATH = originalPath;
2952
2968
  }
2953
- });
2969
+ }, 30_000);
2954
2970
 
2955
2971
  test("reports a git process killed by the output limit as a server failure rather than a rejected commit", async () => {
2956
2972
  const context = new Context();
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/web-app",
3
- "version": "0.1.35",
3
+ "version": "0.1.37",
4
4
  "private": true,
5
5
  "description": "Patchable Web application bundle for Pi Harness",
6
6
  "homepage": "https://github.com/pi-harness/pi-harness#readme",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/cli",
3
- "version": "0.1.35",
3
+ "version": "0.1.37",
4
4
  "private": true,
5
5
  "description": "Plugin-first Pi Harness CLI",
6
6
  "homepage": "https://github.com/pi-harness/pi-harness#readme",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/host-webserver",
3
- "version": "0.1.35",
3
+ "version": "0.1.37",
4
4
  "private": true,
5
5
  "description": "Cordis route-registration service for the Pi Harness web host",
6
6
  "homepage": "https://github.com/pi-harness/pi-harness#readme",