gsd-pi 2.58.0 → 2.59.0-dev.023bd39

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 (843) hide show
  1. package/README.md +1 -1
  2. package/dist/cli.js +60 -35
  3. package/dist/headless-ui.d.ts +17 -0
  4. package/dist/headless-ui.js +97 -3
  5. package/dist/headless.js +67 -6
  6. package/dist/help-text.js +1 -0
  7. package/dist/onboarding.js +44 -0
  8. package/dist/resource-loader.js +16 -1
  9. package/dist/resources/agents/researcher.md +1 -1
  10. package/dist/resources/extensions/ask-user-questions.js +16 -3
  11. package/dist/resources/extensions/async-jobs/extension-manifest.json +1 -1
  12. package/dist/resources/extensions/bg-shell/extension-manifest.json +1 -1
  13. package/dist/resources/extensions/browser-tools/extension-manifest.json +1 -1
  14. package/dist/resources/extensions/claude-code-cli/partial-builder.js +14 -6
  15. package/dist/resources/extensions/claude-code-cli/stream-adapter.js +59 -36
  16. package/dist/resources/extensions/context7/extension-manifest.json +1 -1
  17. package/dist/resources/extensions/get-secrets-from-user.js +8 -5
  18. package/dist/resources/extensions/google-search/extension-manifest.json +1 -1
  19. package/dist/resources/extensions/google-search/index.js +2 -1
  20. package/dist/resources/extensions/gsd/auto/phases.js +25 -21
  21. package/dist/resources/extensions/gsd/auto-artifact-paths.js +2 -2
  22. package/dist/resources/extensions/gsd/auto-dashboard.js +37 -20
  23. package/dist/resources/extensions/gsd/auto-dispatch.js +17 -2
  24. package/dist/resources/extensions/gsd/auto-model-selection.js +26 -3
  25. package/dist/resources/extensions/gsd/auto-post-unit.js +16 -4
  26. package/dist/resources/extensions/gsd/auto-prompts.js +1 -1
  27. package/dist/resources/extensions/gsd/auto-recovery.js +13 -5
  28. package/dist/resources/extensions/gsd/auto-start.js +35 -22
  29. package/dist/resources/extensions/gsd/auto-worktree.js +199 -12
  30. package/dist/resources/extensions/gsd/bootstrap/agent-end-recovery.js +32 -0
  31. package/dist/resources/extensions/gsd/bootstrap/db-tools.js +80 -8
  32. package/dist/resources/extensions/gsd/bootstrap/dynamic-tools.js +32 -1
  33. package/dist/resources/extensions/gsd/bootstrap/register-hooks.js +42 -34
  34. package/dist/resources/extensions/gsd/bootstrap/system-context.js +66 -12
  35. package/dist/resources/extensions/gsd/bootstrap/write-gate.js +67 -0
  36. package/dist/resources/extensions/gsd/captures.js +56 -4
  37. package/dist/resources/extensions/gsd/codebase-generator.js +279 -0
  38. package/dist/resources/extensions/gsd/commands/catalog.js +10 -1
  39. package/dist/resources/extensions/gsd/commands/handlers/ops.js +5 -0
  40. package/dist/resources/extensions/gsd/commands-codebase.js +115 -0
  41. package/dist/resources/extensions/gsd/commands-prefs-wizard.js +41 -4
  42. package/dist/resources/extensions/gsd/complexity-classifier.js +8 -6
  43. package/dist/resources/extensions/gsd/db-writer.js +116 -8
  44. package/dist/resources/extensions/gsd/doctor-git-checks.js +76 -1
  45. package/dist/resources/extensions/gsd/doctor-proactive.js +34 -1
  46. package/dist/resources/extensions/gsd/doctor-providers.js +2 -1
  47. package/dist/resources/extensions/gsd/doctor-runtime-checks.js +5 -4
  48. package/dist/resources/extensions/gsd/doctor.js +3 -1
  49. package/dist/resources/extensions/gsd/error-classifier.js +12 -10
  50. package/dist/resources/extensions/gsd/extension-manifest.json +16 -1
  51. package/dist/resources/extensions/gsd/forensics.js +123 -20
  52. package/dist/resources/extensions/gsd/git-service.js +105 -2
  53. package/dist/resources/extensions/gsd/gitignore.js +33 -0
  54. package/dist/resources/extensions/gsd/gsd-db.js +36 -9
  55. package/dist/resources/extensions/gsd/guided-flow.js +106 -44
  56. package/dist/resources/extensions/gsd/health-widget-core.js +31 -0
  57. package/dist/resources/extensions/gsd/health-widget.js +17 -0
  58. package/dist/resources/extensions/gsd/index.js +1 -1
  59. package/dist/resources/extensions/gsd/memory-extractor.js +7 -0
  60. package/dist/resources/extensions/gsd/migrate-external.js +8 -1
  61. package/dist/resources/extensions/gsd/milestone-validation-gates.js +45 -0
  62. package/dist/resources/extensions/gsd/model-cost-table.js +18 -0
  63. package/dist/resources/extensions/gsd/model-router.js +35 -1
  64. package/dist/resources/extensions/gsd/native-git-bridge.js +39 -0
  65. package/dist/resources/extensions/gsd/notifications.js +16 -1
  66. package/dist/resources/extensions/gsd/parallel-eligibility.js +13 -2
  67. package/dist/resources/extensions/gsd/parallel-merge.js +78 -5
  68. package/dist/resources/extensions/gsd/parsers-legacy.js +20 -3
  69. package/dist/resources/extensions/gsd/paths.js +45 -0
  70. package/dist/resources/extensions/gsd/preferences-models.js +14 -1
  71. package/dist/resources/extensions/gsd/preferences-types.js +3 -1
  72. package/dist/resources/extensions/gsd/preferences.js +13 -16
  73. package/dist/resources/extensions/gsd/prompt-loader.js +4 -1
  74. package/dist/resources/extensions/gsd/prompts/complete-milestone.md +1 -1
  75. package/dist/resources/extensions/gsd/prompts/complete-slice.md +4 -2
  76. package/dist/resources/extensions/gsd/prompts/discuss-headless.md +1 -1
  77. package/dist/resources/extensions/gsd/prompts/discuss.md +1 -1
  78. package/dist/resources/extensions/gsd/prompts/execute-task.md +3 -1
  79. package/dist/resources/extensions/gsd/prompts/forensics.md +2 -2
  80. package/dist/resources/extensions/gsd/prompts/guided-discuss-milestone.md +1 -1
  81. package/dist/resources/extensions/gsd/prompts/guided-discuss-slice.md +1 -1
  82. package/dist/resources/extensions/gsd/prompts/plan-slice.md +2 -0
  83. package/dist/resources/extensions/gsd/prompts/rethink.md +1 -1
  84. package/dist/resources/extensions/gsd/prompts/triage-captures.md +1 -0
  85. package/dist/resources/extensions/gsd/repo-identity.js +205 -11
  86. package/dist/resources/extensions/gsd/rethink.js +5 -0
  87. package/dist/resources/extensions/gsd/roadmap-slices.js +5 -4
  88. package/dist/resources/extensions/gsd/state.js +85 -27
  89. package/dist/resources/extensions/gsd/tests/dist-redirect.mjs +20 -1
  90. package/dist/resources/extensions/gsd/tools/complete-task.js +34 -71
  91. package/dist/resources/extensions/gsd/tools/plan-milestone.js +12 -2
  92. package/dist/resources/extensions/gsd/tools/reassess-roadmap.js +29 -1
  93. package/dist/resources/extensions/gsd/tools/validate-milestone.js +14 -3
  94. package/dist/resources/extensions/gsd/triage-resolution.js +22 -7
  95. package/dist/resources/extensions/gsd/undo.js +2 -2
  96. package/dist/resources/extensions/gsd/unit-ownership.js +164 -33
  97. package/dist/resources/extensions/gsd/verdict-parser.js +20 -8
  98. package/dist/resources/extensions/gsd/watch/header-renderer.js +241 -0
  99. package/dist/resources/extensions/gsd/workflow-manifest.js +24 -5
  100. package/dist/resources/extensions/gsd/workflow-projections.js +95 -63
  101. package/dist/resources/extensions/gsd/workflow-reconcile.js +35 -5
  102. package/dist/resources/extensions/gsd/workspace-index.js +24 -0
  103. package/dist/resources/extensions/gsd/worktree-manager.js +105 -1
  104. package/dist/resources/extensions/gsd/worktree-resolver.js +20 -3
  105. package/dist/resources/extensions/mcp-client/index.js +11 -7
  106. package/dist/resources/extensions/ollama/index.js +112 -0
  107. package/dist/resources/extensions/ollama/model-capabilities.js +115 -0
  108. package/dist/resources/extensions/ollama/ollama-client.js +168 -0
  109. package/dist/resources/extensions/ollama/ollama-commands.js +194 -0
  110. package/dist/resources/extensions/ollama/ollama-discovery.js +69 -0
  111. package/dist/resources/extensions/ollama/ollama-tool.js +184 -0
  112. package/dist/resources/extensions/ollama/types.js +2 -0
  113. package/dist/resources/extensions/search-the-web/extension-manifest.json +1 -1
  114. package/dist/resources/extensions/search-the-web/url-utils.js +17 -0
  115. package/dist/resources/extensions/shared/interview-ui.js +11 -1
  116. package/dist/resources/skills/btw/SKILL.md +42 -0
  117. package/dist/resources/skills/create-gsd-extension/SKILL.md +5 -3
  118. package/dist/resources/skills/create-gsd-extension/references/key-rules-gotchas.md +5 -4
  119. package/dist/resources/skills/create-gsd-extension/workflows/add-capability.md +2 -2
  120. package/dist/resources/skills/create-gsd-extension/workflows/create-extension.md +4 -4
  121. package/dist/resources/skills/create-gsd-extension/workflows/debug-extension.md +5 -3
  122. package/dist/security-overrides.d.ts +11 -0
  123. package/dist/security-overrides.js +41 -0
  124. package/dist/startup-model-validation.d.ts +39 -0
  125. package/dist/startup-model-validation.js +50 -0
  126. package/dist/web/standalone/.next/BUILD_ID +1 -1
  127. package/dist/web/standalone/.next/app-path-routes-manifest.json +14 -14
  128. package/dist/web/standalone/.next/build-manifest.json +4 -4
  129. package/dist/web/standalone/.next/prerender-manifest.json +3 -3
  130. package/dist/web/standalone/.next/react-loadable-manifest.json +1 -1
  131. package/dist/web/standalone/.next/required-server-files.json +4 -4
  132. package/dist/web/standalone/.next/server/app/_global-error/page.js +3 -3
  133. package/dist/web/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  134. package/dist/web/standalone/.next/server/app/_global-error.html +2 -2
  135. package/dist/web/standalone/.next/server/app/_global-error.rsc +1 -1
  136. package/dist/web/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  137. package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  138. package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  139. package/dist/web/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  140. package/dist/web/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  141. package/dist/web/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  142. package/dist/web/standalone/.next/server/app/_not-found/page.js +2 -2
  143. package/dist/web/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  144. package/dist/web/standalone/.next/server/app/_not-found.html +1 -1
  145. package/dist/web/standalone/.next/server/app/_not-found.rsc +4 -4
  146. package/dist/web/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +4 -4
  147. package/dist/web/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  148. package/dist/web/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +4 -4
  149. package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  150. package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  151. package/dist/web/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  152. package/dist/web/standalone/.next/server/app/api/boot/route.js +1 -1
  153. package/dist/web/standalone/.next/server/app/api/boot/route_client-reference-manifest.js +1 -1
  154. package/dist/web/standalone/.next/server/app/api/bridge-terminal/input/route.js +1 -1
  155. package/dist/web/standalone/.next/server/app/api/bridge-terminal/input/route_client-reference-manifest.js +1 -1
  156. package/dist/web/standalone/.next/server/app/api/bridge-terminal/resize/route.js +1 -1
  157. package/dist/web/standalone/.next/server/app/api/bridge-terminal/resize/route_client-reference-manifest.js +1 -1
  158. package/dist/web/standalone/.next/server/app/api/bridge-terminal/stream/route.js +2 -2
  159. package/dist/web/standalone/.next/server/app/api/bridge-terminal/stream/route_client-reference-manifest.js +1 -1
  160. package/dist/web/standalone/.next/server/app/api/browse-directories/route.js +1 -1
  161. package/dist/web/standalone/.next/server/app/api/browse-directories/route_client-reference-manifest.js +1 -1
  162. package/dist/web/standalone/.next/server/app/api/captures/route.js +1 -1
  163. package/dist/web/standalone/.next/server/app/api/captures/route_client-reference-manifest.js +1 -1
  164. package/dist/web/standalone/.next/server/app/api/cleanup/route.js +1 -1
  165. package/dist/web/standalone/.next/server/app/api/cleanup/route_client-reference-manifest.js +1 -1
  166. package/dist/web/standalone/.next/server/app/api/dev-mode/route.js +1 -1
  167. package/dist/web/standalone/.next/server/app/api/dev-mode/route_client-reference-manifest.js +1 -1
  168. package/dist/web/standalone/.next/server/app/api/doctor/route.js +1 -1
  169. package/dist/web/standalone/.next/server/app/api/doctor/route_client-reference-manifest.js +1 -1
  170. package/dist/web/standalone/.next/server/app/api/experimental/route.js +2 -2
  171. package/dist/web/standalone/.next/server/app/api/experimental/route_client-reference-manifest.js +1 -1
  172. package/dist/web/standalone/.next/server/app/api/export-data/route.js +1 -1
  173. package/dist/web/standalone/.next/server/app/api/export-data/route_client-reference-manifest.js +1 -1
  174. package/dist/web/standalone/.next/server/app/api/files/route.js +1 -1
  175. package/dist/web/standalone/.next/server/app/api/files/route_client-reference-manifest.js +1 -1
  176. package/dist/web/standalone/.next/server/app/api/forensics/route.js +1 -1
  177. package/dist/web/standalone/.next/server/app/api/forensics/route_client-reference-manifest.js +1 -1
  178. package/dist/web/standalone/.next/server/app/api/git/route.js +1 -1
  179. package/dist/web/standalone/.next/server/app/api/git/route_client-reference-manifest.js +1 -1
  180. package/dist/web/standalone/.next/server/app/api/history/route.js +1 -1
  181. package/dist/web/standalone/.next/server/app/api/history/route_client-reference-manifest.js +1 -1
  182. package/dist/web/standalone/.next/server/app/api/hooks/route.js +1 -1
  183. package/dist/web/standalone/.next/server/app/api/hooks/route_client-reference-manifest.js +1 -1
  184. package/dist/web/standalone/.next/server/app/api/inspect/route.js +1 -1
  185. package/dist/web/standalone/.next/server/app/api/inspect/route_client-reference-manifest.js +1 -1
  186. package/dist/web/standalone/.next/server/app/api/knowledge/route.js +1 -1
  187. package/dist/web/standalone/.next/server/app/api/knowledge/route_client-reference-manifest.js +1 -1
  188. package/dist/web/standalone/.next/server/app/api/live-state/route.js +1 -1
  189. package/dist/web/standalone/.next/server/app/api/live-state/route_client-reference-manifest.js +1 -1
  190. package/dist/web/standalone/.next/server/app/api/onboarding/route.js +1 -1
  191. package/dist/web/standalone/.next/server/app/api/onboarding/route_client-reference-manifest.js +1 -1
  192. package/dist/web/standalone/.next/server/app/api/preferences/route.js +1 -1
  193. package/dist/web/standalone/.next/server/app/api/preferences/route_client-reference-manifest.js +1 -1
  194. package/dist/web/standalone/.next/server/app/api/projects/route.js +1 -1
  195. package/dist/web/standalone/.next/server/app/api/projects/route_client-reference-manifest.js +1 -1
  196. package/dist/web/standalone/.next/server/app/api/recovery/route.js +1 -1
  197. package/dist/web/standalone/.next/server/app/api/recovery/route_client-reference-manifest.js +1 -1
  198. package/dist/web/standalone/.next/server/app/api/remote-questions/route.js +2 -2
  199. package/dist/web/standalone/.next/server/app/api/remote-questions/route_client-reference-manifest.js +1 -1
  200. package/dist/web/standalone/.next/server/app/api/session/browser/route.js +1 -1
  201. package/dist/web/standalone/.next/server/app/api/session/browser/route_client-reference-manifest.js +1 -1
  202. package/dist/web/standalone/.next/server/app/api/session/command/route.js +1 -1
  203. package/dist/web/standalone/.next/server/app/api/session/command/route_client-reference-manifest.js +1 -1
  204. package/dist/web/standalone/.next/server/app/api/session/events/route.js +2 -2
  205. package/dist/web/standalone/.next/server/app/api/session/events/route_client-reference-manifest.js +1 -1
  206. package/dist/web/standalone/.next/server/app/api/session/manage/route.js +1 -1
  207. package/dist/web/standalone/.next/server/app/api/session/manage/route_client-reference-manifest.js +1 -1
  208. package/dist/web/standalone/.next/server/app/api/settings-data/route.js +1 -1
  209. package/dist/web/standalone/.next/server/app/api/settings-data/route_client-reference-manifest.js +1 -1
  210. package/dist/web/standalone/.next/server/app/api/shutdown/route.js +1 -1
  211. package/dist/web/standalone/.next/server/app/api/shutdown/route_client-reference-manifest.js +1 -1
  212. package/dist/web/standalone/.next/server/app/api/skill-health/route.js +1 -1
  213. package/dist/web/standalone/.next/server/app/api/skill-health/route_client-reference-manifest.js +1 -1
  214. package/dist/web/standalone/.next/server/app/api/steer/route.js +1 -1
  215. package/dist/web/standalone/.next/server/app/api/steer/route_client-reference-manifest.js +1 -1
  216. package/dist/web/standalone/.next/server/app/api/switch-root/route.js +1 -1
  217. package/dist/web/standalone/.next/server/app/api/switch-root/route_client-reference-manifest.js +1 -1
  218. package/dist/web/standalone/.next/server/app/api/terminal/input/route.js +2 -2
  219. package/dist/web/standalone/.next/server/app/api/terminal/input/route_client-reference-manifest.js +1 -1
  220. package/dist/web/standalone/.next/server/app/api/terminal/resize/route.js +2 -2
  221. package/dist/web/standalone/.next/server/app/api/terminal/resize/route_client-reference-manifest.js +1 -1
  222. package/dist/web/standalone/.next/server/app/api/terminal/sessions/route.js +2 -2
  223. package/dist/web/standalone/.next/server/app/api/terminal/sessions/route_client-reference-manifest.js +1 -1
  224. package/dist/web/standalone/.next/server/app/api/terminal/stream/route.js +4 -4
  225. package/dist/web/standalone/.next/server/app/api/terminal/stream/route_client-reference-manifest.js +1 -1
  226. package/dist/web/standalone/.next/server/app/api/terminal/upload/route.js +1 -1
  227. package/dist/web/standalone/.next/server/app/api/terminal/upload/route_client-reference-manifest.js +1 -1
  228. package/dist/web/standalone/.next/server/app/api/undo/route.js +1 -1
  229. package/dist/web/standalone/.next/server/app/api/undo/route_client-reference-manifest.js +1 -1
  230. package/dist/web/standalone/.next/server/app/api/update/route.js +1 -1
  231. package/dist/web/standalone/.next/server/app/api/update/route_client-reference-manifest.js +1 -1
  232. package/dist/web/standalone/.next/server/app/api/visualizer/route.js +1 -1
  233. package/dist/web/standalone/.next/server/app/api/visualizer/route_client-reference-manifest.js +1 -1
  234. package/dist/web/standalone/.next/server/app/index.html +1 -1
  235. package/dist/web/standalone/.next/server/app/index.rsc +5 -5
  236. package/dist/web/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  237. package/dist/web/standalone/.next/server/app/index.segments/_full.segment.rsc +5 -5
  238. package/dist/web/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
  239. package/dist/web/standalone/.next/server/app/index.segments/_index.segment.rsc +4 -4
  240. package/dist/web/standalone/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  241. package/dist/web/standalone/.next/server/app/page.js +2 -2
  242. package/dist/web/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  243. package/dist/web/standalone/.next/server/app-paths-manifest.json +14 -14
  244. package/dist/web/standalone/.next/server/chunks/2229.js +2 -2
  245. package/dist/web/standalone/.next/server/chunks/7471.js +3 -3
  246. package/dist/web/standalone/.next/server/middleware-build-manifest.js +1 -1
  247. package/dist/web/standalone/.next/server/middleware-react-loadable-manifest.js +1 -1
  248. package/dist/web/standalone/.next/server/middleware.js +2 -2
  249. package/dist/web/standalone/.next/server/next-font-manifest.js +1 -1
  250. package/dist/web/standalone/.next/server/next-font-manifest.json +1 -1
  251. package/dist/web/standalone/.next/server/pages/404.html +1 -1
  252. package/dist/web/standalone/.next/server/pages/500.html +2 -2
  253. package/dist/web/standalone/.next/server/server-reference-manifest.json +1 -1
  254. package/dist/web/standalone/.next/static/chunks/6502.7593d7797a4b3999.js +9 -0
  255. package/dist/web/standalone/.next/static/chunks/app/_not-found/{page-2f24283c162b6ab3.js → page-f2a7482d42a5614b.js} +1 -1
  256. package/dist/web/standalone/.next/static/chunks/app/{layout-9ecfd95f343793f0.js → layout-a16c7a7ecdf0c2cf.js} +1 -1
  257. package/dist/web/standalone/.next/static/chunks/app/page-0c485498795110d6.js +1 -0
  258. package/dist/web/standalone/.next/static/chunks/main-app-fdab67f7802d7832.js +1 -0
  259. package/dist/web/standalone/.next/static/chunks/next/dist/client/components/builtin/global-error-459824ffb8c323dd.js +1 -0
  260. package/dist/web/standalone/.next/static/chunks/{webpack-61d3afac6d0f0ce7.js → webpack-a1c1e452c6b32d04.js} +1 -1
  261. package/dist/web/standalone/.next/static/css/f6e8833d46e738d8.css +1 -0
  262. package/dist/web/standalone/node_modules/node-pty/build/Makefile +2 -2
  263. package/dist/web/standalone/node_modules/node-pty/build/Release/pty.node +0 -0
  264. package/dist/web/standalone/node_modules/node-pty/build/pty.target.mk +14 -14
  265. package/dist/web/standalone/node_modules/node-pty/node-addon-api/node_addon_api.target.mk +14 -14
  266. package/dist/web/standalone/node_modules/node-pty/node-addon-api/node_addon_api_except.target.mk +14 -14
  267. package/dist/web/standalone/node_modules/node-pty/node-addon-api/node_addon_api_maybe.target.mk +14 -14
  268. package/dist/web/standalone/server.js +1 -1
  269. package/dist/web-mode.js +2 -1
  270. package/dist/welcome-screen.d.ts +1 -0
  271. package/dist/welcome-screen.js +32 -6
  272. package/package.json +2 -2
  273. package/packages/daemon/src/daemon.ts +1 -1
  274. package/packages/daemon/src/discord-bot.ts +11 -0
  275. package/packages/daemon/src/event-bridge.ts +15 -9
  276. package/packages/daemon/src/event-formatter.ts +30 -2
  277. package/packages/daemon/src/message-batcher.test.ts +2 -2
  278. package/packages/daemon/src/message-batcher.ts +9 -3
  279. package/packages/daemon/src/orchestrator.test.ts +1 -0
  280. package/packages/daemon/src/orchestrator.ts +106 -2
  281. package/packages/native/dist/ast/index.js +9 -5
  282. package/packages/native/dist/ast/types.js +2 -1
  283. package/packages/native/dist/clipboard/index.js +12 -7
  284. package/packages/native/dist/clipboard/types.js +2 -1
  285. package/packages/native/dist/diff/index.js +12 -7
  286. package/packages/native/dist/diff/types.js +2 -1
  287. package/packages/native/dist/fd/index.js +6 -3
  288. package/packages/native/dist/fd/types.js +2 -1
  289. package/packages/native/dist/glob/index.js +9 -5
  290. package/packages/native/dist/glob/types.js +2 -1
  291. package/packages/native/dist/grep/index.js +9 -5
  292. package/packages/native/dist/grep/types.js +2 -1
  293. package/packages/native/dist/gsd-parser/index.js +18 -11
  294. package/packages/native/dist/gsd-parser/types.js +2 -1
  295. package/packages/native/dist/highlight/index.js +12 -7
  296. package/packages/native/dist/highlight/types.js +2 -1
  297. package/packages/native/dist/html/index.js +6 -3
  298. package/packages/native/dist/html/types.js +2 -1
  299. package/packages/native/dist/image/index.js +10 -5
  300. package/packages/native/dist/image/types.js +7 -4
  301. package/packages/native/dist/index.js +70 -17
  302. package/packages/native/dist/json-parse/index.js +13 -8
  303. package/packages/native/dist/native.js +47 -10
  304. package/packages/native/dist/ps/index.js +15 -9
  305. package/packages/native/dist/ps/types.js +2 -1
  306. package/packages/native/dist/stream-process/index.js +12 -7
  307. package/packages/native/dist/text/index.js +24 -14
  308. package/packages/native/dist/text/types.js +5 -2
  309. package/packages/native/dist/truncate/index.js +12 -7
  310. package/packages/native/dist/ttsr/index.js +12 -7
  311. package/packages/native/dist/ttsr/types.js +2 -1
  312. package/packages/native/dist/xxhash/index.js +9 -5
  313. package/packages/native/package.json +19 -19
  314. package/packages/native/src/__tests__/module-compat.test.mjs +91 -0
  315. package/packages/native/src/native.ts +9 -8
  316. package/packages/pi-agent-core/dist/agent-loop.js +3 -2
  317. package/packages/pi-agent-core/dist/agent-loop.js.map +1 -1
  318. package/packages/pi-agent-core/dist/proxy.d.ts +1 -1
  319. package/packages/pi-agent-core/dist/proxy.d.ts.map +1 -1
  320. package/packages/pi-agent-core/dist/proxy.js.map +1 -1
  321. package/packages/pi-agent-core/src/agent-loop.test.ts +45 -0
  322. package/packages/pi-agent-core/src/agent-loop.ts +3 -2
  323. package/packages/pi-agent-core/src/proxy.ts +1 -1
  324. package/packages/pi-ai/dist/env-api-keys.js +1 -0
  325. package/packages/pi-ai/dist/env-api-keys.js.map +1 -1
  326. package/packages/pi-ai/dist/index.d.ts +1 -0
  327. package/packages/pi-ai/dist/index.d.ts.map +1 -1
  328. package/packages/pi-ai/dist/index.js +1 -0
  329. package/packages/pi-ai/dist/index.js.map +1 -1
  330. package/packages/pi-ai/dist/providers/anthropic-shared.d.ts.map +1 -1
  331. package/packages/pi-ai/dist/providers/anthropic-shared.js +19 -2
  332. package/packages/pi-ai/dist/providers/anthropic-shared.js.map +1 -1
  333. package/packages/pi-ai/dist/providers/anthropic-shared.test.d.ts +2 -0
  334. package/packages/pi-ai/dist/providers/anthropic-shared.test.d.ts.map +1 -0
  335. package/packages/pi-ai/dist/providers/anthropic-shared.test.js +25 -0
  336. package/packages/pi-ai/dist/providers/anthropic-shared.test.js.map +1 -0
  337. package/packages/pi-ai/dist/types.d.ts +3 -3
  338. package/packages/pi-ai/dist/types.d.ts.map +1 -1
  339. package/packages/pi-ai/dist/types.js.map +1 -1
  340. package/packages/pi-ai/dist/utils/json-parse.d.ts +3 -0
  341. package/packages/pi-ai/dist/utils/json-parse.d.ts.map +1 -1
  342. package/packages/pi-ai/dist/utils/json-parse.js +24 -1
  343. package/packages/pi-ai/dist/utils/json-parse.js.map +1 -1
  344. package/packages/pi-ai/dist/utils/repair-tool-json.d.ts +37 -0
  345. package/packages/pi-ai/dist/utils/repair-tool-json.d.ts.map +1 -0
  346. package/packages/pi-ai/dist/utils/repair-tool-json.js +75 -0
  347. package/packages/pi-ai/dist/utils/repair-tool-json.js.map +1 -0
  348. package/packages/pi-ai/dist/utils/tests/repair-tool-json.test.d.ts +2 -0
  349. package/packages/pi-ai/dist/utils/tests/repair-tool-json.test.d.ts.map +1 -0
  350. package/packages/pi-ai/dist/utils/tests/repair-tool-json.test.js +73 -0
  351. package/packages/pi-ai/dist/utils/tests/repair-tool-json.test.js.map +1 -0
  352. package/packages/pi-ai/src/env-api-keys.ts +1 -0
  353. package/packages/pi-ai/src/index.ts +1 -0
  354. package/packages/pi-ai/src/providers/anthropic-shared.test.ts +29 -0
  355. package/packages/pi-ai/src/providers/anthropic-shared.ts +17 -2
  356. package/packages/pi-ai/src/types.ts +3 -2
  357. package/packages/pi-ai/src/utils/json-parse.ts +28 -1
  358. package/packages/pi-ai/src/utils/repair-tool-json.ts +88 -0
  359. package/packages/pi-ai/src/utils/tests/repair-tool-json.test.ts +102 -0
  360. package/packages/pi-coding-agent/dist/core/agent-session.d.ts +4 -0
  361. package/packages/pi-coding-agent/dist/core/agent-session.d.ts.map +1 -1
  362. package/packages/pi-coding-agent/dist/core/agent-session.js +31 -0
  363. package/packages/pi-coding-agent/dist/core/agent-session.js.map +1 -1
  364. package/packages/pi-coding-agent/dist/core/compaction/compaction.d.ts +17 -1
  365. package/packages/pi-coding-agent/dist/core/compaction/compaction.d.ts.map +1 -1
  366. package/packages/pi-coding-agent/dist/core/compaction/compaction.js +62 -2
  367. package/packages/pi-coding-agent/dist/core/compaction/compaction.js.map +1 -1
  368. package/packages/pi-coding-agent/dist/core/compaction/compaction.test.d.ts +6 -0
  369. package/packages/pi-coding-agent/dist/core/compaction/compaction.test.d.ts.map +1 -0
  370. package/packages/pi-coding-agent/dist/core/compaction/compaction.test.js +176 -0
  371. package/packages/pi-coding-agent/dist/core/compaction/compaction.test.js.map +1 -0
  372. package/packages/pi-coding-agent/dist/core/exec.d.ts.map +1 -1
  373. package/packages/pi-coding-agent/dist/core/exec.js +3 -1
  374. package/packages/pi-coding-agent/dist/core/exec.js.map +1 -1
  375. package/packages/pi-coding-agent/dist/core/extensions/extension-manifest.d.ts +28 -0
  376. package/packages/pi-coding-agent/dist/core/extensions/extension-manifest.d.ts.map +1 -0
  377. package/packages/pi-coding-agent/dist/core/extensions/extension-manifest.js +37 -0
  378. package/packages/pi-coding-agent/dist/core/extensions/extension-manifest.js.map +1 -0
  379. package/packages/pi-coding-agent/dist/core/extensions/extension-manifest.test.d.ts +2 -0
  380. package/packages/pi-coding-agent/dist/core/extensions/extension-manifest.test.d.ts.map +1 -0
  381. package/packages/pi-coding-agent/dist/core/extensions/extension-manifest.test.js +63 -0
  382. package/packages/pi-coding-agent/dist/core/extensions/extension-manifest.test.js.map +1 -0
  383. package/packages/pi-coding-agent/dist/core/extensions/extension-sort.d.ts +19 -0
  384. package/packages/pi-coding-agent/dist/core/extensions/extension-sort.d.ts.map +1 -0
  385. package/packages/pi-coding-agent/dist/core/extensions/extension-sort.js +115 -0
  386. package/packages/pi-coding-agent/dist/core/extensions/extension-sort.js.map +1 -0
  387. package/packages/pi-coding-agent/dist/core/extensions/extension-sort.test.d.ts +2 -0
  388. package/packages/pi-coding-agent/dist/core/extensions/extension-sort.test.d.ts.map +1 -0
  389. package/packages/pi-coding-agent/dist/core/extensions/extension-sort.test.js +109 -0
  390. package/packages/pi-coding-agent/dist/core/extensions/extension-sort.test.js.map +1 -0
  391. package/packages/pi-coding-agent/dist/core/extensions/index.d.ts +4 -0
  392. package/packages/pi-coding-agent/dist/core/extensions/index.d.ts.map +1 -1
  393. package/packages/pi-coding-agent/dist/core/extensions/index.js +2 -0
  394. package/packages/pi-coding-agent/dist/core/extensions/index.js.map +1 -1
  395. package/packages/pi-coding-agent/dist/core/extensions/loader.d.ts +5 -0
  396. package/packages/pi-coding-agent/dist/core/extensions/loader.d.ts.map +1 -1
  397. package/packages/pi-coding-agent/dist/core/extensions/loader.js +5 -0
  398. package/packages/pi-coding-agent/dist/core/extensions/loader.js.map +1 -1
  399. package/packages/pi-coding-agent/dist/core/image-overflow-recovery.d.ts +44 -0
  400. package/packages/pi-coding-agent/dist/core/image-overflow-recovery.d.ts.map +1 -0
  401. package/packages/pi-coding-agent/dist/core/image-overflow-recovery.js +97 -0
  402. package/packages/pi-coding-agent/dist/core/image-overflow-recovery.js.map +1 -0
  403. package/packages/pi-coding-agent/dist/core/image-overflow-recovery.test.d.ts +2 -0
  404. package/packages/pi-coding-agent/dist/core/image-overflow-recovery.test.d.ts.map +1 -0
  405. package/packages/pi-coding-agent/dist/core/image-overflow-recovery.test.js +181 -0
  406. package/packages/pi-coding-agent/dist/core/image-overflow-recovery.test.js.map +1 -0
  407. package/packages/pi-coding-agent/dist/core/index.d.ts +1 -1
  408. package/packages/pi-coding-agent/dist/core/index.d.ts.map +1 -1
  409. package/packages/pi-coding-agent/dist/core/index.js +1 -1
  410. package/packages/pi-coding-agent/dist/core/index.js.map +1 -1
  411. package/packages/pi-coding-agent/dist/core/lsp/index.d.ts.map +1 -1
  412. package/packages/pi-coding-agent/dist/core/lsp/index.js +3 -0
  413. package/packages/pi-coding-agent/dist/core/lsp/index.js.map +1 -1
  414. package/packages/pi-coding-agent/dist/core/lsp/lspmux.d.ts.map +1 -1
  415. package/packages/pi-coding-agent/dist/core/lsp/lspmux.js +3 -0
  416. package/packages/pi-coding-agent/dist/core/lsp/lspmux.js.map +1 -1
  417. package/packages/pi-coding-agent/dist/core/messages.d.ts.map +1 -1
  418. package/packages/pi-coding-agent/dist/core/messages.js +31 -2
  419. package/packages/pi-coding-agent/dist/core/messages.js.map +1 -1
  420. package/packages/pi-coding-agent/dist/core/messages.test.d.ts +9 -0
  421. package/packages/pi-coding-agent/dist/core/messages.test.d.ts.map +1 -0
  422. package/packages/pi-coding-agent/dist/core/messages.test.js +86 -0
  423. package/packages/pi-coding-agent/dist/core/messages.test.js.map +1 -0
  424. package/packages/pi-coding-agent/dist/core/model-resolver.d.ts.map +1 -1
  425. package/packages/pi-coding-agent/dist/core/model-resolver.js +1 -0
  426. package/packages/pi-coding-agent/dist/core/model-resolver.js.map +1 -1
  427. package/packages/pi-coding-agent/dist/core/resolve-config-value.d.ts +8 -0
  428. package/packages/pi-coding-agent/dist/core/resolve-config-value.d.ts.map +1 -1
  429. package/packages/pi-coding-agent/dist/core/resolve-config-value.js +23 -2
  430. package/packages/pi-coding-agent/dist/core/resolve-config-value.js.map +1 -1
  431. package/packages/pi-coding-agent/dist/core/resolve-config-value.test.js +89 -2
  432. package/packages/pi-coding-agent/dist/core/resolve-config-value.test.js.map +1 -1
  433. package/packages/pi-coding-agent/dist/core/resource-loader.d.ts +10 -0
  434. package/packages/pi-coding-agent/dist/core/resource-loader.d.ts.map +1 -1
  435. package/packages/pi-coding-agent/dist/core/resource-loader.js +12 -1
  436. package/packages/pi-coding-agent/dist/core/resource-loader.js.map +1 -1
  437. package/packages/pi-coding-agent/dist/core/retry-handler.d.ts +6 -0
  438. package/packages/pi-coding-agent/dist/core/retry-handler.d.ts.map +1 -1
  439. package/packages/pi-coding-agent/dist/core/retry-handler.js +48 -1
  440. package/packages/pi-coding-agent/dist/core/retry-handler.js.map +1 -1
  441. package/packages/pi-coding-agent/dist/core/retry-handler.test.d.ts +9 -0
  442. package/packages/pi-coding-agent/dist/core/retry-handler.test.d.ts.map +1 -0
  443. package/packages/pi-coding-agent/dist/core/retry-handler.test.js +193 -0
  444. package/packages/pi-coding-agent/dist/core/retry-handler.test.js.map +1 -0
  445. package/packages/pi-coding-agent/dist/core/settings-manager-security.test.d.ts +2 -0
  446. package/packages/pi-coding-agent/dist/core/settings-manager-security.test.d.ts.map +1 -0
  447. package/packages/pi-coding-agent/dist/core/settings-manager-security.test.js +83 -0
  448. package/packages/pi-coding-agent/dist/core/settings-manager-security.test.js.map +1 -0
  449. package/packages/pi-coding-agent/dist/core/settings-manager.d.ts +14 -0
  450. package/packages/pi-coding-agent/dist/core/settings-manager.d.ts.map +1 -1
  451. package/packages/pi-coding-agent/dist/core/settings-manager.js +36 -3
  452. package/packages/pi-coding-agent/dist/core/settings-manager.js.map +1 -1
  453. package/packages/pi-coding-agent/dist/core/tools/hashline-read.d.ts.map +1 -1
  454. package/packages/pi-coding-agent/dist/core/tools/hashline-read.js +10 -3
  455. package/packages/pi-coding-agent/dist/core/tools/hashline-read.js.map +1 -1
  456. package/packages/pi-coding-agent/dist/core/tools/read.d.ts.map +1 -1
  457. package/packages/pi-coding-agent/dist/core/tools/read.js +13 -4
  458. package/packages/pi-coding-agent/dist/core/tools/read.js.map +1 -1
  459. package/packages/pi-coding-agent/dist/core/tools/spawn-shell-windows.test.d.ts +16 -0
  460. package/packages/pi-coding-agent/dist/core/tools/spawn-shell-windows.test.d.ts.map +1 -0
  461. package/packages/pi-coding-agent/dist/core/tools/spawn-shell-windows.test.js +80 -0
  462. package/packages/pi-coding-agent/dist/core/tools/spawn-shell-windows.test.js.map +1 -0
  463. package/packages/pi-coding-agent/dist/index.d.ts +3 -2
  464. package/packages/pi-coding-agent/dist/index.d.ts.map +1 -1
  465. package/packages/pi-coding-agent/dist/index.js +2 -1
  466. package/packages/pi-coding-agent/dist/index.js.map +1 -1
  467. package/packages/pi-coding-agent/dist/modes/interactive/components/armin.d.ts +1 -1
  468. package/packages/pi-coding-agent/dist/modes/interactive/components/armin.d.ts.map +1 -1
  469. package/packages/pi-coding-agent/dist/modes/interactive/components/armin.js +9 -8
  470. package/packages/pi-coding-agent/dist/modes/interactive/components/armin.js.map +1 -1
  471. package/packages/pi-coding-agent/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
  472. package/packages/pi-coding-agent/dist/modes/interactive/components/assistant-message.js +0 -3
  473. package/packages/pi-coding-agent/dist/modes/interactive/components/assistant-message.js.map +1 -1
  474. package/packages/pi-coding-agent/dist/modes/interactive/components/bash-execution.d.ts +1 -0
  475. package/packages/pi-coding-agent/dist/modes/interactive/components/bash-execution.d.ts.map +1 -1
  476. package/packages/pi-coding-agent/dist/modes/interactive/components/bash-execution.js +2 -1
  477. package/packages/pi-coding-agent/dist/modes/interactive/components/bash-execution.js.map +1 -1
  478. package/packages/pi-coding-agent/dist/modes/interactive/components/bordered-loader.js +1 -1
  479. package/packages/pi-coding-agent/dist/modes/interactive/components/bordered-loader.js.map +1 -1
  480. package/packages/pi-coding-agent/dist/modes/interactive/components/branch-summary-message.js +1 -1
  481. package/packages/pi-coding-agent/dist/modes/interactive/components/branch-summary-message.js.map +1 -1
  482. package/packages/pi-coding-agent/dist/modes/interactive/components/compaction-summary-message.js +1 -1
  483. package/packages/pi-coding-agent/dist/modes/interactive/components/compaction-summary-message.js.map +1 -1
  484. package/packages/pi-coding-agent/dist/modes/interactive/components/config-selector.d.ts.map +1 -1
  485. package/packages/pi-coding-agent/dist/modes/interactive/components/config-selector.js +5 -2
  486. package/packages/pi-coding-agent/dist/modes/interactive/components/config-selector.js.map +1 -1
  487. package/packages/pi-coding-agent/dist/modes/interactive/components/countdown-timer.d.ts +1 -0
  488. package/packages/pi-coding-agent/dist/modes/interactive/components/countdown-timer.d.ts.map +1 -1
  489. package/packages/pi-coding-agent/dist/modes/interactive/components/countdown-timer.js +4 -0
  490. package/packages/pi-coding-agent/dist/modes/interactive/components/countdown-timer.js.map +1 -1
  491. package/packages/pi-coding-agent/dist/modes/interactive/components/custom-message.js +1 -1
  492. package/packages/pi-coding-agent/dist/modes/interactive/components/custom-message.js.map +1 -1
  493. package/packages/pi-coding-agent/dist/modes/interactive/components/daxnuts.d.ts +1 -1
  494. package/packages/pi-coding-agent/dist/modes/interactive/components/daxnuts.d.ts.map +1 -1
  495. package/packages/pi-coding-agent/dist/modes/interactive/components/daxnuts.js +4 -2
  496. package/packages/pi-coding-agent/dist/modes/interactive/components/daxnuts.js.map +1 -1
  497. package/packages/pi-coding-agent/dist/modes/interactive/components/diff.js +2 -2
  498. package/packages/pi-coding-agent/dist/modes/interactive/components/diff.js.map +1 -1
  499. package/packages/pi-coding-agent/dist/modes/interactive/components/dynamic-border.d.ts.map +1 -1
  500. package/packages/pi-coding-agent/dist/modes/interactive/components/dynamic-border.js +8 -1
  501. package/packages/pi-coding-agent/dist/modes/interactive/components/dynamic-border.js.map +1 -1
  502. package/packages/pi-coding-agent/dist/modes/interactive/components/extension-input.d.ts.map +1 -1
  503. package/packages/pi-coding-agent/dist/modes/interactive/components/extension-input.js +2 -0
  504. package/packages/pi-coding-agent/dist/modes/interactive/components/extension-input.js.map +1 -1
  505. package/packages/pi-coding-agent/dist/modes/interactive/components/extension-selector.d.ts.map +1 -1
  506. package/packages/pi-coding-agent/dist/modes/interactive/components/extension-selector.js +4 -0
  507. package/packages/pi-coding-agent/dist/modes/interactive/components/extension-selector.js.map +1 -1
  508. package/packages/pi-coding-agent/dist/modes/interactive/components/footer.d.ts.map +1 -1
  509. package/packages/pi-coding-agent/dist/modes/interactive/components/footer.js +26 -12
  510. package/packages/pi-coding-agent/dist/modes/interactive/components/footer.js.map +1 -1
  511. package/packages/pi-coding-agent/dist/modes/interactive/components/oauth-selector.js +4 -4
  512. package/packages/pi-coding-agent/dist/modes/interactive/components/oauth-selector.js.map +1 -1
  513. package/packages/pi-coding-agent/dist/modes/interactive/components/provider-manager.d.ts +3 -0
  514. package/packages/pi-coding-agent/dist/modes/interactive/components/provider-manager.d.ts.map +1 -1
  515. package/packages/pi-coding-agent/dist/modes/interactive/components/provider-manager.js +46 -14
  516. package/packages/pi-coding-agent/dist/modes/interactive/components/provider-manager.js.map +1 -1
  517. package/packages/pi-coding-agent/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -1
  518. package/packages/pi-coding-agent/dist/modes/interactive/components/scoped-models-selector.js +2 -8
  519. package/packages/pi-coding-agent/dist/modes/interactive/components/scoped-models-selector.js.map +1 -1
  520. package/packages/pi-coding-agent/dist/modes/interactive/components/session-selector.js +4 -4
  521. package/packages/pi-coding-agent/dist/modes/interactive/components/session-selector.js.map +1 -1
  522. package/packages/pi-coding-agent/dist/modes/interactive/components/skill-invocation-message.js +2 -2
  523. package/packages/pi-coding-agent/dist/modes/interactive/components/skill-invocation-message.js.map +1 -1
  524. package/packages/pi-coding-agent/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  525. package/packages/pi-coding-agent/dist/modes/interactive/components/tool-execution.js +8 -3
  526. package/packages/pi-coding-agent/dist/modes/interactive/components/tool-execution.js.map +1 -1
  527. package/packages/pi-coding-agent/dist/modes/interactive/components/user-message-selector.d.ts.map +1 -1
  528. package/packages/pi-coding-agent/dist/modes/interactive/components/user-message-selector.js +3 -2
  529. package/packages/pi-coding-agent/dist/modes/interactive/components/user-message-selector.js.map +1 -1
  530. package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.d.ts.map +1 -1
  531. package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.js +19 -1
  532. package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.js.map +1 -1
  533. package/packages/pi-coding-agent/dist/modes/interactive/controllers/input-controller.d.ts +1 -0
  534. package/packages/pi-coding-agent/dist/modes/interactive/controllers/input-controller.d.ts.map +1 -1
  535. package/packages/pi-coding-agent/dist/modes/interactive/controllers/input-controller.js +22 -1
  536. package/packages/pi-coding-agent/dist/modes/interactive/controllers/input-controller.js.map +1 -1
  537. package/packages/pi-coding-agent/dist/modes/interactive/controllers/input-controller.test.d.ts +2 -0
  538. package/packages/pi-coding-agent/dist/modes/interactive/controllers/input-controller.test.d.ts.map +1 -0
  539. package/packages/pi-coding-agent/dist/modes/interactive/controllers/input-controller.test.js +122 -0
  540. package/packages/pi-coding-agent/dist/modes/interactive/controllers/input-controller.test.js.map +1 -0
  541. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.d.ts +2 -0
  542. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  543. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.js +57 -4
  544. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.js.map +1 -1
  545. package/packages/pi-coding-agent/dist/modes/interactive/slash-command-handlers.js +1 -1
  546. package/packages/pi-coding-agent/dist/modes/interactive/slash-command-handlers.js.map +1 -1
  547. package/packages/pi-coding-agent/dist/modes/interactive/theme/themes.js +1 -1
  548. package/packages/pi-coding-agent/dist/modes/interactive/theme/themes.js.map +1 -1
  549. package/packages/pi-coding-agent/dist/modes/rpc/remote-terminal.d.ts +1 -0
  550. package/packages/pi-coding-agent/dist/modes/rpc/remote-terminal.d.ts.map +1 -1
  551. package/packages/pi-coding-agent/dist/modes/rpc/remote-terminal.js +5 -0
  552. package/packages/pi-coding-agent/dist/modes/rpc/remote-terminal.js.map +1 -1
  553. package/packages/pi-coding-agent/package.json +1 -1
  554. package/packages/pi-coding-agent/src/core/agent-session.ts +38 -1
  555. package/packages/pi-coding-agent/src/core/compaction/compaction.test.ts +236 -0
  556. package/packages/pi-coding-agent/src/core/compaction/compaction.ts +94 -1
  557. package/packages/pi-coding-agent/src/core/exec.ts +3 -1
  558. package/packages/pi-coding-agent/src/core/extensions/extension-manifest.test.ts +77 -0
  559. package/packages/pi-coding-agent/src/core/extensions/extension-manifest.ts +62 -0
  560. package/packages/pi-coding-agent/src/core/extensions/extension-sort.test.ts +134 -0
  561. package/packages/pi-coding-agent/src/core/extensions/extension-sort.ts +137 -0
  562. package/packages/pi-coding-agent/src/core/extensions/index.ts +4 -0
  563. package/packages/pi-coding-agent/src/core/extensions/loader.ts +5 -0
  564. package/packages/pi-coding-agent/src/core/image-overflow-recovery.test.ts +228 -0
  565. package/packages/pi-coding-agent/src/core/image-overflow-recovery.ts +118 -0
  566. package/packages/pi-coding-agent/src/core/index.ts +6 -0
  567. package/packages/pi-coding-agent/src/core/lsp/index.ts +3 -0
  568. package/packages/pi-coding-agent/src/core/lsp/lspmux.ts +3 -0
  569. package/packages/pi-coding-agent/src/core/messages.test.ts +114 -0
  570. package/packages/pi-coding-agent/src/core/messages.ts +29 -2
  571. package/packages/pi-coding-agent/src/core/model-resolver.ts +1 -0
  572. package/packages/pi-coding-agent/src/core/resolve-config-value.test.ts +111 -1
  573. package/packages/pi-coding-agent/src/core/resolve-config-value.ts +26 -2
  574. package/packages/pi-coding-agent/src/core/resource-loader.ts +20 -1
  575. package/packages/pi-coding-agent/src/core/retry-handler.test.ts +255 -0
  576. package/packages/pi-coding-agent/src/core/retry-handler.ts +52 -1
  577. package/packages/pi-coding-agent/src/core/settings-manager-security.test.ts +102 -0
  578. package/packages/pi-coding-agent/src/core/settings-manager.ts +44 -3
  579. package/packages/pi-coding-agent/src/core/tools/hashline-read.ts +11 -3
  580. package/packages/pi-coding-agent/src/core/tools/read.ts +14 -4
  581. package/packages/pi-coding-agent/src/core/tools/spawn-shell-windows.test.ts +92 -0
  582. package/packages/pi-coding-agent/src/index.ts +11 -0
  583. package/packages/pi-coding-agent/src/modes/interactive/components/armin.ts +9 -9
  584. package/packages/pi-coding-agent/src/modes/interactive/components/assistant-message.ts +0 -2
  585. package/packages/pi-coding-agent/src/modes/interactive/components/bash-execution.ts +3 -1
  586. package/packages/pi-coding-agent/src/modes/interactive/components/bordered-loader.ts +1 -1
  587. package/packages/pi-coding-agent/src/modes/interactive/components/branch-summary-message.ts +1 -1
  588. package/packages/pi-coding-agent/src/modes/interactive/components/compaction-summary-message.ts +1 -1
  589. package/packages/pi-coding-agent/src/modes/interactive/components/config-selector.ts +7 -2
  590. package/packages/pi-coding-agent/src/modes/interactive/components/countdown-timer.ts +3 -0
  591. package/packages/pi-coding-agent/src/modes/interactive/components/custom-message.ts +1 -1
  592. package/packages/pi-coding-agent/src/modes/interactive/components/daxnuts.ts +4 -3
  593. package/packages/pi-coding-agent/src/modes/interactive/components/diff.ts +2 -2
  594. package/packages/pi-coding-agent/src/modes/interactive/components/dynamic-border.ts +3 -1
  595. package/packages/pi-coding-agent/src/modes/interactive/components/extension-input.ts +1 -0
  596. package/packages/pi-coding-agent/src/modes/interactive/components/extension-selector.ts +4 -0
  597. package/packages/pi-coding-agent/src/modes/interactive/components/footer.ts +27 -13
  598. package/packages/pi-coding-agent/src/modes/interactive/components/oauth-selector.ts +4 -4
  599. package/packages/pi-coding-agent/src/modes/interactive/components/provider-manager.ts +45 -14
  600. package/packages/pi-coding-agent/src/modes/interactive/components/scoped-models-selector.ts +2 -7
  601. package/packages/pi-coding-agent/src/modes/interactive/components/session-selector.ts +4 -4
  602. package/packages/pi-coding-agent/src/modes/interactive/components/skill-invocation-message.ts +2 -2
  603. package/packages/pi-coding-agent/src/modes/interactive/components/tool-execution.ts +8 -3
  604. package/packages/pi-coding-agent/src/modes/interactive/components/user-message-selector.ts +3 -2
  605. package/packages/pi-coding-agent/src/modes/interactive/controllers/chat-controller.ts +24 -1
  606. package/packages/pi-coding-agent/src/modes/interactive/controllers/input-controller.test.ts +156 -0
  607. package/packages/pi-coding-agent/src/modes/interactive/controllers/input-controller.ts +21 -1
  608. package/packages/pi-coding-agent/src/modes/interactive/interactive-mode.ts +73 -3
  609. package/packages/pi-coding-agent/src/modes/interactive/slash-command-handlers.ts +1 -1
  610. package/packages/pi-coding-agent/src/modes/interactive/theme/themes.ts +1 -1
  611. package/packages/pi-coding-agent/src/modes/rpc/remote-terminal.ts +6 -0
  612. package/packages/pi-tui/dist/terminal.d.ts +2 -0
  613. package/packages/pi-tui/dist/terminal.d.ts.map +1 -1
  614. package/packages/pi-tui/dist/terminal.js +9 -0
  615. package/packages/pi-tui/dist/terminal.js.map +1 -1
  616. package/packages/pi-tui/dist/tui.d.ts.map +1 -1
  617. package/packages/pi-tui/dist/tui.js +9 -0
  618. package/packages/pi-tui/dist/tui.js.map +1 -1
  619. package/packages/pi-tui/src/terminal.ts +14 -0
  620. package/packages/pi-tui/src/tui.ts +8 -0
  621. package/pkg/dist/modes/interactive/theme/themes.js +1 -1
  622. package/pkg/dist/modes/interactive/theme/themes.js.map +1 -1
  623. package/pkg/package.json +1 -1
  624. package/scripts/ensure-workspace-builds.cjs +45 -14
  625. package/src/resources/agents/researcher.md +1 -1
  626. package/src/resources/extensions/ask-user-questions.ts +21 -3
  627. package/src/resources/extensions/async-jobs/extension-manifest.json +1 -1
  628. package/src/resources/extensions/bg-shell/extension-manifest.json +1 -1
  629. package/src/resources/extensions/browser-tools/extension-manifest.json +1 -1
  630. package/src/resources/extensions/claude-code-cli/partial-builder.ts +13 -6
  631. package/src/resources/extensions/claude-code-cli/stream-adapter.ts +63 -35
  632. package/src/resources/extensions/claude-code-cli/tests/partial-builder.test.ts +28 -0
  633. package/src/resources/extensions/claude-code-cli/tests/stream-adapter.test.ts +108 -1
  634. package/src/resources/extensions/context7/extension-manifest.json +1 -1
  635. package/src/resources/extensions/get-secrets-from-user.ts +8 -5
  636. package/src/resources/extensions/google-search/extension-manifest.json +1 -1
  637. package/src/resources/extensions/google-search/index.ts +2 -1
  638. package/src/resources/extensions/gsd/auto/loop-deps.ts +1 -0
  639. package/src/resources/extensions/gsd/auto/phases.ts +43 -34
  640. package/src/resources/extensions/gsd/auto-artifact-paths.ts +2 -2
  641. package/src/resources/extensions/gsd/auto-dashboard.ts +37 -19
  642. package/src/resources/extensions/gsd/auto-dispatch.ts +18 -2
  643. package/src/resources/extensions/gsd/auto-model-selection.ts +26 -5
  644. package/src/resources/extensions/gsd/auto-post-unit.ts +18 -4
  645. package/src/resources/extensions/gsd/auto-prompts.ts +1 -1
  646. package/src/resources/extensions/gsd/auto-recovery.ts +12 -5
  647. package/src/resources/extensions/gsd/auto-start.ts +35 -26
  648. package/src/resources/extensions/gsd/auto-worktree.ts +193 -9
  649. package/src/resources/extensions/gsd/bootstrap/agent-end-recovery.ts +31 -0
  650. package/src/resources/extensions/gsd/bootstrap/db-tools.ts +85 -8
  651. package/src/resources/extensions/gsd/bootstrap/dynamic-tools.ts +38 -1
  652. package/src/resources/extensions/gsd/bootstrap/register-hooks.ts +41 -35
  653. package/src/resources/extensions/gsd/bootstrap/system-context.ts +72 -12
  654. package/src/resources/extensions/gsd/bootstrap/write-gate.ts +75 -0
  655. package/src/resources/extensions/gsd/captures.ts +63 -3
  656. package/src/resources/extensions/gsd/codebase-generator.ts +351 -0
  657. package/src/resources/extensions/gsd/commands/catalog.ts +10 -1
  658. package/src/resources/extensions/gsd/commands/handlers/ops.ts +5 -0
  659. package/src/resources/extensions/gsd/commands-codebase.ts +164 -0
  660. package/src/resources/extensions/gsd/commands-prefs-wizard.ts +46 -4
  661. package/src/resources/extensions/gsd/complexity-classifier.ts +8 -6
  662. package/src/resources/extensions/gsd/db-writer.ts +140 -7
  663. package/src/resources/extensions/gsd/doctor-git-checks.ts +75 -1
  664. package/src/resources/extensions/gsd/doctor-proactive.ts +35 -1
  665. package/src/resources/extensions/gsd/doctor-providers.ts +2 -1
  666. package/src/resources/extensions/gsd/doctor-runtime-checks.ts +5 -4
  667. package/src/resources/extensions/gsd/doctor-types.ts +2 -0
  668. package/src/resources/extensions/gsd/doctor.ts +3 -1
  669. package/src/resources/extensions/gsd/error-classifier.ts +13 -11
  670. package/src/resources/extensions/gsd/extension-manifest.json +16 -1
  671. package/src/resources/extensions/gsd/forensics.ts +144 -20
  672. package/src/resources/extensions/gsd/git-service.ts +119 -3
  673. package/src/resources/extensions/gsd/gitignore.ts +33 -0
  674. package/src/resources/extensions/gsd/gsd-db.ts +43 -7
  675. package/src/resources/extensions/gsd/guided-flow.ts +114 -45
  676. package/src/resources/extensions/gsd/health-widget-core.ts +34 -0
  677. package/src/resources/extensions/gsd/health-widget.ts +17 -0
  678. package/src/resources/extensions/gsd/index.ts +1 -0
  679. package/src/resources/extensions/gsd/memory-extractor.ts +8 -0
  680. package/src/resources/extensions/gsd/migrate-external.ts +9 -1
  681. package/src/resources/extensions/gsd/milestone-validation-gates.ts +56 -0
  682. package/src/resources/extensions/gsd/model-cost-table.ts +19 -0
  683. package/src/resources/extensions/gsd/model-router.ts +35 -1
  684. package/src/resources/extensions/gsd/native-git-bridge.ts +41 -0
  685. package/src/resources/extensions/gsd/notifications.ts +16 -0
  686. package/src/resources/extensions/gsd/parallel-eligibility.ts +15 -2
  687. package/src/resources/extensions/gsd/parallel-merge.ts +87 -4
  688. package/src/resources/extensions/gsd/parsers-legacy.ts +22 -3
  689. package/src/resources/extensions/gsd/paths.ts +44 -0
  690. package/src/resources/extensions/gsd/preferences-models.ts +14 -1
  691. package/src/resources/extensions/gsd/preferences-types.ts +10 -1
  692. package/src/resources/extensions/gsd/preferences.ts +13 -15
  693. package/src/resources/extensions/gsd/prompt-loader.ts +4 -1
  694. package/src/resources/extensions/gsd/prompts/complete-milestone.md +1 -1
  695. package/src/resources/extensions/gsd/prompts/complete-slice.md +4 -2
  696. package/src/resources/extensions/gsd/prompts/discuss-headless.md +1 -1
  697. package/src/resources/extensions/gsd/prompts/discuss.md +1 -1
  698. package/src/resources/extensions/gsd/prompts/execute-task.md +3 -1
  699. package/src/resources/extensions/gsd/prompts/forensics.md +2 -2
  700. package/src/resources/extensions/gsd/prompts/guided-discuss-milestone.md +1 -1
  701. package/src/resources/extensions/gsd/prompts/guided-discuss-slice.md +1 -1
  702. package/src/resources/extensions/gsd/prompts/plan-slice.md +2 -0
  703. package/src/resources/extensions/gsd/prompts/rethink.md +1 -1
  704. package/src/resources/extensions/gsd/prompts/triage-captures.md +1 -0
  705. package/src/resources/extensions/gsd/repo-identity.ts +186 -11
  706. package/src/resources/extensions/gsd/rethink.ts +6 -0
  707. package/src/resources/extensions/gsd/roadmap-slices.ts +5 -4
  708. package/src/resources/extensions/gsd/state.ts +84 -32
  709. package/src/resources/extensions/gsd/tests/auto-loop.test.ts +29 -0
  710. package/src/resources/extensions/gsd/tests/auto-mode-interactive-guard.test.ts +71 -0
  711. package/src/resources/extensions/gsd/tests/auto-model-selection.test.ts +71 -1
  712. package/src/resources/extensions/gsd/tests/captures.test.ts +103 -0
  713. package/src/resources/extensions/gsd/tests/cli-provider-rate-limit.test.ts +47 -0
  714. package/src/resources/extensions/gsd/tests/codebase-generator.test.ts +488 -0
  715. package/src/resources/extensions/gsd/tests/complete-milestone.test.ts +27 -0
  716. package/src/resources/extensions/gsd/tests/complete-slice.test.ts +21 -0
  717. package/src/resources/extensions/gsd/tests/completion-hierarchy-guards.test.ts +192 -0
  718. package/src/resources/extensions/gsd/tests/complexity-classifier.test.ts +4 -4
  719. package/src/resources/extensions/gsd/tests/db-path-worktree-symlink.test.ts +131 -0
  720. package/src/resources/extensions/gsd/tests/db-writer.test.ts +7 -12
  721. package/src/resources/extensions/gsd/tests/derive-state-db.test.ts +78 -5
  722. package/src/resources/extensions/gsd/tests/derive-state.test.ts +29 -0
  723. package/src/resources/extensions/gsd/tests/discord-invite-links.test.ts +47 -0
  724. package/src/resources/extensions/gsd/tests/discuss-empty-db-fallback.test.ts +127 -0
  725. package/src/resources/extensions/gsd/tests/discuss-queued-milestones.test.ts +40 -0
  726. package/src/resources/extensions/gsd/tests/dist-redirect.mjs +20 -1
  727. package/src/resources/extensions/gsd/tests/doctor-providers.test.ts +117 -0
  728. package/src/resources/extensions/gsd/tests/dynamic-routing-default.test.ts +20 -0
  729. package/src/resources/extensions/gsd/tests/empty-content-abort-loop.test.ts +74 -0
  730. package/src/resources/extensions/gsd/tests/event-replay-idempotency.test.ts +140 -0
  731. package/src/resources/extensions/gsd/tests/forensics-context-persist.test.ts +129 -0
  732. package/src/resources/extensions/gsd/tests/forensics-db-completion.test.ts +96 -0
  733. package/src/resources/extensions/gsd/tests/forensics-dedup.test.ts +31 -0
  734. package/src/resources/extensions/gsd/tests/gsd-tools.test.ts +125 -12
  735. package/src/resources/extensions/gsd/tests/gsdroot-worktree-detection.test.ts +164 -0
  736. package/src/resources/extensions/gsd/tests/guided-flow-dynamic-routing.test.ts +135 -0
  737. package/src/resources/extensions/gsd/tests/guided-flow-session-isolation.test.ts +97 -0
  738. package/src/resources/extensions/gsd/tests/health-widget.test.ts +67 -0
  739. package/src/resources/extensions/gsd/tests/hook-key-parsing.test.ts +107 -0
  740. package/src/resources/extensions/gsd/tests/integration/auto-recovery.test.ts +111 -1
  741. package/src/resources/extensions/gsd/tests/integration/auto-worktree-milestone-merge.test.ts +134 -0
  742. package/src/resources/extensions/gsd/tests/integration/auto-worktree.test.ts +59 -0
  743. package/src/resources/extensions/gsd/tests/integration/doctor-false-positives.test.ts +243 -0
  744. package/src/resources/extensions/gsd/tests/integration/doctor-git.test.ts +72 -0
  745. package/src/resources/extensions/gsd/tests/integration/git-service.test.ts +68 -0
  746. package/src/resources/extensions/gsd/tests/integration/gitignore-staging-2570.test.ts +150 -0
  747. package/src/resources/extensions/gsd/tests/integration/parallel-merge.test.ts +110 -0
  748. package/src/resources/extensions/gsd/tests/integration/run-uat.test.ts +1 -1
  749. package/src/resources/extensions/gsd/tests/integration/state-machine-live-validation.test.ts +959 -0
  750. package/src/resources/extensions/gsd/tests/memory-extractor.test.ts +85 -2
  751. package/src/resources/extensions/gsd/tests/migrate-external-worktree.test.ts +105 -0
  752. package/src/resources/extensions/gsd/tests/milestone-status-authoritative.test.ts +116 -0
  753. package/src/resources/extensions/gsd/tests/model-cost-table.test.ts +34 -0
  754. package/src/resources/extensions/gsd/tests/model-router.test.ts +68 -3
  755. package/src/resources/extensions/gsd/tests/model-unittype-mapping.test.ts +28 -0
  756. package/src/resources/extensions/gsd/tests/notifications.test.ts +45 -0
  757. package/src/resources/extensions/gsd/tests/parallel-commit-scope.test.ts +159 -0
  758. package/src/resources/extensions/gsd/tests/parallel-eligibility-ghost.test.ts +150 -0
  759. package/src/resources/extensions/gsd/tests/plan-milestone-title.test.ts +70 -0
  760. package/src/resources/extensions/gsd/tests/plan-milestone.test.ts +33 -1
  761. package/src/resources/extensions/gsd/tests/project-relocation-recovery.test.ts +297 -0
  762. package/src/resources/extensions/gsd/tests/prompt-contracts.test.ts +29 -0
  763. package/src/resources/extensions/gsd/tests/prompt-loader-replacement.test.ts +178 -0
  764. package/src/resources/extensions/gsd/tests/prompt-tool-names.test.ts +69 -0
  765. package/src/resources/extensions/gsd/tests/provider-errors.test.ts +38 -0
  766. package/src/resources/extensions/gsd/tests/queue-execution-guard.test.ts +157 -0
  767. package/src/resources/extensions/gsd/tests/quick-turn-end-cleanup.test.ts +90 -0
  768. package/src/resources/extensions/gsd/tests/reassess-handler.test.ts +117 -0
  769. package/src/resources/extensions/gsd/tests/reconciliation-edge-cases.test.ts +162 -0
  770. package/src/resources/extensions/gsd/tests/roadmap-slices.test.ts +97 -0
  771. package/src/resources/extensions/gsd/tests/secure-env-collect.test.ts +134 -0
  772. package/src/resources/extensions/gsd/tests/slice-disk-reconcile.test.ts +233 -0
  773. package/src/resources/extensions/gsd/tests/stash-queued-context-files.test.ts +305 -0
  774. package/src/resources/extensions/gsd/tests/state-corruption-2945.test.ts +405 -0
  775. package/src/resources/extensions/gsd/tests/state-derivation-parity.test.ts +257 -0
  776. package/src/resources/extensions/gsd/tests/state-machine-full-walkthrough.test.ts +1628 -0
  777. package/src/resources/extensions/gsd/tests/stop-auto-race-null-unit.test.ts +106 -0
  778. package/src/resources/extensions/gsd/tests/stuck-detection-coverage.test.ts +174 -0
  779. package/src/resources/extensions/gsd/tests/summary-render-parity.test.ts +221 -0
  780. package/src/resources/extensions/gsd/tests/terminated-transient.test.ts +44 -0
  781. package/src/resources/extensions/gsd/tests/tool-naming.test.ts +2 -1
  782. package/src/resources/extensions/gsd/tests/triage-resolution.test.ts +8 -0
  783. package/src/resources/extensions/gsd/tests/uat-stuck-loop-orphaned-worktree.test.ts +289 -0
  784. package/src/resources/extensions/gsd/tests/unit-ownership.test.ts +100 -17
  785. package/src/resources/extensions/gsd/tests/vacuum-recovery.test.ts +154 -0
  786. package/src/resources/extensions/gsd/tests/validate-milestone-write-order.test.ts +4 -1
  787. package/src/resources/extensions/gsd/tests/verdict-parser.test.ts +156 -0
  788. package/src/resources/extensions/gsd/tests/verification-operational-gate.test.ts +82 -0
  789. package/src/resources/extensions/gsd/tests/workflow-logger.test.ts +48 -0
  790. package/src/resources/extensions/gsd/tests/workflow-manifest.test.ts +92 -0
  791. package/src/resources/extensions/gsd/tests/workflow-projections.test.ts +4 -2
  792. package/src/resources/extensions/gsd/tests/worktree-db-respawn-truncation.test.ts +140 -0
  793. package/src/resources/extensions/gsd/tests/worktree-nested-git-safety.test.ts +101 -0
  794. package/src/resources/extensions/gsd/tests/worktree-resolver.test.ts +48 -1
  795. package/src/resources/extensions/gsd/tests/worktree-sync-milestones.test.ts +29 -5
  796. package/src/resources/extensions/gsd/tests/zombie-gsd-state.test.ts +95 -0
  797. package/src/resources/extensions/gsd/tools/complete-task.ts +36 -74
  798. package/src/resources/extensions/gsd/tools/plan-milestone.ts +13 -1
  799. package/src/resources/extensions/gsd/tools/reassess-roadmap.ts +36 -0
  800. package/src/resources/extensions/gsd/tools/validate-milestone.ts +20 -2
  801. package/src/resources/extensions/gsd/triage-resolution.ts +23 -6
  802. package/src/resources/extensions/gsd/types.ts +4 -2
  803. package/src/resources/extensions/gsd/undo.ts +2 -2
  804. package/src/resources/extensions/gsd/unit-ownership.ts +206 -35
  805. package/src/resources/extensions/gsd/verdict-parser.ts +21 -6
  806. package/src/resources/extensions/gsd/watch/header-renderer.ts +275 -0
  807. package/src/resources/extensions/gsd/workflow-logger.ts +3 -1
  808. package/src/resources/extensions/gsd/workflow-manifest.ts +22 -5
  809. package/src/resources/extensions/gsd/workflow-projections.ts +97 -64
  810. package/src/resources/extensions/gsd/workflow-reconcile.ts +39 -10
  811. package/src/resources/extensions/gsd/workspace-index.ts +30 -0
  812. package/src/resources/extensions/gsd/worktree-manager.ts +120 -1
  813. package/src/resources/extensions/gsd/worktree-resolver.ts +22 -3
  814. package/src/resources/extensions/mcp-client/index.ts +13 -7
  815. package/src/resources/extensions/mcp-client/tests/server-name-spaces.test.ts +55 -0
  816. package/src/resources/extensions/ollama/index.ts +130 -0
  817. package/src/resources/extensions/ollama/model-capabilities.ts +145 -0
  818. package/src/resources/extensions/ollama/ollama-client.ts +196 -0
  819. package/src/resources/extensions/ollama/ollama-commands.ts +248 -0
  820. package/src/resources/extensions/ollama/ollama-discovery.ts +106 -0
  821. package/src/resources/extensions/ollama/ollama-tool.ts +218 -0
  822. package/src/resources/extensions/ollama/tests/model-capabilities.test.ts +162 -0
  823. package/src/resources/extensions/ollama/tests/ollama-client.test.ts +38 -0
  824. package/src/resources/extensions/ollama/tests/ollama-discovery.test.ts +28 -0
  825. package/src/resources/extensions/ollama/types.ts +130 -0
  826. package/src/resources/extensions/search-the-web/extension-manifest.json +1 -1
  827. package/src/resources/extensions/search-the-web/url-utils.ts +19 -0
  828. package/src/resources/extensions/shared/interview-ui.ts +12 -1
  829. package/src/resources/extensions/shared/tests/ask-user-freetext.test.ts +156 -0
  830. package/src/resources/skills/btw/SKILL.md +42 -0
  831. package/src/resources/skills/create-gsd-extension/SKILL.md +5 -3
  832. package/src/resources/skills/create-gsd-extension/references/key-rules-gotchas.md +5 -4
  833. package/src/resources/skills/create-gsd-extension/workflows/add-capability.md +2 -2
  834. package/src/resources/skills/create-gsd-extension/workflows/create-extension.md +4 -4
  835. package/src/resources/skills/create-gsd-extension/workflows/debug-extension.md +5 -3
  836. package/dist/web/standalone/.next/static/chunks/6502.8b732f67a11b11b4.js +0 -9
  837. package/dist/web/standalone/.next/static/chunks/app/page-62be3b5fa91e4c8f.js +0 -1
  838. package/dist/web/standalone/.next/static/chunks/main-app-d3d4c336195465f9.js +0 -1
  839. package/dist/web/standalone/.next/static/chunks/next/dist/client/components/builtin/global-error-ab5a8926e07ec673.js +0 -1
  840. package/dist/web/standalone/.next/static/css/a58ef8a151aa0493.css +0 -1
  841. package/src/resources/extensions/gsd/tests/empty-db-reconciliation.test.ts +0 -79
  842. /package/dist/web/standalone/.next/static/{IoheXIe-5DH7ieX8AUo8U → QlWL-8CXgQpzV3ehkNMzh}/_buildManifest.js +0 -0
  843. /package/dist/web/standalone/.next/static/{IoheXIe-5DH7ieX8AUo8U → QlWL-8CXgQpzV3ehkNMzh}/_ssgManifest.js +0 -0
@@ -1,3 +1,4 @@
1
+ "use strict";
1
2
  /**
2
3
  * Native addon loader.
3
4
  *
@@ -7,12 +8,48 @@
7
8
  * 2. native/addon/gsd_engine.{platform}.node (local release build)
8
9
  * 3. native/addon/gsd_engine.dev.node (local debug build)
9
10
  */
10
- import { createRequire } from "node:module";
11
- import * as path from "node:path";
12
- import { fileURLToPath } from "node:url";
13
- const __dirname = path.dirname(fileURLToPath(import.meta.url));
14
- const require = createRequire(import.meta.url);
15
- const addonDir = path.resolve(__dirname, "..", "..", "..", "native", "addon");
11
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
12
+ if (k2 === undefined) k2 = k;
13
+ var desc = Object.getOwnPropertyDescriptor(m, k);
14
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
15
+ desc = { enumerable: true, get: function() { return m[k]; } };
16
+ }
17
+ Object.defineProperty(o, k2, desc);
18
+ }) : (function(o, m, k, k2) {
19
+ if (k2 === undefined) k2 = k;
20
+ o[k2] = m[k];
21
+ }));
22
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
23
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
24
+ }) : function(o, v) {
25
+ o["default"] = v;
26
+ });
27
+ var __importStar = (this && this.__importStar) || (function () {
28
+ var ownKeys = function(o) {
29
+ ownKeys = Object.getOwnPropertyNames || function (o) {
30
+ var ar = [];
31
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
32
+ return ar;
33
+ };
34
+ return ownKeys(o);
35
+ };
36
+ return function (mod) {
37
+ if (mod && mod.__esModule) return mod;
38
+ var result = {};
39
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
40
+ __setModuleDefault(result, mod);
41
+ return result;
42
+ };
43
+ })();
44
+ Object.defineProperty(exports, "__esModule", { value: true });
45
+ exports.native = void 0;
46
+ const path = __importStar(require("node:path"));
47
+ // __dirname and require are available in both execution contexts:
48
+ // - CJS (production build via tsc): provided natively by Node
49
+ // - ESM (CI test loader): injected by the dist-redirect.mjs preamble
50
+ const _dirname = __dirname;
51
+ const _require = require;
52
+ const addonDir = path.resolve(_dirname, "..", "..", "..", "native", "addon");
16
53
  const platformTag = `${process.platform}-${process.arch}`;
17
54
  /** Map Node.js platform/arch to the npm package suffix */
18
55
  const platformPackageMap = {
@@ -30,7 +67,7 @@ function loadNative() {
30
67
  if (packageSuffix) {
31
68
  try {
32
69
  _loadedSuccessfully = true;
33
- return require(`@gsd-build/engine-${packageSuffix}`);
70
+ return _require(`@gsd-build/engine-${packageSuffix}`);
34
71
  }
35
72
  catch (err) {
36
73
  const message = err instanceof Error ? err.message : String(err);
@@ -41,7 +78,7 @@ function loadNative() {
41
78
  const releasePath = path.join(addonDir, `gsd_engine.${platformTag}.node`);
42
79
  try {
43
80
  _loadedSuccessfully = true;
44
- return require(releasePath);
81
+ return _require(releasePath);
45
82
  }
46
83
  catch (err) {
47
84
  const message = err instanceof Error ? err.message : String(err);
@@ -51,7 +88,7 @@ function loadNative() {
51
88
  const devPath = path.join(addonDir, "gsd_engine.dev.node");
52
89
  try {
53
90
  _loadedSuccessfully = true;
54
- return require(devPath);
91
+ return _require(devPath);
55
92
  }
56
93
  catch (err) {
57
94
  const message = err instanceof Error ? err.message : String(err);
@@ -73,4 +110,4 @@ function loadNative() {
73
110
  },
74
111
  });
75
112
  }
76
- export const native = loadNative();
113
+ exports.native = loadNative();
@@ -1,3 +1,4 @@
1
+ "use strict";
1
2
  /**
2
3
  * Cross-platform process tree management via N-API.
3
4
  *
@@ -5,7 +6,12 @@
5
6
  * using platform-native APIs (libproc on macOS, /proc on Linux,
6
7
  * Toolhelp32 on Windows).
7
8
  */
8
- import { native } from "../native.js";
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.killTree = killTree;
11
+ exports.listDescendants = listDescendants;
12
+ exports.processGroupId = processGroupId;
13
+ exports.killProcessGroup = killProcessGroup;
14
+ const native_js_1 = require("../native.js");
9
15
  /**
10
16
  * Kill a process tree (the process and all its descendants).
11
17
  *
@@ -14,8 +20,8 @@ import { native } from "../native.js";
14
20
  * @param signal - Signal to send (e.g. 9 for SIGKILL, 15 for SIGTERM). Ignored on Windows.
15
21
  * @returns Number of processes successfully killed.
16
22
  */
17
- export function killTree(pid, signal) {
18
- return native.killTree(pid, signal);
23
+ function killTree(pid, signal) {
24
+ return native_js_1.native.killTree(pid, signal);
19
25
  }
20
26
  /**
21
27
  * List all descendant PIDs of a process.
@@ -23,8 +29,8 @@ export function killTree(pid, signal) {
23
29
  * @param pid - Parent process ID
24
30
  * @returns Array of descendant PIDs (empty if no children or process doesn't exist).
25
31
  */
26
- export function listDescendants(pid) {
27
- return native.listDescendants(pid);
32
+ function listDescendants(pid) {
33
+ return native_js_1.native.listDescendants(pid);
28
34
  }
29
35
  /**
30
36
  * Get the process group ID for a process.
@@ -32,8 +38,8 @@ export function listDescendants(pid) {
32
38
  * @param pid - Process ID
33
39
  * @returns Process group ID, or null if the process doesn't exist or on Windows.
34
40
  */
35
- export function processGroupId(pid) {
36
- return native.processGroupId(pid);
41
+ function processGroupId(pid) {
42
+ return native_js_1.native.processGroupId(pid);
37
43
  }
38
44
  /**
39
45
  * Kill an entire process group.
@@ -42,6 +48,6 @@ export function processGroupId(pid) {
42
48
  * @param signal - Signal to send
43
49
  * @returns true if the signal was delivered, false on failure or Windows.
44
50
  */
45
- export function killProcessGroup(pgid, signal) {
46
- return native.killProcessGroup(pgid, signal);
51
+ function killProcessGroup(pgid, signal) {
52
+ return native_js_1.native.killProcessGroup(pgid, signal);
47
53
  }
@@ -1 +1,2 @@
1
- export {};
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,9 +1,14 @@
1
+ "use strict";
1
2
  /**
2
3
  * Bash stream processor — single-pass UTF-8 decode + ANSI strip + binary sanitization.
3
4
  *
4
5
  * Handles chunk boundaries for incomplete UTF-8 and ANSI escape sequences.
5
6
  */
6
- import { native } from "../native.js";
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.processStreamChunk = processStreamChunk;
9
+ exports.stripAnsiNative = stripAnsiNative;
10
+ exports.sanitizeBinaryOutputNative = sanitizeBinaryOutputNative;
11
+ const native_js_1 = require("../native.js");
7
12
  /**
8
13
  * Process a raw bash output chunk in a single pass.
9
14
  *
@@ -14,7 +19,7 @@ import { native } from "../native.js";
14
19
  * Pass the returned `state` to the next call to handle sequences split
15
20
  * across chunk boundaries.
16
21
  */
17
- export function processStreamChunk(chunk, state) {
22
+ function processStreamChunk(chunk, state) {
18
23
  // Convert StreamState arrays to the format napi expects (Vec<u8>)
19
24
  const napiState = state
20
25
  ? {
@@ -22,7 +27,7 @@ export function processStreamChunk(chunk, state) {
22
27
  ansiPending: Array.from(state.ansiPending),
23
28
  }
24
29
  : undefined;
25
- const result = native.processStreamChunk(chunk, napiState);
30
+ const result = native_js_1.native.processStreamChunk(chunk, napiState);
26
31
  return {
27
32
  text: result.text,
28
33
  state: {
@@ -34,8 +39,8 @@ export function processStreamChunk(chunk, state) {
34
39
  /**
35
40
  * Strip ANSI escape sequences from a string.
36
41
  */
37
- export function stripAnsiNative(text) {
38
- return native.stripAnsiNative(text);
42
+ function stripAnsiNative(text) {
43
+ return native_js_1.native.stripAnsiNative(text);
39
44
  }
40
45
  /**
41
46
  * Remove binary garbage and control characters from a string.
@@ -43,6 +48,6 @@ export function stripAnsiNative(text) {
43
48
  * Keeps tab and newline. Removes carriage return, all other control
44
49
  * characters, Unicode format characters (U+FFF9-U+FFFB), and lone surrogates.
45
50
  */
46
- export function sanitizeBinaryOutputNative(text) {
47
- return native.sanitizeBinaryOutputNative(text);
51
+ function sanitizeBinaryOutputNative(text) {
52
+ return native_js_1.native.sanitizeBinaryOutputNative(text);
48
53
  }
@@ -1,11 +1,21 @@
1
+ "use strict";
1
2
  /**
2
3
  * ANSI-aware text measurement and slicing.
3
4
  *
4
5
  * High-performance UTF-16 native implementation with ASCII fast-paths,
5
6
  * single-pass ANSI scanning, and proper Unicode grapheme cluster support.
6
7
  */
7
- import { native } from "../native.js";
8
- export { EllipsisKind } from "./types.js";
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.EllipsisKind = void 0;
10
+ exports.wrapTextWithAnsi = wrapTextWithAnsi;
11
+ exports.truncateToWidth = truncateToWidth;
12
+ exports.sliceWithWidth = sliceWithWidth;
13
+ exports.extractSegments = extractSegments;
14
+ exports.sanitizeText = sanitizeText;
15
+ exports.visibleWidth = visibleWidth;
16
+ const native_js_1 = require("../native.js");
17
+ var types_js_1 = require("./types.js");
18
+ Object.defineProperty(exports, "EllipsisKind", { enumerable: true, get: function () { return types_js_1.EllipsisKind; } });
9
19
  /**
10
20
  * Word-wrap text to a visible width, preserving ANSI escape codes across
11
21
  * line breaks.
@@ -14,8 +24,8 @@ export { EllipsisKind } from "./types.js";
14
24
  * Underline and strikethrough are reset at line ends and restored on the
15
25
  * next line.
16
26
  */
17
- export function wrapTextWithAnsi(text, width, tabWidth) {
18
- return native.wrapTextWithAnsi(text, width, tabWidth);
27
+ function wrapTextWithAnsi(text, width, tabWidth) {
28
+ return native_js_1.native.wrapTextWithAnsi(text, width, tabWidth);
19
29
  }
20
30
  /**
21
31
  * Truncate text to a visible width with an optional ellipsis.
@@ -26,8 +36,8 @@ export function wrapTextWithAnsi(text, width, tabWidth) {
26
36
  * @param pad When true, pad with spaces to exactly `maxWidth`.
27
37
  * @param tabWidth Tab stop width (default 3, range 1-16).
28
38
  */
29
- export function truncateToWidth(text, maxWidth, ellipsisKind, pad, tabWidth) {
30
- return native.truncateToWidth(text, maxWidth, ellipsisKind, pad, tabWidth);
39
+ function truncateToWidth(text, maxWidth, ellipsisKind, pad, tabWidth) {
40
+ return native_js_1.native.truncateToWidth(text, maxWidth, ellipsisKind, pad, tabWidth);
31
41
  }
32
42
  /**
33
43
  * Slice a range of visible columns from a line.
@@ -35,8 +45,8 @@ export function truncateToWidth(text, maxWidth, ellipsisKind, pad, tabWidth) {
35
45
  * Counts terminal cells (skipping ANSI escapes). When `strict` is true,
36
46
  * wide characters that would exceed the range are excluded.
37
47
  */
38
- export function sliceWithWidth(line, startCol, length, strict, tabWidth) {
39
- return native.sliceWithWidth(line, startCol, length, strict, tabWidth);
48
+ function sliceWithWidth(line, startCol, length, strict, tabWidth) {
49
+ return native_js_1.native.sliceWithWidth(line, startCol, length, strict, tabWidth);
40
50
  }
41
51
  /**
42
52
  * Extract the before/after segments around an overlay region.
@@ -44,8 +54,8 @@ export function sliceWithWidth(line, startCol, length, strict, tabWidth) {
44
54
  * ANSI state is tracked so the `after` segment renders correctly even when
45
55
  * the overlay truncates styled text.
46
56
  */
47
- export function extractSegments(line, beforeEnd, afterStart, afterLen, strictAfter, tabWidth) {
48
- return native.extractSegments(line, beforeEnd, afterStart, afterLen, strictAfter, tabWidth);
57
+ function extractSegments(line, beforeEnd, afterStart, afterLen, strictAfter, tabWidth) {
58
+ return native_js_1.native.extractSegments(line, beforeEnd, afterStart, afterLen, strictAfter, tabWidth);
49
59
  }
50
60
  /**
51
61
  * Strip ANSI escape sequences, remove control characters and lone
@@ -53,14 +63,14 @@ export function extractSegments(line, beforeEnd, afterStart, afterLen, strictAft
53
63
  *
54
64
  * Returns the original string when no changes are needed (zero-copy).
55
65
  */
56
- export function sanitizeText(text) {
57
- return native.sanitizeText(text);
66
+ function sanitizeText(text) {
67
+ return native_js_1.native.sanitizeText(text);
58
68
  }
59
69
  /**
60
70
  * Calculate visible width of text excluding ANSI escape sequences.
61
71
  *
62
72
  * Tabs count as `tabWidth` cells (default 3).
63
73
  */
64
- export function visibleWidth(text, tabWidth) {
65
- return native.visibleWidth(text, tabWidth);
74
+ function visibleWidth(text, tabWidth) {
75
+ return native_js_1.native.visibleWidth(text, tabWidth);
66
76
  }
@@ -1,5 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EllipsisKind = void 0;
1
4
  /** Ellipsis style for truncation. */
2
- export var EllipsisKind;
5
+ var EllipsisKind;
3
6
  (function (EllipsisKind) {
4
7
  /** Unicode ellipsis character: \u2026 (width 1) */
5
8
  EllipsisKind[EllipsisKind["Unicode"] = 0] = "Unicode";
@@ -7,4 +10,4 @@ export var EllipsisKind;
7
10
  EllipsisKind[EllipsisKind["Ascii"] = 1] = "Ascii";
8
11
  /** No ellipsis (hard truncate) */
9
12
  EllipsisKind[EllipsisKind["None"] = 2] = "None";
10
- })(EllipsisKind || (EllipsisKind = {}));
13
+ })(EllipsisKind || (exports.EllipsisKind = EllipsisKind = {}));
@@ -1,25 +1,30 @@
1
+ "use strict";
1
2
  /**
2
3
  * Line-boundary-aware output truncation (native Rust).
3
4
  *
4
5
  * Truncates tool output at line boundaries, counting by UTF-8 bytes.
5
6
  * Three modes: head (keep end), tail (keep start), both (keep start+end).
6
7
  */
7
- import { native } from "../native.js";
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.truncateTail = truncateTail;
10
+ exports.truncateHead = truncateHead;
11
+ exports.truncateOutput = truncateOutput;
12
+ const native_js_1 = require("../native.js");
8
13
  /**
9
14
  * Keep the first `maxBytes` worth of complete lines.
10
15
  */
11
- export function truncateTail(text, maxBytes) {
12
- return native.truncateTail(text, maxBytes);
16
+ function truncateTail(text, maxBytes) {
17
+ return native_js_1.native.truncateTail(text, maxBytes);
13
18
  }
14
19
  /**
15
20
  * Keep the last `maxBytes` worth of complete lines.
16
21
  */
17
- export function truncateHead(text, maxBytes) {
18
- return native.truncateHead(text, maxBytes);
22
+ function truncateHead(text, maxBytes) {
23
+ return native_js_1.native.truncateHead(text, maxBytes);
19
24
  }
20
25
  /**
21
26
  * Main entry point: truncate tool output with head/tail/both modes.
22
27
  */
23
- export function truncateOutput(text, maxBytes, mode) {
24
- return native.truncateOutput(text, maxBytes, mode);
28
+ function truncateOutput(text, maxBytes, mode) {
29
+ return native_js_1.native.truncateOutput(text, maxBytes, mode);
25
30
  }
@@ -1,17 +1,22 @@
1
+ "use strict";
1
2
  /**
2
3
  * Native TTSR regex engine.
3
4
  *
4
5
  * Pre-compiles all rule condition patterns into a single Rust RegexSet for
5
6
  * O(1)-style matching per buffer check, replacing per-rule JS regex iteration.
6
7
  */
7
- import { native } from "../native.js";
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.ttsrCompileRules = ttsrCompileRules;
10
+ exports.ttsrCheckBuffer = ttsrCheckBuffer;
11
+ exports.ttsrFreeRules = ttsrFreeRules;
12
+ const native_js_1 = require("../native.js");
8
13
  /**
9
14
  * Compile TTSR rules into an optimized native regex engine.
10
15
  *
11
16
  * Returns an opaque handle for use with `ttsrCheckBuffer` and `ttsrFreeRules`.
12
17
  */
13
- export function ttsrCompileRules(rules) {
14
- return native.ttsrCompileRules(rules);
18
+ function ttsrCompileRules(rules) {
19
+ return native_js_1.native.ttsrCompileRules(rules);
15
20
  }
16
21
  /**
17
22
  * Check a buffer against compiled TTSR rules.
@@ -19,14 +24,14 @@ export function ttsrCompileRules(rules) {
19
24
  * Returns an array of unique rule names whose conditions matched.
20
25
  * All patterns are tested in a single pass via Rust's RegexSet.
21
26
  */
22
- export function ttsrCheckBuffer(handle, buffer) {
23
- return native.ttsrCheckBuffer(handle, buffer);
27
+ function ttsrCheckBuffer(handle, buffer) {
28
+ return native_js_1.native.ttsrCheckBuffer(handle, buffer);
24
29
  }
25
30
  /**
26
31
  * Free a compiled TTSR rule set, releasing native memory.
27
32
  *
28
33
  * Call when rules are no longer needed (e.g., session end).
29
34
  */
30
- export function ttsrFreeRules(handle) {
31
- native.ttsrFreeRules(handle);
35
+ function ttsrFreeRules(handle) {
36
+ native_js_1.native.ttsrFreeRules(handle);
32
37
  }
@@ -1 +1,2 @@
1
- export {};
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,9 +1,13 @@
1
+ "use strict";
1
2
  /**
2
3
  * Native xxHash32 — Rust implementation via napi-rs, with a pure-JS fallback.
3
4
  *
4
5
  * Hashes the UTF-8 representation of the input string with the given seed.
5
6
  */
6
- import { native } from "../native.js";
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.xxHash32Fallback = xxHash32Fallback;
9
+ exports.xxHash32 = xxHash32;
10
+ const native_js_1 = require("../native.js");
7
11
  // ─── Pure-JS xxHash32 fallback ────────────────────────────────────────────────
8
12
  // Used when the native addon is present but does not export xxHash32
9
13
  // (e.g. an older build or an unsupported platform variant).
@@ -62,12 +66,12 @@ function xxHash32JS(input, seed) {
62
66
  * Pure-JS xxHash32 implementation. Exposed for testing to allow CI to validate
63
67
  * the fallback path independently of native addon availability.
64
68
  */
65
- export function xxHash32Fallback(input, seed) {
69
+ function xxHash32Fallback(input, seed) {
66
70
  return xxHash32JS(input, seed);
67
71
  }
68
72
  // Resolve once at module load: prefer native, fall back to JS.
69
- const _xxHash32Impl = typeof native.xxHash32 === "function"
70
- ? (input, seed) => native.xxHash32(input, seed)
73
+ const _xxHash32Impl = typeof native_js_1.native.xxHash32 === "function"
74
+ ? (input, seed) => native_js_1.native.xxHash32(input, seed)
71
75
  : xxHash32JS;
72
76
  /**
73
77
  * Compute xxHash32 of a UTF-8 string.
@@ -80,6 +84,6 @@ const _xxHash32Impl = typeof native.xxHash32 === "function"
80
84
  * @param seed 32-bit seed value.
81
85
  * @returns 32-bit unsigned hash.
82
86
  */
83
- export function xxHash32(input, seed) {
87
+ function xxHash32(input, seed) {
84
88
  return _xxHash32Impl(input, seed);
85
89
  }
@@ -2,7 +2,7 @@
2
2
  "name": "@gsd/native",
3
3
  "version": "0.1.0",
4
4
  "description": "Native Rust bindings for GSD \u2014 high-performance native modules via N-API",
5
- "type": "module",
5
+ "type": "commonjs",
6
6
  "main": "./dist/index.js",
7
7
  "types": "./dist/index.d.ts",
8
8
  "scripts": {
@@ -14,75 +14,75 @@
14
14
  "exports": {
15
15
  ".": {
16
16
  "types": "./dist/index.d.ts",
17
- "import": "./dist/index.js"
17
+ "default": "./dist/index.js"
18
18
  },
19
19
  "./grep": {
20
20
  "types": "./dist/grep/index.d.ts",
21
- "import": "./dist/grep/index.js"
21
+ "default": "./dist/grep/index.js"
22
22
  },
23
23
  "./ps": {
24
24
  "types": "./dist/ps/index.d.ts",
25
- "import": "./dist/ps/index.js"
25
+ "default": "./dist/ps/index.js"
26
26
  },
27
27
  "./glob": {
28
28
  "types": "./dist/glob/index.d.ts",
29
- "import": "./dist/glob/index.js"
29
+ "default": "./dist/glob/index.js"
30
30
  },
31
31
  "./clipboard": {
32
32
  "types": "./dist/clipboard/index.d.ts",
33
- "import": "./dist/clipboard/index.js"
33
+ "default": "./dist/clipboard/index.js"
34
34
  },
35
35
  "./ast": {
36
36
  "types": "./dist/ast/index.d.ts",
37
- "import": "./dist/ast/index.js"
37
+ "default": "./dist/ast/index.js"
38
38
  },
39
39
  "./html": {
40
40
  "types": "./dist/html/index.d.ts",
41
- "import": "./dist/html/index.js"
41
+ "default": "./dist/html/index.js"
42
42
  },
43
43
  "./text": {
44
44
  "types": "./dist/text/index.d.ts",
45
- "import": "./dist/text/index.js"
45
+ "default": "./dist/text/index.js"
46
46
  },
47
47
  "./fd": {
48
48
  "types": "./dist/fd/index.d.ts",
49
- "import": "./dist/fd/index.js"
49
+ "default": "./dist/fd/index.js"
50
50
  },
51
51
  "./image": {
52
52
  "types": "./dist/image/index.d.ts",
53
- "import": "./dist/image/index.js"
53
+ "default": "./dist/image/index.js"
54
54
  },
55
55
  "./xxhash": {
56
56
  "types": "./dist/xxhash/index.d.ts",
57
- "import": "./dist/xxhash/index.js"
57
+ "default": "./dist/xxhash/index.js"
58
58
  },
59
59
  "./diff": {
60
60
  "types": "./dist/diff/index.d.ts",
61
- "import": "./dist/diff/index.js"
61
+ "default": "./dist/diff/index.js"
62
62
  },
63
63
  "./gsd-parser": {
64
64
  "types": "./dist/gsd-parser/index.d.ts",
65
- "import": "./dist/gsd-parser/index.js"
65
+ "default": "./dist/gsd-parser/index.js"
66
66
  },
67
67
  "./highlight": {
68
68
  "types": "./dist/highlight/index.d.ts",
69
- "import": "./dist/highlight/index.js"
69
+ "default": "./dist/highlight/index.js"
70
70
  },
71
71
  "./json-parse": {
72
72
  "types": "./dist/json-parse/index.d.ts",
73
- "import": "./dist/json-parse/index.js"
73
+ "default": "./dist/json-parse/index.js"
74
74
  },
75
75
  "./stream-process": {
76
76
  "types": "./dist/stream-process/index.d.ts",
77
- "import": "./dist/stream-process/index.js"
77
+ "default": "./dist/stream-process/index.js"
78
78
  },
79
79
  "./truncate": {
80
80
  "types": "./dist/truncate/index.d.ts",
81
- "import": "./dist/truncate/index.js"
81
+ "default": "./dist/truncate/index.js"
82
82
  },
83
83
  "./ttsr": {
84
84
  "types": "./dist/ttsr/index.d.ts",
85
- "import": "./dist/ttsr/index.js"
85
+ "default": "./dist/ttsr/index.js"
86
86
  }
87
87
  },
88
88
  "files": [
@@ -0,0 +1,91 @@
1
+ /**
2
+ * Tests that the @gsd/native package.json is correctly configured
3
+ * for Node.js module resolution (ESM/CJS compatibility).
4
+ *
5
+ * Regression test for #2861: "type": "module" + "import"-only export
6
+ * conditions caused crashes on Node.js v24 when the parent package also
7
+ * declared "type": "module" and strict ESM resolution was enforced.
8
+ */
9
+
10
+ import { test, describe } from "node:test";
11
+ import assert from "node:assert/strict";
12
+ import { readFileSync } from "node:fs";
13
+ import * as path from "node:path";
14
+ import { fileURLToPath } from "node:url";
15
+
16
+ const __dirname = path.dirname(fileURLToPath(import.meta.url));
17
+ const pkgPath = path.resolve(__dirname, "..", "..", "package.json");
18
+ const pkg = JSON.parse(readFileSync(pkgPath, "utf8"));
19
+
20
+ describe("@gsd/native module compatibility (#2861)", () => {
21
+ test("package.json must not declare type: module (compiled output is CJS-compatible)", () => {
22
+ // The compiled output uses createRequire() to load .node addons.
23
+ // Declaring "type": "module" forces Node.js to treat .js files as ESM,
24
+ // but the package needs "type": "commonjs" to override the parent
25
+ // package's "type": "module" and ensure correct CJS semantics.
26
+ assert.notEqual(
27
+ pkg.type,
28
+ "module",
29
+ 'package.json must not set "type": "module" — this causes crashes on Node.js v24 ' +
30
+ "when the parent package also declares ESM (see #2861)",
31
+ );
32
+ });
33
+
34
+ test("package.json should explicitly declare type: commonjs", () => {
35
+ // When installed as a dependency under a parent with "type": "module"
36
+ // (e.g. gsd-pi), an absent "type" field would inherit the parent's
37
+ // ESM setting. Explicit "commonjs" overrides this.
38
+ assert.equal(
39
+ pkg.type,
40
+ "commonjs",
41
+ 'package.json must explicitly set "type": "commonjs" to override ' +
42
+ "the parent package's ESM declaration",
43
+ );
44
+ });
45
+
46
+ test("all export conditions must use 'default' (not 'import'-only)", () => {
47
+ // The "import" condition key restricts resolution to ESM import
48
+ // statements only. Using "default" ensures the export works for both
49
+ // require() and import, which is essential for a CJS package that may
50
+ // be consumed from ESM code via Node's CJS interop.
51
+ const exportsMap = pkg.exports;
52
+ assert.ok(exportsMap, "package.json must have an exports map");
53
+
54
+ for (const [subpath, conditions] of Object.entries(exportsMap)) {
55
+ assert.ok(
56
+ !conditions.import || conditions.default,
57
+ `exports["${subpath}"] uses "import" condition without "default" — ` +
58
+ `this breaks CJS consumers and Node.js v24 strict resolution`,
59
+ );
60
+ }
61
+ });
62
+
63
+ test("native.ts source must not use bare import.meta.url (parse-time error in CJS)", () => {
64
+ // When compiled to CJS, import.meta is a *parse-time* syntax error --
65
+ // typeof guards don't help because Node rejects the syntax before
66
+ // executing any code. The source must wrap import.meta access in
67
+ // an indirect eval so the CJS parser never sees the bare syntax.
68
+ const nativeSrc = readFileSync(
69
+ path.resolve(__dirname, "..", "native.ts"),
70
+ "utf8",
71
+ );
72
+
73
+ // Bare import.meta.url (NOT wrapped) would crash at parse time in CJS.
74
+ // These regexes match direct usage like fileURLToPath(import.meta.url)
75
+ // and createRequire(import.meta.url), but NOT indirect patterns that
76
+ // hide import.meta from the CJS parser.
77
+ const hasBareImportMetaDirname = /path\.dirname\(.*fileURLToPath\(import\.meta\.url\)\)/.test(nativeSrc);
78
+ const hasBareImportMetaRequire = /createRequire\(import\.meta\.url\)/.test(nativeSrc);
79
+
80
+ assert.ok(
81
+ !hasBareImportMetaDirname,
82
+ "native.ts must not use bare import.meta.url in fileURLToPath() -- " +
83
+ "this is a parse-time syntax error in CJS; use indirect eval",
84
+ );
85
+ assert.ok(
86
+ !hasBareImportMetaRequire,
87
+ "native.ts must not use bare import.meta.url in createRequire() -- " +
88
+ "this is a parse-time syntax error in CJS; use indirect eval",
89
+ );
90
+ });
91
+ });