@blackbelt-technology/pi-agent-dashboard 0.5.0 → 0.5.2

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 (201) hide show
  1. package/AGENTS.md +26 -5
  2. package/README.md +49 -7
  3. package/docs/architecture.md +129 -1
  4. package/package.json +15 -15
  5. package/packages/extension/package.json +11 -3
  6. package/packages/extension/src/__tests__/ask-user-tool.test.ts +1 -1
  7. package/packages/extension/src/__tests__/bridge-slash-command-routing.test.ts +362 -0
  8. package/packages/extension/src/__tests__/command-handler.test.ts +78 -8
  9. package/packages/extension/src/__tests__/enrich-model-metadata.test.ts +1 -1
  10. package/packages/extension/src/__tests__/extension-slash-command-detection.test.ts +107 -0
  11. package/packages/extension/src/__tests__/no-tui-multiselect-arm-regression.test.ts +1 -1
  12. package/packages/extension/src/__tests__/prompt-expander.test.ts +110 -1
  13. package/packages/extension/src/__tests__/provider-register-reload.test.ts +74 -0
  14. package/packages/extension/src/__tests__/retry-tracker.test.ts +147 -0
  15. package/packages/extension/src/__tests__/server-launcher-launch.test.ts +78 -0
  16. package/packages/extension/src/__tests__/session-sync.test.ts +72 -0
  17. package/packages/extension/src/__tests__/usage-limit-orderer.test.ts +105 -0
  18. package/packages/extension/src/ask-user-tool.ts +1 -1
  19. package/packages/extension/src/bridge-context.ts +68 -4
  20. package/packages/extension/src/bridge.ts +79 -11
  21. package/packages/extension/src/command-handler.ts +95 -15
  22. package/packages/extension/src/flow-event-wiring.ts +1 -1
  23. package/packages/extension/src/multiselect-list.ts +1 -1
  24. package/packages/extension/src/pi-env.d.ts +16 -9
  25. package/packages/extension/src/prompt-expander.ts +74 -63
  26. package/packages/extension/src/provider-register.ts +16 -9
  27. package/packages/extension/src/retry-tracker.ts +123 -0
  28. package/packages/extension/src/server-launcher.ts +31 -70
  29. package/packages/extension/src/session-sync.ts +10 -1
  30. package/packages/extension/src/slash-dispatch.ts +123 -0
  31. package/packages/extension/src/usage-limit-orderer.ts +76 -0
  32. package/packages/server/bin/pi-dashboard.mjs +84 -0
  33. package/packages/server/package.json +8 -7
  34. package/packages/server/scripts/fix-pty-permissions.cjs +52 -0
  35. package/packages/server/src/__tests__/changelog-fs.test.ts +171 -0
  36. package/packages/server/src/__tests__/changelog-parser.test.ts +220 -0
  37. package/packages/server/src/__tests__/changelog-remote.test.ts +193 -0
  38. package/packages/server/src/__tests__/cli-parse.test.ts +16 -4
  39. package/packages/server/src/__tests__/directory-service-openspec-enabled.test.ts +187 -0
  40. package/packages/server/src/__tests__/directory-service-refresh-force.test.ts +1 -1
  41. package/packages/server/src/__tests__/directory-service-specs-mtime.test.ts +1 -1
  42. package/packages/server/src/__tests__/directory-service-toctou.test.ts +1 -1
  43. package/packages/server/src/__tests__/directory-service.test.ts +2 -2
  44. package/packages/server/src/__tests__/dispatch-extension-command-router.test.ts +178 -0
  45. package/packages/server/src/__tests__/e2e/model-proxy-google-flash.test.ts +184 -0
  46. package/packages/server/src/__tests__/event-wiring-providers-list.test.ts +68 -1
  47. package/packages/server/src/__tests__/fixtures/pi-changelog-slice.md +180 -0
  48. package/packages/server/src/__tests__/fork-empty-session-preflight.test.ts +268 -0
  49. package/packages/server/src/__tests__/headless-pid-registry.test.ts +316 -0
  50. package/packages/server/src/__tests__/is-pi-process.test.ts +1 -1
  51. package/packages/server/src/__tests__/keeper-manager.test.ts +298 -0
  52. package/packages/server/src/__tests__/legacy-pi-cleanup.test.ts +149 -0
  53. package/packages/server/src/__tests__/model-proxy-api-key-routes.test.ts +277 -0
  54. package/packages/server/src/__tests__/model-proxy-auth-gate.test.ts +263 -0
  55. package/packages/server/src/__tests__/model-proxy-multi-user.test.ts +169 -0
  56. package/packages/server/src/__tests__/model-proxy-routes.test.ts +286 -0
  57. package/packages/server/src/__tests__/model-proxy-second-port.test.ts +116 -0
  58. package/packages/server/src/__tests__/openspec-connect-snapshot.test.ts +64 -8
  59. package/packages/server/src/__tests__/openspec-group-broadcast.test.ts +97 -0
  60. package/packages/server/src/__tests__/openspec-group-join.test.ts +80 -0
  61. package/packages/server/src/__tests__/openspec-group-routes.test.ts +370 -0
  62. package/packages/server/src/__tests__/openspec-group-store.test.ts +496 -0
  63. package/packages/server/src/__tests__/package-manager-wrapper-resolve.test.ts +4 -4
  64. package/packages/server/src/__tests__/package-routes.test.ts +1 -1
  65. package/packages/server/src/__tests__/pending-fork-registry.test.ts +48 -24
  66. package/packages/server/src/__tests__/pi-ai-shape.test.ts +147 -0
  67. package/packages/server/src/__tests__/pi-changelog-integration.test.ts +165 -0
  68. package/packages/server/src/__tests__/pi-changelog-routes.test.ts +409 -0
  69. package/packages/server/src/__tests__/pi-core-checker.test.ts +155 -13
  70. package/packages/server/src/__tests__/pi-core-updater-managed-path.test.ts +62 -3
  71. package/packages/server/src/__tests__/pi-core-updater.test.ts +1 -1
  72. package/packages/server/src/__tests__/pi-dashboard-bin-wrapper.test.ts +84 -0
  73. package/packages/server/src/__tests__/pi-dev-version-check.test.ts +184 -0
  74. package/packages/server/src/__tests__/pi-version-skew.test.ts +4 -4
  75. package/packages/server/src/__tests__/process-manager-keeper-spawn.test.ts +206 -0
  76. package/packages/server/src/__tests__/provider-auth-routes.test.ts +12 -4
  77. package/packages/server/src/__tests__/provider-catalogue-cache.test.ts +13 -23
  78. package/packages/server/src/__tests__/provider-routes-recursion-guard.test.ts +131 -0
  79. package/packages/server/src/__tests__/recommended-routes.test.ts +3 -3
  80. package/packages/server/src/__tests__/spawn-correlation-token-integration.test.ts +91 -0
  81. package/packages/server/src/__tests__/spawn-register-watchdog.test.ts +84 -0
  82. package/packages/server/src/__tests__/spawn-token.test.ts +57 -0
  83. package/packages/server/src/__tests__/tunnel-watchdog.test.ts +139 -0
  84. package/packages/server/src/auth-plugin.ts +3 -0
  85. package/packages/server/src/bootstrap-state.ts +10 -0
  86. package/packages/server/src/browser-gateway.ts +27 -10
  87. package/packages/server/src/browser-handlers/handler-context.ts +9 -0
  88. package/packages/server/src/browser-handlers/session-action-handler.ts +128 -19
  89. package/packages/server/src/changelog-fs.ts +167 -0
  90. package/packages/server/src/changelog-parser.ts +321 -0
  91. package/packages/server/src/changelog-remote.ts +134 -0
  92. package/packages/server/src/cli.ts +62 -82
  93. package/packages/server/src/config-api.ts +14 -2
  94. package/packages/server/src/directory-service.ts +106 -4
  95. package/packages/server/src/event-wiring.ts +90 -6
  96. package/packages/server/src/headless-pid-registry.ts +344 -37
  97. package/packages/server/src/legacy-pi-cleanup.ts +151 -0
  98. package/packages/server/src/model-proxy/__tests__/api-key-store.test.ts +142 -0
  99. package/packages/server/src/model-proxy/__tests__/auth-json-contention.test.ts +98 -0
  100. package/packages/server/src/model-proxy/__tests__/concurrency.test.ts +107 -0
  101. package/packages/server/src/model-proxy/__tests__/failed-auth-backoff.test.ts +46 -0
  102. package/packages/server/src/model-proxy/__tests__/recursion-guard.test.ts +61 -0
  103. package/packages/server/src/model-proxy/__tests__/streamer.test.ts +139 -0
  104. package/packages/server/src/model-proxy/api-key-store.ts +87 -0
  105. package/packages/server/src/model-proxy/auth-gate.ts +116 -0
  106. package/packages/server/src/model-proxy/concurrency.ts +76 -0
  107. package/packages/server/src/model-proxy/convert/UPSTREAM.md +13 -0
  108. package/packages/server/src/model-proxy/convert/__tests__/anthropic-in.test.ts +137 -0
  109. package/packages/server/src/model-proxy/convert/__tests__/anthropic-out.test.ts +183 -0
  110. package/packages/server/src/model-proxy/convert/__tests__/openai-in.test.ts +134 -0
  111. package/packages/server/src/model-proxy/convert/__tests__/openai-out.test.ts +166 -0
  112. package/packages/server/src/model-proxy/convert/anthropic-in.ts +129 -0
  113. package/packages/server/src/model-proxy/convert/anthropic-out.ts +173 -0
  114. package/packages/server/src/model-proxy/convert/index.ts +8 -0
  115. package/packages/server/src/model-proxy/convert/openai-in.ts +119 -0
  116. package/packages/server/src/model-proxy/convert/openai-out.ts +151 -0
  117. package/packages/server/src/model-proxy/convert/types.ts +70 -0
  118. package/packages/server/src/model-proxy/failed-auth-backoff.ts +45 -0
  119. package/packages/server/src/model-proxy/internal-auth-storage.ts +146 -0
  120. package/packages/server/src/model-proxy/internal-registry.ts +157 -0
  121. package/packages/server/src/model-proxy/recursion-guard.ts +72 -0
  122. package/packages/server/src/model-proxy/registry-singleton.ts +109 -0
  123. package/packages/server/src/model-proxy/request-log.ts +53 -0
  124. package/packages/server/src/model-proxy/streamer.ts +59 -0
  125. package/packages/server/src/openspec-group-store.ts +490 -0
  126. package/packages/server/src/pending-client-correlations.ts +73 -0
  127. package/packages/server/src/pending-fork-registry.ts +24 -12
  128. package/packages/server/src/pi-core-checker.ts +77 -17
  129. package/packages/server/src/pi-core-updater.ts +16 -6
  130. package/packages/server/src/pi-dev-version-check.ts +145 -0
  131. package/packages/server/src/pi-gateway.ts +4 -0
  132. package/packages/server/src/pi-version-skew.ts +12 -4
  133. package/packages/server/src/process-manager.ts +182 -11
  134. package/packages/server/src/provider-auth-storage.ts +29 -47
  135. package/packages/server/src/provider-catalogue-cache.ts +24 -18
  136. package/packages/server/src/restart-helper.ts +17 -16
  137. package/packages/server/src/routes/bootstrap-routes.ts +37 -0
  138. package/packages/server/src/routes/jj-routes.ts +3 -0
  139. package/packages/server/src/routes/model-proxy-api-key-routes.ts +168 -0
  140. package/packages/server/src/routes/model-proxy-refresh-routes.ts +24 -0
  141. package/packages/server/src/routes/model-proxy-routes.ts +330 -0
  142. package/packages/server/src/routes/openspec-group-routes.ts +231 -0
  143. package/packages/server/src/routes/pi-changelog-routes.ts +194 -0
  144. package/packages/server/src/routes/pi-core-routes.ts +1 -1
  145. package/packages/server/src/routes/provider-auth-routes.ts +8 -1
  146. package/packages/server/src/routes/provider-routes.ts +28 -5
  147. package/packages/server/src/routes/system-routes.ts +44 -2
  148. package/packages/server/src/rpc-keeper/__tests__/fixtures/mock-pi-shim.sh +9 -0
  149. package/packages/server/src/rpc-keeper/__tests__/fixtures/mock-pi.cjs +50 -0
  150. package/packages/server/src/rpc-keeper/__tests__/keeper.test.ts +371 -0
  151. package/packages/server/src/rpc-keeper/dispatch-router.ts +85 -0
  152. package/packages/server/src/rpc-keeper/keeper-manager.ts +364 -0
  153. package/packages/server/src/rpc-keeper/keeper.cjs +313 -0
  154. package/packages/server/src/server.ts +254 -60
  155. package/packages/server/src/session-api.ts +63 -4
  156. package/packages/server/src/session-discovery.ts +1 -1
  157. package/packages/server/src/session-file-reader.ts +1 -1
  158. package/packages/server/src/spawn-register-watchdog.ts +62 -7
  159. package/packages/server/src/spawn-token.ts +20 -0
  160. package/packages/server/src/tunnel-watchdog.ts +230 -0
  161. package/packages/server/src/tunnel.ts +5 -1
  162. package/packages/shared/package.json +1 -1
  163. package/packages/shared/src/__tests__/binary-lookup-resolveJiti.test.ts +228 -0
  164. package/packages/shared/src/__tests__/bootstrap/__snapshots__/cube.test.ts.snap +24 -17
  165. package/packages/shared/src/__tests__/bootstrap/families/__snapshots__/a-electron.test.ts.snap +5 -4
  166. package/packages/shared/src/__tests__/bootstrap/families/__snapshots__/b-npm-global.test.ts.snap +6 -5
  167. package/packages/shared/src/__tests__/bootstrap/families/__snapshots__/c-dev-monorepo.test.ts.snap +1 -0
  168. package/packages/shared/src/__tests__/bootstrap/families/__snapshots__/e-stale-partial.test.ts.snap +5 -4
  169. package/packages/shared/src/__tests__/bootstrap/families/__snapshots__/f-cwd-variants.test.ts.snap +2 -1
  170. package/packages/shared/src/__tests__/bootstrap/families/__snapshots__/g-windows-specifics.test.ts.snap +5 -3
  171. package/packages/shared/src/__tests__/bootstrap/fixtures/dev-monorepo.ts +1 -1
  172. package/packages/shared/src/__tests__/changelog-types.test.ts +78 -0
  173. package/packages/shared/src/__tests__/config-openspec.test.ts +74 -0
  174. package/packages/shared/src/__tests__/model-proxy-config.test.ts +146 -0
  175. package/packages/shared/src/__tests__/no-raw-node-import.test.ts +7 -5
  176. package/packages/shared/src/__tests__/node-spawn-jiti-contract.test.ts +56 -20
  177. package/packages/shared/src/__tests__/node-spawn.test.ts +51 -0
  178. package/packages/shared/src/__tests__/openspec-groups-types.test.ts +135 -0
  179. package/packages/shared/src/__tests__/publish-workflow-contract.test.ts +96 -0
  180. package/packages/shared/src/__tests__/recommended-extensions.test.ts +11 -3
  181. package/packages/shared/src/__tests__/server-launcher.test.ts +227 -0
  182. package/packages/shared/src/__tests__/tool-registry-definitions.test.ts +1 -1
  183. package/packages/shared/src/bootstrap-install.ts +1 -1
  184. package/packages/shared/src/browser-protocol.ts +70 -0
  185. package/packages/shared/src/changelog-types.ts +111 -0
  186. package/packages/shared/src/config.ts +172 -2
  187. package/packages/shared/src/dashboard-plugin/manifest-types.ts +16 -1
  188. package/packages/shared/src/dashboard-plugin/slot-props.ts +8 -0
  189. package/packages/shared/src/dashboard-plugin/slot-types.ts +57 -0
  190. package/packages/shared/src/platform/binary-lookup.ts +204 -0
  191. package/packages/shared/src/platform/node-spawn.ts +71 -26
  192. package/packages/shared/src/protocol.ts +27 -1
  193. package/packages/shared/src/recommended-extensions.ts +18 -0
  194. package/packages/shared/src/rest-api.ts +219 -1
  195. package/packages/shared/src/server-launcher.ts +277 -0
  196. package/packages/shared/src/skill-block-parser.ts +1 -1
  197. package/packages/shared/src/tool-registry/__tests__/pi-ai-registration.test.ts +124 -0
  198. package/packages/shared/src/tool-registry/definitions.ts +15 -3
  199. package/packages/shared/src/types.ts +62 -0
  200. package/packages/shared/src/__tests__/resolve-jiti.test.ts +0 -53
  201. package/packages/shared/src/resolve-jiti.ts +0 -102
@@ -29,12 +29,12 @@ source: —
29
29
  path: —
30
30
  tried:
31
31
  override no override set
32
+ bare-import cannot resolve @earendil-works/pi-coding-agent/package.json
32
33
  bare-import cannot resolve @mariozechner/pi-coding-agent/package.json
33
- bare-import cannot resolve @oh-my-pi/pi-coding-agent/package.json
34
+ managed missing: <HOME>/.pi-dashboard/node_modules/@earendil-works/pi-coding-agent/dist/cli.js
34
35
  managed missing: <HOME>/.pi-dashboard/node_modules/@mariozechner/pi-coding-agent/dist/cli.js
35
- managed missing: <HOME>/.pi-dashboard/node_modules/@oh-my-pi/pi-coding-agent/dist/cli.js
36
+ npm-global missing: <NPM_ROOT>/@earendil-works/pi-coding-agent/dist/cli.js
36
37
  npm-global missing: <NPM_ROOT>/@mariozechner/pi-coding-agent/dist/cli.js
37
- npm-global missing: <NPM_ROOT>/@oh-my-pi/pi-coding-agent/dist/cli.js
38
38
  managed missing: <HOME>/.pi-dashboard/node_modules/.bin/pi.cmd
39
39
  where not found on PATH"
40
40
  `;
@@ -66,8 +66,9 @@ source: managed
66
66
  path: <HOME>/.pi-dashboard/node_modules/@mariozechner/pi-coding-agent/dist/cli.js
67
67
  tried:
68
68
  override no override set
69
+ bare-import cannot resolve @earendil-works/pi-coding-agent/package.json
69
70
  bare-import cannot resolve @mariozechner/pi-coding-agent/package.json
70
- bare-import cannot resolve @oh-my-pi/pi-coding-agent/package.json
71
+ managed missing: <HOME>/.pi-dashboard/node_modules/@earendil-works/pi-coding-agent/dist/cli.js
71
72
  managed ok"
72
73
  `;
73
74
 
@@ -111,12 +112,12 @@ source: —
111
112
  path: —
112
113
  tried:
113
114
  override no override set
115
+ bare-import cannot resolve @earendil-works/pi-coding-agent/package.json
114
116
  bare-import cannot resolve @mariozechner/pi-coding-agent/package.json
115
- bare-import cannot resolve @oh-my-pi/pi-coding-agent/package.json
117
+ managed missing: <HOME>/.pi-dashboard/node_modules/@earendil-works/pi-coding-agent/dist/cli.js
116
118
  managed missing: <HOME>/.pi-dashboard/node_modules/@mariozechner/pi-coding-agent/dist/cli.js
117
- managed missing: <HOME>/.pi-dashboard/node_modules/@oh-my-pi/pi-coding-agent/dist/cli.js
119
+ npm-global missing: <NPM_ROOT>/@earendil-works/pi-coding-agent/dist/cli.js
118
120
  npm-global missing: <NPM_ROOT>/@mariozechner/pi-coding-agent/dist/cli.js
119
- npm-global missing: <NPM_ROOT>/@oh-my-pi/pi-coding-agent/dist/cli.js
120
121
  managed missing: <HOME>/.pi-dashboard/node_modules/.bin/pi.cmd
121
122
  where not found on PATH"
122
123
  `;
@@ -150,10 +151,11 @@ source: npm-global
150
151
  path: <NPM_ROOT>/@mariozechner/pi-coding-agent/dist/cli.js
151
152
  tried:
152
153
  override no override set
154
+ bare-import cannot resolve @earendil-works/pi-coding-agent/package.json
153
155
  bare-import cannot resolve @mariozechner/pi-coding-agent/package.json
154
- bare-import cannot resolve @oh-my-pi/pi-coding-agent/package.json
156
+ managed missing: <HOME>/.pi-dashboard/node_modules/@earendil-works/pi-coding-agent/dist/cli.js
155
157
  managed missing: <HOME>/.pi-dashboard/node_modules/@mariozechner/pi-coding-agent/dist/cli.js
156
- managed missing: <HOME>/.pi-dashboard/node_modules/@oh-my-pi/pi-coding-agent/dist/cli.js
158
+ npm-global missing: <NPM_ROOT>/@earendil-works/pi-coding-agent/dist/cli.js
157
159
  npm-global ok
158
160
  argv:
159
161
  - C:/Program Files/nodejs/node.exe
@@ -199,6 +201,7 @@ source: bare-import
199
201
  path: dist/cli.js
200
202
  tried:
201
203
  override no override set
204
+ bare-import cannot resolve @earendil-works/pi-coding-agent/package.json
202
205
  bare-import ok"
203
206
  `;
204
207
 
@@ -248,8 +251,9 @@ source: managed
248
251
  path: <HOME>/.pi-dashboard/node_modules/@mariozechner/pi-coding-agent/dist/cli.js
249
252
  tried:
250
253
  override no override set
254
+ bare-import cannot resolve @earendil-works/pi-coding-agent/package.json
251
255
  bare-import cannot resolve @mariozechner/pi-coding-agent/package.json
252
- bare-import cannot resolve @oh-my-pi/pi-coding-agent/package.json
256
+ managed missing: <HOME>/.pi-dashboard/node_modules/@earendil-works/pi-coding-agent/dist/cli.js
253
257
  managed ok"
254
258
  `;
255
259
 
@@ -271,12 +275,12 @@ source: —
271
275
  path: —
272
276
  tried:
273
277
  override no override set
278
+ bare-import cannot resolve @earendil-works/pi-coding-agent/package.json
274
279
  bare-import cannot resolve @mariozechner/pi-coding-agent/package.json
275
- bare-import cannot resolve @oh-my-pi/pi-coding-agent/package.json
280
+ managed missing: <HOME>/.pi-dashboard/node_modules/@earendil-works/pi-coding-agent/dist/cli.js
276
281
  managed missing: <HOME>/.pi-dashboard/node_modules/@mariozechner/pi-coding-agent/dist/cli.js
277
- managed missing: <HOME>/.pi-dashboard/node_modules/@oh-my-pi/pi-coding-agent/dist/cli.js
282
+ npm-global missing: <NPM_ROOT>/@earendil-works/pi-coding-agent/dist/cli.js
278
283
  npm-global missing: <NPM_ROOT>/@mariozechner/pi-coding-agent/dist/cli.js
279
- npm-global missing: <NPM_ROOT>/@oh-my-pi/pi-coding-agent/dist/cli.js
280
284
  managed missing: <HOME>/.pi-dashboard/node_modules/.bin/pi.cmd
281
285
  where not found on PATH"
282
286
  `;
@@ -288,8 +292,9 @@ source: managed
288
292
  path: <HOME>/.pi-dashboard/node_modules/@mariozechner/pi-coding-agent/dist/cli.js
289
293
  tried:
290
294
  override no override set
295
+ bare-import cannot resolve @earendil-works/pi-coding-agent/package.json
291
296
  bare-import cannot resolve @mariozechner/pi-coding-agent/package.json
292
- bare-import cannot resolve @oh-my-pi/pi-coding-agent/package.json
297
+ managed missing: <HOME>/.pi-dashboard/node_modules/@earendil-works/pi-coding-agent/dist/cli.js
293
298
  managed ok"
294
299
  `;
295
300
 
@@ -320,8 +325,9 @@ source: managed
320
325
  path: <HOME>/.pi-dashboard/node_modules/@mariozechner/pi-coding-agent/dist/cli.js
321
326
  tried:
322
327
  override no override set
328
+ bare-import cannot resolve @earendil-works/pi-coding-agent/package.json
323
329
  bare-import cannot resolve @mariozechner/pi-coding-agent/package.json
324
- bare-import cannot resolve @oh-my-pi/pi-coding-agent/package.json
330
+ managed missing: <HOME>/.pi-dashboard/node_modules/@earendil-works/pi-coding-agent/dist/cli.js
325
331
  managed ok
326
332
  argv:
327
333
  - C:/Program Files/nodejs/node.exe
@@ -335,10 +341,11 @@ source: npm-global
335
341
  path: <NPM_ROOT>/@mariozechner/pi-coding-agent/dist/cli.js
336
342
  tried:
337
343
  override no override set
344
+ bare-import cannot resolve @earendil-works/pi-coding-agent/package.json
338
345
  bare-import cannot resolve @mariozechner/pi-coding-agent/package.json
339
- bare-import cannot resolve @oh-my-pi/pi-coding-agent/package.json
346
+ managed missing: <HOME>/.pi-dashboard/node_modules/@earendil-works/pi-coding-agent/dist/cli.js
340
347
  managed missing: <HOME>/.pi-dashboard/node_modules/@mariozechner/pi-coding-agent/dist/cli.js
341
- managed missing: <HOME>/.pi-dashboard/node_modules/@oh-my-pi/pi-coding-agent/dist/cli.js
348
+ npm-global missing: <NPM_ROOT>/@earendil-works/pi-coding-agent/dist/cli.js
342
349
  npm-global ok
343
350
  argv:
344
351
  - C:/Program Files/nodejs/node.exe
@@ -29,12 +29,12 @@ source: —
29
29
  path: —
30
30
  tried:
31
31
  override no override set
32
+ bare-import cannot resolve @earendil-works/pi-coding-agent/package.json
32
33
  bare-import cannot resolve @mariozechner/pi-coding-agent/package.json
33
- bare-import cannot resolve @oh-my-pi/pi-coding-agent/package.json
34
+ managed missing: <HOME>/.pi-dashboard/node_modules/@earendil-works/pi-coding-agent/dist/cli.js
34
35
  managed missing: <HOME>/.pi-dashboard/node_modules/@mariozechner/pi-coding-agent/dist/cli.js
35
- managed missing: <HOME>/.pi-dashboard/node_modules/@oh-my-pi/pi-coding-agent/dist/cli.js
36
+ npm-global missing: <NPM_ROOT>/@earendil-works/pi-coding-agent/dist/cli.js
36
37
  npm-global missing: <NPM_ROOT>/@mariozechner/pi-coding-agent/dist/cli.js
37
- npm-global missing: <NPM_ROOT>/@oh-my-pi/pi-coding-agent/dist/cli.js
38
38
  managed missing: <HOME>/.pi-dashboard/node_modules/.bin/pi.cmd
39
39
  where not found on PATH"
40
40
  `;
@@ -66,8 +66,9 @@ source: managed
66
66
  path: <HOME>/.pi-dashboard/node_modules/@mariozechner/pi-coding-agent/dist/cli.js
67
67
  tried:
68
68
  override no override set
69
+ bare-import cannot resolve @earendil-works/pi-coding-agent/package.json
69
70
  bare-import cannot resolve @mariozechner/pi-coding-agent/package.json
70
- bare-import cannot resolve @oh-my-pi/pi-coding-agent/package.json
71
+ managed missing: <HOME>/.pi-dashboard/node_modules/@earendil-works/pi-coding-agent/dist/cli.js
71
72
  managed ok"
72
73
  `;
73
74
 
@@ -29,12 +29,12 @@ source: —
29
29
  path: —
30
30
  tried:
31
31
  override no override set
32
+ bare-import cannot resolve @earendil-works/pi-coding-agent/package.json
32
33
  bare-import cannot resolve @mariozechner/pi-coding-agent/package.json
33
- bare-import cannot resolve @oh-my-pi/pi-coding-agent/package.json
34
+ managed missing: <HOME>/.pi-dashboard/node_modules/@earendil-works/pi-coding-agent/dist/cli.js
34
35
  managed missing: <HOME>/.pi-dashboard/node_modules/@mariozechner/pi-coding-agent/dist/cli.js
35
- managed missing: <HOME>/.pi-dashboard/node_modules/@oh-my-pi/pi-coding-agent/dist/cli.js
36
+ npm-global missing: <NPM_ROOT>/@earendil-works/pi-coding-agent/dist/cli.js
36
37
  npm-global missing: <NPM_ROOT>/@mariozechner/pi-coding-agent/dist/cli.js
37
- npm-global missing: <NPM_ROOT>/@oh-my-pi/pi-coding-agent/dist/cli.js
38
38
  managed missing: <HOME>/.pi-dashboard/node_modules/.bin/pi.cmd
39
39
  where not found on PATH"
40
40
  `;
@@ -68,10 +68,11 @@ source: npm-global
68
68
  path: <NPM_ROOT>/@mariozechner/pi-coding-agent/dist/cli.js
69
69
  tried:
70
70
  override no override set
71
+ bare-import cannot resolve @earendil-works/pi-coding-agent/package.json
71
72
  bare-import cannot resolve @mariozechner/pi-coding-agent/package.json
72
- bare-import cannot resolve @oh-my-pi/pi-coding-agent/package.json
73
+ managed missing: <HOME>/.pi-dashboard/node_modules/@earendil-works/pi-coding-agent/dist/cli.js
73
74
  managed missing: <HOME>/.pi-dashboard/node_modules/@mariozechner/pi-coding-agent/dist/cli.js
74
- managed missing: <HOME>/.pi-dashboard/node_modules/@oh-my-pi/pi-coding-agent/dist/cli.js
75
+ npm-global missing: <NPM_ROOT>/@earendil-works/pi-coding-agent/dist/cli.js
75
76
  npm-global ok
76
77
  argv:
77
78
  - C:/Program Files/nodejs/node.exe
@@ -29,5 +29,6 @@ source: bare-import
29
29
  path: dist/cli.js
30
30
  tried:
31
31
  override no override set
32
+ bare-import cannot resolve @earendil-works/pi-coding-agent/package.json
32
33
  bare-import ok"
33
34
  `;
@@ -27,8 +27,9 @@ source: managed
27
27
  path: <HOME>/.pi-dashboard/node_modules/@mariozechner/pi-coding-agent/dist/cli.js
28
28
  tried:
29
29
  override no override set
30
+ bare-import cannot resolve @earendil-works/pi-coding-agent/package.json
30
31
  bare-import cannot resolve @mariozechner/pi-coding-agent/package.json
31
- bare-import cannot resolve @oh-my-pi/pi-coding-agent/package.json
32
+ managed missing: <HOME>/.pi-dashboard/node_modules/@earendil-works/pi-coding-agent/dist/cli.js
32
33
  managed ok"
33
34
  `;
34
35
 
@@ -50,12 +51,12 @@ source: —
50
51
  path: —
51
52
  tried:
52
53
  override no override set
54
+ bare-import cannot resolve @earendil-works/pi-coding-agent/package.json
53
55
  bare-import cannot resolve @mariozechner/pi-coding-agent/package.json
54
- bare-import cannot resolve @oh-my-pi/pi-coding-agent/package.json
56
+ managed missing: <HOME>/.pi-dashboard/node_modules/@earendil-works/pi-coding-agent/dist/cli.js
55
57
  managed missing: <HOME>/.pi-dashboard/node_modules/@mariozechner/pi-coding-agent/dist/cli.js
56
- managed missing: <HOME>/.pi-dashboard/node_modules/@oh-my-pi/pi-coding-agent/dist/cli.js
58
+ npm-global missing: <NPM_ROOT>/@earendil-works/pi-coding-agent/dist/cli.js
57
59
  npm-global missing: <NPM_ROOT>/@mariozechner/pi-coding-agent/dist/cli.js
58
- npm-global missing: <NPM_ROOT>/@oh-my-pi/pi-coding-agent/dist/cli.js
59
60
  managed missing: <HOME>/.pi-dashboard/node_modules/.bin/pi.cmd
60
61
  where not found on PATH"
61
62
  `;
@@ -7,8 +7,9 @@ source: managed
7
7
  path: <HOME>/.pi-dashboard/node_modules/@mariozechner/pi-coding-agent/dist/cli.js
8
8
  tried:
9
9
  override no override set
10
+ bare-import cannot resolve @earendil-works/pi-coding-agent/package.json
10
11
  bare-import cannot resolve @mariozechner/pi-coding-agent/package.json
11
- bare-import cannot resolve @oh-my-pi/pi-coding-agent/package.json
12
+ managed missing: <HOME>/.pi-dashboard/node_modules/@earendil-works/pi-coding-agent/dist/cli.js
12
13
  managed ok"
13
14
  `;
14
15
 
@@ -7,8 +7,9 @@ source: managed
7
7
  path: <HOME>/.pi-dashboard/node_modules/@mariozechner/pi-coding-agent/dist/cli.js
8
8
  tried:
9
9
  override no override set
10
+ bare-import cannot resolve @earendil-works/pi-coding-agent/package.json
10
11
  bare-import cannot resolve @mariozechner/pi-coding-agent/package.json
11
- bare-import cannot resolve @oh-my-pi/pi-coding-agent/package.json
12
+ managed missing: <HOME>/.pi-dashboard/node_modules/@earendil-works/pi-coding-agent/dist/cli.js
12
13
  managed ok
13
14
  argv:
14
15
  - C:/Program Files/nodejs/node.exe
@@ -22,10 +23,11 @@ source: npm-global
22
23
  path: <NPM_ROOT>/@mariozechner/pi-coding-agent/dist/cli.js
23
24
  tried:
24
25
  override no override set
26
+ bare-import cannot resolve @earendil-works/pi-coding-agent/package.json
25
27
  bare-import cannot resolve @mariozechner/pi-coding-agent/package.json
26
- bare-import cannot resolve @oh-my-pi/pi-coding-agent/package.json
28
+ managed missing: <HOME>/.pi-dashboard/node_modules/@earendil-works/pi-coding-agent/dist/cli.js
27
29
  managed missing: <HOME>/.pi-dashboard/node_modules/@mariozechner/pi-coding-agent/dist/cli.js
28
- managed missing: <HOME>/.pi-dashboard/node_modules/@oh-my-pi/pi-coding-agent/dist/cli.js
30
+ npm-global missing: <NPM_ROOT>/@earendil-works/pi-coding-agent/dist/cli.js
29
31
  npm-global ok
30
32
  argv:
31
33
  - C:/Program Files/nodejs/node.exe
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * <root>/
5
5
  * node_modules/
6
- * @mariozechner/pi-coding-agent/dist/cli.js
6
+ * @earendil-works/pi-coding-agent/dist/cli.js
7
7
  * openspec/dist/cli.js
8
8
  * tsx/dist/cli.mjs
9
9
  * packages/
@@ -0,0 +1,78 @@
1
+ /**
2
+ * Type-only assertions for changelog-types. The runtime body is a
3
+ * single `expect(true).toBe(true)` — the real test is that the
4
+ * `const x: T = {...}` literal blocks compile under `tsc --noEmit`
5
+ * during the normal test run.
6
+ *
7
+ * See change: pi-update-whats-new-panel.
8
+ */
9
+ import { describe, it, expect } from "vitest";
10
+ import type {
11
+ ChangelogBullet,
12
+ ChangelogRelease,
13
+ ChangelogResponse,
14
+ } from "../changelog-types.js";
15
+
16
+ describe("changelog-types", () => {
17
+ it("ChangelogBullet accepts minimal and full shapes", () => {
18
+ const minimal: ChangelogBullet = { text: "fix a bug", issues: [] };
19
+ const full: ChangelogBullet = {
20
+ text: "fix a bug ([#3588](https://github.com/x/y/issues/3588))",
21
+ issues: [{ num: 3588, url: "https://github.com/x/y/issues/3588" }],
22
+ };
23
+ expect(minimal.text).toBe("fix a bug");
24
+ expect(full.issues[0].num).toBe(3588);
25
+ });
26
+
27
+ it("ChangelogRelease accepts a fully populated entry", () => {
28
+ const rel: ChangelogRelease = {
29
+ version: "0.70.0",
30
+ date: "2026-04-23",
31
+ breaking: [{ text: "...", issues: [] }],
32
+ features: [{ text: "...", issues: [] }],
33
+ changed: [],
34
+ fixed: [{ text: "...", issues: [] }],
35
+ raw: "## [0.70.0] - 2026-04-23\n\n…",
36
+ };
37
+ expect(rel.version).toBe("0.70.0");
38
+ });
39
+
40
+ it("ChangelogRelease tolerates null date", () => {
41
+ const rel: ChangelogRelease = {
42
+ version: "0.0.1",
43
+ date: null,
44
+ breaking: [],
45
+ features: [],
46
+ changed: [],
47
+ fixed: [],
48
+ raw: "",
49
+ };
50
+ expect(rel.date).toBeNull();
51
+ });
52
+
53
+ it("ChangelogResponse wraps a release list", () => {
54
+ const resp: ChangelogResponse = {
55
+ pkg: "@mariozechner/pi-coding-agent",
56
+ from: "0.62.0",
57
+ to: "0.70.0",
58
+ releases: [],
59
+ hasBreaking: false,
60
+ changelogUrl: null,
61
+ parsedAt: "2026-05-08T12:00:00.000Z",
62
+ };
63
+ expect(resp.releases).toHaveLength(0);
64
+ });
65
+
66
+ it("ChangelogResponse allows null changelogUrl", () => {
67
+ const resp: ChangelogResponse = {
68
+ pkg: "x",
69
+ from: "1.0.0",
70
+ to: "1.0.1",
71
+ releases: [],
72
+ hasBreaking: false,
73
+ changelogUrl: null,
74
+ parsedAt: new Date().toISOString(),
75
+ };
76
+ expect(resp.changelogUrl).toBeNull();
77
+ });
78
+ });
@@ -104,3 +104,77 @@ describe("loadConfig — openspec poll block", () => {
104
104
  expect(second.openspec).toEqual(first.openspec);
105
105
  });
106
106
  });
107
+
108
+ describe("loadConfig — openspec.enabled (auto-hide-empty-session-subcards)", () => {
109
+ let testDir: string;
110
+ let configFile: string;
111
+ let origHome: string;
112
+
113
+ beforeEach(() => {
114
+ testDir = path.join(
115
+ os.tmpdir(),
116
+ `test-config-openspec-enabled-${Date.now()}-${Math.random().toString(36).slice(2)}`,
117
+ );
118
+ fs.mkdirSync(path.join(testDir, ".pi", "dashboard"), { recursive: true });
119
+ configFile = path.join(testDir, ".pi", "dashboard", "config.json");
120
+ origHome = process.env.HOME!;
121
+ process.env.HOME = testDir;
122
+ });
123
+
124
+ afterEach(() => {
125
+ process.env.HOME = origHome;
126
+ if (fs.existsSync(testDir)) fs.rmSync(testDir, { recursive: true });
127
+ });
128
+
129
+ it("defaults to true when openspec block is absent", () => {
130
+ fs.writeFileSync(configFile, JSON.stringify({ port: 8000 }));
131
+ expect(loadConfig().openspec.enabled).toBe(true);
132
+ });
133
+
134
+ it("defaults to true when openspec block has other fields but no `enabled`", () => {
135
+ fs.writeFileSync(
136
+ configFile,
137
+ JSON.stringify({ openspec: { pollIntervalSeconds: 60 } }),
138
+ );
139
+ expect(loadConfig().openspec.enabled).toBe(true);
140
+ });
141
+
142
+ it("preserves explicit `false`", () => {
143
+ fs.writeFileSync(
144
+ configFile,
145
+ JSON.stringify({ openspec: { enabled: false } }),
146
+ );
147
+ const cfg = loadConfig();
148
+ expect(cfg.openspec.enabled).toBe(false);
149
+ // sibling fields keep their defaults
150
+ expect(cfg.openspec.pollIntervalSeconds).toBe(30);
151
+ });
152
+
153
+ it("preserves explicit `true`", () => {
154
+ fs.writeFileSync(
155
+ configFile,
156
+ JSON.stringify({ openspec: { enabled: true } }),
157
+ );
158
+ expect(loadConfig().openspec.enabled).toBe(true);
159
+ });
160
+
161
+ it("falls back to default true on non-boolean", () => {
162
+ fs.writeFileSync(
163
+ configFile,
164
+ JSON.stringify({ openspec: { enabled: "yes" } }),
165
+ );
166
+ expect(loadConfig().openspec.enabled).toBe(true);
167
+ });
168
+
169
+ it("round-trips through load → stringify → load", () => {
170
+ fs.writeFileSync(
171
+ configFile,
172
+ JSON.stringify({ openspec: { enabled: false, pollIntervalSeconds: 90 } }),
173
+ );
174
+ const first = loadConfig();
175
+ fs.writeFileSync(configFile, JSON.stringify(first));
176
+ const second = loadConfig();
177
+ expect(second.openspec.enabled).toBe(false);
178
+ expect(second.openspec.pollIntervalSeconds).toBe(90);
179
+ });
180
+ });
@@ -0,0 +1,146 @@
1
+ import { describe, it, expect } from "vitest";
2
+ import {
3
+ parseModelProxyConfig,
4
+ DEFAULT_MODEL_PROXY,
5
+ type ModelProxyConfig,
6
+ } from "../config.js";
7
+
8
+ describe("parseModelProxyConfig", () => {
9
+ it("returns defaults when input is missing", () => {
10
+ expect(parseModelProxyConfig(undefined)).toEqual(DEFAULT_MODEL_PROXY);
11
+ expect(parseModelProxyConfig(null)).toEqual(DEFAULT_MODEL_PROXY);
12
+ expect(parseModelProxyConfig("string")).toEqual(DEFAULT_MODEL_PROXY);
13
+ });
14
+
15
+ it("returns defaults when input is empty object", () => {
16
+ const result = parseModelProxyConfig({});
17
+ expect(result.enabled).toBe(true);
18
+ expect(result.maxConcurrentStreams).toBe(16);
19
+ expect(result.perKeyConcurrentStreams).toBe(4);
20
+ expect(result.logRequests).toBe(false);
21
+ expect(result.apiKeys).toEqual([]);
22
+ });
23
+
24
+ it("preserves valid enabled flag", () => {
25
+ expect(parseModelProxyConfig({ enabled: false }).enabled).toBe(false);
26
+ expect(parseModelProxyConfig({ enabled: true }).enabled).toBe(true);
27
+ });
28
+
29
+ it("clamps maxConcurrentStreams to [1, 256]", () => {
30
+ expect(parseModelProxyConfig({ maxConcurrentStreams: 0 }).maxConcurrentStreams).toBe(1);
31
+ expect(parseModelProxyConfig({ maxConcurrentStreams: -5 }).maxConcurrentStreams).toBe(1);
32
+ expect(parseModelProxyConfig({ maxConcurrentStreams: 500 }).maxConcurrentStreams).toBe(256);
33
+ expect(parseModelProxyConfig({ maxConcurrentStreams: 32 }).maxConcurrentStreams).toBe(32);
34
+ // Non-number falls back to default
35
+ expect(parseModelProxyConfig({ maxConcurrentStreams: "ten" }).maxConcurrentStreams).toBe(16);
36
+ });
37
+
38
+ it("clamps perKeyConcurrentStreams to [1, 64]", () => {
39
+ expect(parseModelProxyConfig({ perKeyConcurrentStreams: 0 }).perKeyConcurrentStreams).toBe(1);
40
+ expect(parseModelProxyConfig({ perKeyConcurrentStreams: 100 }).perKeyConcurrentStreams).toBe(64);
41
+ expect(parseModelProxyConfig({ perKeyConcurrentStreams: 8 }).perKeyConcurrentStreams).toBe(8);
42
+ });
43
+
44
+ it("accepts arbitrary string keys in perProviderCaps", () => {
45
+ const result = parseModelProxyConfig({
46
+ perProviderCaps: { anthropic: 5, google: 10, "custom-provider": 2 },
47
+ });
48
+ expect(result.perProviderCaps).toEqual({ anthropic: 5, google: 10, "custom-provider": 2 });
49
+ });
50
+
51
+ it("filters invalid perProviderCaps entries", () => {
52
+ const result = parseModelProxyConfig({
53
+ perProviderCaps: { valid: 5, bad: "nope", zero: 0, negative: -1 },
54
+ });
55
+ expect(result.perProviderCaps).toEqual({ valid: 5 });
56
+ });
57
+
58
+ it("clamps perProviderCaps values to max 256", () => {
59
+ const result = parseModelProxyConfig({
60
+ perProviderCaps: { huge: 999 },
61
+ });
62
+ expect(result.perProviderCaps).toEqual({ huge: 256 });
63
+ });
64
+
65
+ it("omits perProviderCaps when not an object", () => {
66
+ expect(parseModelProxyConfig({ perProviderCaps: "bad" }).perProviderCaps).toBeUndefined();
67
+ expect(parseModelProxyConfig({ perProviderCaps: [1] }).perProviderCaps).toBeUndefined();
68
+ });
69
+
70
+ it("validates apiKeys entries — rejects missing hash", () => {
71
+ const result = parseModelProxyConfig({
72
+ apiKeys: [
73
+ { id: "a", label: "test", createdAt: 1000 }, // missing hash
74
+ { id: "b", label: "ok", hash: "abc123", createdAt: 2000 },
75
+ ],
76
+ });
77
+ expect(result.apiKeys).toHaveLength(1);
78
+ expect(result.apiKeys[0].id).toBe("b");
79
+ });
80
+
81
+ it("validates apiKeys entries — rejects missing id/label/createdAt", () => {
82
+ const result = parseModelProxyConfig({
83
+ apiKeys: [
84
+ { label: "no-id", hash: "h", createdAt: 1 },
85
+ { id: "no-label", hash: "h", createdAt: 1 },
86
+ { id: "no-time", label: "x", hash: "h" },
87
+ ],
88
+ });
89
+ expect(result.apiKeys).toHaveLength(0);
90
+ });
91
+
92
+ it("preserves optional apiKey fields", () => {
93
+ const result = parseModelProxyConfig({
94
+ apiKeys: [
95
+ {
96
+ id: "k1",
97
+ label: "full",
98
+ hash: "sha",
99
+ createdAt: 1000,
100
+ createdBy: "alice@x",
101
+ scopes: ["all"],
102
+ lastUsedAt: 2000,
103
+ expiresAt: 9999,
104
+ revokedAt: 3000,
105
+ },
106
+ ],
107
+ });
108
+ expect(result.apiKeys[0]).toEqual({
109
+ id: "k1",
110
+ label: "full",
111
+ hash: "sha",
112
+ createdAt: 1000,
113
+ createdBy: "alice@x",
114
+ scopes: ["all"],
115
+ lastUsedAt: 2000,
116
+ expiresAt: 9999,
117
+ revokedAt: 3000,
118
+ });
119
+ });
120
+
121
+ it("filters non-string scopes in apiKeys", () => {
122
+ const result = parseModelProxyConfig({
123
+ apiKeys: [
124
+ { id: "k1", label: "t", hash: "h", createdAt: 1, scopes: ["chat", 42, null, "messages"] },
125
+ ],
126
+ });
127
+ expect(result.apiKeys[0].scopes).toEqual(["chat", "messages"]);
128
+ });
129
+
130
+ it("validates secondPort range [1024, 65535]", () => {
131
+ expect(parseModelProxyConfig({ secondPort: 9876 }).secondPort).toBe(9876);
132
+ expect(parseModelProxyConfig({ secondPort: 80 }).secondPort).toBeUndefined();
133
+ expect(parseModelProxyConfig({ secondPort: 70000 }).secondPort).toBeUndefined();
134
+ expect(parseModelProxyConfig({ secondPort: "bad" }).secondPort).toBeUndefined();
135
+ });
136
+
137
+ it("preserves defaultModel string", () => {
138
+ expect(parseModelProxyConfig({ defaultModel: "gpt-4" }).defaultModel).toBe("gpt-4");
139
+ expect(parseModelProxyConfig({ defaultModel: 42 }).defaultModel).toBeUndefined();
140
+ });
141
+
142
+ it("preserves logRequests boolean", () => {
143
+ expect(parseModelProxyConfig({ logRequests: true }).logRequests).toBe(true);
144
+ expect(parseModelProxyConfig({ logRequests: "yes" }).logRequests).toBe(false); // falls back
145
+ });
146
+ });
@@ -20,10 +20,12 @@ import url from "node:url";
20
20
  /** Files allowed to reference --import / --loader with raw identifiers. */
21
21
  const ALLOWLIST: readonly string[] = [
22
22
  "packages/shared/src/platform/node-spawn.ts",
23
- // resolve-jiti.ts returns a file:// URL to callers; it does not itself
24
- // build a `["--import", X, Y]` argv. Allowlisted as the documented
25
- // source of loader URLs referenced in server spawn call sites.
26
- "packages/shared/src/resolve-jiti.ts",
23
+ // server-launcher.ts is the single shared spawn primitive for the
24
+ // dashboard server (Bridge / Standalone CLI / Electron). It mentions
25
+ // "--import" in commentary; argv construction itself is delegated to
26
+ // node-spawn.ts via `spawnNodeScript` / `buildNodeImportArgvParts`.
27
+ // See change: unify-server-launch-ts-loader.
28
+ "packages/shared/src/server-launcher.ts",
27
29
  ];
28
30
 
29
31
  /** Per-line opt-out for intentional usages (e.g. comment examples). */
@@ -49,7 +51,7 @@ const IMPORT_ARGV_RE =
49
51
  /["']--(?:import|loader)["']\s*,\s*([^,\]]+?)\s*,\s*([^,\]]+?)(?:\s*,|\s*\])/g;
50
52
 
51
53
  const URL_LOOKING_RE =
52
- /^(?:["']file:|toFileUrl\s*\(|pathToFileURL\s*\([^)]*\)\s*\.href|resolveJitiImport\s*\(|resolveJitiFromAnchor\s*\()/;
54
+ /^(?:["']file:|toFileUrl\s*\(|pathToFileURL\s*\([^)]*\)\s*\.href)/;
53
55
 
54
56
  /** Recursively walk a directory, yielding .ts / .tsx files. */
55
57
  async function* walk(dir: string): AsyncGenerator<string> {