@bastani/atomic 0.9.5-alpha.1 → 0.9.5-alpha.10

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 (754) hide show
  1. package/CHANGELOG.md +124 -2
  2. package/README.md +2 -2
  3. package/dist/builtin/cursor/CHANGELOG.md +6 -0
  4. package/dist/builtin/cursor/package.json +3 -3
  5. package/dist/builtin/cursor/src/model-mapper.ts +6 -3
  6. package/dist/builtin/intercom/CHANGELOG.md +31 -0
  7. package/dist/builtin/intercom/README.md +29 -21
  8. package/dist/builtin/intercom/broker/broker.ts +9 -120
  9. package/dist/builtin/intercom/broker/client.ts +29 -54
  10. package/dist/builtin/intercom/broker/delivered-message-cache.ts +44 -0
  11. package/dist/builtin/intercom/broker/paths.ts +42 -5
  12. package/dist/builtin/intercom/broker/pending-send-registry.ts +142 -0
  13. package/dist/builtin/intercom/broker/send-handler.ts +106 -0
  14. package/dist/builtin/intercom/broker/send-signature.ts +37 -0
  15. package/dist/builtin/intercom/broker/spawn.ts +78 -10
  16. package/dist/builtin/intercom/config.ts +6 -3
  17. package/dist/builtin/intercom/contact-supervisor-tool.ts +6 -4
  18. package/dist/builtin/intercom/foreground-detach-handoff.ts +136 -0
  19. package/dist/builtin/intercom/index-heavy.ts +50 -54
  20. package/dist/builtin/intercom/index.ts +320 -272
  21. package/dist/builtin/intercom/intercom-tool.ts +9 -3
  22. package/dist/builtin/intercom/lazy-heavy-proxy.ts +114 -0
  23. package/dist/builtin/intercom/lazy-subagent-ack.ts +20 -0
  24. package/dist/builtin/intercom/lazy-tool-execution.ts +39 -0
  25. package/dist/builtin/intercom/lifecycle-lease.ts +51 -0
  26. package/dist/builtin/intercom/lifecycle.ts +37 -20
  27. package/dist/builtin/intercom/package.json +12 -6
  28. package/dist/builtin/intercom/reply-routing.ts +17 -0
  29. package/dist/builtin/intercom/result-renderers.ts +1 -1
  30. package/dist/builtin/intercom/subagent-relay.ts +58 -12
  31. package/dist/builtin/intercom/types.ts +3 -3
  32. package/dist/builtin/intercom/ui/compose.ts +2 -2
  33. package/dist/builtin/intercom/ui/inline-message.ts +2 -2
  34. package/dist/builtin/intercom/ui/session-list.ts +2 -2
  35. package/dist/builtin/mcp/CHANGELOG.md +23 -0
  36. package/dist/builtin/mcp/OAUTH.md +1 -0
  37. package/dist/builtin/mcp/README.md +10 -6
  38. package/dist/builtin/mcp/apps-cancellation.ts +32 -0
  39. package/dist/builtin/mcp/call-tool-result.ts +9 -0
  40. package/dist/builtin/mcp/caller-wait.ts +50 -0
  41. package/dist/builtin/mcp/command-registration.ts +82 -0
  42. package/dist/builtin/mcp/direct-tool-executor.ts +279 -0
  43. package/dist/builtin/mcp/direct-tools.ts +40 -255
  44. package/dist/builtin/mcp/host-html-template.ts +4 -2
  45. package/dist/builtin/mcp/index.ts +274 -239
  46. package/dist/builtin/mcp/init.ts +96 -126
  47. package/dist/builtin/mcp/mcp-auth-flow.ts +247 -237
  48. package/dist/builtin/mcp/mcp-callback-server.ts +89 -68
  49. package/dist/builtin/mcp/mcp-oauth-provider.ts +23 -1
  50. package/dist/builtin/mcp/metadata-hydration.ts +52 -0
  51. package/dist/builtin/mcp/package.json +3 -3
  52. package/dist/builtin/mcp/proxy-auth.ts +4 -4
  53. package/dist/builtin/mcp/proxy-call.ts +111 -40
  54. package/dist/builtin/mcp/proxy-connect.ts +35 -15
  55. package/dist/builtin/mcp/proxy-info-modes.ts +106 -23
  56. package/dist/builtin/mcp/proxy-modes.ts +3 -3
  57. package/dist/builtin/mcp/session-cleanup-barrier.ts +43 -0
  58. package/dist/builtin/mcp/startup-warmup.ts +98 -0
  59. package/dist/builtin/mcp/state-lease.ts +12 -0
  60. package/dist/builtin/mcp/tool-result-renderer.ts +3 -3
  61. package/dist/builtin/mcp/ui-server.ts +8 -8
  62. package/dist/builtin/mcp/ui-session.ts +9 -18
  63. package/dist/builtin/subagents/CHANGELOG.md +60 -0
  64. package/dist/builtin/subagents/README.md +30 -29
  65. package/dist/builtin/subagents/agents/code-simplifier.md +2 -2
  66. package/dist/builtin/subagents/agents/codebase-analyzer.md +2 -2
  67. package/dist/builtin/subagents/agents/codebase-locator.md +2 -2
  68. package/dist/builtin/subagents/agents/codebase-online-researcher.md +2 -2
  69. package/dist/builtin/subagents/agents/codebase-pattern-finder.md +2 -2
  70. package/dist/builtin/subagents/agents/codebase-research-analyzer.md +2 -2
  71. package/dist/builtin/subagents/agents/codebase-research-locator.md +2 -2
  72. package/dist/builtin/subagents/agents/debugger.md +2 -2
  73. package/dist/builtin/subagents/agents/worker.md +2 -2
  74. package/dist/builtin/subagents/package.json +5 -5
  75. package/dist/builtin/subagents/prompts/review-loop.md +1 -1
  76. package/dist/builtin/subagents/skills/subagent/SKILL.md +37 -36
  77. package/dist/builtin/subagents/src/extension/api-lifecycle.ts +64 -0
  78. package/dist/builtin/subagents/src/extension/fanout-child.ts +44 -51
  79. package/dist/builtin/subagents/src/extension/index.ts +289 -320
  80. package/dist/builtin/subagents/src/extension/prompt-guidance.ts +7 -10
  81. package/dist/builtin/subagents/src/extension/schemas.ts +22 -5
  82. package/dist/builtin/subagents/src/extension/startup-maintenance.ts +89 -0
  83. package/dist/builtin/subagents/src/extension/tool-description.ts +29 -0
  84. package/dist/builtin/subagents/src/intercom/intercom-bridge.ts +13 -2
  85. package/dist/builtin/subagents/src/intercom/result-intercom.ts +4 -4
  86. package/dist/builtin/subagents/src/runs/background/async-event-journal.ts +106 -0
  87. package/dist/builtin/subagents/src/runs/background/async-execution-common.ts +26 -20
  88. package/dist/builtin/subagents/src/runs/background/async-execution-single.ts +13 -2
  89. package/dist/builtin/subagents/src/runs/background/async-execution-types.ts +3 -0
  90. package/dist/builtin/subagents/src/runs/background/async-job-tracker.ts +1 -1
  91. package/dist/builtin/subagents/src/runs/background/completion-claims.ts +189 -0
  92. package/dist/builtin/subagents/src/runs/background/completion-dedupe.ts +44 -7
  93. package/dist/builtin/subagents/src/runs/background/completion-notification.ts +34 -0
  94. package/dist/builtin/subagents/src/runs/background/notify.ts +72 -22
  95. package/dist/builtin/subagents/src/runs/background/result-delivery-processor.ts +232 -0
  96. package/dist/builtin/subagents/src/runs/background/result-file-claims.ts +151 -0
  97. package/dist/builtin/subagents/src/runs/background/result-quarantine.ts +72 -0
  98. package/dist/builtin/subagents/src/runs/background/result-retry-scheduler.ts +48 -0
  99. package/dist/builtin/subagents/src/runs/background/result-status.ts +81 -0
  100. package/dist/builtin/subagents/src/runs/background/result-watcher-data.ts +59 -0
  101. package/dist/builtin/subagents/src/runs/background/result-watcher.ts +177 -233
  102. package/dist/builtin/subagents/src/runs/background/run-id-resolver.ts +3 -2
  103. package/dist/builtin/subagents/src/runs/background/stale-run-reconciler.ts +73 -14
  104. package/dist/builtin/subagents/src/runs/background/subagent-runner-streaming.ts +29 -15
  105. package/dist/builtin/subagents/src/runs/background/top-level-async.ts +1 -2
  106. package/dist/builtin/subagents/src/runs/foreground/chain-execution-dynamic-step.ts +1 -0
  107. package/dist/builtin/subagents/src/runs/foreground/chain-execution-parallel-runner.ts +1 -0
  108. package/dist/builtin/subagents/src/runs/foreground/chain-execution-parallel-step.ts +1 -0
  109. package/dist/builtin/subagents/src/runs/foreground/chain-execution-sequential-step.ts +7 -9
  110. package/dist/builtin/subagents/src/runs/foreground/chain-execution-types.ts +3 -13
  111. package/dist/builtin/subagents/src/runs/foreground/chain-execution.ts +2 -15
  112. package/dist/builtin/subagents/src/runs/foreground/execution-attempt-finalize.ts +2 -2
  113. package/dist/builtin/subagents/src/runs/foreground/execution-attempt.ts +63 -46
  114. package/dist/builtin/subagents/src/runs/foreground/execution-detach-reservations.ts +48 -0
  115. package/dist/builtin/subagents/src/runs/foreground/execution-detach-route.ts +17 -0
  116. package/dist/builtin/subagents/src/runs/foreground/execution-run-sync.ts +39 -26
  117. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-async.ts +3 -1
  118. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-chain.ts +3 -51
  119. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-context.ts +6 -11
  120. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-input.ts +11 -2
  121. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-parallel-task.ts +2 -0
  122. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-parallel.ts +5 -112
  123. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-resume.ts +2 -0
  124. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-single.ts +68 -118
  125. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-status.ts +79 -7
  126. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-types.ts +2 -2
  127. package/dist/builtin/subagents/src/runs/foreground/subagent-executor.ts +3 -0
  128. package/dist/builtin/subagents/src/runs/shared/pi-args.ts +2 -2
  129. package/dist/builtin/subagents/src/runs/shared/pi-spawn.ts +55 -12
  130. package/dist/builtin/subagents/src/shared/artifacts.ts +22 -11
  131. package/dist/builtin/subagents/src/shared/event-jsonl-writer.ts +294 -0
  132. package/dist/builtin/subagents/src/shared/exclusive-file-publication.ts +44 -0
  133. package/dist/builtin/subagents/src/shared/jsonl-writer.ts +1 -0
  134. package/dist/builtin/subagents/src/shared/model-info.ts +2 -2
  135. package/dist/builtin/subagents/src/shared/settings.ts +20 -10
  136. package/dist/builtin/subagents/src/shared/types-async.ts +3 -1
  137. package/dist/builtin/subagents/src/shared/types-config.ts +2 -0
  138. package/dist/builtin/subagents/src/shared/types-runtime.ts +3 -2
  139. package/dist/builtin/subagents/src/slash/slash-commands.ts +9 -12
  140. package/dist/builtin/subagents/src/slash/slash-live-state.ts +63 -32
  141. package/dist/builtin/subagents/src/tui/render-event-formatting.ts +15 -48
  142. package/dist/builtin/subagents/src/tui/render-layout.ts +9 -0
  143. package/dist/builtin/subagents/src/tui/render-result.ts +7 -0
  144. package/dist/builtin/subagents/src/tui/render-stable-output.ts +1 -0
  145. package/dist/builtin/subagents/src/tui/render-widget-graph.ts +27 -25
  146. package/dist/builtin/subagents/src/tui/render-widget.ts +177 -132
  147. package/dist/builtin/subagents/src/tui/render.ts +1 -1
  148. package/dist/builtin/web-access/CHANGELOG.md +14 -0
  149. package/dist/builtin/web-access/README.md +4 -0
  150. package/dist/builtin/web-access/content-tools.ts +8 -3
  151. package/dist/builtin/web-access/index-heavy.ts +1 -1
  152. package/dist/builtin/web-access/index.ts +190 -46
  153. package/dist/builtin/web-access/lifecycle-lease.ts +38 -0
  154. package/dist/builtin/web-access/package.json +2 -2
  155. package/dist/builtin/web-access/result-renderers.ts +1 -1
  156. package/dist/builtin/web-access/summary-review.ts +1 -1
  157. package/dist/builtin/web-access/web-search-activity.ts +1 -1
  158. package/dist/builtin/web-access/web-search-return.ts +7 -0
  159. package/dist/builtin/web-access/web-search-summary.ts +1 -1
  160. package/dist/builtin/web-access/web-search-tool.ts +4 -2
  161. package/dist/builtin/workflows/CHANGELOG.md +86 -0
  162. package/dist/builtin/workflows/README.md +8 -6
  163. package/dist/builtin/workflows/builtin/deep-research-codebase-utils.ts +33 -9
  164. package/dist/builtin/workflows/builtin/goal-artifacts.ts +3 -1
  165. package/dist/builtin/workflows/builtin/goal-prompts.ts +25 -2
  166. package/dist/builtin/workflows/builtin/goal-reducer.ts +21 -0
  167. package/dist/builtin/workflows/builtin/goal-review.ts +60 -6
  168. package/dist/builtin/workflows/builtin/goal-runner.ts +119 -48
  169. package/dist/builtin/workflows/builtin/goal-types.ts +8 -1
  170. package/dist/builtin/workflows/builtin/goal.d.ts +2 -0
  171. package/dist/builtin/workflows/builtin/goal.ts +9 -0
  172. package/dist/builtin/workflows/builtin/index.d.ts +2 -0
  173. package/dist/builtin/workflows/builtin/open-claude-design-runner.ts +16 -5
  174. package/dist/builtin/workflows/builtin/ralph-core.ts +61 -13
  175. package/dist/builtin/workflows/builtin/ralph-models.ts +98 -66
  176. package/dist/builtin/workflows/builtin/ralph-review-gate.ts +10 -3
  177. package/dist/builtin/workflows/builtin/ralph-reviewer-prompt.ts +159 -0
  178. package/dist/builtin/workflows/builtin/ralph-runner.ts +67 -164
  179. package/dist/builtin/workflows/builtin/review-convergence.ts +111 -0
  180. package/dist/builtin/workflows/builtin/shared-prompts.ts +5 -0
  181. package/dist/builtin/workflows/package.json +2 -2
  182. package/dist/builtin/workflows/skills/create-spec/SKILL.md +2 -0
  183. package/dist/builtin/workflows/skills/impeccable/SKILL.md +16 -13
  184. package/dist/builtin/workflows/skills/impeccable/reference/adapt.md +1 -0
  185. package/dist/builtin/workflows/skills/impeccable/reference/adapt.native.md +58 -0
  186. package/dist/builtin/workflows/skills/impeccable/reference/android.md +40 -0
  187. package/dist/builtin/workflows/skills/impeccable/reference/animate.md +2 -0
  188. package/dist/builtin/workflows/skills/impeccable/reference/audit.md +2 -0
  189. package/dist/builtin/workflows/skills/impeccable/reference/audit.native.md +139 -0
  190. package/dist/builtin/workflows/skills/impeccable/reference/bolder.md +69 -62
  191. package/dist/builtin/workflows/skills/impeccable/reference/critique.md +21 -7
  192. package/dist/builtin/workflows/skills/impeccable/reference/document.md +1 -1
  193. package/dist/builtin/workflows/skills/impeccable/reference/hooks.md +92 -0
  194. package/dist/builtin/workflows/skills/impeccable/reference/init.md +29 -7
  195. package/dist/builtin/workflows/skills/impeccable/reference/ios.md +45 -0
  196. package/dist/builtin/workflows/skills/impeccable/reference/layout.md +25 -1
  197. package/dist/builtin/workflows/skills/impeccable/reference/typeset.md +23 -1
  198. package/dist/builtin/workflows/skills/impeccable/scripts/context-signals.mjs +2 -1
  199. package/dist/builtin/workflows/skills/impeccable/scripts/context.mjs +75 -14
  200. package/dist/builtin/workflows/skills/impeccable/scripts/detector/browser/injected/index.mjs +1 -1
  201. package/dist/builtin/workflows/skills/impeccable/scripts/detector/cli/main.mjs +31 -0
  202. package/dist/builtin/workflows/skills/impeccable/scripts/detector/design-system.mjs +64 -0
  203. package/dist/builtin/workflows/skills/impeccable/scripts/detector/detect-antipatterns-browser.js +118 -11
  204. package/dist/builtin/workflows/skills/impeccable/scripts/detector/engines/regex/detect-text.mjs +16 -11
  205. package/dist/builtin/workflows/skills/impeccable/scripts/detector/registry/antipatterns.mjs +66 -0
  206. package/dist/builtin/workflows/skills/impeccable/scripts/detector/rules/checks.mjs +42 -10
  207. package/dist/builtin/workflows/skills/impeccable/scripts/detector/shared/fonts.mjs +30 -0
  208. package/dist/builtin/workflows/skills/impeccable/scripts/detector/shared/page.mjs +4 -6
  209. package/dist/builtin/workflows/skills/impeccable/scripts/hook-admin.mjs +660 -0
  210. package/dist/builtin/workflows/skills/impeccable/scripts/hook-before-edit.mjs +516 -0
  211. package/dist/builtin/workflows/skills/impeccable/scripts/hook-lib.mjs +1764 -0
  212. package/dist/builtin/workflows/skills/impeccable/scripts/hook.mjs +61 -0
  213. package/dist/builtin/workflows/skills/impeccable/scripts/lib/impeccable-config.mjs +4 -2
  214. package/dist/builtin/workflows/skills/impeccable/scripts/lib/is-generated.mjs +2 -2
  215. package/dist/builtin/workflows/skills/impeccable/scripts/live/svelte-component.mjs +13 -16
  216. package/dist/builtin/workflows/skills/impeccable/scripts/live-accept.mjs +17 -11
  217. package/dist/builtin/workflows/skills/impeccable/scripts/live-browser.js +104 -37
  218. package/dist/builtin/workflows/skills/impeccable/scripts/live-wrap.mjs +9 -0
  219. package/dist/builtin/workflows/src/durable/backend.ts +12 -0
  220. package/dist/builtin/workflows/src/durable/child-primitive.ts +12 -8
  221. package/dist/builtin/workflows/src/durable/dbos-backend.ts +63 -2
  222. package/dist/builtin/workflows/src/durable/dbos-envelope.ts +28 -0
  223. package/dist/builtin/workflows/src/durable/resume-catalog.ts +12 -0
  224. package/dist/builtin/workflows/src/durable/resume-runtime.ts +5 -2
  225. package/dist/builtin/workflows/src/durable/stage-primitive.ts +167 -28
  226. package/dist/builtin/workflows/src/durable/types.ts +30 -1
  227. package/dist/builtin/workflows/src/engine/primitives/task.ts +3 -1
  228. package/dist/builtin/workflows/src/engine/run-durable-finalize.ts +1 -2
  229. package/dist/builtin/workflows/src/engine/run-returned-status.ts +50 -16
  230. package/dist/builtin/workflows/src/engine/run.ts +32 -32
  231. package/dist/builtin/workflows/src/engine/runtime.ts +5 -0
  232. package/dist/builtin/workflows/src/extension/extension-factory.ts +3 -0
  233. package/dist/builtin/workflows/src/extension/extension-lifecycle.ts +9 -2
  234. package/dist/builtin/workflows/src/extension/extension-runtime-state.ts +137 -27
  235. package/dist/builtin/workflows/src/extension/lifecycle-notifications.ts +22 -6
  236. package/dist/builtin/workflows/src/extension/public-types.ts +1 -1
  237. package/dist/builtin/workflows/src/extension/workflow-command-completions.ts +13 -1
  238. package/dist/builtin/workflows/src/extension/workflow-command-registration.ts +19 -4
  239. package/dist/builtin/workflows/src/extension/workflow-command-surfaces.ts +9 -0
  240. package/dist/builtin/workflows/src/extension/workflow-prompts.ts +17 -17
  241. package/dist/builtin/workflows/src/extension/workflow-run-control-command.ts +48 -23
  242. package/dist/builtin/workflows/src/extension/workflow-schema.ts +15 -2
  243. package/dist/builtin/workflows/src/extension/workflow-tool-control.ts +20 -8
  244. package/dist/builtin/workflows/src/extension/workflow-tool.ts +24 -8
  245. package/dist/builtin/workflows/src/runs/background/status.ts +4 -3
  246. package/dist/builtin/workflows/src/runs/foreground/executor-continuation.ts +13 -3
  247. package/dist/builtin/workflows/src/runs/foreground/executor-direct-helpers.ts +29 -8
  248. package/dist/builtin/workflows/src/runs/foreground/executor-hil.ts +1 -1
  249. package/dist/builtin/workflows/src/runs/foreground/executor-stage-control.ts +8 -0
  250. package/dist/builtin/workflows/src/runs/foreground/executor-stage-factory.ts +4 -3
  251. package/dist/builtin/workflows/src/runs/foreground/stage-control-registry.ts +2 -0
  252. package/dist/builtin/workflows/src/runs/foreground/stage-runner-controller.ts +18 -19
  253. package/dist/builtin/workflows/src/runs/foreground/stage-runner-unresolved-overflow.ts +38 -0
  254. package/dist/builtin/workflows/src/runs/foreground/stage-tool-execution-buffer.ts +47 -0
  255. package/dist/builtin/workflows/src/runs/shared/model-fallback-candidates.ts +1 -1
  256. package/dist/builtin/workflows/src/runs/shared/worktree-git.ts +155 -20
  257. package/dist/builtin/workflows/src/runs/shared/worktree-types.ts +6 -0
  258. package/dist/builtin/workflows/src/runs/shared/worktree.ts +2 -1
  259. package/dist/builtin/workflows/src/shared/authoring-contract-stage.d.ts +2 -2
  260. package/dist/builtin/workflows/src/shared/authoring-contract-stage.ts +2 -2
  261. package/dist/builtin/workflows/src/shared/persistence-restore-helpers.ts +18 -1
  262. package/dist/builtin/workflows/src/shared/persistence-restore.ts +23 -5
  263. package/dist/builtin/workflows/src/shared/persistence-session-entries.ts +4 -0
  264. package/dist/builtin/workflows/src/shared/resume-continuation.ts +2 -0
  265. package/dist/builtin/workflows/src/shared/returned-run-status.ts +116 -0
  266. package/dist/builtin/workflows/src/shared/workflow-failures-decisions.ts +2 -0
  267. package/dist/builtin/workflows/src/tui/graph-view-render-helpers.ts +21 -3
  268. package/dist/builtin/workflows/src/tui/graph-view-state.ts +3 -0
  269. package/dist/builtin/workflows/src/tui/graph-view-types.ts +3 -0
  270. package/dist/builtin/workflows/src/tui/stage-chat-view-archive-history.ts +1 -23
  271. package/dist/builtin/workflows/src/tui/stage-chat-view-footer-status.ts +54 -9
  272. package/dist/builtin/workflows/src/tui/stage-chat-view-pending-tools.ts +9 -0
  273. package/dist/builtin/workflows/src/tui/stage-chat-view-render-settings.ts +27 -0
  274. package/dist/builtin/workflows/src/tui/stage-chat-view-state.ts +5 -6
  275. package/dist/builtin/workflows/src/tui/stage-chat-view.ts +5 -2
  276. package/dist/builtin/workflows/src/tui/status-list.ts +22 -15
  277. package/dist/builtin/workflows/src/tui/workflow-attach-pane.ts +4 -4
  278. package/dist/bun/internal-intercom-broker.d.ts +6 -0
  279. package/dist/bun/internal-intercom-broker.d.ts.map +1 -0
  280. package/dist/bun/internal-intercom-broker.js +39 -0
  281. package/dist/bun/internal-intercom-broker.js.map +1 -0
  282. package/dist/bun/split-loader.d.ts +2 -0
  283. package/dist/bun/split-loader.d.ts.map +1 -0
  284. package/dist/bun/split-loader.js +50 -0
  285. package/dist/bun/split-loader.js.map +1 -0
  286. package/dist/cli/args.d.ts.map +1 -1
  287. package/dist/cli/args.js +2 -2
  288. package/dist/cli/args.js.map +1 -1
  289. package/dist/config.d.ts.map +1 -1
  290. package/dist/config.js +6 -4
  291. package/dist/config.js.map +1 -1
  292. package/dist/core/agent-session-auto-compaction.d.ts +26 -6
  293. package/dist/core/agent-session-auto-compaction.d.ts.map +1 -1
  294. package/dist/core/agent-session-auto-compaction.js +178 -19
  295. package/dist/core/agent-session-auto-compaction.js.map +1 -1
  296. package/dist/core/agent-session-compaction.d.ts.map +1 -1
  297. package/dist/core/agent-session-compaction.js +25 -4
  298. package/dist/core/agent-session-compaction.js.map +1 -1
  299. package/dist/core/agent-session-events.d.ts.map +1 -1
  300. package/dist/core/agent-session-events.js +12 -2
  301. package/dist/core/agent-session-events.js.map +1 -1
  302. package/dist/core/agent-session-extension-bindings.d.ts.map +1 -1
  303. package/dist/core/agent-session-extension-bindings.js +1 -1
  304. package/dist/core/agent-session-extension-bindings.js.map +1 -1
  305. package/dist/core/agent-session-message-queue.d.ts.map +1 -1
  306. package/dist/core/agent-session-message-queue.js +1 -1
  307. package/dist/core/agent-session-message-queue.js.map +1 -1
  308. package/dist/core/agent-session-methods.d.ts +13 -4
  309. package/dist/core/agent-session-methods.d.ts.map +1 -1
  310. package/dist/core/agent-session-methods.js.map +1 -1
  311. package/dist/core/agent-session-models.d.ts +2 -2
  312. package/dist/core/agent-session-models.d.ts.map +1 -1
  313. package/dist/core/agent-session-models.js.map +1 -1
  314. package/dist/core/agent-session-prompt.d.ts.map +1 -1
  315. package/dist/core/agent-session-prompt.js +2 -1
  316. package/dist/core/agent-session-prompt.js.map +1 -1
  317. package/dist/core/agent-session-retry.d.ts +2 -0
  318. package/dist/core/agent-session-retry.d.ts.map +1 -1
  319. package/dist/core/agent-session-retry.js +152 -4
  320. package/dist/core/agent-session-retry.js.map +1 -1
  321. package/dist/core/agent-session-services.d.ts +1 -0
  322. package/dist/core/agent-session-services.d.ts.map +1 -1
  323. package/dist/core/agent-session-services.js +4 -2
  324. package/dist/core/agent-session-services.js.map +1 -1
  325. package/dist/core/agent-session-types.d.ts +15 -1
  326. package/dist/core/agent-session-types.d.ts.map +1 -1
  327. package/dist/core/agent-session-types.js +1 -1
  328. package/dist/core/agent-session-types.js.map +1 -1
  329. package/dist/core/agent-session.d.ts +6 -0
  330. package/dist/core/agent-session.d.ts.map +1 -1
  331. package/dist/core/agent-session.js +6 -0
  332. package/dist/core/agent-session.js.map +1 -1
  333. package/dist/core/anthropic-thinking-guard.d.ts +5 -5
  334. package/dist/core/anthropic-thinking-guard.d.ts.map +1 -1
  335. package/dist/core/anthropic-thinking-guard.js +42 -32
  336. package/dist/core/anthropic-thinking-guard.js.map +1 -1
  337. package/dist/core/atomic-guide-command.d.ts.map +1 -1
  338. package/dist/core/atomic-guide-command.js +15 -15
  339. package/dist/core/atomic-guide-command.js.map +1 -1
  340. package/dist/core/auth-storage.d.ts.map +1 -1
  341. package/dist/core/auth-storage.js +14 -9
  342. package/dist/core/auth-storage.js.map +1 -1
  343. package/dist/core/builtin-packages.d.ts.map +1 -1
  344. package/dist/core/builtin-packages.js +8 -4
  345. package/dist/core/builtin-packages.js.map +1 -1
  346. package/dist/core/compaction/compaction.d.ts +2 -0
  347. package/dist/core/compaction/compaction.d.ts.map +1 -1
  348. package/dist/core/compaction/compaction.js +79 -46
  349. package/dist/core/compaction/compaction.js.map +1 -1
  350. package/dist/core/compaction/context-assistant-turns.d.ts +42 -0
  351. package/dist/core/compaction/context-assistant-turns.d.ts.map +1 -0
  352. package/dist/core/compaction/context-assistant-turns.js +87 -0
  353. package/dist/core/compaction/context-assistant-turns.js.map +1 -0
  354. package/dist/core/compaction/context-compaction-critical.d.ts +15 -0
  355. package/dist/core/compaction/context-compaction-critical.d.ts.map +1 -0
  356. package/dist/core/compaction/context-compaction-critical.js +57 -0
  357. package/dist/core/compaction/context-compaction-critical.js.map +1 -0
  358. package/dist/core/compaction/context-compaction-eviction-alternates.d.ts +18 -0
  359. package/dist/core/compaction/context-compaction-eviction-alternates.d.ts.map +1 -0
  360. package/dist/core/compaction/context-compaction-eviction-alternates.js +186 -0
  361. package/dist/core/compaction/context-compaction-eviction-alternates.js.map +1 -0
  362. package/dist/core/compaction/context-compaction-eviction.d.ts +12 -0
  363. package/dist/core/compaction/context-compaction-eviction.d.ts.map +1 -0
  364. package/dist/core/compaction/context-compaction-eviction.js +222 -0
  365. package/dist/core/compaction/context-compaction-eviction.js.map +1 -0
  366. package/dist/core/compaction/context-compaction-prompt.d.ts.map +1 -1
  367. package/dist/core/compaction/context-compaction-prompt.js +1 -1
  368. package/dist/core/compaction/context-compaction-prompt.js.map +1 -1
  369. package/dist/core/compaction/context-compaction-runner.d.ts +7 -1
  370. package/dist/core/compaction/context-compaction-runner.d.ts.map +1 -1
  371. package/dist/core/compaction/context-compaction-runner.js +113 -21
  372. package/dist/core/compaction/context-compaction-runner.js.map +1 -1
  373. package/dist/core/compaction/context-compaction-types.d.ts +2 -0
  374. package/dist/core/compaction/context-compaction-types.d.ts.map +1 -1
  375. package/dist/core/compaction/context-compaction-types.js.map +1 -1
  376. package/dist/core/compaction/context-deletion-application.d.ts +5 -4
  377. package/dist/core/compaction/context-deletion-application.d.ts.map +1 -1
  378. package/dist/core/compaction/context-deletion-application.js +17 -15
  379. package/dist/core/compaction/context-deletion-application.js.map +1 -1
  380. package/dist/core/compaction/context-deletion-store.d.ts.map +1 -1
  381. package/dist/core/compaction/context-deletion-store.js +1 -1
  382. package/dist/core/compaction/context-deletion-store.js.map +1 -1
  383. package/dist/core/compaction/context-deletion-targets.d.ts +2 -1
  384. package/dist/core/compaction/context-deletion-targets.d.ts.map +1 -1
  385. package/dist/core/compaction/context-deletion-targets.js +36 -31
  386. package/dist/core/compaction/context-deletion-targets.js.map +1 -1
  387. package/dist/core/compaction/context-deletion-tool-helpers.d.ts.map +1 -1
  388. package/dist/core/compaction/context-deletion-tool-helpers.js +116 -43
  389. package/dist/core/compaction/context-deletion-tool-helpers.js.map +1 -1
  390. package/dist/core/compaction/context-transcript-analysis.d.ts +4 -2
  391. package/dist/core/compaction/context-transcript-analysis.d.ts.map +1 -1
  392. package/dist/core/compaction/context-transcript-analysis.js +36 -40
  393. package/dist/core/compaction/context-transcript-analysis.js.map +1 -1
  394. package/dist/core/copilot-anthropic-sse-repair.d.ts +23 -0
  395. package/dist/core/copilot-anthropic-sse-repair.d.ts.map +1 -0
  396. package/dist/core/copilot-anthropic-sse-repair.js +340 -0
  397. package/dist/core/copilot-anthropic-sse-repair.js.map +1 -0
  398. package/dist/core/copilot-gemini-reasoning.d.ts +16 -8
  399. package/dist/core/copilot-gemini-reasoning.d.ts.map +1 -1
  400. package/dist/core/copilot-gemini-reasoning.js +27 -22
  401. package/dist/core/copilot-gemini-reasoning.js.map +1 -1
  402. package/dist/core/copilot-hosts.d.ts +12 -0
  403. package/dist/core/copilot-hosts.d.ts.map +1 -0
  404. package/dist/core/copilot-hosts.js +33 -0
  405. package/dist/core/copilot-hosts.js.map +1 -0
  406. package/dist/core/copilot-model-catalog.d.ts.map +1 -1
  407. package/dist/core/copilot-model-catalog.js +3 -2
  408. package/dist/core/copilot-model-catalog.js.map +1 -1
  409. package/dist/core/copilot-model-synthesis.d.ts.map +1 -1
  410. package/dist/core/copilot-model-synthesis.js +3 -1
  411. package/dist/core/copilot-model-synthesis.js.map +1 -1
  412. package/dist/core/extensions/agent-events.d.ts +1 -1
  413. package/dist/core/extensions/agent-events.d.ts.map +1 -1
  414. package/dist/core/extensions/agent-events.js.map +1 -1
  415. package/dist/core/extensions/loader-core.d.ts.map +1 -1
  416. package/dist/core/extensions/loader-core.js +6 -0
  417. package/dist/core/extensions/loader-core.js.map +1 -1
  418. package/dist/core/extensions/loader-virtual-modules.d.ts +8 -1
  419. package/dist/core/extensions/loader-virtual-modules.d.ts.map +1 -1
  420. package/dist/core/extensions/loader-virtual-modules.js +10 -4
  421. package/dist/core/extensions/loader-virtual-modules.js.map +1 -1
  422. package/dist/core/extensions/provider-types.d.ts +2 -7
  423. package/dist/core/extensions/provider-types.d.ts.map +1 -1
  424. package/dist/core/extensions/provider-types.js.map +1 -1
  425. package/dist/core/footer-data-provider.d.ts +6 -0
  426. package/dist/core/footer-data-provider.d.ts.map +1 -1
  427. package/dist/core/footer-data-provider.js +72 -29
  428. package/dist/core/footer-data-provider.js.map +1 -1
  429. package/dist/core/http-dispatcher.d.ts.map +1 -1
  430. package/dist/core/http-dispatcher.js +5 -5
  431. package/dist/core/http-dispatcher.js.map +1 -1
  432. package/dist/core/messages.d.ts +9 -0
  433. package/dist/core/messages.d.ts.map +1 -1
  434. package/dist/core/messages.js +100 -18
  435. package/dist/core/messages.js.map +1 -1
  436. package/dist/core/model-registry-builtins.d.ts.map +1 -1
  437. package/dist/core/model-registry-builtins.js +5 -0
  438. package/dist/core/model-registry-builtins.js.map +1 -1
  439. package/dist/core/model-registry-custom-loader.d.ts.map +1 -1
  440. package/dist/core/model-registry-custom-loader.js +49 -8
  441. package/dist/core/model-registry-custom-loader.js.map +1 -1
  442. package/dist/core/model-registry-dynamic.d.ts.map +1 -1
  443. package/dist/core/model-registry-dynamic.js +11 -5
  444. package/dist/core/model-registry-dynamic.js.map +1 -1
  445. package/dist/core/model-registry-loader.d.ts.map +1 -1
  446. package/dist/core/model-registry-loader.js +8 -0
  447. package/dist/core/model-registry-loader.js.map +1 -1
  448. package/dist/core/model-registry-schemas.d.ts +93 -8
  449. package/dist/core/model-registry-schemas.d.ts.map +1 -1
  450. package/dist/core/model-registry-schemas.js +24 -12
  451. package/dist/core/model-registry-schemas.js.map +1 -1
  452. package/dist/core/model-registry-types.d.ts +7 -6
  453. package/dist/core/model-registry-types.d.ts.map +1 -1
  454. package/dist/core/model-registry-types.js.map +1 -1
  455. package/dist/core/model-registry.d.ts +5 -0
  456. package/dist/core/model-registry.d.ts.map +1 -1
  457. package/dist/core/model-registry.js +23 -0
  458. package/dist/core/model-registry.js.map +1 -1
  459. package/dist/core/model-resolver-cli.d.ts.map +1 -1
  460. package/dist/core/model-resolver-cli.js +33 -5
  461. package/dist/core/model-resolver-cli.js.map +1 -1
  462. package/dist/core/model-resolver-initial.d.ts +6 -1
  463. package/dist/core/model-resolver-initial.d.ts.map +1 -1
  464. package/dist/core/model-resolver-initial.js +12 -7
  465. package/dist/core/model-resolver-initial.js.map +1 -1
  466. package/dist/core/model-resolver-scope.d.ts +9 -0
  467. package/dist/core/model-resolver-scope.d.ts.map +1 -1
  468. package/dist/core/model-resolver-scope.js +12 -4
  469. package/dist/core/model-resolver-scope.js.map +1 -1
  470. package/dist/core/model-resolver.d.ts +4 -3
  471. package/dist/core/model-resolver.d.ts.map +1 -1
  472. package/dist/core/model-resolver.js +2 -2
  473. package/dist/core/model-resolver.js.map +1 -1
  474. package/dist/core/openai-responses-payload-sanitizer.d.ts +7 -0
  475. package/dist/core/openai-responses-payload-sanitizer.d.ts.map +1 -0
  476. package/dist/core/openai-responses-payload-sanitizer.js +74 -0
  477. package/dist/core/openai-responses-payload-sanitizer.js.map +1 -0
  478. package/dist/core/package-manager-auto-resources.d.ts +2 -2
  479. package/dist/core/package-manager-auto-resources.d.ts.map +1 -1
  480. package/dist/core/package-manager-auto-resources.js +32 -52
  481. package/dist/core/package-manager-auto-resources.js.map +1 -1
  482. package/dist/core/package-manager-resolver.d.ts.map +1 -1
  483. package/dist/core/package-manager-resolver.js +23 -14
  484. package/dist/core/package-manager-resolver.js.map +1 -1
  485. package/dist/core/package-manager-resource-collector.d.ts +3 -3
  486. package/dist/core/package-manager-resource-collector.d.ts.map +1 -1
  487. package/dist/core/package-manager-resource-collector.js +76 -73
  488. package/dist/core/package-manager-resource-collector.js.map +1 -1
  489. package/dist/core/package-manager-resource-files.d.ts +9 -8
  490. package/dist/core/package-manager-resource-files.d.ts.map +1 -1
  491. package/dist/core/package-manager-resource-files.js +92 -81
  492. package/dist/core/package-manager-resource-files.js.map +1 -1
  493. package/dist/core/prompt-templates-async.d.ts +3 -0
  494. package/dist/core/prompt-templates-async.d.ts.map +1 -0
  495. package/dist/core/prompt-templates-async.js +118 -0
  496. package/dist/core/prompt-templates-async.js.map +1 -0
  497. package/dist/core/provider-context-usage.d.ts +11 -0
  498. package/dist/core/provider-context-usage.d.ts.map +1 -0
  499. package/dist/core/provider-context-usage.js +58 -0
  500. package/dist/core/provider-context-usage.js.map +1 -0
  501. package/dist/core/resource-loader-assets.d.ts +3 -3
  502. package/dist/core/resource-loader-assets.d.ts.map +1 -1
  503. package/dist/core/resource-loader-assets.js +66 -83
  504. package/dist/core/resource-loader-assets.js.map +1 -1
  505. package/dist/core/resource-loader-context-files.d.ts +1 -0
  506. package/dist/core/resource-loader-context-files.d.ts.map +1 -1
  507. package/dist/core/resource-loader-context-files.js +13 -10
  508. package/dist/core/resource-loader-context-files.js.map +1 -1
  509. package/dist/core/resource-loader-core.d.ts +1 -1
  510. package/dist/core/resource-loader-core.d.ts.map +1 -1
  511. package/dist/core/resource-loader-core.js +5 -5
  512. package/dist/core/resource-loader-core.js.map +1 -1
  513. package/dist/core/resource-loader-extensions.d.ts.map +1 -1
  514. package/dist/core/resource-loader-extensions.js +4 -0
  515. package/dist/core/resource-loader-extensions.js.map +1 -1
  516. package/dist/core/resource-loader-reload.d.ts.map +1 -1
  517. package/dist/core/resource-loader-reload.js +54 -7
  518. package/dist/core/resource-loader-reload.js.map +1 -1
  519. package/dist/core/resource-loader-types.d.ts +7 -1
  520. package/dist/core/resource-loader-types.d.ts.map +1 -1
  521. package/dist/core/resource-loader-types.js.map +1 -1
  522. package/dist/core/sdk-types.d.ts +2 -0
  523. package/dist/core/sdk-types.d.ts.map +1 -1
  524. package/dist/core/sdk-types.js.map +1 -1
  525. package/dist/core/sdk.d.ts.map +1 -1
  526. package/dist/core/sdk.js +9 -6
  527. package/dist/core/sdk.js.map +1 -1
  528. package/dist/core/session-entry-normalization.d.ts +7 -0
  529. package/dist/core/session-entry-normalization.d.ts.map +1 -0
  530. package/dist/core/session-entry-normalization.js +14 -0
  531. package/dist/core/session-entry-normalization.js.map +1 -0
  532. package/dist/core/session-manager-core.d.ts.map +1 -1
  533. package/dist/core/session-manager-core.js +1 -0
  534. package/dist/core/session-manager-core.js.map +1 -1
  535. package/dist/core/session-manager-history.d.ts +2 -2
  536. package/dist/core/session-manager-history.d.ts.map +1 -1
  537. package/dist/core/session-manager-history.js +127 -108
  538. package/dist/core/session-manager-history.js.map +1 -1
  539. package/dist/core/settings-manager-basic-accessors.d.ts +3 -2
  540. package/dist/core/settings-manager-basic-accessors.d.ts.map +1 -1
  541. package/dist/core/settings-manager-basic-accessors.js +6 -0
  542. package/dist/core/settings-manager-basic-accessors.js.map +1 -1
  543. package/dist/core/settings-manager-core.d.ts.map +1 -1
  544. package/dist/core/settings-manager-core.js +3 -2
  545. package/dist/core/settings-manager-core.js.map +1 -1
  546. package/dist/core/settings-storage.d.ts.map +1 -1
  547. package/dist/core/settings-storage.js +2 -1
  548. package/dist/core/settings-storage.js.map +1 -1
  549. package/dist/core/settings-types.d.ts +2 -1
  550. package/dist/core/settings-types.d.ts.map +1 -1
  551. package/dist/core/settings-types.js.map +1 -1
  552. package/dist/core/skills-async.d.ts +3 -0
  553. package/dist/core/skills-async.d.ts.map +1 -0
  554. package/dist/core/skills-async.js +269 -0
  555. package/dist/core/skills-async.js.map +1 -0
  556. package/dist/core/slash-commands.d.ts +2 -0
  557. package/dist/core/slash-commands.d.ts.map +1 -1
  558. package/dist/core/slash-commands.js +141 -0
  559. package/dist/core/slash-commands.js.map +1 -1
  560. package/dist/core/tools/bash.d.ts.map +1 -1
  561. package/dist/core/tools/bash.js +11 -8
  562. package/dist/core/tools/bash.js.map +1 -1
  563. package/dist/core/trust-manager.d.ts +9 -0
  564. package/dist/core/trust-manager.d.ts.map +1 -1
  565. package/dist/core/trust-manager.js +44 -2
  566. package/dist/core/trust-manager.js.map +1 -1
  567. package/dist/index-extensions.d.ts +1 -1
  568. package/dist/index-extensions.d.ts.map +1 -1
  569. package/dist/index-extensions.js.map +1 -1
  570. package/dist/index.d.ts +2 -1
  571. package/dist/index.d.ts.map +1 -1
  572. package/dist/index.js +2 -1
  573. package/dist/index.js.map +1 -1
  574. package/dist/main-deferred-startup.d.ts +33 -0
  575. package/dist/main-deferred-startup.d.ts.map +1 -0
  576. package/dist/main-deferred-startup.js +44 -0
  577. package/dist/main-deferred-startup.js.map +1 -0
  578. package/dist/main-early-input.d.ts +41 -0
  579. package/dist/main-early-input.d.ts.map +1 -0
  580. package/dist/main-early-input.js +154 -0
  581. package/dist/main-early-input.js.map +1 -0
  582. package/dist/main-session.d.ts.map +1 -1
  583. package/dist/main-session.js +1 -0
  584. package/dist/main-session.js.map +1 -1
  585. package/dist/main.d.ts +0 -6
  586. package/dist/main.d.ts.map +1 -1
  587. package/dist/main.js +47 -39
  588. package/dist/main.js.map +1 -1
  589. package/dist/modes/interactive/components/chat-session-host-actions.d.ts.map +1 -1
  590. package/dist/modes/interactive/components/chat-session-host-actions.js +0 -1
  591. package/dist/modes/interactive/components/chat-session-host-actions.js.map +1 -1
  592. package/dist/modes/interactive/components/chat-session-host-events.d.ts.map +1 -1
  593. package/dist/modes/interactive/components/chat-session-host-events.js +15 -0
  594. package/dist/modes/interactive/components/chat-session-host-events.js.map +1 -1
  595. package/dist/modes/interactive/components/settings-selector-options.d.ts.map +1 -1
  596. package/dist/modes/interactive/components/settings-selector-options.js +3 -1
  597. package/dist/modes/interactive/components/settings-selector-options.js.map +1 -1
  598. package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -1
  599. package/dist/modes/interactive/components/thinking-selector.js +2 -1
  600. package/dist/modes/interactive/components/thinking-selector.js.map +1 -1
  601. package/dist/modes/interactive/interactive-agent-events.d.ts.map +1 -1
  602. package/dist/modes/interactive/interactive-agent-events.js +37 -2
  603. package/dist/modes/interactive/interactive-agent-events.js.map +1 -1
  604. package/dist/modes/interactive/interactive-auth-login.d.ts.map +1 -1
  605. package/dist/modes/interactive/interactive-auth-login.js +0 -1
  606. package/dist/modes/interactive/interactive-auth-login.js.map +1 -1
  607. package/dist/modes/interactive/interactive-autocomplete.d.ts.map +1 -1
  608. package/dist/modes/interactive/interactive-autocomplete.js +21 -9
  609. package/dist/modes/interactive/interactive-autocomplete.js.map +1 -1
  610. package/dist/modes/interactive/interactive-child-ordering.d.ts +7 -0
  611. package/dist/modes/interactive/interactive-child-ordering.d.ts.map +1 -0
  612. package/dist/modes/interactive/interactive-child-ordering.js +26 -0
  613. package/dist/modes/interactive/interactive-child-ordering.js.map +1 -0
  614. package/dist/modes/interactive/interactive-deferred-startup.d.ts +8 -1
  615. package/dist/modes/interactive/interactive-deferred-startup.d.ts.map +1 -1
  616. package/dist/modes/interactive/interactive-deferred-startup.js +86 -26
  617. package/dist/modes/interactive/interactive-deferred-startup.js.map +1 -1
  618. package/dist/modes/interactive/interactive-editor-actions.d.ts.map +1 -1
  619. package/dist/modes/interactive/interactive-editor-actions.js +13 -13
  620. package/dist/modes/interactive/interactive-editor-actions.js.map +1 -1
  621. package/dist/modes/interactive/interactive-extension-runtime.d.ts.map +1 -1
  622. package/dist/modes/interactive/interactive-extension-runtime.js +16 -0
  623. package/dist/modes/interactive/interactive-extension-runtime.js.map +1 -1
  624. package/dist/modes/interactive/interactive-hotkeys-debug.d.ts.map +1 -1
  625. package/dist/modes/interactive/interactive-hotkeys-debug.js +4 -3
  626. package/dist/modes/interactive/interactive-hotkeys-debug.js.map +1 -1
  627. package/dist/modes/interactive/interactive-input-handling.d.ts.map +1 -1
  628. package/dist/modes/interactive/interactive-input-handling.js +360 -230
  629. package/dist/modes/interactive/interactive-input-handling.js.map +1 -1
  630. package/dist/modes/interactive/interactive-mode-base.d.ts +19 -4
  631. package/dist/modes/interactive/interactive-mode-base.d.ts.map +1 -1
  632. package/dist/modes/interactive/interactive-mode-base.js +46 -4
  633. package/dist/modes/interactive/interactive-mode-base.js.map +1 -1
  634. package/dist/modes/interactive/interactive-mode-deps.d.ts +3 -3
  635. package/dist/modes/interactive/interactive-mode-deps.d.ts.map +1 -1
  636. package/dist/modes/interactive/interactive-mode-deps.js +3 -3
  637. package/dist/modes/interactive/interactive-mode-deps.js.map +1 -1
  638. package/dist/modes/interactive/interactive-mode-surface.d.ts +27 -17
  639. package/dist/modes/interactive/interactive-mode-surface.d.ts.map +1 -1
  640. package/dist/modes/interactive/interactive-mode-surface.js.map +1 -1
  641. package/dist/modes/interactive/interactive-mode-types.d.ts +8 -1
  642. package/dist/modes/interactive/interactive-mode-types.d.ts.map +1 -1
  643. package/dist/modes/interactive/interactive-mode-types.js.map +1 -1
  644. package/dist/modes/interactive/interactive-model-routing.d.ts.map +1 -1
  645. package/dist/modes/interactive/interactive-model-routing.js +14 -10
  646. package/dist/modes/interactive/interactive-model-routing.js.map +1 -1
  647. package/dist/modes/interactive/interactive-onboarding.d.ts +0 -9
  648. package/dist/modes/interactive/interactive-onboarding.d.ts.map +1 -1
  649. package/dist/modes/interactive/interactive-onboarding.js +24 -201
  650. package/dist/modes/interactive/interactive-onboarding.js.map +1 -1
  651. package/dist/modes/interactive/interactive-process-lifecycle.d.ts.map +1 -1
  652. package/dist/modes/interactive/interactive-process-lifecycle.js +43 -9
  653. package/dist/modes/interactive/interactive-process-lifecycle.js.map +1 -1
  654. package/dist/modes/interactive/interactive-render-chat.d.ts.map +1 -1
  655. package/dist/modes/interactive/interactive-render-chat.js +93 -10
  656. package/dist/modes/interactive/interactive-render-chat.js.map +1 -1
  657. package/dist/modes/interactive/interactive-resource-disclosure.d.ts.map +1 -1
  658. package/dist/modes/interactive/interactive-resource-disclosure.js +3 -2
  659. package/dist/modes/interactive/interactive-resource-disclosure.js.map +1 -1
  660. package/dist/modes/interactive/interactive-resource-rendering.d.ts.map +1 -1
  661. package/dist/modes/interactive/interactive-resource-rendering.js +10 -8
  662. package/dist/modes/interactive/interactive-resource-rendering.js.map +1 -1
  663. package/dist/modes/interactive/interactive-session-routing.d.ts.map +1 -1
  664. package/dist/modes/interactive/interactive-session-routing.js +9 -5
  665. package/dist/modes/interactive/interactive-session-routing.js.map +1 -1
  666. package/dist/modes/interactive/interactive-session-runtime.d.ts.map +1 -1
  667. package/dist/modes/interactive/interactive-session-runtime.js +1 -1
  668. package/dist/modes/interactive/interactive-session-runtime.js.map +1 -1
  669. package/dist/modes/interactive/interactive-slash-commands.d.ts.map +1 -1
  670. package/dist/modes/interactive/interactive-slash-commands.js +1 -1
  671. package/dist/modes/interactive/interactive-slash-commands.js.map +1 -1
  672. package/dist/modes/interactive/interactive-startup.d.ts.map +1 -1
  673. package/dist/modes/interactive/interactive-startup.js +102 -98
  674. package/dist/modes/interactive/interactive-startup.js.map +1 -1
  675. package/dist/modes/interactive/theme/global-theme.d.ts.map +1 -1
  676. package/dist/modes/interactive/theme/global-theme.js +26 -2
  677. package/dist/modes/interactive/theme/global-theme.js.map +1 -1
  678. package/dist/modes/interactive/theme/theme-class.d.ts +1 -1
  679. package/dist/modes/interactive/theme/theme-class.d.ts.map +1 -1
  680. package/dist/modes/interactive/theme/theme-class.js +2 -0
  681. package/dist/modes/interactive/theme/theme-class.js.map +1 -1
  682. package/dist/modes/interactive/theme/theme-loading.d.ts +1 -0
  683. package/dist/modes/interactive/theme/theme-loading.d.ts.map +1 -1
  684. package/dist/modes/interactive/theme/theme-loading.js +3 -0
  685. package/dist/modes/interactive/theme/theme-loading.js.map +1 -1
  686. package/dist/modes/interactive/theme/theme.d.ts +1 -1
  687. package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  688. package/dist/modes/interactive/theme/theme.js +1 -1
  689. package/dist/modes/interactive/theme/theme.js.map +1 -1
  690. package/dist/utils/child-process.d.ts +8 -1
  691. package/dist/utils/child-process.d.ts.map +1 -1
  692. package/dist/utils/child-process.js +39 -6
  693. package/dist/utils/child-process.js.map +1 -1
  694. package/dist/utils/clipboard-image.d.ts.map +1 -1
  695. package/dist/utils/clipboard-image.js +3 -0
  696. package/dist/utils/clipboard-image.js.map +1 -1
  697. package/dist/utils/event-loop.d.ts +7 -0
  698. package/dist/utils/event-loop.d.ts.map +1 -0
  699. package/dist/utils/event-loop.js +14 -0
  700. package/dist/utils/event-loop.js.map +1 -0
  701. package/dist/utils/fs-watch.d.ts +24 -1
  702. package/dist/utils/fs-watch.d.ts.map +1 -1
  703. package/dist/utils/fs-watch.js +60 -5
  704. package/dist/utils/fs-watch.js.map +1 -1
  705. package/dist/utils/json.d.ts +4 -0
  706. package/dist/utils/json.d.ts.map +1 -1
  707. package/dist/utils/json.js +8 -0
  708. package/dist/utils/json.js.map +1 -1
  709. package/dist/utils/module-require.d.ts +11 -0
  710. package/dist/utils/module-require.d.ts.map +1 -1
  711. package/dist/utils/module-require.js +14 -1
  712. package/dist/utils/module-require.js.map +1 -1
  713. package/dist/utils/split-launcher.d.ts +38 -0
  714. package/dist/utils/split-launcher.d.ts.map +1 -0
  715. package/dist/utils/split-launcher.js +63 -0
  716. package/dist/utils/split-launcher.js.map +1 -0
  717. package/docs/changelog.mdx +19 -0
  718. package/docs/compaction.md +100 -64
  719. package/docs/custom-provider.md +18 -5
  720. package/docs/development.md +4 -0
  721. package/docs/extensions.md +11 -2
  722. package/docs/json.md +3 -1
  723. package/docs/keybindings.md +2 -2
  724. package/docs/models.md +69 -10
  725. package/docs/providers.md +3 -2
  726. package/docs/quickstart.md +15 -11
  727. package/docs/rpc.md +5 -3
  728. package/docs/sdk.md +1 -1
  729. package/docs/settings.md +33 -3
  730. package/docs/subagents.md +40 -5
  731. package/docs/terminal-setup.md +4 -0
  732. package/docs/tools.md +1 -1
  733. package/docs/usage.md +8 -6
  734. package/docs/windows.md +4 -0
  735. package/docs/workflows.md +52 -34
  736. package/examples/extensions/preset.ts +2 -2
  737. package/examples/extensions/subagent/README.md +2 -2
  738. package/examples/extensions/subagent/index.ts +1 -2
  739. package/examples/extensions/subagent/schemas.ts +4 -1
  740. package/examples/sdk/12-full-control.ts +1 -1
  741. package/npm-shrinkwrap.json +538 -51
  742. package/package.json +10 -9
  743. package/dist/builtin/subagents/src/runs/foreground/chain-clarify-behavior.ts +0 -75
  744. package/dist/builtin/subagents/src/runs/foreground/chain-clarify-component.ts +0 -202
  745. package/dist/builtin/subagents/src/runs/foreground/chain-clarify-edit.ts +0 -97
  746. package/dist/builtin/subagents/src/runs/foreground/chain-clarify-editor.ts +0 -160
  747. package/dist/builtin/subagents/src/runs/foreground/chain-clarify-frame.ts +0 -72
  748. package/dist/builtin/subagents/src/runs/foreground/chain-clarify-render-modes.ts +0 -161
  749. package/dist/builtin/subagents/src/runs/foreground/chain-clarify-render-selectors.ts +0 -203
  750. package/dist/builtin/subagents/src/runs/foreground/chain-clarify-selectors.ts +0 -234
  751. package/dist/builtin/subagents/src/runs/foreground/chain-clarify-state.ts +0 -103
  752. package/dist/builtin/subagents/src/runs/foreground/chain-clarify-types.ts +0 -29
  753. package/dist/builtin/subagents/src/runs/foreground/chain-clarify.ts +0 -9
  754. package/dist/builtin/subagents/src/runs/foreground/chain-execution-clarify.ts +0 -117
@@ -21,6 +21,7 @@ const ANTIPATTERNS = [
21
21
  {
22
22
  id: 'overused-font',
23
23
  category: 'slop',
24
+ scopes: ['type'],
24
25
  name: 'Overused font',
25
26
  description:
26
27
  'Inter, Roboto, Fraunces, Geist, Plus Jakarta Sans, and Space Grotesk are used on so many sites they no longer feel distinctive. Each new wave of AI-generated UIs converges on the same handful of faces. Choose a face that gives your interface personality.',
@@ -30,6 +31,7 @@ const ANTIPATTERNS = [
30
31
  {
31
32
  id: 'single-font',
32
33
  category: 'slop',
34
+ scopes: ['type'],
33
35
  name: 'Single font for everything',
34
36
  description:
35
37
  'Only one font family is used for the entire page. Pair a distinctive display font with a refined body font to create typographic hierarchy.',
@@ -39,6 +41,7 @@ const ANTIPATTERNS = [
39
41
  {
40
42
  id: 'flat-type-hierarchy',
41
43
  category: 'slop',
44
+ scopes: ['type'],
42
45
  name: 'Flat type hierarchy',
43
46
  description:
44
47
  'Font sizes are too close together — no clear visual hierarchy. Use fewer sizes with more contrast (aim for at least a 1.25 ratio between steps).',
@@ -75,6 +78,7 @@ const ANTIPATTERNS = [
75
78
  {
76
79
  id: 'nested-cards',
77
80
  category: 'slop',
81
+ scopes: ['layout'],
78
82
  name: 'Nested cards',
79
83
  description:
80
84
  'Cards inside cards create visual noise and excessive depth. Flatten the hierarchy — use spacing, typography, and dividers instead of nesting containers.',
@@ -84,6 +88,7 @@ const ANTIPATTERNS = [
84
88
  {
85
89
  id: 'monotonous-spacing',
86
90
  category: 'slop',
91
+ scopes: ['layout'],
87
92
  name: 'Monotonous spacing',
88
93
  description:
89
94
  'The same spacing value used everywhere — no rhythm, no variation. Use tight groupings for related items and generous separations between sections.',
@@ -111,6 +116,7 @@ const ANTIPATTERNS = [
111
116
  {
112
117
  id: 'icon-tile-stack',
113
118
  category: 'slop',
119
+ scopes: ['layout'],
114
120
  name: 'Icon tile stacked above heading',
115
121
  description:
116
122
  'A small rounded-square icon container above a heading is the universal AI feature-card template — every generator outputs this exact shape. Try a side-by-side icon and heading, or let the icon sit in flow without its own container.',
@@ -120,6 +126,7 @@ const ANTIPATTERNS = [
120
126
  {
121
127
  id: 'italic-serif-display',
122
128
  category: 'slop',
129
+ scopes: ['type'],
123
130
  name: 'Italic serif display headline',
124
131
  description:
125
132
  'Oversized italic serif (Fraunces, Recoleta, Playfair, Newsreader-italic) as the primary hero headline reads as taste in isolation but has become the universal AI-startup landing page hero. Set roman, or move to a non-serif display face. Editorial / magazine register may legitimately want this — judge by context.',
@@ -129,6 +136,7 @@ const ANTIPATTERNS = [
129
136
  {
130
137
  id: 'hero-eyebrow-chip',
131
138
  category: 'slop',
139
+ scopes: ['type'],
132
140
  name: 'Hero eyebrow / pill chip',
133
141
  description:
134
142
  'A tiny uppercase letter-spaced label sitting immediately above an oversized hero headline — or the same shape rendered as a pill chip — is now the default AI SaaS hero. Drop the eyebrow, integrate the kicker into the headline, or run it as a navigation breadcrumb instead.',
@@ -138,6 +146,7 @@ const ANTIPATTERNS = [
138
146
  {
139
147
  id: 'repeated-section-kickers',
140
148
  category: 'slop',
149
+ scopes: ['type'],
141
150
  severity: 'advisory',
142
151
  name: 'Repeated section kicker labels',
143
152
  description:
@@ -148,6 +157,7 @@ const ANTIPATTERNS = [
148
157
  {
149
158
  id: 'numbered-section-markers',
150
159
  category: 'slop',
160
+ scopes: ['layout'],
151
161
  severity: 'advisory',
152
162
  name: 'Numbered section markers (01 / 02 / 03)',
153
163
  description:
@@ -185,6 +195,7 @@ const ANTIPATTERNS = [
185
195
  {
186
196
  id: 'oversized-h1',
187
197
  category: 'slop',
198
+ scopes: ['type'],
188
199
  name: 'Oversized hero headline',
189
200
  description:
190
201
  'A full-sentence headline set at display size ends up dominating the viewport, leaving no room for anything else above the fold. A punchy one- or two-word headline at that size is fine — the problem is a long headline blown up too large. Set long headlines smaller, or tighten the copy.',
@@ -194,6 +205,7 @@ const ANTIPATTERNS = [
194
205
  {
195
206
  id: 'extreme-negative-tracking',
196
207
  category: 'slop',
208
+ scopes: ['type'],
197
209
  name: 'Crushed letter spacing',
198
210
  description:
199
211
  'Letter-spacing pulled tighter than the point where characters keep their own shapes costs legibility. Tighten display type optically, not destructively.',
@@ -239,6 +251,7 @@ const ANTIPATTERNS = [
239
251
  {
240
252
  id: 'line-length',
241
253
  category: 'quality',
254
+ scopes: ['type', 'layout'],
242
255
  name: 'Line length too long',
243
256
  description:
244
257
  'Text lines wider than ~80 characters are hard to read. The eye loses its place tracking back to the start of the next line. Add a max-width (65ch to 75ch) to text containers.',
@@ -248,6 +261,7 @@ const ANTIPATTERNS = [
248
261
  {
249
262
  id: 'cramped-padding',
250
263
  category: 'quality',
264
+ scopes: ['layout'],
251
265
  name: 'Cramped padding',
252
266
  description:
253
267
  'Text is too close to the edge of its container. Two shapes: (1) an element with its own text where the padding is too low for the font size, and (2) a wrapper with text-bearing children and near-zero padding against a visible boundary (border, outline, or non-transparent background) — children land flush against the boundary line. Add at least 8px (ideally 12–16px) of padding inside bordered, outlined, or colored containers.',
@@ -257,6 +271,7 @@ const ANTIPATTERNS = [
257
271
  {
258
272
  id: 'body-text-viewport-edge',
259
273
  category: 'quality',
274
+ scopes: ['layout'],
260
275
  name: 'Body text touching viewport edge',
261
276
  description:
262
277
  'Body paragraphs render flush against the left or right viewport edge with no container providing horizontal padding. Wrap content in a container with at least 16px (ideally 24-32px) of horizontal padding, or apply max-width with mx-auto.',
@@ -264,6 +279,7 @@ const ANTIPATTERNS = [
264
279
  {
265
280
  id: 'tight-leading',
266
281
  category: 'quality',
282
+ scopes: ['type'],
267
283
  name: 'Tight line height',
268
284
  description:
269
285
  'Line height below 1.3x the font size makes multi-line text hard to read. Use 1.5 to 1.7 for body text so lines have room to breathe.',
@@ -271,6 +287,7 @@ const ANTIPATTERNS = [
271
287
  {
272
288
  id: 'skipped-heading',
273
289
  category: 'quality',
290
+ scopes: ['type'],
274
291
  name: 'Skipped heading level',
275
292
  description:
276
293
  'Heading levels should not skip (e.g. h1 then h3 with no h2). Screen readers use heading hierarchy for navigation. Skipping levels breaks the document outline.',
@@ -278,6 +295,7 @@ const ANTIPATTERNS = [
278
295
  {
279
296
  id: 'justified-text',
280
297
  category: 'quality',
298
+ scopes: ['type'],
281
299
  name: 'Justified text',
282
300
  description:
283
301
  'Justified text without hyphenation creates uneven word spacing ("rivers of white"). Use text-align: left for body text, or enable hyphens: auto if you must justify.',
@@ -285,6 +303,7 @@ const ANTIPATTERNS = [
285
303
  {
286
304
  id: 'tiny-text',
287
305
  category: 'quality',
306
+ scopes: ['type'],
288
307
  name: 'Tiny body text',
289
308
  description:
290
309
  'Body text below 12px is hard to read, especially on high-DPI screens. Use at least 14px for body content, 16px is ideal.',
@@ -292,6 +311,7 @@ const ANTIPATTERNS = [
292
311
  {
293
312
  id: 'all-caps-body',
294
313
  category: 'quality',
314
+ scopes: ['type'],
295
315
  name: 'All-caps body text',
296
316
  description:
297
317
  'Long passages in uppercase are hard to read. We recognize words by shape (ascenders and descenders), which all-caps removes. Reserve uppercase for short labels and headings.',
@@ -301,6 +321,7 @@ const ANTIPATTERNS = [
301
321
  {
302
322
  id: 'wide-tracking',
303
323
  category: 'quality',
324
+ scopes: ['type'],
304
325
  name: 'Wide letter spacing on body text',
305
326
  description:
306
327
  'Letter spacing above 0.05em on body text disrupts natural character groupings and slows reading. Reserve wide tracking for short uppercase labels only.',
@@ -308,6 +329,7 @@ const ANTIPATTERNS = [
308
329
  {
309
330
  id: 'text-overflow',
310
331
  category: 'quality',
332
+ scopes: ['layout'],
311
333
  name: 'Content overflowing its container',
312
334
  description:
313
335
  'Content renders wider than its container, spilling out or forcing a horizontal scrollbar. Let text wrap, constrain widths, or give the region a deliberate scroll affordance.',
@@ -317,6 +339,7 @@ const ANTIPATTERNS = [
317
339
  {
318
340
  id: 'clipped-overflow-container',
319
341
  category: 'quality',
342
+ scopes: ['layout'],
320
343
  name: 'Positioned child clipped by overflow container',
321
344
  description:
322
345
  'A clipping container (overflow hidden or clip) wrapping an absolutely-positioned child cuts off tooltips, menus, and popovers that need to escape. Let the overflow be visible, or move the positioned layer out of the clip.',
@@ -326,6 +349,7 @@ const ANTIPATTERNS = [
326
349
  {
327
350
  id: 'design-system-font',
328
351
  category: 'quality',
352
+ scopes: ['type'],
329
353
  name: 'Font outside DESIGN.md',
330
354
  description:
331
355
  'A font is used that is not declared in DESIGN.md typography. Use the documented type system or update DESIGN.md if this is an intentional brand addition.',
@@ -352,6 +376,17 @@ const ANTIPATTERNS = [
352
376
  skillSection: 'Visual Details',
353
377
  skillGuideline: 'border radius outside the project design system',
354
378
  },
379
+ {
380
+ id: 'design-system-font-size',
381
+ category: 'quality',
382
+ severity: 'advisory',
383
+ scopes: ['type'],
384
+ name: 'Font size outside DESIGN.md',
385
+ description:
386
+ 'A literal font-size is off the type ramp documented in DESIGN.md typography. Use a documented size step or update the design system if the new step is intentional.',
387
+ skillSection: 'Typography',
388
+ skillGuideline: 'font size outside the project design system',
389
+ },
355
390
 
356
391
  // ── Provider tells: opt-in via --gpt / --gemini (gated off by default) ──
357
392
  {
@@ -376,6 +411,17 @@ const ANTIPATTERNS = [
376
411
  skillSection: 'Visual Details',
377
412
  skillGuideline: 'repeating-gradient decorative stripes',
378
413
  },
414
+ {
415
+ id: 'codex-grid-background',
416
+ category: 'slop',
417
+ severity: 'advisory',
418
+ gated: 'gpt',
419
+ name: 'Decorative grid-line background',
420
+ description:
421
+ 'A two-axis grid drawn with hairline linear-gradient layers ("1px, transparent 1px" on both axes) is a recurring generated-UI signature. Reserve grid overlays for actual canvas, map, blueprint, or measurement surfaces; elsewhere use product structure or a plain surface.',
422
+ skillSection: 'Visual Details',
423
+ skillGuideline: 'two-axis grid-line gradient background',
424
+ },
379
425
  {
380
426
  id: 'theater-slop-phrase',
381
427
  category: 'slop',
@@ -437,12 +483,32 @@ function filterByProviders(findings, providers = []) {
437
483
  });
438
484
  }
439
485
 
486
+
487
+ // Set of scope tags rules can declare (e.g. 'type', 'layout'). Used by the
488
+ // CLI --scope flag to narrow output to one design domain.
489
+ const RULE_SCOPES = new Set(
490
+ ANTIPATTERNS.flatMap(rule => rule.scopes || []),
491
+ );
492
+
493
+ // Keep only findings whose rule declares at least one of the requested
494
+ // scopes. An empty scope list means no filtering (default CLI behavior).
495
+ function filterByScopes(findings, scopes = []) {
496
+ if (!scopes || scopes.length === 0) return findings;
497
+ const enabled = new Set(scopes);
498
+ return findings.filter(f => {
499
+ const rule = getAntipattern(f.antipattern);
500
+ return (rule?.scopes || []).some(scope => enabled.has(scope));
501
+ });
502
+ }
503
+
440
504
  export {
441
505
  ANTIPATTERNS,
506
+ RULE_SCOPES,
442
507
  RULE_ENGINE_SUPPORT,
443
508
  GATED_PROVIDERS,
444
509
  getAntipattern,
445
510
  getRulesForCategory,
446
511
  getRuleEngineSupport,
447
512
  filterByProviders,
513
+ filterByScopes,
448
514
  };
@@ -18,6 +18,7 @@ import {
18
18
  parseRgb,
19
19
  relativeLuminance,
20
20
  } from '../shared/color.mjs';
21
+ import { extractGoogleFontFamilies } from '../shared/fonts.mjs';
21
22
 
22
23
  const DETECTOR_IS_BROWSER = typeof window !== 'undefined';
23
24
 
@@ -573,13 +574,49 @@ function checkHtmlPatterns(html) {
573
574
  findings.push({ id: 'repeating-stripes-gradient', snippet: 'repeating-gradient decorative stripes' });
574
575
  }
575
576
 
577
+ // --- Provider tells (gated): two-axis grid-line background (Codex/GPT) ---
578
+ // The Codex grid tell is two hairline `linear-gradient(... <color> 1px,
579
+ // transparent 1px)` layers (one per axis) tiled by a repeating
580
+ // `background-size` cell. Both signals must co-occur in the SAME style block
581
+ // (a CSS rule body or one inline `style="..."`): two hairline stops WITHOUT a
582
+ // tiling background-size is a fixed crosshair, not a grid, and a single
583
+ // hairline is a legitimate ruled line. Scoping to one block also stops
584
+ // unrelated single-axis rules on separate elements from adding up across the
585
+ // page. Count hairlines only inside `background`/`background-image` values so
586
+ // a hairline in an unrelated property (mask-image, border-image) can't stand
587
+ // in for the second axis. Colors like `oklch(96% 0.012 82 / 0.055)` carry
588
+ // nested parens, so match the hairline stop directly rather than parsing
589
+ // whole gradient layers.
590
+ {
591
+ const hairlineRe = /\b\d{1,3}px\s*,\s*transparent\s+\d{1,3}px/gi;
592
+ const gridSizeRe = /background-size\s*:[^;{}"']*\b\d{1,3}px\b/i;
593
+ const bgDeclRe = /\bbackground(?:-image)?\s*:\s*([^;{}"']*)/gi;
594
+ const blockRe = /\{([^{}]*)\}|style\s*=\s*"([^"]*)"|style\s*=\s*'([^']*)'/gi;
595
+ let blk;
596
+ while ((blk = blockRe.exec(html)) !== null) {
597
+ const block = blk[1] || blk[2] || blk[3] || '';
598
+ if (!gridSizeRe.test(block)) continue;
599
+ let hairlineCount = 0;
600
+ let bm;
601
+ bgDeclRe.lastIndex = 0;
602
+ while ((bm = bgDeclRe.exec(block)) !== null) {
603
+ const stops = bm[1].match(hairlineRe);
604
+ if (stops) hairlineCount += stops.length;
605
+ }
606
+ if (hairlineCount >= 2) {
607
+ findings.push({ id: 'codex-grid-background', snippet: 'two-axis grid-line gradient background' });
608
+ break;
609
+ }
610
+ }
611
+ }
612
+
576
613
  // --- Provider tells (gated): "X theater" framing copy (GPT) ---
577
614
  // Lives here (regex-on-HTML) rather than in the text-content analyzers so it
578
615
  // runs in the bundled browser path too, not just the CLI/static path.
579
616
  {
580
617
  const bodyText = html
581
- .replace(/<script\b[^>]*>[\s\S]*?<\/script[^>]*>/gi, ' ')
582
- .replace(/<style\b[^>]*>[\s\S]*?<\/style[^>]*>/gi, ' ')
618
+ .replace(/<script\b[^>]*>[\s\S]*?<\/script\b[^>]*>/gi, ' ')
619
+ .replace(/<style\b[^>]*>[\s\S]*?<\/style\b[^>]*>/gi, ' ')
583
620
  .replace(/<[^>]+>/g, ' ');
584
621
  const tm = /\b(\w+)\s+theater\b/i.exec(bodyText);
585
622
  if (tm) findings.push({ id: 'theater-slop-phrase', snippet: `"${tm[0].trim()}"` });
@@ -2036,14 +2073,9 @@ function checkPageTypography(doc, win) {
2036
2073
 
2037
2074
  // Check Google Fonts links in HTML
2038
2075
  const html = doc.documentElement?.outerHTML || '';
2039
- const gfRe = /fonts\.googleapis\.com\/css2?\?family=([^&"'\s]+)/gi;
2040
- let m;
2041
- while ((m = gfRe.exec(html)) !== null) {
2042
- const families = m[1].split('|').map(f => f.split(':')[0].replace(/\+/g, ' ').toLowerCase());
2043
- for (const f of families) {
2044
- fonts.add(f);
2045
- if (OVERUSED_FONTS.has(f)) overusedFound.add(f);
2046
- }
2076
+ for (const f of extractGoogleFontFamilies(html)) {
2077
+ fonts.add(f);
2078
+ if (OVERUSED_FONTS.has(f)) overusedFound.add(f);
2047
2079
  }
2048
2080
 
2049
2081
  // Also parse raw HTML/style content for font-family (jsdom may not expose all via CSSOM)
@@ -0,0 +1,30 @@
1
+ const GOOGLE_FONTS_URL_RE = /fonts\.googleapis\.com\/css2?\?[^"'\s)<>]*/gi;
2
+
3
+ function normalizeGoogleFontFamilyParam(value) {
4
+ return String(value || '')
5
+ .split('|')
6
+ .map(part => part.split(':')[0].trim().toLowerCase())
7
+ .filter(Boolean);
8
+ }
9
+
10
+ function extractGoogleFontFamilies(text) {
11
+ const families = [];
12
+ if (!text) return families;
13
+
14
+ GOOGLE_FONTS_URL_RE.lastIndex = 0;
15
+ let urlMatch;
16
+ while ((urlMatch = GOOGLE_FONTS_URL_RE.exec(text)) !== null) {
17
+ const url = urlMatch[0];
18
+ const queryStart = url.indexOf('?');
19
+ if (queryStart === -1) continue;
20
+
21
+ const params = new URLSearchParams(url.slice(queryStart + 1).replace(/&amp;/g, '&'));
22
+ for (const value of params.getAll('family')) {
23
+ families.push(...normalizeGoogleFontFamilyParam(value));
24
+ }
25
+ }
26
+
27
+ return families;
28
+ }
29
+
30
+ export { extractGoogleFontFamilies };
@@ -1,13 +1,11 @@
1
1
  /** Check if content looks like a full page (not a component/partial) */
2
2
  function isFullPage(content) {
3
- // Strip comments to a fixpoint so nested/overlapping comment markers cannot
4
- // survive a single pass (CodeQL: complete sanitization).
5
- let stripped = String(content);
6
- let prev;
3
+ let stripped = String(content || '');
4
+ let previous;
7
5
  do {
8
- prev = stripped;
6
+ previous = stripped;
9
7
  stripped = stripped.replace(/<!--[\s\S]*?-->/g, '');
10
- } while (stripped !== prev);
8
+ } while (stripped !== previous);
11
9
  return /<!doctype\s|<html[\s>]|<head[\s>]/i.test(stripped);
12
10
  }
13
11