gsd-pi 2.27.0 → 2.28.0-dev.346ee62

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 (1237) hide show
  1. package/README.md +39 -12
  2. package/dist/cli.js +20 -21
  3. package/dist/extension-discovery.d.ts +16 -0
  4. package/dist/extension-discovery.js +66 -0
  5. package/dist/headless-answers.d.ts +51 -0
  6. package/dist/headless-answers.js +224 -0
  7. package/dist/headless-context.d.ts +18 -0
  8. package/dist/headless-context.js +44 -0
  9. package/dist/headless-events.d.ts +28 -0
  10. package/dist/headless-events.js +59 -0
  11. package/dist/headless-query.d.ts +40 -0
  12. package/dist/headless-query.js +77 -0
  13. package/dist/headless-ui.d.ts +23 -0
  14. package/dist/headless-ui.js +103 -0
  15. package/dist/headless.d.ts +2 -0
  16. package/dist/headless.js +67 -186
  17. package/dist/help-text.js +6 -0
  18. package/dist/loader.js +18 -59
  19. package/dist/onboarding.js +8 -7
  20. package/dist/remote-questions-config.js +8 -3
  21. package/dist/resource-loader.d.ts +1 -6
  22. package/dist/resource-loader.js +52 -95
  23. package/dist/resources/extensions/ask-user-questions.ts +3 -2
  24. package/dist/resources/extensions/bg-shell/bg-shell-command.ts +219 -0
  25. package/dist/resources/extensions/bg-shell/bg-shell-lifecycle.ts +400 -0
  26. package/dist/resources/extensions/bg-shell/bg-shell-tool.ts +985 -0
  27. package/dist/resources/extensions/bg-shell/index.ts +17 -1561
  28. package/dist/resources/extensions/bg-shell/overlay.ts +4 -0
  29. package/dist/resources/extensions/bg-shell/utilities.ts +4 -16
  30. package/dist/resources/extensions/browser-tools/capture.ts +34 -2
  31. package/dist/resources/extensions/browser-tools/lifecycle.ts +5 -5
  32. package/dist/resources/extensions/browser-tools/settle.ts +1 -1
  33. package/dist/resources/extensions/browser-tools/state.ts +5 -5
  34. package/dist/resources/extensions/browser-tools/tests/browser-tools-integration.test.mjs +1 -1
  35. package/dist/resources/extensions/browser-tools/tests/browser-tools-unit.test.cjs +3 -3
  36. package/dist/resources/extensions/browser-tools/tools/assertions.ts +1 -1
  37. package/dist/resources/extensions/browser-tools/tools/device.ts +1 -1
  38. package/dist/resources/extensions/browser-tools/tools/extract.ts +1 -1
  39. package/dist/resources/extensions/browser-tools/tools/navigation.ts +6 -6
  40. package/dist/resources/extensions/browser-tools/tools/network-mock.ts +1 -1
  41. package/dist/resources/extensions/browser-tools/tools/pages.ts +1 -1
  42. package/dist/resources/extensions/browser-tools/tools/screenshot.ts +28 -10
  43. package/dist/resources/extensions/browser-tools/tools/state-persistence.ts +1 -1
  44. package/dist/resources/extensions/browser-tools/tools/visual-diff.ts +1 -1
  45. package/dist/resources/extensions/browser-tools/utils.ts +5 -5
  46. package/dist/resources/extensions/get-secrets-from-user.ts +1 -1
  47. package/dist/resources/extensions/google-search/index.ts +21 -8
  48. package/dist/resources/extensions/gsd/activity-log.ts +2 -1
  49. package/dist/resources/extensions/gsd/atomic-write.ts +35 -0
  50. package/dist/resources/extensions/gsd/auto/session.ts +12 -0
  51. package/dist/resources/extensions/gsd/auto-dashboard.ts +84 -3
  52. package/dist/resources/extensions/gsd/auto-idempotency.ts +150 -0
  53. package/dist/resources/extensions/gsd/auto-post-unit.ts +591 -0
  54. package/dist/resources/extensions/gsd/auto-prompts.ts +116 -22
  55. package/dist/resources/extensions/gsd/auto-recovery.ts +20 -9
  56. package/dist/resources/extensions/gsd/auto-start.ts +500 -0
  57. package/dist/resources/extensions/gsd/auto-stuck-detection.ts +220 -0
  58. package/dist/resources/extensions/gsd/auto-timers.ts +223 -0
  59. package/dist/resources/extensions/gsd/auto-unit-closeout.ts +3 -1
  60. package/dist/resources/extensions/gsd/auto-verification.ts +195 -0
  61. package/dist/resources/extensions/gsd/auto-worktree-sync.ts +8 -31
  62. package/dist/resources/extensions/gsd/auto-worktree.ts +83 -67
  63. package/dist/resources/extensions/gsd/auto.ts +364 -1873
  64. package/dist/resources/extensions/gsd/commands-config.ts +102 -0
  65. package/dist/resources/extensions/gsd/commands-handlers.ts +402 -0
  66. package/dist/resources/extensions/gsd/commands-inspect.ts +90 -0
  67. package/dist/resources/extensions/gsd/commands-logs.ts +537 -0
  68. package/dist/resources/extensions/gsd/commands-maintenance.ts +206 -0
  69. package/dist/resources/extensions/gsd/commands-prefs-wizard.ts +747 -0
  70. package/dist/resources/extensions/gsd/commands.ts +378 -1431
  71. package/dist/resources/extensions/gsd/constants.ts +21 -0
  72. package/dist/resources/extensions/gsd/context-budget.ts +25 -2
  73. package/dist/resources/extensions/gsd/crash-recovery.ts +4 -2
  74. package/dist/resources/extensions/gsd/dashboard-overlay.ts +13 -4
  75. package/dist/resources/extensions/gsd/db-writer.ts +21 -2
  76. package/dist/resources/extensions/gsd/detection.ts +469 -0
  77. package/dist/resources/extensions/gsd/diff-context.ts +2 -1
  78. package/dist/resources/extensions/gsd/dispatch-guard.ts +4 -0
  79. package/dist/resources/extensions/gsd/docs/preferences-reference.md +83 -0
  80. package/dist/resources/extensions/gsd/doctor-checks.ts +564 -0
  81. package/dist/resources/extensions/gsd/doctor-format.ts +78 -0
  82. package/dist/resources/extensions/gsd/doctor-types.ts +72 -0
  83. package/dist/resources/extensions/gsd/doctor.ts +64 -701
  84. package/dist/resources/extensions/gsd/errors.ts +0 -2
  85. package/dist/resources/extensions/gsd/export-html.ts +367 -11
  86. package/dist/resources/extensions/gsd/export.ts +119 -30
  87. package/dist/resources/extensions/gsd/files.ts +8 -126
  88. package/dist/resources/extensions/gsd/forensics.ts +2 -12
  89. package/dist/resources/extensions/gsd/git-constants.ts +11 -0
  90. package/dist/resources/extensions/gsd/git-service.ts +13 -9
  91. package/dist/resources/extensions/gsd/gsd-db.ts +26 -6
  92. package/dist/resources/extensions/gsd/guided-flow-queue.ts +451 -0
  93. package/dist/resources/extensions/gsd/guided-flow.ts +231 -514
  94. package/dist/resources/extensions/gsd/history.ts +2 -20
  95. package/dist/resources/extensions/gsd/index.ts +206 -45
  96. package/dist/resources/extensions/gsd/init-wizard.ts +615 -0
  97. package/dist/resources/extensions/gsd/jsonl-utils.ts +21 -0
  98. package/dist/resources/extensions/gsd/key-manager.ts +995 -0
  99. package/dist/resources/extensions/gsd/metrics.ts +32 -5
  100. package/dist/resources/extensions/gsd/migrate/command.ts +1 -1
  101. package/dist/resources/extensions/gsd/migrate/parsers.ts +10 -95
  102. package/dist/resources/extensions/gsd/milestone-actions.ts +126 -0
  103. package/dist/resources/extensions/gsd/milestone-ids.ts +95 -0
  104. package/dist/resources/extensions/gsd/native-git-bridge.ts +5 -10
  105. package/dist/resources/extensions/gsd/parallel-eligibility.ts +3 -3
  106. package/dist/resources/extensions/gsd/paths.ts +1 -3
  107. package/dist/resources/extensions/gsd/plugin-importer.ts +3 -2
  108. package/dist/resources/extensions/gsd/preferences-hooks.ts +10 -0
  109. package/dist/resources/extensions/gsd/preferences-models.ts +323 -0
  110. package/dist/resources/extensions/gsd/preferences-skills.ts +169 -0
  111. package/dist/resources/extensions/gsd/preferences-types.ts +223 -0
  112. package/dist/resources/extensions/gsd/preferences-validation.ts +597 -0
  113. package/dist/resources/extensions/gsd/preferences.ts +219 -1305
  114. package/dist/resources/extensions/gsd/prompt-cache-optimizer.ts +213 -0
  115. package/dist/resources/extensions/gsd/prompt-compressor.ts +508 -0
  116. package/dist/resources/extensions/gsd/prompt-loader.ts +4 -2
  117. package/dist/resources/extensions/gsd/prompt-ordering.ts +200 -0
  118. package/dist/resources/extensions/gsd/prompts/complete-milestone.md +2 -2
  119. package/dist/resources/extensions/gsd/prompts/complete-slice.md +4 -4
  120. package/dist/resources/extensions/gsd/prompts/discuss-headless.md +2 -4
  121. package/dist/resources/extensions/gsd/prompts/discuss.md +13 -5
  122. package/dist/resources/extensions/gsd/prompts/execute-task.md +1 -2
  123. package/dist/resources/extensions/gsd/prompts/guided-complete-slice.md +1 -1
  124. package/dist/resources/extensions/gsd/prompts/guided-plan-milestone.md +0 -1
  125. package/dist/resources/extensions/gsd/prompts/plan-milestone.md +1 -2
  126. package/dist/resources/extensions/gsd/prompts/plan-slice.md +1 -2
  127. package/dist/resources/extensions/gsd/prompts/queue.md +30 -0
  128. package/dist/resources/extensions/gsd/prompts/quick-task.md +0 -6
  129. package/dist/resources/extensions/gsd/prompts/replan-slice.md +0 -1
  130. package/dist/resources/extensions/gsd/prompts/rewrite-docs.md +0 -1
  131. package/dist/resources/extensions/gsd/prompts/system.md +5 -2
  132. package/dist/resources/extensions/gsd/provider-error-pause.ts +59 -10
  133. package/dist/resources/extensions/gsd/queue-order.ts +1 -1
  134. package/dist/resources/extensions/gsd/queue-reorder-ui.ts +15 -2
  135. package/dist/resources/extensions/gsd/quick.ts +18 -15
  136. package/dist/resources/extensions/gsd/reports.ts +1 -7
  137. package/dist/resources/extensions/gsd/safe-fs.ts +47 -0
  138. package/dist/resources/extensions/gsd/semantic-chunker.ts +336 -0
  139. package/dist/resources/extensions/gsd/session-forensics.ts +8 -23
  140. package/dist/resources/extensions/gsd/session-lock.ts +284 -0
  141. package/dist/resources/extensions/gsd/skills/gsd-headless/SKILL.md +80 -16
  142. package/dist/resources/extensions/gsd/skills/gsd-headless/references/answer-injection.md +35 -6
  143. package/dist/resources/extensions/gsd/skills/gsd-headless/references/commands.md +7 -2
  144. package/dist/resources/extensions/gsd/skills/gsd-headless/references/multi-session.md +4 -13
  145. package/dist/resources/extensions/gsd/state.ts +54 -2
  146. package/dist/resources/extensions/gsd/structured-data-formatter.ts +144 -0
  147. package/dist/resources/extensions/gsd/summary-distiller.ts +258 -0
  148. package/dist/resources/extensions/gsd/templates/preferences.md +34 -0
  149. package/dist/resources/extensions/gsd/tests/activity-log.test.ts +213 -0
  150. package/dist/resources/extensions/gsd/tests/agent-end-retry.test.ts +107 -0
  151. package/dist/resources/extensions/gsd/tests/all-milestones-complete-merge.test.ts +197 -0
  152. package/dist/resources/extensions/gsd/tests/auto-preflight.test.ts +33 -39
  153. package/dist/resources/extensions/gsd/tests/auto-secrets-gate.test.ts +108 -2
  154. package/dist/resources/extensions/gsd/tests/auto-session-encapsulation.test.ts +257 -0
  155. package/dist/resources/extensions/gsd/tests/auto-worktree-milestone-merge.test.ts +3 -0
  156. package/dist/resources/extensions/gsd/tests/commands-logs.test.ts +241 -0
  157. package/dist/resources/extensions/gsd/tests/context-budget.test.ts +69 -0
  158. package/dist/resources/extensions/gsd/tests/detection.test.ts +398 -0
  159. package/dist/resources/extensions/gsd/tests/discuss-prompt.test.ts +12 -24
  160. package/dist/resources/extensions/gsd/tests/dispatch-guard.test.ts +118 -94
  161. package/dist/resources/extensions/gsd/tests/dispatch-stall-guard.test.ts +126 -0
  162. package/dist/resources/extensions/gsd/tests/dist-redirect.mjs +7 -3
  163. package/dist/resources/extensions/gsd/tests/doctor-fixlevel.test.ts +75 -0
  164. package/dist/resources/extensions/gsd/tests/doctor-git.test.ts +17 -55
  165. package/dist/resources/extensions/gsd/tests/export-html-all.test.ts +105 -0
  166. package/dist/resources/extensions/gsd/tests/export-html-enhancements.test.ts +375 -0
  167. package/dist/resources/extensions/gsd/tests/extension-selector-separator.test.ts +122 -0
  168. package/dist/resources/extensions/gsd/tests/feature-branch-lifecycle-integration.test.ts +3 -0
  169. package/dist/resources/extensions/gsd/tests/headless-answers.test.ts +340 -0
  170. package/dist/resources/extensions/gsd/tests/headless-query.test.ts +162 -0
  171. package/dist/resources/extensions/gsd/tests/in-flight-tool-tracking.test.ts +24 -82
  172. package/dist/resources/extensions/gsd/tests/init-wizard.test.ts +197 -0
  173. package/dist/resources/extensions/gsd/tests/key-manager.test.ts +414 -0
  174. package/dist/resources/extensions/gsd/tests/metrics.test.ts +173 -305
  175. package/dist/resources/extensions/gsd/tests/milestone-transition-worktree.test.ts +3 -0
  176. package/dist/resources/extensions/gsd/tests/model-isolation.test.ts +59 -1
  177. package/dist/resources/extensions/gsd/tests/next-milestone-id.test.ts +18 -61
  178. package/dist/resources/extensions/gsd/tests/none-mode-gates.test.ts +17 -8
  179. package/dist/resources/extensions/gsd/tests/parallel-merge.test.ts +3 -0
  180. package/dist/resources/extensions/gsd/tests/park-edge-cases.test.ts +276 -0
  181. package/dist/resources/extensions/gsd/tests/park-milestone.test.ts +401 -0
  182. package/dist/resources/extensions/gsd/tests/plan-slice-prompt.test.ts +23 -47
  183. package/dist/resources/extensions/gsd/tests/preferences.test.ts +284 -0
  184. package/dist/resources/extensions/gsd/tests/prompt-cache-optimizer.test.ts +314 -0
  185. package/dist/resources/extensions/gsd/tests/prompt-compressor.test.ts +529 -0
  186. package/dist/resources/extensions/gsd/tests/prompt-ordering.test.ts +296 -0
  187. package/dist/resources/extensions/gsd/tests/provider-errors.test.ts +338 -0
  188. package/dist/resources/extensions/gsd/tests/reassess-detection.test.ts +154 -0
  189. package/dist/resources/extensions/gsd/tests/remote-questions.test.ts +1 -1
  190. package/dist/resources/extensions/gsd/tests/remote-status.test.ts +2 -2
  191. package/dist/resources/extensions/gsd/tests/roadmap-slices.test.ts +43 -60
  192. package/dist/resources/extensions/gsd/tests/semantic-chunker.test.ts +426 -0
  193. package/dist/resources/extensions/gsd/tests/session-lock.test.ts +315 -0
  194. package/dist/resources/extensions/gsd/tests/stale-worktree-cwd.test.ts +3 -0
  195. package/dist/resources/extensions/gsd/tests/stop-auto-remote.test.ts +8 -5
  196. package/dist/resources/extensions/gsd/tests/structured-data-formatter.test.ts +365 -0
  197. package/dist/resources/extensions/gsd/tests/summary-distiller.test.ts +323 -0
  198. package/dist/resources/extensions/gsd/tests/token-counter.test.ts +129 -0
  199. package/dist/resources/extensions/gsd/tests/token-optimization-benchmark.test.ts +1272 -0
  200. package/dist/resources/extensions/gsd/tests/token-optimization-prefs.test.ts +164 -0
  201. package/dist/resources/extensions/gsd/tests/token-profile.test.ts +8 -1
  202. package/dist/resources/extensions/gsd/tests/triage-dispatch.test.ts +69 -73
  203. package/dist/resources/extensions/gsd/tests/update-command.test.ts +67 -0
  204. package/dist/resources/extensions/gsd/tests/validate-directory.test.ts +222 -0
  205. package/dist/resources/extensions/gsd/tests/validate-milestone.test.ts +55 -0
  206. package/dist/resources/extensions/gsd/tests/verification-gate.test.ts +115 -1
  207. package/dist/resources/extensions/gsd/tests/visualizer-overlay.test.ts +2 -2
  208. package/dist/resources/extensions/gsd/tests/visualizer-views.test.ts +2 -1
  209. package/dist/resources/extensions/gsd/tests/workspace-index.test.ts +24 -61
  210. package/dist/resources/extensions/gsd/tests/worktree-e2e.test.ts +5 -2
  211. package/dist/resources/extensions/gsd/tests/write-gate.test.ts +132 -43
  212. package/dist/resources/extensions/gsd/token-counter.ts +20 -0
  213. package/dist/resources/extensions/gsd/triage-ui.ts +1 -1
  214. package/dist/resources/extensions/gsd/types.ts +4 -1
  215. package/dist/resources/extensions/gsd/validate-directory.ts +164 -0
  216. package/dist/resources/extensions/gsd/verification-evidence.ts +7 -4
  217. package/dist/resources/extensions/gsd/verification-gate.ts +70 -5
  218. package/dist/resources/extensions/gsd/visualizer-data.ts +1 -1
  219. package/dist/resources/extensions/gsd/visualizer-overlay.ts +5 -2
  220. package/dist/resources/extensions/gsd/visualizer-views.ts +2 -3
  221. package/dist/resources/extensions/gsd/worktree-command.ts +4 -51
  222. package/dist/resources/extensions/gsd/worktree-manager.ts +7 -9
  223. package/dist/resources/extensions/gsd/worktree.ts +41 -1
  224. package/dist/resources/extensions/mcporter/index.ts +27 -14
  225. package/dist/resources/extensions/remote-questions/manager.ts +6 -24
  226. package/dist/resources/extensions/remote-questions/mod.ts +16 -0
  227. package/dist/resources/extensions/remote-questions/notify.ts +91 -0
  228. package/dist/resources/extensions/remote-questions/remote-command.ts +1 -1
  229. package/dist/resources/extensions/remote-questions/store.ts +5 -1
  230. package/dist/resources/extensions/remote-questions/types.ts +26 -3
  231. package/dist/resources/extensions/search-the-web/native-search.ts +7 -0
  232. package/dist/resources/extensions/search-the-web/provider.ts +15 -3
  233. package/dist/resources/extensions/search-the-web/tool-llm-context.ts +1 -13
  234. package/dist/resources/extensions/search-the-web/tool-search.ts +1 -13
  235. package/dist/resources/extensions/shared/format-utils.ts +53 -0
  236. package/dist/resources/extensions/shared/frontmatter.ts +117 -0
  237. package/dist/resources/extensions/shared/mod.ts +30 -0
  238. package/dist/resources/extensions/shared/sanitize.ts +19 -0
  239. package/dist/resources/extensions/slash-commands/create-extension.ts +1 -1
  240. package/dist/resources/extensions/slash-commands/create-slash-command.ts +1 -1
  241. package/dist/resources/extensions/subagent/index.ts +1 -2
  242. package/dist/resources/extensions/ttsr/index.ts +5 -0
  243. package/dist/resources/extensions/ttsr/rule-loader.ts +4 -51
  244. package/dist/resources/extensions/universal-config/discovery.ts +37 -15
  245. package/dist/resources/extensions/voice/index.ts +1 -1
  246. package/dist/resources/skills/accessibility/SKILL.md +522 -0
  247. package/dist/resources/skills/accessibility/references/WCAG.md +162 -0
  248. package/dist/resources/skills/agent-browser/SKILL.md +517 -0
  249. package/dist/resources/skills/agent-browser/references/authentication.md +202 -0
  250. package/dist/resources/skills/agent-browser/references/commands.md +263 -0
  251. package/dist/resources/skills/agent-browser/references/profiling.md +120 -0
  252. package/dist/resources/skills/agent-browser/references/proxy-support.md +194 -0
  253. package/dist/resources/skills/agent-browser/references/session-management.md +193 -0
  254. package/dist/resources/skills/agent-browser/references/snapshot-refs.md +194 -0
  255. package/dist/resources/skills/agent-browser/references/video-recording.md +173 -0
  256. package/dist/resources/skills/agent-browser/templates/authenticated-session.sh +105 -0
  257. package/dist/resources/skills/agent-browser/templates/capture-workflow.sh +69 -0
  258. package/dist/resources/skills/agent-browser/templates/form-automation.sh +62 -0
  259. package/dist/resources/skills/best-practices/SKILL.md +583 -0
  260. package/dist/resources/skills/code-optimizer/SKILL.md +160 -0
  261. package/dist/resources/skills/code-optimizer/references/algorithmic-complexity.md +66 -0
  262. package/dist/resources/skills/code-optimizer/references/build-compilation.md +90 -0
  263. package/dist/resources/skills/code-optimizer/references/bundle-dependencies.md +82 -0
  264. package/dist/resources/skills/code-optimizer/references/caching-memoization.md +76 -0
  265. package/dist/resources/skills/code-optimizer/references/concurrency-async.md +80 -0
  266. package/dist/resources/skills/code-optimizer/references/config-infra.md +71 -0
  267. package/dist/resources/skills/code-optimizer/references/data-structures.md +80 -0
  268. package/dist/resources/skills/code-optimizer/references/database-queries.md +76 -0
  269. package/dist/resources/skills/code-optimizer/references/dead-code-redundancy.md +84 -0
  270. package/dist/resources/skills/code-optimizer/references/error-resilience.md +80 -0
  271. package/dist/resources/skills/code-optimizer/references/io-network.md +89 -0
  272. package/dist/resources/skills/code-optimizer/references/logging-observability.md +64 -0
  273. package/dist/resources/skills/code-optimizer/references/memory-resources.md +66 -0
  274. package/dist/resources/skills/code-optimizer/references/rendering-ui.md +90 -0
  275. package/dist/resources/skills/code-optimizer/references/security-performance.md +68 -0
  276. package/dist/resources/skills/core-web-vitals/SKILL.md +441 -0
  277. package/dist/resources/skills/core-web-vitals/references/LCP.md +208 -0
  278. package/dist/resources/skills/make-interfaces-feel-better/SKILL.md +122 -0
  279. package/dist/resources/skills/make-interfaces-feel-better/animations.md +379 -0
  280. package/dist/resources/skills/make-interfaces-feel-better/performance.md +88 -0
  281. package/dist/resources/skills/make-interfaces-feel-better/surfaces.md +247 -0
  282. package/dist/resources/skills/make-interfaces-feel-better/typography.md +123 -0
  283. package/dist/resources/skills/react-best-practices/README.md +123 -0
  284. package/dist/resources/skills/react-best-practices/SKILL.md +136 -0
  285. package/dist/resources/skills/react-best-practices/metadata.json +15 -0
  286. package/dist/resources/skills/react-best-practices/rules/_sections.md +46 -0
  287. package/dist/resources/skills/react-best-practices/rules/_template.md +28 -0
  288. package/dist/resources/skills/react-best-practices/rules/advanced-event-handler-refs.md +55 -0
  289. package/dist/resources/skills/react-best-practices/rules/advanced-init-once.md +42 -0
  290. package/dist/resources/skills/react-best-practices/rules/advanced-use-latest.md +39 -0
  291. package/dist/resources/skills/react-best-practices/rules/async-api-routes.md +38 -0
  292. package/dist/resources/skills/react-best-practices/rules/async-defer-await.md +80 -0
  293. package/dist/resources/skills/react-best-practices/rules/async-dependencies.md +51 -0
  294. package/dist/resources/skills/react-best-practices/rules/async-parallel.md +28 -0
  295. package/dist/resources/skills/react-best-practices/rules/async-suspense-boundaries.md +99 -0
  296. package/dist/resources/skills/react-best-practices/rules/bundle-barrel-imports.md +59 -0
  297. package/dist/resources/skills/react-best-practices/rules/bundle-conditional.md +31 -0
  298. package/dist/resources/skills/react-best-practices/rules/bundle-defer-third-party.md +49 -0
  299. package/dist/resources/skills/react-best-practices/rules/bundle-dynamic-imports.md +35 -0
  300. package/dist/resources/skills/react-best-practices/rules/bundle-preload.md +50 -0
  301. package/dist/resources/skills/react-best-practices/rules/client-event-listeners.md +74 -0
  302. package/dist/resources/skills/react-best-practices/rules/client-localstorage-schema.md +71 -0
  303. package/dist/resources/skills/react-best-practices/rules/client-passive-event-listeners.md +48 -0
  304. package/dist/resources/skills/react-best-practices/rules/client-swr-dedup.md +56 -0
  305. package/dist/resources/skills/react-best-practices/rules/js-batch-dom-css.md +107 -0
  306. package/dist/resources/skills/react-best-practices/rules/js-cache-function-results.md +80 -0
  307. package/dist/resources/skills/react-best-practices/rules/js-cache-property-access.md +28 -0
  308. package/dist/resources/skills/react-best-practices/rules/js-cache-storage.md +70 -0
  309. package/dist/resources/skills/react-best-practices/rules/js-combine-iterations.md +32 -0
  310. package/dist/resources/skills/react-best-practices/rules/js-early-exit.md +50 -0
  311. package/dist/resources/skills/react-best-practices/rules/js-hoist-regexp.md +45 -0
  312. package/dist/resources/skills/react-best-practices/rules/js-index-maps.md +37 -0
  313. package/dist/resources/skills/react-best-practices/rules/js-length-check-first.md +49 -0
  314. package/dist/resources/skills/react-best-practices/rules/js-min-max-loop.md +82 -0
  315. package/dist/resources/skills/react-best-practices/rules/js-set-map-lookups.md +24 -0
  316. package/dist/resources/skills/react-best-practices/rules/js-tosorted-immutable.md +57 -0
  317. package/dist/resources/skills/react-best-practices/rules/rendering-activity.md +26 -0
  318. package/dist/resources/skills/react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
  319. package/dist/resources/skills/react-best-practices/rules/rendering-conditional-render.md +40 -0
  320. package/dist/resources/skills/react-best-practices/rules/rendering-content-visibility.md +38 -0
  321. package/dist/resources/skills/react-best-practices/rules/rendering-hoist-jsx.md +46 -0
  322. package/dist/resources/skills/react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
  323. package/dist/resources/skills/react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
  324. package/dist/resources/skills/react-best-practices/rules/rendering-svg-precision.md +28 -0
  325. package/dist/resources/skills/react-best-practices/rules/rendering-usetransition-loading.md +75 -0
  326. package/dist/resources/skills/react-best-practices/rules/rerender-defer-reads.md +39 -0
  327. package/dist/resources/skills/react-best-practices/rules/rerender-dependencies.md +45 -0
  328. package/dist/resources/skills/react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
  329. package/dist/resources/skills/react-best-practices/rules/rerender-derived-state.md +29 -0
  330. package/dist/resources/skills/react-best-practices/rules/rerender-functional-setstate.md +74 -0
  331. package/dist/resources/skills/react-best-practices/rules/rerender-lazy-state-init.md +58 -0
  332. package/dist/resources/skills/react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
  333. package/dist/resources/skills/react-best-practices/rules/rerender-memo.md +44 -0
  334. package/dist/resources/skills/react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
  335. package/dist/resources/skills/react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
  336. package/dist/resources/skills/react-best-practices/rules/rerender-transitions.md +40 -0
  337. package/dist/resources/skills/react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
  338. package/dist/resources/skills/react-best-practices/rules/server-after-nonblocking.md +73 -0
  339. package/dist/resources/skills/react-best-practices/rules/server-auth-actions.md +96 -0
  340. package/dist/resources/skills/react-best-practices/rules/server-cache-lru.md +41 -0
  341. package/dist/resources/skills/react-best-practices/rules/server-cache-react.md +76 -0
  342. package/dist/resources/skills/react-best-practices/rules/server-dedup-props.md +65 -0
  343. package/dist/resources/skills/react-best-practices/rules/server-parallel-fetching.md +83 -0
  344. package/dist/resources/skills/react-best-practices/rules/server-serialization.md +38 -0
  345. package/dist/resources/skills/userinterface-wiki/SKILL.md +253 -0
  346. package/dist/resources/skills/userinterface-wiki/rules/_sections.md +66 -0
  347. package/dist/resources/skills/userinterface-wiki/rules/_template.md +24 -0
  348. package/dist/resources/skills/userinterface-wiki/rules/a11y-reduced-motion-check.md +30 -0
  349. package/dist/resources/skills/userinterface-wiki/rules/a11y-toggle-setting.md +30 -0
  350. package/dist/resources/skills/userinterface-wiki/rules/a11y-visual-equivalent.md +36 -0
  351. package/dist/resources/skills/userinterface-wiki/rules/a11y-volume-control.md +28 -0
  352. package/dist/resources/skills/userinterface-wiki/rules/appropriate-confirmations-only.md +19 -0
  353. package/dist/resources/skills/userinterface-wiki/rules/appropriate-errors-warnings.md +18 -0
  354. package/dist/resources/skills/userinterface-wiki/rules/appropriate-no-decorative.md +21 -0
  355. package/dist/resources/skills/userinterface-wiki/rules/appropriate-no-high-frequency.md +28 -0
  356. package/dist/resources/skills/userinterface-wiki/rules/appropriate-no-punishing.md +27 -0
  357. package/dist/resources/skills/userinterface-wiki/rules/container-callback-ref.md +31 -0
  358. package/dist/resources/skills/userinterface-wiki/rules/container-guard-initial-zero.md +25 -0
  359. package/dist/resources/skills/userinterface-wiki/rules/container-no-excessive-use.md +13 -0
  360. package/dist/resources/skills/userinterface-wiki/rules/container-overflow-hidden.md +25 -0
  361. package/dist/resources/skills/userinterface-wiki/rules/container-transition-delay.md +21 -0
  362. package/dist/resources/skills/userinterface-wiki/rules/container-two-div-pattern.md +35 -0
  363. package/dist/resources/skills/userinterface-wiki/rules/container-use-resize-observer.md +48 -0
  364. package/dist/resources/skills/userinterface-wiki/rules/context-cleanup-nodes.md +25 -0
  365. package/dist/resources/skills/userinterface-wiki/rules/context-resume-suspended.md +28 -0
  366. package/dist/resources/skills/userinterface-wiki/rules/context-reuse-single.md +30 -0
  367. package/dist/resources/skills/userinterface-wiki/rules/design-filter-for-character.md +25 -0
  368. package/dist/resources/skills/userinterface-wiki/rules/design-noise-for-percussion.md +26 -0
  369. package/dist/resources/skills/userinterface-wiki/rules/design-oscillator-for-tonal.md +22 -0
  370. package/dist/resources/skills/userinterface-wiki/rules/duration-max-300ms.md +21 -0
  371. package/dist/resources/skills/userinterface-wiki/rules/duration-press-hover.md +21 -0
  372. package/dist/resources/skills/userinterface-wiki/rules/duration-shorten-before-curve.md +21 -0
  373. package/dist/resources/skills/userinterface-wiki/rules/duration-small-state.md +15 -0
  374. package/dist/resources/skills/userinterface-wiki/rules/easing-entrance-ease-out.md +21 -0
  375. package/dist/resources/skills/userinterface-wiki/rules/easing-exit-ease-in.md +21 -0
  376. package/dist/resources/skills/userinterface-wiki/rules/easing-for-state-change.md +27 -0
  377. package/dist/resources/skills/userinterface-wiki/rules/easing-linear-only-progress.md +21 -0
  378. package/dist/resources/skills/userinterface-wiki/rules/easing-natural-decay.md +22 -0
  379. package/dist/resources/skills/userinterface-wiki/rules/easing-no-linear-motion.md +22 -0
  380. package/dist/resources/skills/userinterface-wiki/rules/easing-transition-ease-in-out.md +15 -0
  381. package/dist/resources/skills/userinterface-wiki/rules/envelope-exponential-decay.md +21 -0
  382. package/dist/resources/skills/userinterface-wiki/rules/envelope-no-zero-target.md +21 -0
  383. package/dist/resources/skills/userinterface-wiki/rules/envelope-set-initial-value.md +22 -0
  384. package/dist/resources/skills/userinterface-wiki/rules/exit-key-required.md +29 -0
  385. package/dist/resources/skills/userinterface-wiki/rules/exit-matches-initial.md +29 -0
  386. package/dist/resources/skills/userinterface-wiki/rules/exit-prop-required.md +33 -0
  387. package/dist/resources/skills/userinterface-wiki/rules/exit-requires-wrapper.md +27 -0
  388. package/dist/resources/skills/userinterface-wiki/rules/impl-default-subtle.md +21 -0
  389. package/dist/resources/skills/userinterface-wiki/rules/impl-preload-audio.md +34 -0
  390. package/dist/resources/skills/userinterface-wiki/rules/impl-reset-current-time.md +26 -0
  391. package/dist/resources/skills/userinterface-wiki/rules/mode-pop-layout-for-lists.md +25 -0
  392. package/dist/resources/skills/userinterface-wiki/rules/mode-sync-layout-conflict.md +29 -0
  393. package/dist/resources/skills/userinterface-wiki/rules/mode-wait-doubles-duration.md +25 -0
  394. package/dist/resources/skills/userinterface-wiki/rules/morphing-aria-hidden.md +21 -0
  395. package/dist/resources/skills/userinterface-wiki/rules/morphing-consistent-viewbox.md +23 -0
  396. package/dist/resources/skills/userinterface-wiki/rules/morphing-group-variants.md +33 -0
  397. package/dist/resources/skills/userinterface-wiki/rules/morphing-jump-non-grouped.md +29 -0
  398. package/dist/resources/skills/userinterface-wiki/rules/morphing-reduced-motion.md +28 -0
  399. package/dist/resources/skills/userinterface-wiki/rules/morphing-spring-rotation.md +23 -0
  400. package/dist/resources/skills/userinterface-wiki/rules/morphing-strokelinecap-round.md +21 -0
  401. package/dist/resources/skills/userinterface-wiki/rules/morphing-three-lines.md +32 -0
  402. package/dist/resources/skills/userinterface-wiki/rules/morphing-use-collapsed.md +33 -0
  403. package/dist/resources/skills/userinterface-wiki/rules/native-backdrop-styling.md +27 -0
  404. package/dist/resources/skills/userinterface-wiki/rules/native-placeholder-styling.md +27 -0
  405. package/dist/resources/skills/userinterface-wiki/rules/native-selection-styling.md +18 -0
  406. package/dist/resources/skills/userinterface-wiki/rules/nested-consistent-timing.md +25 -0
  407. package/dist/resources/skills/userinterface-wiki/rules/nested-propagate-required.md +41 -0
  408. package/dist/resources/skills/userinterface-wiki/rules/none-context-menu-entrance.md +25 -0
  409. package/dist/resources/skills/userinterface-wiki/rules/none-high-frequency.md +29 -0
  410. package/dist/resources/skills/userinterface-wiki/rules/none-keyboard-navigation.md +32 -0
  411. package/dist/resources/skills/userinterface-wiki/rules/param-click-duration.md +21 -0
  412. package/dist/resources/skills/userinterface-wiki/rules/param-filter-frequency-range.md +21 -0
  413. package/dist/resources/skills/userinterface-wiki/rules/param-q-value-range.md +21 -0
  414. package/dist/resources/skills/userinterface-wiki/rules/param-reasonable-gain.md +21 -0
  415. package/dist/resources/skills/userinterface-wiki/rules/physics-active-state.md +23 -0
  416. package/dist/resources/skills/userinterface-wiki/rules/physics-no-excessive-stagger.md +22 -0
  417. package/dist/resources/skills/userinterface-wiki/rules/physics-spring-for-overshoot.md +23 -0
  418. package/dist/resources/skills/userinterface-wiki/rules/physics-subtle-deformation.md +22 -0
  419. package/dist/resources/skills/userinterface-wiki/rules/prefetch-hit-slop.md +27 -0
  420. package/dist/resources/skills/userinterface-wiki/rules/prefetch-keyboard-tab.md +19 -0
  421. package/dist/resources/skills/userinterface-wiki/rules/prefetch-not-everything.md +22 -0
  422. package/dist/resources/skills/userinterface-wiki/rules/prefetch-touch-fallback.md +34 -0
  423. package/dist/resources/skills/userinterface-wiki/rules/prefetch-trajectory-over-hover.md +32 -0
  424. package/dist/resources/skills/userinterface-wiki/rules/prefetch-use-selectively.md +13 -0
  425. package/dist/resources/skills/userinterface-wiki/rules/presence-disable-interactions.md +31 -0
  426. package/dist/resources/skills/userinterface-wiki/rules/presence-hook-in-child.md +31 -0
  427. package/dist/resources/skills/userinterface-wiki/rules/presence-safe-to-remove.md +37 -0
  428. package/dist/resources/skills/userinterface-wiki/rules/pseudo-content-required.md +28 -0
  429. package/dist/resources/skills/userinterface-wiki/rules/pseudo-first-line-styling.md +27 -0
  430. package/dist/resources/skills/userinterface-wiki/rules/pseudo-hit-target-expansion.md +31 -0
  431. package/dist/resources/skills/userinterface-wiki/rules/pseudo-marker-styling.md +28 -0
  432. package/dist/resources/skills/userinterface-wiki/rules/pseudo-over-dom-node.md +32 -0
  433. package/dist/resources/skills/userinterface-wiki/rules/pseudo-position-relative-parent.md +33 -0
  434. package/dist/resources/skills/userinterface-wiki/rules/pseudo-z-index-layering.md +37 -0
  435. package/dist/resources/skills/userinterface-wiki/rules/spring-for-gestures.md +27 -0
  436. package/dist/resources/skills/userinterface-wiki/rules/spring-for-interruptible.md +27 -0
  437. package/dist/resources/skills/userinterface-wiki/rules/spring-params-balanced.md +29 -0
  438. package/dist/resources/skills/userinterface-wiki/rules/spring-preserves-velocity.md +28 -0
  439. package/dist/resources/skills/userinterface-wiki/rules/staging-dim-background.md +22 -0
  440. package/dist/resources/skills/userinterface-wiki/rules/staging-one-focal-point.md +24 -0
  441. package/dist/resources/skills/userinterface-wiki/rules/staging-z-index-hierarchy.md +22 -0
  442. package/dist/resources/skills/userinterface-wiki/rules/timing-consistent.md +24 -0
  443. package/dist/resources/skills/userinterface-wiki/rules/timing-no-entrance-context-menu.md +22 -0
  444. package/dist/resources/skills/userinterface-wiki/rules/timing-under-300ms.md +22 -0
  445. package/dist/resources/skills/userinterface-wiki/rules/transition-name-cleanup.md +28 -0
  446. package/dist/resources/skills/userinterface-wiki/rules/transition-name-required.md +27 -0
  447. package/dist/resources/skills/userinterface-wiki/rules/transition-name-unique.md +24 -0
  448. package/dist/resources/skills/userinterface-wiki/rules/transition-over-js-library.md +32 -0
  449. package/dist/resources/skills/userinterface-wiki/rules/transition-style-pseudo-elements.md +24 -0
  450. package/dist/resources/skills/userinterface-wiki/rules/type-antialiased-on-retina.md +18 -0
  451. package/dist/resources/skills/userinterface-wiki/rules/type-disambiguation-stylistic-set.md +15 -0
  452. package/dist/resources/skills/userinterface-wiki/rules/type-font-display-swap.md +28 -0
  453. package/dist/resources/skills/userinterface-wiki/rules/type-justify-with-hyphens.md +24 -0
  454. package/dist/resources/skills/userinterface-wiki/rules/type-letter-spacing-uppercase.md +28 -0
  455. package/dist/resources/skills/userinterface-wiki/rules/type-no-font-synthesis.md +18 -0
  456. package/dist/resources/skills/userinterface-wiki/rules/type-oldstyle-nums-for-prose.md +21 -0
  457. package/dist/resources/skills/userinterface-wiki/rules/type-opentype-contextual-alternates.md +15 -0
  458. package/dist/resources/skills/userinterface-wiki/rules/type-optical-sizing-auto.md +25 -0
  459. package/dist/resources/skills/userinterface-wiki/rules/type-proper-fractions.md +15 -0
  460. package/dist/resources/skills/userinterface-wiki/rules/type-slashed-zero.md +17 -0
  461. package/dist/resources/skills/userinterface-wiki/rules/type-tabular-nums-for-data.md +21 -0
  462. package/dist/resources/skills/userinterface-wiki/rules/type-text-wrap-balance-headings.md +21 -0
  463. package/dist/resources/skills/userinterface-wiki/rules/type-text-wrap-pretty.md +16 -0
  464. package/dist/resources/skills/userinterface-wiki/rules/type-underline-offset.md +25 -0
  465. package/dist/resources/skills/userinterface-wiki/rules/type-variable-weight-continuous.md +23 -0
  466. package/dist/resources/skills/userinterface-wiki/rules/ux-aesthetic-usability.md +32 -0
  467. package/dist/resources/skills/userinterface-wiki/rules/ux-cognitive-load-reduce.md +49 -0
  468. package/dist/resources/skills/userinterface-wiki/rules/ux-common-region-boundaries.md +50 -0
  469. package/dist/resources/skills/userinterface-wiki/rules/ux-doherty-perceived-speed.md +29 -0
  470. package/dist/resources/skills/userinterface-wiki/rules/ux-doherty-under-400ms.md +30 -0
  471. package/dist/resources/skills/userinterface-wiki/rules/ux-fitts-hit-area.md +32 -0
  472. package/dist/resources/skills/userinterface-wiki/rules/ux-fitts-target-size.md +31 -0
  473. package/dist/resources/skills/userinterface-wiki/rules/ux-goal-gradient-progress.md +33 -0
  474. package/dist/resources/skills/userinterface-wiki/rules/ux-hicks-minimize-choices.md +45 -0
  475. package/dist/resources/skills/userinterface-wiki/rules/ux-jakobs-familiar-patterns.md +37 -0
  476. package/dist/resources/skills/userinterface-wiki/rules/ux-millers-chunking.md +23 -0
  477. package/dist/resources/skills/userinterface-wiki/rules/ux-pareto-prioritize-features.md +36 -0
  478. package/dist/resources/skills/userinterface-wiki/rules/ux-peak-end-finish-strong.md +35 -0
  479. package/dist/resources/skills/userinterface-wiki/rules/ux-postels-accept-messy-input.md +45 -0
  480. package/dist/resources/skills/userinterface-wiki/rules/ux-pragnanz-simplify.md +33 -0
  481. package/dist/resources/skills/userinterface-wiki/rules/ux-progressive-disclosure.md +41 -0
  482. package/dist/resources/skills/userinterface-wiki/rules/ux-proximity-grouping.md +38 -0
  483. package/dist/resources/skills/userinterface-wiki/rules/ux-serial-position.md +31 -0
  484. package/dist/resources/skills/userinterface-wiki/rules/ux-similarity-consistency.md +35 -0
  485. package/dist/resources/skills/userinterface-wiki/rules/ux-teslers-complexity.md +28 -0
  486. package/dist/resources/skills/userinterface-wiki/rules/ux-uniform-connectedness.md +43 -0
  487. package/dist/resources/skills/userinterface-wiki/rules/ux-von-restorff-emphasis.md +29 -0
  488. package/dist/resources/skills/userinterface-wiki/rules/ux-zeigarnik-show-incomplete.md +36 -0
  489. package/dist/resources/skills/userinterface-wiki/rules/visual-animate-shadow-pseudo.md +49 -0
  490. package/dist/resources/skills/userinterface-wiki/rules/visual-border-alpha-colors.md +25 -0
  491. package/dist/resources/skills/userinterface-wiki/rules/visual-button-shadow-anatomy.md +49 -0
  492. package/dist/resources/skills/userinterface-wiki/rules/visual-concentric-radius.md +40 -0
  493. package/dist/resources/skills/userinterface-wiki/rules/visual-consistent-spacing-scale.md +35 -0
  494. package/dist/resources/skills/userinterface-wiki/rules/visual-layered-shadows.md +30 -0
  495. package/dist/resources/skills/userinterface-wiki/rules/visual-no-pure-black-shadow.md +25 -0
  496. package/dist/resources/skills/userinterface-wiki/rules/visual-shadow-direction.md +25 -0
  497. package/dist/resources/skills/userinterface-wiki/rules/visual-shadow-matches-elevation.md +23 -0
  498. package/dist/resources/skills/userinterface-wiki/rules/weight-duration-matches-action.md +29 -0
  499. package/dist/resources/skills/userinterface-wiki/rules/weight-match-action.md +32 -0
  500. package/dist/resources/skills/web-design-guidelines/SKILL.md +39 -0
  501. package/dist/resources/skills/web-quality-audit/SKILL.md +170 -0
  502. package/dist/resources/skills/web-quality-audit/scripts/analyze.sh +91 -0
  503. package/dist/update-check.js +1 -1
  504. package/package.json +20 -8
  505. package/packages/native/package.json +28 -0
  506. package/packages/pi-agent-core/package.json +6 -0
  507. package/packages/pi-ai/dist/models.generated.d.ts +43 -11
  508. package/packages/pi-ai/dist/models.generated.d.ts.map +1 -1
  509. package/packages/pi-ai/dist/models.generated.js +34 -26
  510. package/packages/pi-ai/dist/models.generated.js.map +1 -1
  511. package/packages/pi-ai/dist/providers/anthropic.js +3 -2
  512. package/packages/pi-ai/dist/providers/anthropic.js.map +1 -1
  513. package/packages/pi-ai/dist/providers/openai-codex-responses.js +14 -4
  514. package/packages/pi-ai/dist/providers/openai-codex-responses.js.map +1 -1
  515. package/packages/pi-ai/dist/utils/oauth/anthropic.d.ts.map +1 -1
  516. package/packages/pi-ai/dist/utils/oauth/anthropic.js +2 -0
  517. package/packages/pi-ai/dist/utils/oauth/anthropic.js.map +1 -1
  518. package/packages/pi-ai/dist/utils/oauth/github-copilot.d.ts.map +1 -1
  519. package/packages/pi-ai/dist/utils/oauth/github-copilot.js +5 -1
  520. package/packages/pi-ai/dist/utils/oauth/github-copilot.js.map +1 -1
  521. package/packages/pi-ai/dist/utils/oauth/google-antigravity.d.ts.map +1 -1
  522. package/packages/pi-ai/dist/utils/oauth/google-antigravity.js +4 -0
  523. package/packages/pi-ai/dist/utils/oauth/google-antigravity.js.map +1 -1
  524. package/packages/pi-ai/dist/utils/oauth/google-gemini-cli.d.ts.map +1 -1
  525. package/packages/pi-ai/dist/utils/oauth/google-gemini-cli.js +6 -0
  526. package/packages/pi-ai/dist/utils/oauth/google-gemini-cli.js.map +1 -1
  527. package/packages/pi-ai/dist/utils/oauth/index.js +2 -2
  528. package/packages/pi-ai/dist/utils/oauth/index.js.map +1 -1
  529. package/packages/pi-ai/dist/utils/oauth/openai-codex.d.ts.map +1 -1
  530. package/packages/pi-ai/dist/utils/oauth/openai-codex.js +2 -0
  531. package/packages/pi-ai/dist/utils/oauth/openai-codex.js.map +1 -1
  532. package/packages/pi-ai/oauth.d.ts +1 -0
  533. package/packages/pi-ai/oauth.js +1 -0
  534. package/packages/pi-ai/package.json +2 -2
  535. package/packages/pi-ai/src/models.generated.ts +42 -34
  536. package/packages/pi-ai/src/providers/anthropic.ts +3 -2
  537. package/packages/pi-ai/src/providers/openai-codex-responses.ts +15 -4
  538. package/packages/pi-ai/src/utils/oauth/anthropic.ts +2 -0
  539. package/packages/pi-ai/src/utils/oauth/github-copilot.ts +5 -1
  540. package/packages/pi-ai/src/utils/oauth/google-antigravity.ts +4 -0
  541. package/packages/pi-ai/src/utils/oauth/google-gemini-cli.ts +6 -0
  542. package/packages/pi-ai/src/utils/oauth/index.ts +2 -2
  543. package/packages/pi-ai/src/utils/oauth/openai-codex.ts +2 -0
  544. package/packages/pi-coding-agent/dist/core/agent-session.js +1 -1
  545. package/packages/pi-coding-agent/dist/core/agent-session.js.map +1 -1
  546. package/packages/pi-coding-agent/dist/core/auth-storage.d.ts.map +1 -1
  547. package/packages/pi-coding-agent/dist/core/auth-storage.js +2 -1
  548. package/packages/pi-coding-agent/dist/core/auth-storage.js.map +1 -1
  549. package/packages/pi-coding-agent/dist/core/bash-executor.d.ts.map +1 -1
  550. package/packages/pi-coding-agent/dist/core/bash-executor.js +23 -1
  551. package/packages/pi-coding-agent/dist/core/bash-executor.js.map +1 -1
  552. package/packages/pi-coding-agent/dist/core/blob-store.d.ts +8 -0
  553. package/packages/pi-coding-agent/dist/core/blob-store.d.ts.map +1 -1
  554. package/packages/pi-coding-agent/dist/core/blob-store.js +50 -1
  555. package/packages/pi-coding-agent/dist/core/blob-store.js.map +1 -1
  556. package/packages/pi-coding-agent/dist/core/compaction/branch-summarization.d.ts.map +1 -1
  557. package/packages/pi-coding-agent/dist/core/compaction/branch-summarization.js +2 -1
  558. package/packages/pi-coding-agent/dist/core/compaction/branch-summarization.js.map +1 -1
  559. package/packages/pi-coding-agent/dist/core/compaction/compaction.d.ts.map +1 -1
  560. package/packages/pi-coding-agent/dist/core/compaction/compaction.js +3 -2
  561. package/packages/pi-coding-agent/dist/core/compaction/compaction.js.map +1 -1
  562. package/packages/pi-coding-agent/dist/core/compaction/utils.d.ts.map +1 -1
  563. package/packages/pi-coding-agent/dist/core/compaction/utils.js +2 -2
  564. package/packages/pi-coding-agent/dist/core/compaction/utils.js.map +1 -1
  565. package/packages/pi-coding-agent/dist/core/constants.d.ts +29 -0
  566. package/packages/pi-coding-agent/dist/core/constants.d.ts.map +1 -0
  567. package/packages/pi-coding-agent/dist/core/constants.js +44 -0
  568. package/packages/pi-coding-agent/dist/core/constants.js.map +1 -0
  569. package/packages/pi-coding-agent/dist/core/extensions/loader.js +1 -1
  570. package/packages/pi-coding-agent/dist/core/extensions/loader.js.map +1 -1
  571. package/packages/pi-coding-agent/dist/core/extensions/runner.d.ts.map +1 -1
  572. package/packages/pi-coding-agent/dist/core/extensions/runner.js +32 -10
  573. package/packages/pi-coding-agent/dist/core/extensions/runner.js.map +1 -1
  574. package/packages/pi-coding-agent/dist/core/extensions/runner.test.d.ts +2 -0
  575. package/packages/pi-coding-agent/dist/core/extensions/runner.test.d.ts.map +1 -0
  576. package/packages/pi-coding-agent/dist/core/extensions/runner.test.js +77 -0
  577. package/packages/pi-coding-agent/dist/core/extensions/runner.test.js.map +1 -0
  578. package/packages/pi-coding-agent/dist/core/fs-utils.d.ts +7 -0
  579. package/packages/pi-coding-agent/dist/core/fs-utils.d.ts.map +1 -0
  580. package/packages/pi-coding-agent/dist/core/fs-utils.js +12 -0
  581. package/packages/pi-coding-agent/dist/core/fs-utils.js.map +1 -0
  582. package/packages/pi-coding-agent/dist/core/fs-utils.test.d.ts +2 -0
  583. package/packages/pi-coding-agent/dist/core/fs-utils.test.d.ts.map +1 -0
  584. package/packages/pi-coding-agent/dist/core/fs-utils.test.js +67 -0
  585. package/packages/pi-coding-agent/dist/core/fs-utils.test.js.map +1 -0
  586. package/packages/pi-coding-agent/dist/core/lsp/client.d.ts.map +1 -1
  587. package/packages/pi-coding-agent/dist/core/lsp/client.js +22 -2
  588. package/packages/pi-coding-agent/dist/core/lsp/client.js.map +1 -1
  589. package/packages/pi-coding-agent/dist/core/lsp/index.d.ts.map +1 -1
  590. package/packages/pi-coding-agent/dist/core/lsp/index.js +30 -4
  591. package/packages/pi-coding-agent/dist/core/lsp/index.js.map +1 -1
  592. package/packages/pi-coding-agent/dist/core/lsp/lspmux.d.ts.map +1 -1
  593. package/packages/pi-coding-agent/dist/core/lsp/lspmux.js +13 -5
  594. package/packages/pi-coding-agent/dist/core/lsp/lspmux.js.map +1 -1
  595. package/packages/pi-coding-agent/dist/core/model-resolver.d.ts.map +1 -1
  596. package/packages/pi-coding-agent/dist/core/model-resolver.js +14 -0
  597. package/packages/pi-coding-agent/dist/core/model-resolver.js.map +1 -1
  598. package/packages/pi-coding-agent/dist/core/resolve-config-value.d.ts.map +1 -1
  599. package/packages/pi-coding-agent/dist/core/resolve-config-value.js +12 -4
  600. package/packages/pi-coding-agent/dist/core/resolve-config-value.js.map +1 -1
  601. package/packages/pi-coding-agent/dist/core/resolve-config-value.test.js +49 -0
  602. package/packages/pi-coding-agent/dist/core/resolve-config-value.test.js.map +1 -1
  603. package/packages/pi-coding-agent/dist/core/session-manager.d.ts +7 -0
  604. package/packages/pi-coding-agent/dist/core/session-manager.d.ts.map +1 -1
  605. package/packages/pi-coding-agent/dist/core/session-manager.js +108 -14
  606. package/packages/pi-coding-agent/dist/core/session-manager.js.map +1 -1
  607. package/packages/pi-coding-agent/dist/core/settings-manager.d.ts +3 -0
  608. package/packages/pi-coding-agent/dist/core/settings-manager.d.ts.map +1 -1
  609. package/packages/pi-coding-agent/dist/core/settings-manager.js +14 -5
  610. package/packages/pi-coding-agent/dist/core/settings-manager.js.map +1 -1
  611. package/packages/pi-coding-agent/dist/core/tools/edit-diff.js +2 -2
  612. package/packages/pi-coding-agent/dist/core/tools/edit-diff.js.map +1 -1
  613. package/packages/pi-coding-agent/dist/core/tools/find.d.ts.map +1 -1
  614. package/packages/pi-coding-agent/dist/core/tools/find.js +2 -1
  615. package/packages/pi-coding-agent/dist/core/tools/find.js.map +1 -1
  616. package/packages/pi-coding-agent/dist/core/tools/hashline-edit.js +4 -4
  617. package/packages/pi-coding-agent/dist/core/tools/hashline-edit.js.map +1 -1
  618. package/packages/pi-coding-agent/dist/core/tools/hashline.d.ts +1 -1
  619. package/packages/pi-coding-agent/dist/core/tools/hashline.js +1 -1
  620. package/packages/pi-coding-agent/dist/core/tools/hashline.js.map +1 -1
  621. package/packages/pi-coding-agent/dist/core/tools/hashline.test.js +8 -8
  622. package/packages/pi-coding-agent/dist/core/tools/hashline.test.js.map +1 -1
  623. package/packages/pi-coding-agent/dist/core/tools/index.d.ts +1 -1
  624. package/packages/pi-coding-agent/dist/core/tools/index.js +1 -1
  625. package/packages/pi-coding-agent/dist/core/tools/index.js.map +1 -1
  626. package/packages/pi-coding-agent/dist/core/tools/path-utils.d.ts +1 -0
  627. package/packages/pi-coding-agent/dist/core/tools/path-utils.d.ts.map +1 -1
  628. package/packages/pi-coding-agent/dist/core/tools/path-utils.js +1 -1
  629. package/packages/pi-coding-agent/dist/core/tools/path-utils.js.map +1 -1
  630. package/packages/pi-coding-agent/dist/core/tools/truncate.d.ts.map +1 -1
  631. package/packages/pi-coding-agent/dist/core/tools/truncate.js +2 -1
  632. package/packages/pi-coding-agent/dist/core/tools/truncate.js.map +1 -1
  633. package/packages/pi-coding-agent/dist/index.d.ts +2 -1
  634. package/packages/pi-coding-agent/dist/index.d.ts.map +1 -1
  635. package/packages/pi-coding-agent/dist/index.js +3 -1
  636. package/packages/pi-coding-agent/dist/index.js.map +1 -1
  637. package/packages/pi-coding-agent/dist/main.d.ts.map +1 -1
  638. package/packages/pi-coding-agent/dist/main.js +6 -0
  639. package/packages/pi-coding-agent/dist/main.js.map +1 -1
  640. package/packages/pi-coding-agent/dist/modes/interactive/components/extension-selector.d.ts +9 -0
  641. package/packages/pi-coding-agent/dist/modes/interactive/components/extension-selector.d.ts.map +1 -1
  642. package/packages/pi-coding-agent/dist/modes/interactive/components/extension-selector.js +47 -5
  643. package/packages/pi-coding-agent/dist/modes/interactive/components/extension-selector.js.map +1 -1
  644. package/packages/pi-coding-agent/dist/modes/interactive/components/index.d.ts +1 -1
  645. package/packages/pi-coding-agent/dist/modes/interactive/components/index.d.ts.map +1 -1
  646. package/packages/pi-coding-agent/dist/modes/interactive/components/index.js +1 -1
  647. package/packages/pi-coding-agent/dist/modes/interactive/components/index.js.map +1 -1
  648. package/packages/pi-coding-agent/dist/modes/interactive/components/login-dialog.js +4 -4
  649. package/packages/pi-coding-agent/dist/modes/interactive/components/login-dialog.js.map +1 -1
  650. package/packages/pi-coding-agent/dist/modes/interactive/components/settings-selector.d.ts +2 -0
  651. package/packages/pi-coding-agent/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  652. package/packages/pi-coding-agent/dist/modes/interactive/components/settings-selector.js +12 -0
  653. package/packages/pi-coding-agent/dist/modes/interactive/components/settings-selector.js.map +1 -1
  654. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  655. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.js +30 -2
  656. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.js.map +1 -1
  657. package/packages/pi-coding-agent/dist/modes/rpc/rpc-client.d.ts.map +1 -1
  658. package/packages/pi-coding-agent/dist/modes/rpc/rpc-client.js +11 -0
  659. package/packages/pi-coding-agent/dist/modes/rpc/rpc-client.js.map +1 -1
  660. package/packages/pi-coding-agent/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  661. package/packages/pi-coding-agent/dist/modes/rpc/rpc-mode.js +12 -2
  662. package/packages/pi-coding-agent/dist/modes/rpc/rpc-mode.js.map +1 -1
  663. package/packages/pi-coding-agent/dist/resources/extensions/memory/pipeline.d.ts.map +1 -1
  664. package/packages/pi-coding-agent/dist/resources/extensions/memory/pipeline.js +25 -3
  665. package/packages/pi-coding-agent/dist/resources/extensions/memory/pipeline.js.map +1 -1
  666. package/packages/pi-coding-agent/package.json +0 -4
  667. package/packages/pi-coding-agent/src/core/agent-session.ts +1 -1
  668. package/packages/pi-coding-agent/src/core/auth-storage.ts +2 -1
  669. package/packages/pi-coding-agent/src/core/bash-executor.ts +23 -1
  670. package/packages/pi-coding-agent/src/core/blob-store.ts +46 -1
  671. package/packages/pi-coding-agent/src/core/compaction/branch-summarization.ts +2 -1
  672. package/packages/pi-coding-agent/src/core/compaction/compaction.ts +3 -2
  673. package/packages/pi-coding-agent/src/core/compaction/utils.ts +2 -2
  674. package/packages/pi-coding-agent/src/core/constants.ts +59 -0
  675. package/packages/pi-coding-agent/src/core/extensions/loader.ts +1 -1
  676. package/packages/pi-coding-agent/src/core/extensions/runner.test.ts +84 -0
  677. package/packages/pi-coding-agent/src/core/extensions/runner.ts +31 -10
  678. package/packages/pi-coding-agent/src/core/fs-utils.test.ts +66 -0
  679. package/packages/pi-coding-agent/src/core/fs-utils.ts +12 -0
  680. package/packages/pi-coding-agent/src/core/lsp/client.ts +22 -2
  681. package/packages/pi-coding-agent/src/core/lsp/index.ts +31 -5
  682. package/packages/pi-coding-agent/src/core/lsp/lspmux.ts +13 -5
  683. package/packages/pi-coding-agent/src/core/model-resolver.ts +14 -0
  684. package/packages/pi-coding-agent/src/core/resolve-config-value.test.ts +58 -0
  685. package/packages/pi-coding-agent/src/core/resolve-config-value.ts +14 -4
  686. package/packages/pi-coding-agent/src/core/session-manager.ts +113 -18
  687. package/packages/pi-coding-agent/src/core/settings-manager.ts +22 -5
  688. package/packages/pi-coding-agent/src/core/tools/edit-diff.ts +2 -2
  689. package/packages/pi-coding-agent/src/core/tools/find.ts +2 -1
  690. package/packages/pi-coding-agent/src/core/tools/hashline-edit.ts +4 -4
  691. package/packages/pi-coding-agent/src/core/tools/hashline.test.ts +8 -8
  692. package/packages/pi-coding-agent/src/core/tools/hashline.ts +1 -1
  693. package/packages/pi-coding-agent/src/core/tools/index.ts +1 -1
  694. package/packages/pi-coding-agent/src/core/tools/path-utils.ts +1 -1
  695. package/packages/pi-coding-agent/src/core/tools/truncate.ts +3 -1
  696. package/packages/pi-coding-agent/src/index.ts +9 -0
  697. package/packages/pi-coding-agent/src/main.ts +7 -0
  698. package/packages/pi-coding-agent/src/modes/interactive/components/extension-selector.ts +49 -5
  699. package/packages/pi-coding-agent/src/modes/interactive/components/index.ts +1 -1
  700. package/packages/pi-coding-agent/src/modes/interactive/components/login-dialog.ts +4 -4
  701. package/packages/pi-coding-agent/src/modes/interactive/components/settings-selector.ts +15 -0
  702. package/packages/pi-coding-agent/src/modes/interactive/interactive-mode.ts +32 -1
  703. package/packages/pi-coding-agent/src/modes/rpc/rpc-client.ts +12 -0
  704. package/packages/pi-coding-agent/src/modes/rpc/rpc-mode.ts +11 -2
  705. package/packages/pi-coding-agent/src/resources/extensions/memory/pipeline.ts +23 -3
  706. package/packages/pi-tui/dist/__tests__/autocomplete.test.d.ts +2 -0
  707. package/packages/pi-tui/dist/__tests__/autocomplete.test.d.ts.map +1 -0
  708. package/packages/pi-tui/dist/__tests__/autocomplete.test.js +149 -0
  709. package/packages/pi-tui/dist/__tests__/autocomplete.test.js.map +1 -0
  710. package/packages/pi-tui/dist/__tests__/fuzzy.test.d.ts +2 -0
  711. package/packages/pi-tui/dist/__tests__/fuzzy.test.d.ts.map +1 -0
  712. package/packages/pi-tui/dist/__tests__/fuzzy.test.js +94 -0
  713. package/packages/pi-tui/dist/__tests__/fuzzy.test.js.map +1 -0
  714. package/packages/pi-tui/dist/autocomplete.d.ts +5 -1
  715. package/packages/pi-tui/dist/autocomplete.d.ts.map +1 -1
  716. package/packages/pi-tui/dist/autocomplete.js +6 -2
  717. package/packages/pi-tui/dist/autocomplete.js.map +1 -1
  718. package/packages/pi-tui/package.json +8 -2
  719. package/packages/pi-tui/src/__tests__/autocomplete.test.ts +186 -0
  720. package/packages/pi-tui/src/__tests__/fuzzy.test.ts +112 -0
  721. package/packages/pi-tui/src/autocomplete.ts +8 -1
  722. package/src/resources/extensions/ask-user-questions.ts +3 -2
  723. package/src/resources/extensions/bg-shell/bg-shell-command.ts +219 -0
  724. package/src/resources/extensions/bg-shell/bg-shell-lifecycle.ts +400 -0
  725. package/src/resources/extensions/bg-shell/bg-shell-tool.ts +985 -0
  726. package/src/resources/extensions/bg-shell/index.ts +17 -1561
  727. package/src/resources/extensions/bg-shell/overlay.ts +4 -0
  728. package/src/resources/extensions/bg-shell/utilities.ts +4 -16
  729. package/src/resources/extensions/browser-tools/capture.ts +34 -2
  730. package/src/resources/extensions/browser-tools/lifecycle.ts +5 -5
  731. package/src/resources/extensions/browser-tools/settle.ts +1 -1
  732. package/src/resources/extensions/browser-tools/state.ts +5 -5
  733. package/src/resources/extensions/browser-tools/tests/browser-tools-integration.test.mjs +1 -1
  734. package/src/resources/extensions/browser-tools/tests/browser-tools-unit.test.cjs +3 -3
  735. package/src/resources/extensions/browser-tools/tools/assertions.ts +1 -1
  736. package/src/resources/extensions/browser-tools/tools/device.ts +1 -1
  737. package/src/resources/extensions/browser-tools/tools/extract.ts +1 -1
  738. package/src/resources/extensions/browser-tools/tools/navigation.ts +6 -6
  739. package/src/resources/extensions/browser-tools/tools/network-mock.ts +1 -1
  740. package/src/resources/extensions/browser-tools/tools/pages.ts +1 -1
  741. package/src/resources/extensions/browser-tools/tools/screenshot.ts +28 -10
  742. package/src/resources/extensions/browser-tools/tools/state-persistence.ts +1 -1
  743. package/src/resources/extensions/browser-tools/tools/visual-diff.ts +1 -1
  744. package/src/resources/extensions/browser-tools/utils.ts +5 -5
  745. package/src/resources/extensions/get-secrets-from-user.ts +1 -1
  746. package/src/resources/extensions/google-search/index.ts +21 -8
  747. package/src/resources/extensions/gsd/activity-log.ts +2 -1
  748. package/src/resources/extensions/gsd/atomic-write.ts +35 -0
  749. package/src/resources/extensions/gsd/auto/session.ts +12 -0
  750. package/src/resources/extensions/gsd/auto-dashboard.ts +84 -3
  751. package/src/resources/extensions/gsd/auto-idempotency.ts +150 -0
  752. package/src/resources/extensions/gsd/auto-post-unit.ts +591 -0
  753. package/src/resources/extensions/gsd/auto-prompts.ts +116 -22
  754. package/src/resources/extensions/gsd/auto-recovery.ts +20 -9
  755. package/src/resources/extensions/gsd/auto-start.ts +500 -0
  756. package/src/resources/extensions/gsd/auto-stuck-detection.ts +220 -0
  757. package/src/resources/extensions/gsd/auto-timers.ts +223 -0
  758. package/src/resources/extensions/gsd/auto-unit-closeout.ts +3 -1
  759. package/src/resources/extensions/gsd/auto-verification.ts +195 -0
  760. package/src/resources/extensions/gsd/auto-worktree-sync.ts +8 -31
  761. package/src/resources/extensions/gsd/auto-worktree.ts +83 -67
  762. package/src/resources/extensions/gsd/auto.ts +364 -1873
  763. package/src/resources/extensions/gsd/commands-config.ts +102 -0
  764. package/src/resources/extensions/gsd/commands-handlers.ts +402 -0
  765. package/src/resources/extensions/gsd/commands-inspect.ts +90 -0
  766. package/src/resources/extensions/gsd/commands-logs.ts +537 -0
  767. package/src/resources/extensions/gsd/commands-maintenance.ts +206 -0
  768. package/src/resources/extensions/gsd/commands-prefs-wizard.ts +747 -0
  769. package/src/resources/extensions/gsd/commands.ts +378 -1431
  770. package/src/resources/extensions/gsd/constants.ts +21 -0
  771. package/src/resources/extensions/gsd/context-budget.ts +25 -2
  772. package/src/resources/extensions/gsd/crash-recovery.ts +4 -2
  773. package/src/resources/extensions/gsd/dashboard-overlay.ts +13 -4
  774. package/src/resources/extensions/gsd/db-writer.ts +21 -2
  775. package/src/resources/extensions/gsd/detection.ts +469 -0
  776. package/src/resources/extensions/gsd/diff-context.ts +2 -1
  777. package/src/resources/extensions/gsd/dispatch-guard.ts +4 -0
  778. package/src/resources/extensions/gsd/docs/preferences-reference.md +83 -0
  779. package/src/resources/extensions/gsd/doctor-checks.ts +564 -0
  780. package/src/resources/extensions/gsd/doctor-format.ts +78 -0
  781. package/src/resources/extensions/gsd/doctor-types.ts +72 -0
  782. package/src/resources/extensions/gsd/doctor.ts +64 -701
  783. package/src/resources/extensions/gsd/errors.ts +0 -2
  784. package/src/resources/extensions/gsd/export-html.ts +367 -11
  785. package/src/resources/extensions/gsd/export.ts +119 -30
  786. package/src/resources/extensions/gsd/files.ts +8 -126
  787. package/src/resources/extensions/gsd/forensics.ts +2 -12
  788. package/src/resources/extensions/gsd/git-constants.ts +11 -0
  789. package/src/resources/extensions/gsd/git-service.ts +13 -9
  790. package/src/resources/extensions/gsd/gsd-db.ts +26 -6
  791. package/src/resources/extensions/gsd/guided-flow-queue.ts +451 -0
  792. package/src/resources/extensions/gsd/guided-flow.ts +231 -514
  793. package/src/resources/extensions/gsd/history.ts +2 -20
  794. package/src/resources/extensions/gsd/index.ts +206 -45
  795. package/src/resources/extensions/gsd/init-wizard.ts +615 -0
  796. package/src/resources/extensions/gsd/jsonl-utils.ts +21 -0
  797. package/src/resources/extensions/gsd/key-manager.ts +995 -0
  798. package/src/resources/extensions/gsd/metrics.ts +32 -5
  799. package/src/resources/extensions/gsd/migrate/command.ts +1 -1
  800. package/src/resources/extensions/gsd/migrate/parsers.ts +10 -95
  801. package/src/resources/extensions/gsd/milestone-actions.ts +126 -0
  802. package/src/resources/extensions/gsd/milestone-ids.ts +95 -0
  803. package/src/resources/extensions/gsd/native-git-bridge.ts +5 -10
  804. package/src/resources/extensions/gsd/parallel-eligibility.ts +3 -3
  805. package/src/resources/extensions/gsd/paths.ts +1 -3
  806. package/src/resources/extensions/gsd/plugin-importer.ts +3 -2
  807. package/src/resources/extensions/gsd/preferences-hooks.ts +10 -0
  808. package/src/resources/extensions/gsd/preferences-models.ts +323 -0
  809. package/src/resources/extensions/gsd/preferences-skills.ts +169 -0
  810. package/src/resources/extensions/gsd/preferences-types.ts +223 -0
  811. package/src/resources/extensions/gsd/preferences-validation.ts +597 -0
  812. package/src/resources/extensions/gsd/preferences.ts +219 -1305
  813. package/src/resources/extensions/gsd/prompt-cache-optimizer.ts +213 -0
  814. package/src/resources/extensions/gsd/prompt-compressor.ts +508 -0
  815. package/src/resources/extensions/gsd/prompt-loader.ts +4 -2
  816. package/src/resources/extensions/gsd/prompt-ordering.ts +200 -0
  817. package/src/resources/extensions/gsd/prompts/complete-milestone.md +2 -2
  818. package/src/resources/extensions/gsd/prompts/complete-slice.md +4 -4
  819. package/src/resources/extensions/gsd/prompts/discuss-headless.md +2 -4
  820. package/src/resources/extensions/gsd/prompts/discuss.md +13 -5
  821. package/src/resources/extensions/gsd/prompts/execute-task.md +1 -2
  822. package/src/resources/extensions/gsd/prompts/guided-complete-slice.md +1 -1
  823. package/src/resources/extensions/gsd/prompts/guided-plan-milestone.md +0 -1
  824. package/src/resources/extensions/gsd/prompts/plan-milestone.md +1 -2
  825. package/src/resources/extensions/gsd/prompts/plan-slice.md +1 -2
  826. package/src/resources/extensions/gsd/prompts/queue.md +30 -0
  827. package/src/resources/extensions/gsd/prompts/quick-task.md +0 -6
  828. package/src/resources/extensions/gsd/prompts/replan-slice.md +0 -1
  829. package/src/resources/extensions/gsd/prompts/rewrite-docs.md +0 -1
  830. package/src/resources/extensions/gsd/prompts/system.md +5 -2
  831. package/src/resources/extensions/gsd/provider-error-pause.ts +59 -10
  832. package/src/resources/extensions/gsd/queue-order.ts +1 -1
  833. package/src/resources/extensions/gsd/queue-reorder-ui.ts +15 -2
  834. package/src/resources/extensions/gsd/quick.ts +18 -15
  835. package/src/resources/extensions/gsd/reports.ts +1 -7
  836. package/src/resources/extensions/gsd/safe-fs.ts +47 -0
  837. package/src/resources/extensions/gsd/semantic-chunker.ts +336 -0
  838. package/src/resources/extensions/gsd/session-forensics.ts +8 -23
  839. package/src/resources/extensions/gsd/session-lock.ts +284 -0
  840. package/src/resources/extensions/gsd/skills/gsd-headless/SKILL.md +80 -16
  841. package/src/resources/extensions/gsd/skills/gsd-headless/references/answer-injection.md +35 -6
  842. package/src/resources/extensions/gsd/skills/gsd-headless/references/commands.md +7 -2
  843. package/src/resources/extensions/gsd/skills/gsd-headless/references/multi-session.md +4 -13
  844. package/src/resources/extensions/gsd/state.ts +54 -2
  845. package/src/resources/extensions/gsd/structured-data-formatter.ts +144 -0
  846. package/src/resources/extensions/gsd/summary-distiller.ts +258 -0
  847. package/src/resources/extensions/gsd/templates/preferences.md +34 -0
  848. package/src/resources/extensions/gsd/tests/activity-log.test.ts +213 -0
  849. package/src/resources/extensions/gsd/tests/agent-end-retry.test.ts +107 -0
  850. package/src/resources/extensions/gsd/tests/all-milestones-complete-merge.test.ts +197 -0
  851. package/src/resources/extensions/gsd/tests/auto-preflight.test.ts +33 -39
  852. package/src/resources/extensions/gsd/tests/auto-secrets-gate.test.ts +108 -2
  853. package/src/resources/extensions/gsd/tests/auto-session-encapsulation.test.ts +257 -0
  854. package/src/resources/extensions/gsd/tests/auto-worktree-milestone-merge.test.ts +3 -0
  855. package/src/resources/extensions/gsd/tests/commands-logs.test.ts +241 -0
  856. package/src/resources/extensions/gsd/tests/context-budget.test.ts +69 -0
  857. package/src/resources/extensions/gsd/tests/detection.test.ts +398 -0
  858. package/src/resources/extensions/gsd/tests/discuss-prompt.test.ts +12 -24
  859. package/src/resources/extensions/gsd/tests/dispatch-guard.test.ts +118 -94
  860. package/src/resources/extensions/gsd/tests/dispatch-stall-guard.test.ts +126 -0
  861. package/src/resources/extensions/gsd/tests/dist-redirect.mjs +7 -3
  862. package/src/resources/extensions/gsd/tests/doctor-fixlevel.test.ts +75 -0
  863. package/src/resources/extensions/gsd/tests/doctor-git.test.ts +17 -55
  864. package/src/resources/extensions/gsd/tests/export-html-all.test.ts +105 -0
  865. package/src/resources/extensions/gsd/tests/export-html-enhancements.test.ts +375 -0
  866. package/src/resources/extensions/gsd/tests/extension-selector-separator.test.ts +122 -0
  867. package/src/resources/extensions/gsd/tests/feature-branch-lifecycle-integration.test.ts +3 -0
  868. package/src/resources/extensions/gsd/tests/headless-answers.test.ts +340 -0
  869. package/src/resources/extensions/gsd/tests/headless-query.test.ts +162 -0
  870. package/src/resources/extensions/gsd/tests/in-flight-tool-tracking.test.ts +24 -82
  871. package/src/resources/extensions/gsd/tests/init-wizard.test.ts +197 -0
  872. package/src/resources/extensions/gsd/tests/key-manager.test.ts +414 -0
  873. package/src/resources/extensions/gsd/tests/metrics.test.ts +173 -305
  874. package/src/resources/extensions/gsd/tests/milestone-transition-worktree.test.ts +3 -0
  875. package/src/resources/extensions/gsd/tests/model-isolation.test.ts +59 -1
  876. package/src/resources/extensions/gsd/tests/next-milestone-id.test.ts +18 -61
  877. package/src/resources/extensions/gsd/tests/none-mode-gates.test.ts +17 -8
  878. package/src/resources/extensions/gsd/tests/parallel-merge.test.ts +3 -0
  879. package/src/resources/extensions/gsd/tests/park-edge-cases.test.ts +276 -0
  880. package/src/resources/extensions/gsd/tests/park-milestone.test.ts +401 -0
  881. package/src/resources/extensions/gsd/tests/plan-slice-prompt.test.ts +23 -47
  882. package/src/resources/extensions/gsd/tests/preferences.test.ts +284 -0
  883. package/src/resources/extensions/gsd/tests/prompt-cache-optimizer.test.ts +314 -0
  884. package/src/resources/extensions/gsd/tests/prompt-compressor.test.ts +529 -0
  885. package/src/resources/extensions/gsd/tests/prompt-ordering.test.ts +296 -0
  886. package/src/resources/extensions/gsd/tests/provider-errors.test.ts +338 -0
  887. package/src/resources/extensions/gsd/tests/reassess-detection.test.ts +154 -0
  888. package/src/resources/extensions/gsd/tests/remote-questions.test.ts +1 -1
  889. package/src/resources/extensions/gsd/tests/remote-status.test.ts +2 -2
  890. package/src/resources/extensions/gsd/tests/roadmap-slices.test.ts +43 -60
  891. package/src/resources/extensions/gsd/tests/semantic-chunker.test.ts +426 -0
  892. package/src/resources/extensions/gsd/tests/session-lock.test.ts +315 -0
  893. package/src/resources/extensions/gsd/tests/stale-worktree-cwd.test.ts +3 -0
  894. package/src/resources/extensions/gsd/tests/stop-auto-remote.test.ts +8 -5
  895. package/src/resources/extensions/gsd/tests/structured-data-formatter.test.ts +365 -0
  896. package/src/resources/extensions/gsd/tests/summary-distiller.test.ts +323 -0
  897. package/src/resources/extensions/gsd/tests/token-counter.test.ts +129 -0
  898. package/src/resources/extensions/gsd/tests/token-optimization-benchmark.test.ts +1272 -0
  899. package/src/resources/extensions/gsd/tests/token-optimization-prefs.test.ts +164 -0
  900. package/src/resources/extensions/gsd/tests/token-profile.test.ts +8 -1
  901. package/src/resources/extensions/gsd/tests/triage-dispatch.test.ts +69 -73
  902. package/src/resources/extensions/gsd/tests/update-command.test.ts +67 -0
  903. package/src/resources/extensions/gsd/tests/validate-directory.test.ts +222 -0
  904. package/src/resources/extensions/gsd/tests/validate-milestone.test.ts +55 -0
  905. package/src/resources/extensions/gsd/tests/verification-gate.test.ts +115 -1
  906. package/src/resources/extensions/gsd/tests/visualizer-overlay.test.ts +2 -2
  907. package/src/resources/extensions/gsd/tests/visualizer-views.test.ts +2 -1
  908. package/src/resources/extensions/gsd/tests/workspace-index.test.ts +24 -61
  909. package/src/resources/extensions/gsd/tests/worktree-e2e.test.ts +5 -2
  910. package/src/resources/extensions/gsd/tests/write-gate.test.ts +132 -43
  911. package/src/resources/extensions/gsd/token-counter.ts +20 -0
  912. package/src/resources/extensions/gsd/triage-ui.ts +1 -1
  913. package/src/resources/extensions/gsd/types.ts +4 -1
  914. package/src/resources/extensions/gsd/validate-directory.ts +164 -0
  915. package/src/resources/extensions/gsd/verification-evidence.ts +7 -4
  916. package/src/resources/extensions/gsd/verification-gate.ts +70 -5
  917. package/src/resources/extensions/gsd/visualizer-data.ts +1 -1
  918. package/src/resources/extensions/gsd/visualizer-overlay.ts +5 -2
  919. package/src/resources/extensions/gsd/visualizer-views.ts +2 -3
  920. package/src/resources/extensions/gsd/worktree-command.ts +4 -51
  921. package/src/resources/extensions/gsd/worktree-manager.ts +7 -9
  922. package/src/resources/extensions/gsd/worktree.ts +41 -1
  923. package/src/resources/extensions/mcporter/index.ts +27 -14
  924. package/src/resources/extensions/remote-questions/manager.ts +6 -24
  925. package/src/resources/extensions/remote-questions/mod.ts +16 -0
  926. package/src/resources/extensions/remote-questions/notify.ts +91 -0
  927. package/src/resources/extensions/remote-questions/remote-command.ts +1 -1
  928. package/src/resources/extensions/remote-questions/store.ts +5 -1
  929. package/src/resources/extensions/remote-questions/types.ts +26 -3
  930. package/src/resources/extensions/search-the-web/native-search.ts +7 -0
  931. package/src/resources/extensions/search-the-web/provider.ts +15 -3
  932. package/src/resources/extensions/search-the-web/tool-llm-context.ts +1 -13
  933. package/src/resources/extensions/search-the-web/tool-search.ts +1 -13
  934. package/src/resources/extensions/shared/format-utils.ts +53 -0
  935. package/src/resources/extensions/shared/frontmatter.ts +117 -0
  936. package/src/resources/extensions/shared/mod.ts +30 -0
  937. package/src/resources/extensions/shared/sanitize.ts +19 -0
  938. package/src/resources/extensions/slash-commands/create-extension.ts +1 -1
  939. package/src/resources/extensions/slash-commands/create-slash-command.ts +1 -1
  940. package/src/resources/extensions/subagent/index.ts +1 -2
  941. package/src/resources/extensions/ttsr/index.ts +5 -0
  942. package/src/resources/extensions/ttsr/rule-loader.ts +4 -51
  943. package/src/resources/extensions/universal-config/discovery.ts +37 -15
  944. package/src/resources/extensions/voice/index.ts +1 -1
  945. package/src/resources/skills/accessibility/SKILL.md +522 -0
  946. package/src/resources/skills/accessibility/references/WCAG.md +162 -0
  947. package/src/resources/skills/agent-browser/SKILL.md +517 -0
  948. package/src/resources/skills/agent-browser/references/authentication.md +202 -0
  949. package/src/resources/skills/agent-browser/references/commands.md +263 -0
  950. package/src/resources/skills/agent-browser/references/profiling.md +120 -0
  951. package/src/resources/skills/agent-browser/references/proxy-support.md +194 -0
  952. package/src/resources/skills/agent-browser/references/session-management.md +193 -0
  953. package/src/resources/skills/agent-browser/references/snapshot-refs.md +194 -0
  954. package/src/resources/skills/agent-browser/references/video-recording.md +173 -0
  955. package/src/resources/skills/agent-browser/templates/authenticated-session.sh +105 -0
  956. package/src/resources/skills/agent-browser/templates/capture-workflow.sh +69 -0
  957. package/src/resources/skills/agent-browser/templates/form-automation.sh +62 -0
  958. package/src/resources/skills/best-practices/SKILL.md +583 -0
  959. package/src/resources/skills/code-optimizer/SKILL.md +160 -0
  960. package/src/resources/skills/code-optimizer/references/algorithmic-complexity.md +66 -0
  961. package/src/resources/skills/code-optimizer/references/build-compilation.md +90 -0
  962. package/src/resources/skills/code-optimizer/references/bundle-dependencies.md +82 -0
  963. package/src/resources/skills/code-optimizer/references/caching-memoization.md +76 -0
  964. package/src/resources/skills/code-optimizer/references/concurrency-async.md +80 -0
  965. package/src/resources/skills/code-optimizer/references/config-infra.md +71 -0
  966. package/src/resources/skills/code-optimizer/references/data-structures.md +80 -0
  967. package/src/resources/skills/code-optimizer/references/database-queries.md +76 -0
  968. package/src/resources/skills/code-optimizer/references/dead-code-redundancy.md +84 -0
  969. package/src/resources/skills/code-optimizer/references/error-resilience.md +80 -0
  970. package/src/resources/skills/code-optimizer/references/io-network.md +89 -0
  971. package/src/resources/skills/code-optimizer/references/logging-observability.md +64 -0
  972. package/src/resources/skills/code-optimizer/references/memory-resources.md +66 -0
  973. package/src/resources/skills/code-optimizer/references/rendering-ui.md +90 -0
  974. package/src/resources/skills/code-optimizer/references/security-performance.md +68 -0
  975. package/src/resources/skills/core-web-vitals/SKILL.md +441 -0
  976. package/src/resources/skills/core-web-vitals/references/LCP.md +208 -0
  977. package/src/resources/skills/make-interfaces-feel-better/SKILL.md +122 -0
  978. package/src/resources/skills/make-interfaces-feel-better/animations.md +379 -0
  979. package/src/resources/skills/make-interfaces-feel-better/performance.md +88 -0
  980. package/src/resources/skills/make-interfaces-feel-better/surfaces.md +247 -0
  981. package/src/resources/skills/make-interfaces-feel-better/typography.md +123 -0
  982. package/src/resources/skills/react-best-practices/README.md +123 -0
  983. package/src/resources/skills/react-best-practices/SKILL.md +136 -0
  984. package/src/resources/skills/react-best-practices/metadata.json +15 -0
  985. package/src/resources/skills/react-best-practices/rules/_sections.md +46 -0
  986. package/src/resources/skills/react-best-practices/rules/_template.md +28 -0
  987. package/src/resources/skills/react-best-practices/rules/advanced-event-handler-refs.md +55 -0
  988. package/src/resources/skills/react-best-practices/rules/advanced-init-once.md +42 -0
  989. package/src/resources/skills/react-best-practices/rules/advanced-use-latest.md +39 -0
  990. package/src/resources/skills/react-best-practices/rules/async-api-routes.md +38 -0
  991. package/src/resources/skills/react-best-practices/rules/async-defer-await.md +80 -0
  992. package/src/resources/skills/react-best-practices/rules/async-dependencies.md +51 -0
  993. package/src/resources/skills/react-best-practices/rules/async-parallel.md +28 -0
  994. package/src/resources/skills/react-best-practices/rules/async-suspense-boundaries.md +99 -0
  995. package/src/resources/skills/react-best-practices/rules/bundle-barrel-imports.md +59 -0
  996. package/src/resources/skills/react-best-practices/rules/bundle-conditional.md +31 -0
  997. package/src/resources/skills/react-best-practices/rules/bundle-defer-third-party.md +49 -0
  998. package/src/resources/skills/react-best-practices/rules/bundle-dynamic-imports.md +35 -0
  999. package/src/resources/skills/react-best-practices/rules/bundle-preload.md +50 -0
  1000. package/src/resources/skills/react-best-practices/rules/client-event-listeners.md +74 -0
  1001. package/src/resources/skills/react-best-practices/rules/client-localstorage-schema.md +71 -0
  1002. package/src/resources/skills/react-best-practices/rules/client-passive-event-listeners.md +48 -0
  1003. package/src/resources/skills/react-best-practices/rules/client-swr-dedup.md +56 -0
  1004. package/src/resources/skills/react-best-practices/rules/js-batch-dom-css.md +107 -0
  1005. package/src/resources/skills/react-best-practices/rules/js-cache-function-results.md +80 -0
  1006. package/src/resources/skills/react-best-practices/rules/js-cache-property-access.md +28 -0
  1007. package/src/resources/skills/react-best-practices/rules/js-cache-storage.md +70 -0
  1008. package/src/resources/skills/react-best-practices/rules/js-combine-iterations.md +32 -0
  1009. package/src/resources/skills/react-best-practices/rules/js-early-exit.md +50 -0
  1010. package/src/resources/skills/react-best-practices/rules/js-hoist-regexp.md +45 -0
  1011. package/src/resources/skills/react-best-practices/rules/js-index-maps.md +37 -0
  1012. package/src/resources/skills/react-best-practices/rules/js-length-check-first.md +49 -0
  1013. package/src/resources/skills/react-best-practices/rules/js-min-max-loop.md +82 -0
  1014. package/src/resources/skills/react-best-practices/rules/js-set-map-lookups.md +24 -0
  1015. package/src/resources/skills/react-best-practices/rules/js-tosorted-immutable.md +57 -0
  1016. package/src/resources/skills/react-best-practices/rules/rendering-activity.md +26 -0
  1017. package/src/resources/skills/react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
  1018. package/src/resources/skills/react-best-practices/rules/rendering-conditional-render.md +40 -0
  1019. package/src/resources/skills/react-best-practices/rules/rendering-content-visibility.md +38 -0
  1020. package/src/resources/skills/react-best-practices/rules/rendering-hoist-jsx.md +46 -0
  1021. package/src/resources/skills/react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
  1022. package/src/resources/skills/react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
  1023. package/src/resources/skills/react-best-practices/rules/rendering-svg-precision.md +28 -0
  1024. package/src/resources/skills/react-best-practices/rules/rendering-usetransition-loading.md +75 -0
  1025. package/src/resources/skills/react-best-practices/rules/rerender-defer-reads.md +39 -0
  1026. package/src/resources/skills/react-best-practices/rules/rerender-dependencies.md +45 -0
  1027. package/src/resources/skills/react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
  1028. package/src/resources/skills/react-best-practices/rules/rerender-derived-state.md +29 -0
  1029. package/src/resources/skills/react-best-practices/rules/rerender-functional-setstate.md +74 -0
  1030. package/src/resources/skills/react-best-practices/rules/rerender-lazy-state-init.md +58 -0
  1031. package/src/resources/skills/react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
  1032. package/src/resources/skills/react-best-practices/rules/rerender-memo.md +44 -0
  1033. package/src/resources/skills/react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
  1034. package/src/resources/skills/react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
  1035. package/src/resources/skills/react-best-practices/rules/rerender-transitions.md +40 -0
  1036. package/src/resources/skills/react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
  1037. package/src/resources/skills/react-best-practices/rules/server-after-nonblocking.md +73 -0
  1038. package/src/resources/skills/react-best-practices/rules/server-auth-actions.md +96 -0
  1039. package/src/resources/skills/react-best-practices/rules/server-cache-lru.md +41 -0
  1040. package/src/resources/skills/react-best-practices/rules/server-cache-react.md +76 -0
  1041. package/src/resources/skills/react-best-practices/rules/server-dedup-props.md +65 -0
  1042. package/src/resources/skills/react-best-practices/rules/server-parallel-fetching.md +83 -0
  1043. package/src/resources/skills/react-best-practices/rules/server-serialization.md +38 -0
  1044. package/src/resources/skills/userinterface-wiki/SKILL.md +253 -0
  1045. package/src/resources/skills/userinterface-wiki/rules/_sections.md +66 -0
  1046. package/src/resources/skills/userinterface-wiki/rules/_template.md +24 -0
  1047. package/src/resources/skills/userinterface-wiki/rules/a11y-reduced-motion-check.md +30 -0
  1048. package/src/resources/skills/userinterface-wiki/rules/a11y-toggle-setting.md +30 -0
  1049. package/src/resources/skills/userinterface-wiki/rules/a11y-visual-equivalent.md +36 -0
  1050. package/src/resources/skills/userinterface-wiki/rules/a11y-volume-control.md +28 -0
  1051. package/src/resources/skills/userinterface-wiki/rules/appropriate-confirmations-only.md +19 -0
  1052. package/src/resources/skills/userinterface-wiki/rules/appropriate-errors-warnings.md +18 -0
  1053. package/src/resources/skills/userinterface-wiki/rules/appropriate-no-decorative.md +21 -0
  1054. package/src/resources/skills/userinterface-wiki/rules/appropriate-no-high-frequency.md +28 -0
  1055. package/src/resources/skills/userinterface-wiki/rules/appropriate-no-punishing.md +27 -0
  1056. package/src/resources/skills/userinterface-wiki/rules/container-callback-ref.md +31 -0
  1057. package/src/resources/skills/userinterface-wiki/rules/container-guard-initial-zero.md +25 -0
  1058. package/src/resources/skills/userinterface-wiki/rules/container-no-excessive-use.md +13 -0
  1059. package/src/resources/skills/userinterface-wiki/rules/container-overflow-hidden.md +25 -0
  1060. package/src/resources/skills/userinterface-wiki/rules/container-transition-delay.md +21 -0
  1061. package/src/resources/skills/userinterface-wiki/rules/container-two-div-pattern.md +35 -0
  1062. package/src/resources/skills/userinterface-wiki/rules/container-use-resize-observer.md +48 -0
  1063. package/src/resources/skills/userinterface-wiki/rules/context-cleanup-nodes.md +25 -0
  1064. package/src/resources/skills/userinterface-wiki/rules/context-resume-suspended.md +28 -0
  1065. package/src/resources/skills/userinterface-wiki/rules/context-reuse-single.md +30 -0
  1066. package/src/resources/skills/userinterface-wiki/rules/design-filter-for-character.md +25 -0
  1067. package/src/resources/skills/userinterface-wiki/rules/design-noise-for-percussion.md +26 -0
  1068. package/src/resources/skills/userinterface-wiki/rules/design-oscillator-for-tonal.md +22 -0
  1069. package/src/resources/skills/userinterface-wiki/rules/duration-max-300ms.md +21 -0
  1070. package/src/resources/skills/userinterface-wiki/rules/duration-press-hover.md +21 -0
  1071. package/src/resources/skills/userinterface-wiki/rules/duration-shorten-before-curve.md +21 -0
  1072. package/src/resources/skills/userinterface-wiki/rules/duration-small-state.md +15 -0
  1073. package/src/resources/skills/userinterface-wiki/rules/easing-entrance-ease-out.md +21 -0
  1074. package/src/resources/skills/userinterface-wiki/rules/easing-exit-ease-in.md +21 -0
  1075. package/src/resources/skills/userinterface-wiki/rules/easing-for-state-change.md +27 -0
  1076. package/src/resources/skills/userinterface-wiki/rules/easing-linear-only-progress.md +21 -0
  1077. package/src/resources/skills/userinterface-wiki/rules/easing-natural-decay.md +22 -0
  1078. package/src/resources/skills/userinterface-wiki/rules/easing-no-linear-motion.md +22 -0
  1079. package/src/resources/skills/userinterface-wiki/rules/easing-transition-ease-in-out.md +15 -0
  1080. package/src/resources/skills/userinterface-wiki/rules/envelope-exponential-decay.md +21 -0
  1081. package/src/resources/skills/userinterface-wiki/rules/envelope-no-zero-target.md +21 -0
  1082. package/src/resources/skills/userinterface-wiki/rules/envelope-set-initial-value.md +22 -0
  1083. package/src/resources/skills/userinterface-wiki/rules/exit-key-required.md +29 -0
  1084. package/src/resources/skills/userinterface-wiki/rules/exit-matches-initial.md +29 -0
  1085. package/src/resources/skills/userinterface-wiki/rules/exit-prop-required.md +33 -0
  1086. package/src/resources/skills/userinterface-wiki/rules/exit-requires-wrapper.md +27 -0
  1087. package/src/resources/skills/userinterface-wiki/rules/impl-default-subtle.md +21 -0
  1088. package/src/resources/skills/userinterface-wiki/rules/impl-preload-audio.md +34 -0
  1089. package/src/resources/skills/userinterface-wiki/rules/impl-reset-current-time.md +26 -0
  1090. package/src/resources/skills/userinterface-wiki/rules/mode-pop-layout-for-lists.md +25 -0
  1091. package/src/resources/skills/userinterface-wiki/rules/mode-sync-layout-conflict.md +29 -0
  1092. package/src/resources/skills/userinterface-wiki/rules/mode-wait-doubles-duration.md +25 -0
  1093. package/src/resources/skills/userinterface-wiki/rules/morphing-aria-hidden.md +21 -0
  1094. package/src/resources/skills/userinterface-wiki/rules/morphing-consistent-viewbox.md +23 -0
  1095. package/src/resources/skills/userinterface-wiki/rules/morphing-group-variants.md +33 -0
  1096. package/src/resources/skills/userinterface-wiki/rules/morphing-jump-non-grouped.md +29 -0
  1097. package/src/resources/skills/userinterface-wiki/rules/morphing-reduced-motion.md +28 -0
  1098. package/src/resources/skills/userinterface-wiki/rules/morphing-spring-rotation.md +23 -0
  1099. package/src/resources/skills/userinterface-wiki/rules/morphing-strokelinecap-round.md +21 -0
  1100. package/src/resources/skills/userinterface-wiki/rules/morphing-three-lines.md +32 -0
  1101. package/src/resources/skills/userinterface-wiki/rules/morphing-use-collapsed.md +33 -0
  1102. package/src/resources/skills/userinterface-wiki/rules/native-backdrop-styling.md +27 -0
  1103. package/src/resources/skills/userinterface-wiki/rules/native-placeholder-styling.md +27 -0
  1104. package/src/resources/skills/userinterface-wiki/rules/native-selection-styling.md +18 -0
  1105. package/src/resources/skills/userinterface-wiki/rules/nested-consistent-timing.md +25 -0
  1106. package/src/resources/skills/userinterface-wiki/rules/nested-propagate-required.md +41 -0
  1107. package/src/resources/skills/userinterface-wiki/rules/none-context-menu-entrance.md +25 -0
  1108. package/src/resources/skills/userinterface-wiki/rules/none-high-frequency.md +29 -0
  1109. package/src/resources/skills/userinterface-wiki/rules/none-keyboard-navigation.md +32 -0
  1110. package/src/resources/skills/userinterface-wiki/rules/param-click-duration.md +21 -0
  1111. package/src/resources/skills/userinterface-wiki/rules/param-filter-frequency-range.md +21 -0
  1112. package/src/resources/skills/userinterface-wiki/rules/param-q-value-range.md +21 -0
  1113. package/src/resources/skills/userinterface-wiki/rules/param-reasonable-gain.md +21 -0
  1114. package/src/resources/skills/userinterface-wiki/rules/physics-active-state.md +23 -0
  1115. package/src/resources/skills/userinterface-wiki/rules/physics-no-excessive-stagger.md +22 -0
  1116. package/src/resources/skills/userinterface-wiki/rules/physics-spring-for-overshoot.md +23 -0
  1117. package/src/resources/skills/userinterface-wiki/rules/physics-subtle-deformation.md +22 -0
  1118. package/src/resources/skills/userinterface-wiki/rules/prefetch-hit-slop.md +27 -0
  1119. package/src/resources/skills/userinterface-wiki/rules/prefetch-keyboard-tab.md +19 -0
  1120. package/src/resources/skills/userinterface-wiki/rules/prefetch-not-everything.md +22 -0
  1121. package/src/resources/skills/userinterface-wiki/rules/prefetch-touch-fallback.md +34 -0
  1122. package/src/resources/skills/userinterface-wiki/rules/prefetch-trajectory-over-hover.md +32 -0
  1123. package/src/resources/skills/userinterface-wiki/rules/prefetch-use-selectively.md +13 -0
  1124. package/src/resources/skills/userinterface-wiki/rules/presence-disable-interactions.md +31 -0
  1125. package/src/resources/skills/userinterface-wiki/rules/presence-hook-in-child.md +31 -0
  1126. package/src/resources/skills/userinterface-wiki/rules/presence-safe-to-remove.md +37 -0
  1127. package/src/resources/skills/userinterface-wiki/rules/pseudo-content-required.md +28 -0
  1128. package/src/resources/skills/userinterface-wiki/rules/pseudo-first-line-styling.md +27 -0
  1129. package/src/resources/skills/userinterface-wiki/rules/pseudo-hit-target-expansion.md +31 -0
  1130. package/src/resources/skills/userinterface-wiki/rules/pseudo-marker-styling.md +28 -0
  1131. package/src/resources/skills/userinterface-wiki/rules/pseudo-over-dom-node.md +32 -0
  1132. package/src/resources/skills/userinterface-wiki/rules/pseudo-position-relative-parent.md +33 -0
  1133. package/src/resources/skills/userinterface-wiki/rules/pseudo-z-index-layering.md +37 -0
  1134. package/src/resources/skills/userinterface-wiki/rules/spring-for-gestures.md +27 -0
  1135. package/src/resources/skills/userinterface-wiki/rules/spring-for-interruptible.md +27 -0
  1136. package/src/resources/skills/userinterface-wiki/rules/spring-params-balanced.md +29 -0
  1137. package/src/resources/skills/userinterface-wiki/rules/spring-preserves-velocity.md +28 -0
  1138. package/src/resources/skills/userinterface-wiki/rules/staging-dim-background.md +22 -0
  1139. package/src/resources/skills/userinterface-wiki/rules/staging-one-focal-point.md +24 -0
  1140. package/src/resources/skills/userinterface-wiki/rules/staging-z-index-hierarchy.md +22 -0
  1141. package/src/resources/skills/userinterface-wiki/rules/timing-consistent.md +24 -0
  1142. package/src/resources/skills/userinterface-wiki/rules/timing-no-entrance-context-menu.md +22 -0
  1143. package/src/resources/skills/userinterface-wiki/rules/timing-under-300ms.md +22 -0
  1144. package/src/resources/skills/userinterface-wiki/rules/transition-name-cleanup.md +28 -0
  1145. package/src/resources/skills/userinterface-wiki/rules/transition-name-required.md +27 -0
  1146. package/src/resources/skills/userinterface-wiki/rules/transition-name-unique.md +24 -0
  1147. package/src/resources/skills/userinterface-wiki/rules/transition-over-js-library.md +32 -0
  1148. package/src/resources/skills/userinterface-wiki/rules/transition-style-pseudo-elements.md +24 -0
  1149. package/src/resources/skills/userinterface-wiki/rules/type-antialiased-on-retina.md +18 -0
  1150. package/src/resources/skills/userinterface-wiki/rules/type-disambiguation-stylistic-set.md +15 -0
  1151. package/src/resources/skills/userinterface-wiki/rules/type-font-display-swap.md +28 -0
  1152. package/src/resources/skills/userinterface-wiki/rules/type-justify-with-hyphens.md +24 -0
  1153. package/src/resources/skills/userinterface-wiki/rules/type-letter-spacing-uppercase.md +28 -0
  1154. package/src/resources/skills/userinterface-wiki/rules/type-no-font-synthesis.md +18 -0
  1155. package/src/resources/skills/userinterface-wiki/rules/type-oldstyle-nums-for-prose.md +21 -0
  1156. package/src/resources/skills/userinterface-wiki/rules/type-opentype-contextual-alternates.md +15 -0
  1157. package/src/resources/skills/userinterface-wiki/rules/type-optical-sizing-auto.md +25 -0
  1158. package/src/resources/skills/userinterface-wiki/rules/type-proper-fractions.md +15 -0
  1159. package/src/resources/skills/userinterface-wiki/rules/type-slashed-zero.md +17 -0
  1160. package/src/resources/skills/userinterface-wiki/rules/type-tabular-nums-for-data.md +21 -0
  1161. package/src/resources/skills/userinterface-wiki/rules/type-text-wrap-balance-headings.md +21 -0
  1162. package/src/resources/skills/userinterface-wiki/rules/type-text-wrap-pretty.md +16 -0
  1163. package/src/resources/skills/userinterface-wiki/rules/type-underline-offset.md +25 -0
  1164. package/src/resources/skills/userinterface-wiki/rules/type-variable-weight-continuous.md +23 -0
  1165. package/src/resources/skills/userinterface-wiki/rules/ux-aesthetic-usability.md +32 -0
  1166. package/src/resources/skills/userinterface-wiki/rules/ux-cognitive-load-reduce.md +49 -0
  1167. package/src/resources/skills/userinterface-wiki/rules/ux-common-region-boundaries.md +50 -0
  1168. package/src/resources/skills/userinterface-wiki/rules/ux-doherty-perceived-speed.md +29 -0
  1169. package/src/resources/skills/userinterface-wiki/rules/ux-doherty-under-400ms.md +30 -0
  1170. package/src/resources/skills/userinterface-wiki/rules/ux-fitts-hit-area.md +32 -0
  1171. package/src/resources/skills/userinterface-wiki/rules/ux-fitts-target-size.md +31 -0
  1172. package/src/resources/skills/userinterface-wiki/rules/ux-goal-gradient-progress.md +33 -0
  1173. package/src/resources/skills/userinterface-wiki/rules/ux-hicks-minimize-choices.md +45 -0
  1174. package/src/resources/skills/userinterface-wiki/rules/ux-jakobs-familiar-patterns.md +37 -0
  1175. package/src/resources/skills/userinterface-wiki/rules/ux-millers-chunking.md +23 -0
  1176. package/src/resources/skills/userinterface-wiki/rules/ux-pareto-prioritize-features.md +36 -0
  1177. package/src/resources/skills/userinterface-wiki/rules/ux-peak-end-finish-strong.md +35 -0
  1178. package/src/resources/skills/userinterface-wiki/rules/ux-postels-accept-messy-input.md +45 -0
  1179. package/src/resources/skills/userinterface-wiki/rules/ux-pragnanz-simplify.md +33 -0
  1180. package/src/resources/skills/userinterface-wiki/rules/ux-progressive-disclosure.md +41 -0
  1181. package/src/resources/skills/userinterface-wiki/rules/ux-proximity-grouping.md +38 -0
  1182. package/src/resources/skills/userinterface-wiki/rules/ux-serial-position.md +31 -0
  1183. package/src/resources/skills/userinterface-wiki/rules/ux-similarity-consistency.md +35 -0
  1184. package/src/resources/skills/userinterface-wiki/rules/ux-teslers-complexity.md +28 -0
  1185. package/src/resources/skills/userinterface-wiki/rules/ux-uniform-connectedness.md +43 -0
  1186. package/src/resources/skills/userinterface-wiki/rules/ux-von-restorff-emphasis.md +29 -0
  1187. package/src/resources/skills/userinterface-wiki/rules/ux-zeigarnik-show-incomplete.md +36 -0
  1188. package/src/resources/skills/userinterface-wiki/rules/visual-animate-shadow-pseudo.md +49 -0
  1189. package/src/resources/skills/userinterface-wiki/rules/visual-border-alpha-colors.md +25 -0
  1190. package/src/resources/skills/userinterface-wiki/rules/visual-button-shadow-anatomy.md +49 -0
  1191. package/src/resources/skills/userinterface-wiki/rules/visual-concentric-radius.md +40 -0
  1192. package/src/resources/skills/userinterface-wiki/rules/visual-consistent-spacing-scale.md +35 -0
  1193. package/src/resources/skills/userinterface-wiki/rules/visual-layered-shadows.md +30 -0
  1194. package/src/resources/skills/userinterface-wiki/rules/visual-no-pure-black-shadow.md +25 -0
  1195. package/src/resources/skills/userinterface-wiki/rules/visual-shadow-direction.md +25 -0
  1196. package/src/resources/skills/userinterface-wiki/rules/visual-shadow-matches-elevation.md +23 -0
  1197. package/src/resources/skills/userinterface-wiki/rules/weight-duration-matches-action.md +29 -0
  1198. package/src/resources/skills/userinterface-wiki/rules/weight-match-action.md +32 -0
  1199. package/src/resources/skills/web-design-guidelines/SKILL.md +39 -0
  1200. package/src/resources/skills/web-quality-audit/SKILL.md +170 -0
  1201. package/src/resources/skills/web-quality-audit/scripts/analyze.sh +91 -0
  1202. package/dist/resources/extensions/gsd/complexity.ts +0 -237
  1203. package/dist/resources/extensions/gsd/github-client.ts +0 -235
  1204. package/dist/resources/extensions/gsd/mcp-server.ts +0 -108
  1205. package/dist/resources/extensions/gsd/tests/activity-log-prune.test.ts +0 -297
  1206. package/dist/resources/extensions/gsd/tests/activity-log-save.test.ts +0 -127
  1207. package/dist/resources/extensions/gsd/tests/agent-end-provider-error.test.ts +0 -110
  1208. package/dist/resources/extensions/gsd/tests/auto-draft-pause.test.ts +0 -115
  1209. package/dist/resources/extensions/gsd/tests/complexity-routing.test.ts +0 -294
  1210. package/dist/resources/extensions/gsd/tests/marketplace-discovery.test.ts +0 -202
  1211. package/dist/resources/extensions/gsd/tests/metrics-io.test.ts +0 -176
  1212. package/dist/resources/extensions/gsd/tests/network-error-fallback.test.ts +0 -104
  1213. package/dist/resources/extensions/gsd/tests/preferences-git.test.ts +0 -120
  1214. package/dist/resources/extensions/gsd/tests/preferences-hooks.test.ts +0 -226
  1215. package/dist/resources/extensions/gsd/tests/preferences-mode.test.ts +0 -110
  1216. package/dist/resources/extensions/gsd/tests/preferences-models.test.ts +0 -207
  1217. package/dist/resources/extensions/gsd/tests/preferences-schema-validation.test.ts +0 -183
  1218. package/dist/resources/extensions/gsd/tests/preferences-wizard-fields.test.ts +0 -168
  1219. package/dist/resources/extensions/shared/bundled-extension-paths.ts +0 -11
  1220. package/src/resources/extensions/gsd/complexity.ts +0 -237
  1221. package/src/resources/extensions/gsd/github-client.ts +0 -235
  1222. package/src/resources/extensions/gsd/mcp-server.ts +0 -108
  1223. package/src/resources/extensions/gsd/tests/activity-log-prune.test.ts +0 -297
  1224. package/src/resources/extensions/gsd/tests/activity-log-save.test.ts +0 -127
  1225. package/src/resources/extensions/gsd/tests/agent-end-provider-error.test.ts +0 -110
  1226. package/src/resources/extensions/gsd/tests/auto-draft-pause.test.ts +0 -115
  1227. package/src/resources/extensions/gsd/tests/complexity-routing.test.ts +0 -294
  1228. package/src/resources/extensions/gsd/tests/marketplace-discovery.test.ts +0 -202
  1229. package/src/resources/extensions/gsd/tests/metrics-io.test.ts +0 -176
  1230. package/src/resources/extensions/gsd/tests/network-error-fallback.test.ts +0 -104
  1231. package/src/resources/extensions/gsd/tests/preferences-git.test.ts +0 -120
  1232. package/src/resources/extensions/gsd/tests/preferences-hooks.test.ts +0 -226
  1233. package/src/resources/extensions/gsd/tests/preferences-mode.test.ts +0 -110
  1234. package/src/resources/extensions/gsd/tests/preferences-models.test.ts +0 -207
  1235. package/src/resources/extensions/gsd/tests/preferences-schema-validation.test.ts +0 -183
  1236. package/src/resources/extensions/gsd/tests/preferences-wizard-fields.test.ts +0 -168
  1237. package/src/resources/extensions/shared/bundled-extension-paths.ts +0 -11
@@ -0,0 +1,284 @@
1
+ /**
2
+ * GSD Session Lock — OS-level exclusive locking for auto-mode sessions.
3
+ *
4
+ * Prevents multiple GSD processes from running auto-mode concurrently on
5
+ * the same project. Uses proper-lockfile for OS-level file locking (flock/
6
+ * lockfile) which eliminates the TOCTOU race condition that existed with
7
+ * the old advisory JSON lock approach.
8
+ *
9
+ * The lock file (.gsd/auto.lock) contains JSON metadata (PID, start time,
10
+ * unit info) for diagnostics, but the actual exclusion is enforced by the
11
+ * OS-level lock held via proper-lockfile.
12
+ *
13
+ * Lifecycle:
14
+ * acquireSessionLock() — called at the START of bootstrapAutoSession
15
+ * validateSessionLock() — called periodically during dispatch to detect takeover
16
+ * releaseSessionLock() — called on clean stop/pause
17
+ */
18
+
19
+ import { createRequire } from "node:module";
20
+ import { existsSync, readFileSync, mkdirSync, unlinkSync } from "node:fs";
21
+ import { join, dirname } from "node:path";
22
+ import { gsdRoot } from "./paths.js";
23
+ import { atomicWriteSync } from "./atomic-write.js";
24
+
25
+ const _require = createRequire(import.meta.url);
26
+
27
+ // ─── Types ──────────────────────────────────────────────────────────────────
28
+
29
+ export interface SessionLockData {
30
+ pid: number;
31
+ startedAt: string;
32
+ unitType: string;
33
+ unitId: string;
34
+ unitStartedAt: string;
35
+ completedUnits: number;
36
+ sessionFile?: string;
37
+ }
38
+
39
+ export type SessionLockResult =
40
+ | { acquired: true }
41
+ | { acquired: false; reason: string; existingPid?: number };
42
+
43
+ // ─── Module State ───────────────────────────────────────────────────────────
44
+
45
+ /** Release function from proper-lockfile — calling it releases the OS lock. */
46
+ let _releaseFunction: (() => void) | null = null;
47
+
48
+ /** The path we currently hold a lock on. */
49
+ let _lockedPath: string | null = null;
50
+
51
+ /** Our PID at lock acquisition time. */
52
+ let _lockPid: number = 0;
53
+
54
+ const LOCK_FILE = "auto.lock";
55
+
56
+ function lockPath(basePath: string): string {
57
+ return join(gsdRoot(basePath), LOCK_FILE);
58
+ }
59
+
60
+ // ─── Public API ─────────────────────────────────────────────────────────────
61
+
62
+ /**
63
+ * Attempt to acquire an exclusive session lock for the given project.
64
+ *
65
+ * This uses proper-lockfile for OS-level file locking. If another process
66
+ * already holds the lock, this returns { acquired: false } with details.
67
+ *
68
+ * The lock file also contains JSON metadata about the session for
69
+ * diagnostic purposes (PID, unit info, etc.).
70
+ */
71
+ export function acquireSessionLock(basePath: string): SessionLockResult {
72
+ const lp = lockPath(basePath);
73
+
74
+ // Ensure the directory exists
75
+ mkdirSync(dirname(lp), { recursive: true });
76
+
77
+ // Write our lock data first (the content is informational; the OS lock is the real guard)
78
+ const lockData: SessionLockData = {
79
+ pid: process.pid,
80
+ startedAt: new Date().toISOString(),
81
+ unitType: "starting",
82
+ unitId: "bootstrap",
83
+ unitStartedAt: new Date().toISOString(),
84
+ completedUnits: 0,
85
+ };
86
+
87
+ let lockfile: typeof import("proper-lockfile");
88
+ try {
89
+ lockfile = _require("proper-lockfile") as typeof import("proper-lockfile");
90
+ } catch {
91
+ // proper-lockfile not available — fall back to PID-based check
92
+ return acquireFallbackLock(basePath, lp, lockData);
93
+ }
94
+
95
+ try {
96
+ // Try to acquire an exclusive OS-level lock on the lock file.
97
+ // We lock the directory (gsdRoot) since proper-lockfile works best
98
+ // on directories, and the lock file itself may not exist yet.
99
+ const gsdDir = gsdRoot(basePath);
100
+ mkdirSync(gsdDir, { recursive: true });
101
+
102
+ const release = lockfile.lockSync(gsdDir, {
103
+ realpath: false,
104
+ stale: 300_000, // 5 minutes — consider lock stale if holder hasn't updated
105
+ update: 10_000, // Update lock mtime every 10s to prove liveness
106
+ });
107
+
108
+ _releaseFunction = release;
109
+ _lockedPath = basePath;
110
+ _lockPid = process.pid;
111
+
112
+ // Write the informational lock data
113
+ atomicWriteSync(lp, JSON.stringify(lockData, null, 2));
114
+
115
+ return { acquired: true };
116
+ } catch (err) {
117
+ // Lock is held by another process
118
+ const existingData = readExistingLockData(lp);
119
+ const existingPid = existingData?.pid;
120
+ const reason = existingPid
121
+ ? `Another auto-mode session (PID ${existingPid}) is already running on this project.`
122
+ : `Another auto-mode session is already running on this project.`;
123
+
124
+ return { acquired: false, reason, existingPid };
125
+ }
126
+ }
127
+
128
+ /**
129
+ * Fallback lock acquisition when proper-lockfile is not available.
130
+ * Uses PID-based liveness checking (the old approach, but with the lock
131
+ * written BEFORE initialization rather than after).
132
+ */
133
+ function acquireFallbackLock(
134
+ basePath: string,
135
+ lp: string,
136
+ lockData: SessionLockData,
137
+ ): SessionLockResult {
138
+ // Check if an existing lock is held by a live process
139
+ const existing = readExistingLockData(lp);
140
+ if (existing && existing.pid !== process.pid) {
141
+ if (isPidAlive(existing.pid)) {
142
+ return {
143
+ acquired: false,
144
+ reason: `Another auto-mode session (PID ${existing.pid}) is already running on this project.`,
145
+ existingPid: existing.pid,
146
+ };
147
+ }
148
+ // Stale lock from dead process — we can take over
149
+ }
150
+
151
+ // Write our lock data
152
+ atomicWriteSync(lp, JSON.stringify(lockData, null, 2));
153
+ _lockedPath = basePath;
154
+ _lockPid = process.pid;
155
+
156
+ return { acquired: true };
157
+ }
158
+
159
+ /**
160
+ * Update the lock file metadata (called on each unit dispatch).
161
+ * Does NOT re-acquire the OS lock — just updates the JSON content.
162
+ */
163
+ export function updateSessionLock(
164
+ basePath: string,
165
+ unitType: string,
166
+ unitId: string,
167
+ completedUnits: number,
168
+ sessionFile?: string,
169
+ ): void {
170
+ if (_lockedPath !== basePath && _lockedPath !== null) return;
171
+
172
+ const lp = lockPath(basePath);
173
+ try {
174
+ const data: SessionLockData = {
175
+ pid: process.pid,
176
+ startedAt: new Date().toISOString(),
177
+ unitType,
178
+ unitId,
179
+ unitStartedAt: new Date().toISOString(),
180
+ completedUnits,
181
+ sessionFile,
182
+ };
183
+ atomicWriteSync(lp, JSON.stringify(data, null, 2));
184
+ } catch {
185
+ // Non-fatal: lock update failure
186
+ }
187
+ }
188
+
189
+ /**
190
+ * Validate that we still own the session lock.
191
+ *
192
+ * Returns true if we still hold the lock, false if another process
193
+ * has taken over (indicating we should gracefully stop).
194
+ *
195
+ * This is called periodically during the dispatch loop.
196
+ */
197
+ export function validateSessionLock(basePath: string): boolean {
198
+ // If we have an OS-level lock, we're still the owner
199
+ if (_releaseFunction && _lockedPath === basePath) {
200
+ return true;
201
+ }
202
+
203
+ // Fallback: check the lock file PID
204
+ const lp = lockPath(basePath);
205
+ const existing = readExistingLockData(lp);
206
+ if (!existing) {
207
+ // Lock file was deleted — we lost ownership
208
+ return false;
209
+ }
210
+
211
+ return existing.pid === process.pid;
212
+ }
213
+
214
+ /**
215
+ * Release the session lock. Called on clean stop/pause.
216
+ */
217
+ export function releaseSessionLock(basePath: string): void {
218
+ // Release the OS-level lock
219
+ if (_releaseFunction) {
220
+ try {
221
+ _releaseFunction();
222
+ } catch {
223
+ // Lock may already be released
224
+ }
225
+ _releaseFunction = null;
226
+ }
227
+
228
+ // Remove the lock file
229
+ const lp = lockPath(basePath);
230
+ try {
231
+ if (existsSync(lp)) unlinkSync(lp);
232
+ } catch {
233
+ // Non-fatal
234
+ }
235
+
236
+ _lockedPath = null;
237
+ _lockPid = 0;
238
+ }
239
+
240
+ /**
241
+ * Check if a session lock exists and return its data (for crash recovery).
242
+ * Does NOT acquire the lock.
243
+ */
244
+ export function readSessionLockData(basePath: string): SessionLockData | null {
245
+ return readExistingLockData(lockPath(basePath));
246
+ }
247
+
248
+ /**
249
+ * Check if the process that wrote the lock is still alive.
250
+ */
251
+ export function isSessionLockProcessAlive(data: SessionLockData): boolean {
252
+ return isPidAlive(data.pid);
253
+ }
254
+
255
+ /**
256
+ * Returns true if we currently hold a session lock for the given path.
257
+ */
258
+ export function isSessionLockHeld(basePath: string): boolean {
259
+ return _lockedPath === basePath && _lockPid === process.pid;
260
+ }
261
+
262
+ // ─── Internal Helpers ───────────────────────────────────────────────────────
263
+
264
+ function readExistingLockData(lp: string): SessionLockData | null {
265
+ try {
266
+ if (!existsSync(lp)) return null;
267
+ const raw = readFileSync(lp, "utf-8");
268
+ return JSON.parse(raw) as SessionLockData;
269
+ } catch {
270
+ return null;
271
+ }
272
+ }
273
+
274
+ function isPidAlive(pid: number): boolean {
275
+ if (!Number.isInteger(pid) || pid <= 0) return false;
276
+ if (pid === process.pid) return false;
277
+ try {
278
+ process.kill(pid, 0);
279
+ return true;
280
+ } catch (err) {
281
+ if ((err as NodeJS.ErrnoException).code === "EPERM") return true;
282
+ return false;
283
+ }
284
+ }
@@ -13,7 +13,17 @@ Run GSD commands without TUI via `gsd headless`. Spawns an RPC child process, au
13
13
  gsd headless [flags] [command] [args...]
14
14
  ```
15
15
 
16
- **Flags:** `--timeout N` (ms, default 300000), `--json` (JSONL to stdout), `--model ID`, `--verbose`
16
+ **Flags:**
17
+ - `--timeout N` — overall timeout in ms (default 300000)
18
+ - `--json` — JSONL event stream to stdout
19
+ - `--model ID` — override LLM model
20
+ - `--verbose` — show tool calls in progress output
21
+ - `--supervised` — forward interactive UI requests to orchestrator via stdout/stdin
22
+ - `--response-timeout N` — timeout for orchestrator response in supervised mode (default 30000)
23
+ - `--max-restarts N` — auto-restart on crash with backoff (default 3, 0 to disable)
24
+ - `--answers <path>` — pre-supply answers and secrets from JSON file
25
+ - `--events <types>` — filter JSONL output to specific event types (comma-separated, implies `--json`)
26
+
17
27
  **Exit codes:** 0=complete, 1=error/timeout, 2=blocked
18
28
 
19
29
  ## Core Workflows
@@ -44,13 +54,32 @@ gsd headless next
44
54
 
45
55
  Execute exactly one unit (task/slice/milestone step), then exit. Ideal for step-by-step orchestration with external decision logic between steps.
46
56
 
47
- ### 4. Check Status
57
+ ### 4. Instant State Snapshot (no LLM)
48
58
 
49
59
  ```bash
50
- gsd headless --json status
60
+ gsd headless query
61
+ ```
62
+
63
+ Returns a single JSON object with the full project snapshot — no LLM session, instant (~50ms). **This is the recommended way for orchestrators to inspect state.**
64
+
65
+ ```json
66
+ {
67
+ "state": { "phase": "executing", "activeMilestone": {...}, "activeSlice": {...}, "progress": {...}, "registry": [...] },
68
+ "next": { "action": "dispatch", "unitType": "execute-task", "unitId": "M001/S01/T01" },
69
+ "cost": { "workers": [{ "milestoneId": "M001", "cost": 1.50, ... }], "total": 1.50 }
70
+ }
51
71
  ```
52
72
 
53
- Returns project state: active milestone/slice/task, phase, progress counts, blockers. Parse the JSONL output for machine-readable state.
73
+ ```bash
74
+ # What phase is the project in?
75
+ gsd headless query | jq '.state.phase'
76
+
77
+ # What would auto-mode do next?
78
+ gsd headless query | jq '.next'
79
+
80
+ # Total spend across parallel workers
81
+ gsd headless query | jq '.cost.total'
82
+ ```
54
83
 
55
84
  ### 5. Dispatch Specific Phase
56
85
 
@@ -65,14 +94,14 @@ Force-route to a specific phase, bypassing normal state-machine routing.
65
94
  ### Poll-and-React Loop
66
95
 
67
96
  ```bash
68
- # Check status, decide what to do
69
- STATUS=$(gsd headless --json status 2>/dev/null)
70
- EXIT=$?
71
-
72
- case $EXIT in
73
- 0) echo "Complete" ;;
74
- 2) echo "Blocked — needs intervention" ;;
75
- *) echo "Error" ;;
97
+ # Instant state check no LLM cost
98
+ PHASE=$(gsd headless query | jq -r '.state.phase')
99
+ NEXT_ACTION=$(gsd headless query | jq -r '.next.action')
100
+
101
+ case "$PHASE" in
102
+ complete) echo "Done" ;;
103
+ blocked) echo "Needs intervention" ;;
104
+ *) [ "$NEXT_ACTION" = "dispatch" ] && gsd headless next ;;
76
105
  esac
77
106
  ```
78
107
 
@@ -83,8 +112,8 @@ while true; do
83
112
  gsd headless next
84
113
  EXIT=$?
85
114
  [ $EXIT -ne 0 ] && break
86
- # Check progress, log, decide whether to continue
87
- gsd headless --json status
115
+ # Instant progress check between steps
116
+ gsd headless query | jq '{phase: .state.phase, progress: .state.progress}'
88
117
  done
89
118
  ```
90
119
 
@@ -137,9 +166,44 @@ done
137
166
 
138
167
  Event types: `agent_start`, `agent_end`, `tool_execution_start`, `tool_execution_end`, `extension_ui_request`, `message_update`, `error`.
139
168
 
169
+ ### Filtered Event Stream
170
+
171
+ Use `--events` to receive only specific event types — reduces noise for orchestrators:
172
+
173
+ ```bash
174
+ # Only phase-relevant events
175
+ gsd headless --events agent_end,extension_ui_request auto 2>/dev/null
176
+
177
+ # Only tool execution events
178
+ gsd headless --events tool_execution_start,tool_execution_end auto
179
+ ```
180
+
181
+ The filter applies only to stdout output. Internal processing (completion detection, supervised mode, answer injection) is unaffected — all events are still processed internally.
182
+
183
+ Available event types: `agent_start`, `agent_end`, `tool_execution_start`, `tool_execution_end`, `tool_execution_update`, `extension_ui_request`, `message_start`, `message_end`, `message_update`, `turn_start`, `turn_end`.
184
+
140
185
  ## Answer Injection
141
186
 
142
- Pre-supply answers for non-interactive runs. See [references/answer-injection.md](references/answer-injection.md) for schema and usage.
187
+ Pre-supply answers and secrets for headless runs via `--answers`:
188
+
189
+ ```bash
190
+ gsd headless --answers answers.json auto
191
+ ```
192
+
193
+ Answer file schema:
194
+ ```json
195
+ {
196
+ "questions": { "question_id": "selected_option" },
197
+ "secrets": { "API_KEY": "sk-..." },
198
+ "defaults": { "strategy": "first_option" }
199
+ }
200
+ ```
201
+
202
+ - **questions** — question ID → answer (string or string[])
203
+ - **secrets** — env var → value, injected into child process env
204
+ - **defaults.strategy** — `"first_option"` (default) or `"cancel"` for unmatched
205
+
206
+ See [references/answer-injection.md](references/answer-injection.md) for full details.
143
207
 
144
208
  ## GSD Project Structure
145
209
 
@@ -167,7 +231,7 @@ Quick reference — see [references/commands.md](references/commands.md) for the
167
231
  |---------|---------|
168
232
  | `auto` | Run all queued units (default) |
169
233
  | `next` | Run one unit |
170
- | `status` | Progress dashboard |
234
+ | `query` | Instant JSON snapshot — state, next dispatch, costs (no LLM) |
171
235
  | `new-milestone` | Create milestone from spec |
172
236
  | `queue` | Queue/reorder milestones |
173
237
  | `history` | View execution history |
@@ -2,6 +2,15 @@
2
2
 
3
3
  Pre-supply answers to eliminate interactive prompts during headless execution.
4
4
 
5
+ ## CLI Usage
6
+
7
+ ```bash
8
+ gsd headless --answers answers.json auto
9
+ gsd headless --answers answers.json new-milestone --context spec.md --auto
10
+ ```
11
+
12
+ The `--answers` flag takes a path to a JSON file containing pre-supplied answers and secrets.
13
+
5
14
  ## Answer File Schema
6
15
 
7
16
  ```json
@@ -23,18 +32,37 @@ Pre-supply answers to eliminate interactive prompts during headless execution.
23
32
  ### Fields
24
33
 
25
34
  - **questions**: Map question ID → answer. String for single-select, string[] for multi-select.
26
- - **secrets**: Map env var name → value. Used for `secure_env_collect` tool calls. Values are never logged.
35
+ - **secrets**: Map env var name → value. Injected as environment variables into the RPC child process. The child's `checkExistingEnvKeys()` detects them in `process.env` and marks them as "already set" — no interactive prompt needed.
27
36
  - **defaults.strategy**: Fallback for unmatched questions.
28
- - `"first_option"` — auto-select first available option
37
+ - `"first_option"` — auto-select first available option (default)
29
38
  - `"cancel"` — cancel the request
30
39
 
40
+ ## Secrets Mechanism
41
+
42
+ Secrets are injected via the `RpcClient` `env` option, which merges them into the child process's `process.env`. This means:
43
+
44
+ 1. The headless orchestrator reads the answer file
45
+ 2. Secret values are passed as `env` to `RpcClient`
46
+ 3. The child process spawns with these env vars set
47
+ 4. When `secure_env_collect` runs, `checkExistingEnvKeys()` finds the keys already in `process.env`
48
+ 5. The tool skips the interactive prompt and reports the keys as "already configured"
49
+
50
+ Secrets are never logged or included in event streams.
51
+
31
52
  ## How It Works
32
53
 
33
54
  Two-phase correlation:
34
55
  1. **Observe** `tool_execution_start` events for `ask_user_questions` — extracts question metadata (ID, options, allowMultiple)
35
56
  2. **Match** subsequent `extension_ui_request` events to metadata, respond with pre-supplied answer
36
57
 
37
- Handles out-of-order events (extension_ui_request can arrive before tool_execution_start in RPC mode) via deferred processing queue.
58
+ Handles out-of-order events (extension_ui_request can arrive before tool_execution_start in RPC mode) via deferred processing queue with 500ms timeout.
59
+
60
+ ## Coexistence with --supervised
61
+
62
+ Both `--answers` and `--supervised` can be active simultaneously. Priority order:
63
+ 1. Answer injector tries first
64
+ 2. If no answer found, supervised mode takes over
65
+ 3. If no orchestrator response, auto-responder kicks in after timeout
38
66
 
39
67
  ## Without Answer Injection
40
68
 
@@ -48,7 +76,8 @@ Answer injection overrides these defaults with specific answers when precision m
48
76
 
49
77
  ## Diagnostics
50
78
 
51
- The injector tracks stats:
79
+ The injector tracks stats printed in the summary:
52
80
  - `questionsAnswered` / `questionsDefaulted`
53
- - `secretsProvided` / `secretsMissing`
54
- - `fireAndForgetConsumed` / `confirmationsHandled`
81
+ - `secretsProvided`
82
+
83
+ Unused question IDs and secret keys are warned about at the end.
@@ -12,12 +12,14 @@ All commands can be run via `gsd headless [command]`.
12
12
  | `pause` | Pause auto-mode (preserves state, resumable) |
13
13
  | `new-milestone` | Create milestone from specification (requires `--context`) |
14
14
  | `dispatch <phase>` | Force-dispatch: research, plan, execute, complete, reassess, uat, replan |
15
+ | `discuss` | Start guided milestone/slice discussion |
15
16
 
16
- ## Status & Monitoring
17
+ ## State Inspection
17
18
 
18
19
  | Command | Description |
19
20
  |---------|-------------|
20
- | `status` | Progress dashboard (active unit, phase, blockers) |
21
+ | `query` | **Instant JSON snapshot** — state, next dispatch, parallel costs. No LLM, ~50ms. Recommended for orchestrators. |
22
+ | `status` | Progress dashboard (TUI overlay — useful interactively, not for parsing) |
21
23
  | `visualize` | Workflow visualizer (deps, metrics, timeline) |
22
24
  | `history` | Execution history (supports --cost, --phase, --model, limit) |
23
25
 
@@ -44,6 +46,9 @@ All commands can be run via `gsd headless [command]`.
44
46
  | `cleanup` | Remove merged branches or snapshots |
45
47
  | `export` | Export results (--json, --markdown) |
46
48
  | `migrate` | Migrate v1 .planning directory to .gsd format |
49
+ | `remote` | Control remote auto-mode (slack, discord, status, disconnect) |
50
+ | `inspect` | Show SQLite DB diagnostics (schema, row counts) |
51
+ | `forensics` | Post-mortem investigation of auto-mode failures |
47
52
 
48
53
  ## Phases
49
54
 
@@ -68,20 +68,11 @@ Coordinator writes to `.gsd/parallel/<milestoneId>.signal.json`. Worker consumes
68
68
  # Spawn worker in its worktree
69
69
  GSD_MILESTONE_LOCK=M001 \
70
70
  GSD_PARALLEL_WORKER=1 \
71
- GSD_BIN_PATH=$(which gsd) \
72
- gsd --mode json --print "/gsd auto" \
73
- 2>logs/M001.log &
71
+ gsd headless --json auto 2>logs/M001.log &
74
72
  WORKER_PID=$!
75
73
  ```
76
74
 
77
- Workers emit NDJSON on stdout. Parse `message_end` events for cost tracking:
78
- ```bash
79
- # Extract cost from worker output
80
- gsd --mode json --print "/gsd auto" | while read -r line; do
81
- COST=$(echo "$line" | jq -r 'select(.type=="message_end") | .message.usage.cost.total // empty')
82
- [ -n "$COST" ] && echo "Cost update: $COST"
83
- done
84
- ```
75
+ Workers emit JSONL events on stdout when `--json` is set.
85
76
 
86
77
  ## Monitoring All Workers
87
78
 
@@ -122,9 +113,9 @@ send_signal M003 resume
122
113
 
123
114
  ## Budget Enforcement
124
115
 
125
- Track aggregate cost across all workers:
116
+ Use `gsd headless query` for instant aggregate cost:
126
117
  ```bash
127
- TOTAL=$(jq -s 'map(.cost) | add // 0' .gsd/parallel/*.status.json)
118
+ TOTAL=$(gsd headless query | jq -r '.cost.total')
128
119
  CEILING=50.00
129
120
  if (( $(echo "$TOTAL > $CEILING" | bc -l) )); then
130
121
  echo "Budget exceeded ($TOTAL > $CEILING) — stopping all"
@@ -103,9 +103,17 @@ export async function getActiveMilestoneId(basePath: string): Promise<string | n
103
103
  // Parallel worker isolation
104
104
  const milestoneLock = process.env.GSD_MILESTONE_LOCK;
105
105
  if (milestoneLock) {
106
- return milestoneIds.includes(milestoneLock) ? milestoneLock : null;
106
+ if (!milestoneIds.includes(milestoneLock)) return null;
107
+ // Locked milestone that is parked should not be active
108
+ const lockedParked = resolveMilestoneFile(basePath, milestoneLock, "PARKED");
109
+ if (lockedParked) return null;
110
+ return milestoneLock;
107
111
  }
108
112
  for (const mid of milestoneIds) {
113
+ // Skip parked milestones — they are not eligible for active status
114
+ const parkedFile = resolveMilestoneFile(basePath, mid, "PARKED");
115
+ if (parkedFile) continue;
116
+
109
117
  const roadmapFile = resolveMilestoneFile(basePath, mid, "ROADMAP");
110
118
  const content = roadmapFile ? await loadFile(roadmapFile) : null;
111
119
  if (!content) {
@@ -224,7 +232,22 @@ async function _deriveStateImpl(basePath: string): Promise<GSDState> {
224
232
  const roadmapCache = new Map<string, Roadmap>();
225
233
  const completeMilestoneIds = new Set<string>();
226
234
 
235
+ // Track parked milestone IDs so Phase 2 can check without re-reading disk
236
+ const parkedMilestoneIds = new Set<string>();
237
+
227
238
  for (const mid of milestoneIds) {
239
+ // Skip parked milestones — they do NOT count as complete (don't satisfy depends_on)
240
+ // But still parse their roadmap for title extraction in Phase 2.
241
+ const parkedFile = resolveMilestoneFile(basePath, mid, "PARKED");
242
+ if (parkedFile) {
243
+ parkedMilestoneIds.add(mid);
244
+ // Cache roadmap for title extraction (but don't add to completeMilestoneIds)
245
+ const prf = resolveMilestoneFile(basePath, mid, "ROADMAP");
246
+ const prc = prf ? await cachedLoadFile(prf) : null;
247
+ if (prc) roadmapCache.set(mid, parseRoadmap(prc));
248
+ continue;
249
+ }
250
+
228
251
  const rf = resolveMilestoneFile(basePath, mid, "ROADMAP");
229
252
  const rc = rf ? await cachedLoadFile(rf) : null;
230
253
  if (!rc) {
@@ -247,6 +270,16 @@ async function _deriveStateImpl(basePath: string): Promise<GSDState> {
247
270
  let activeMilestoneHasDraft = false;
248
271
 
249
272
  for (const mid of milestoneIds) {
273
+ // Skip parked milestones — register them as 'parked' and move on
274
+ if (parkedMilestoneIds.has(mid)) {
275
+ const roadmap = roadmapCache.get(mid) ?? null;
276
+ const title = roadmap
277
+ ? roadmap.title.replace(/^M\d+(?:-[a-z0-9]{6})?[^:]*:\s*/, '')
278
+ : mid;
279
+ registry.push({ id: mid, title, status: 'parked' });
280
+ continue;
281
+ }
282
+
250
283
  const roadmap = roadmapCache.get(mid) ?? null;
251
284
 
252
285
  if (!roadmap) {
@@ -352,8 +385,9 @@ async function _deriveStateImpl(basePath: string): Promise<GSDState> {
352
385
  };
353
386
 
354
387
  if (!activeMilestone) {
355
- // Check whether any milestones are pending (dep-blocked) vs all complete
388
+ // Check whether any milestones are pending (dep-blocked) or parked
356
389
  const pendingEntries = registry.filter(entry => entry.status === 'pending');
390
+ const parkedEntries = registry.filter(entry => entry.status === 'parked');
357
391
  if (pendingEntries.length > 0) {
358
392
  // All incomplete milestones are dep-blocked — no progress possible
359
393
  const blockerDetails = pendingEntries
@@ -376,6 +410,24 @@ async function _deriveStateImpl(basePath: string): Promise<GSDState> {
376
410
  },
377
411
  };
378
412
  }
413
+ if (parkedEntries.length > 0) {
414
+ // All non-complete milestones are parked — nothing active, but not "all complete"
415
+ const parkedIds = parkedEntries.map(e => e.id).join(', ');
416
+ return {
417
+ activeMilestone: null,
418
+ activeSlice: null,
419
+ activeTask: null,
420
+ phase: 'pre-planning',
421
+ recentDecisions: [],
422
+ blockers: [],
423
+ nextAction: `All remaining milestones are parked (${parkedIds}). Run /gsd unpark <id> or create a new milestone.`,
424
+ registry,
425
+ requirements,
426
+ progress: {
427
+ milestones: milestoneProgress,
428
+ },
429
+ };
430
+ }
379
431
  // All milestones complete
380
432
  const lastEntry = registry[registry.length - 1];
381
433
  return {