@bastani/atomic 0.9.10 → 0.9.11-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 (2339) hide show
  1. package/CHANGELOG.md +255 -0
  2. package/README.md +15 -10
  3. package/dist/builtin/intercom/CHANGELOG.md +6 -0
  4. package/dist/builtin/intercom/package.json +4 -4
  5. package/dist/builtin/mcp/CHANGELOG.md +18 -0
  6. package/dist/builtin/mcp/README.md +3 -3
  7. package/dist/builtin/mcp/cli.js +0 -1
  8. package/dist/builtin/mcp/commands.ts +7 -3
  9. package/dist/builtin/mcp/config.ts +0 -2
  10. package/dist/builtin/mcp/package.json +6 -6
  11. package/dist/builtin/mcp/sampling-handler.ts +1 -5
  12. package/dist/builtin/mcp/types.ts +0 -1
  13. package/dist/builtin/subagents/CHANGELOG.md +40 -0
  14. package/dist/builtin/subagents/README.md +10 -1
  15. package/dist/builtin/subagents/agents/code-simplifier.md +48 -103
  16. package/dist/builtin/subagents/agents/codebase-analyzer.md +28 -131
  17. package/dist/builtin/subagents/agents/codebase-locator.md +25 -84
  18. package/dist/builtin/subagents/agents/codebase-online-researcher.md +61 -260
  19. package/dist/builtin/subagents/agents/codebase-pattern-finder.md +30 -208
  20. package/dist/builtin/subagents/agents/codebase-research-analyzer.md +29 -151
  21. package/dist/builtin/subagents/agents/codebase-research-locator.md +22 -119
  22. package/dist/builtin/subagents/agents/debugger.md +29 -65
  23. package/dist/builtin/subagents/agents/worker.md +24 -31
  24. package/dist/builtin/subagents/package.json +5 -5
  25. package/dist/builtin/subagents/prompts/gather-context-and-clarify.md +18 -11
  26. package/dist/builtin/subagents/prompts/parallel-cleanup.md +34 -33
  27. package/dist/builtin/subagents/prompts/parallel-context-build.md +22 -36
  28. package/dist/builtin/subagents/prompts/parallel-handoff-plan.md +20 -52
  29. package/dist/builtin/subagents/prompts/parallel-research.md +17 -41
  30. package/dist/builtin/subagents/prompts/parallel-review.md +23 -28
  31. package/dist/builtin/subagents/prompts/review-loop.md +18 -27
  32. package/dist/builtin/subagents/skills/subagent/SKILL.md +6 -6
  33. package/dist/builtin/subagents/src/agents/agent-discovery.ts +26 -15
  34. package/dist/builtin/subagents/src/agents/agent-loaders.ts +48 -34
  35. package/dist/builtin/subagents/src/agents/agent-management-helpers.ts +80 -31
  36. package/dist/builtin/subagents/src/agents/agent-management.ts +194 -55
  37. package/dist/builtin/subagents/src/agents/agent-overrides.ts +85 -32
  38. package/dist/builtin/subagents/src/agents/agent-paths.ts +4 -1
  39. package/dist/builtin/subagents/src/agents/agent-selection.ts +1 -1
  40. package/dist/builtin/subagents/src/agents/agent-serializer.ts +1 -4
  41. package/dist/builtin/subagents/src/agents/agents.ts +9 -9
  42. package/dist/builtin/subagents/src/agents/chain-serializer.ts +9 -5
  43. package/dist/builtin/subagents/src/agents/identity.ts +12 -3
  44. package/dist/builtin/subagents/src/agents/skills-paths.ts +64 -24
  45. package/dist/builtin/subagents/src/agents/skills.ts +29 -26
  46. package/dist/builtin/subagents/src/extension/doctor.ts +31 -20
  47. package/dist/builtin/subagents/src/extension/fanout-child.ts +27 -12
  48. package/dist/builtin/subagents/src/extension/index.ts +119 -43
  49. package/dist/builtin/subagents/src/extension/prompt-guidance.ts +4 -2
  50. package/dist/builtin/subagents/src/extension/schemas.ts +304 -177
  51. package/dist/builtin/subagents/src/extension/startup-maintenance.ts +137 -73
  52. package/dist/builtin/subagents/src/intercom/intercom-bridge.ts +49 -21
  53. package/dist/builtin/subagents/src/intercom/result-intercom.ts +76 -38
  54. package/dist/builtin/subagents/src/runs/background/async-event-journal.ts +12 -6
  55. package/dist/builtin/subagents/src/runs/background/async-execution-chain.ts +183 -57
  56. package/dist/builtin/subagents/src/runs/background/async-execution-common.ts +15 -18
  57. package/dist/builtin/subagents/src/runs/background/async-execution-single.ts +67 -26
  58. package/dist/builtin/subagents/src/runs/background/async-execution-types.ts +8 -8
  59. package/dist/builtin/subagents/src/runs/background/async-execution.ts +1 -1
  60. package/dist/builtin/subagents/src/runs/background/async-job-tracker.ts +86 -32
  61. package/dist/builtin/subagents/src/runs/background/async-resume.ts +93 -36
  62. package/dist/builtin/subagents/src/runs/background/async-status.ts +82 -27
  63. package/dist/builtin/subagents/src/runs/background/completion-claims.ts +12 -5
  64. package/dist/builtin/subagents/src/runs/background/completion-dedupe.ts +3 -1
  65. package/dist/builtin/subagents/src/runs/background/completion-notification.ts +3 -1
  66. package/dist/builtin/subagents/src/runs/background/notify.ts +38 -18
  67. package/dist/builtin/subagents/src/runs/background/parallel-groups.ts +28 -14
  68. package/dist/builtin/subagents/src/runs/background/result-delivery-processor.ts +147 -79
  69. package/dist/builtin/subagents/src/runs/background/result-file-claims.ts +20 -5
  70. package/dist/builtin/subagents/src/runs/background/result-quarantine.ts +7 -2
  71. package/dist/builtin/subagents/src/runs/background/result-status.ts +11 -5
  72. package/dist/builtin/subagents/src/runs/background/result-watcher-data.ts +18 -5
  73. package/dist/builtin/subagents/src/runs/background/result-watcher.ts +104 -35
  74. package/dist/builtin/subagents/src/runs/background/run-id-resolver.ts +28 -7
  75. package/dist/builtin/subagents/src/runs/background/run-status.ts +120 -32
  76. package/dist/builtin/subagents/src/runs/background/stale-run-reconciler.ts +98 -39
  77. package/dist/builtin/subagents/src/runs/background/subagent-runner-dynamic.ts +185 -37
  78. package/dist/builtin/subagents/src/runs/background/subagent-runner-finalize.ts +23 -9
  79. package/dist/builtin/subagents/src/runs/background/subagent-runner-output.ts +6 -2
  80. package/dist/builtin/subagents/src/runs/background/subagent-runner-parallel-helpers.ts +34 -18
  81. package/dist/builtin/subagents/src/runs/background/subagent-runner-parallel.ts +175 -26
  82. package/dist/builtin/subagents/src/runs/background/subagent-runner-sequential.ts +68 -23
  83. package/dist/builtin/subagents/src/runs/background/subagent-runner-state.ts +200 -49
  84. package/dist/builtin/subagents/src/runs/background/subagent-runner-step.ts +82 -49
  85. package/dist/builtin/subagents/src/runs/background/subagent-runner-streaming.ts +33 -11
  86. package/dist/builtin/subagents/src/runs/background/subagent-runner-types.ts +16 -6
  87. package/dist/builtin/subagents/src/runs/background/subagent-runner-utils.ts +2 -3
  88. package/dist/builtin/subagents/src/runs/background/subagent-runner.ts +11 -8
  89. package/dist/builtin/subagents/src/runs/foreground/chain-execution-details.ts +5 -2
  90. package/dist/builtin/subagents/src/runs/foreground/chain-execution-dynamic-step.ts +115 -31
  91. package/dist/builtin/subagents/src/runs/foreground/chain-execution-parallel-runner.ts +71 -54
  92. package/dist/builtin/subagents/src/runs/foreground/chain-execution-parallel-step.ts +104 -37
  93. package/dist/builtin/subagents/src/runs/foreground/chain-execution-sequential-step.ts +102 -61
  94. package/dist/builtin/subagents/src/runs/foreground/chain-execution-types.ts +24 -10
  95. package/dist/builtin/subagents/src/runs/foreground/chain-execution.ts +9 -6
  96. package/dist/builtin/subagents/src/runs/foreground/detached-cleanup-barrier.ts +22 -22
  97. package/dist/builtin/subagents/src/runs/foreground/execution-attempt-control.ts +45 -40
  98. package/dist/builtin/subagents/src/runs/foreground/execution-attempt-finalize.ts +6 -5
  99. package/dist/builtin/subagents/src/runs/foreground/execution-attempt.ts +118 -43
  100. package/dist/builtin/subagents/src/runs/foreground/execution-detach-reservations.ts +17 -7
  101. package/dist/builtin/subagents/src/runs/foreground/execution-detach-route.ts +5 -3
  102. package/dist/builtin/subagents/src/runs/foreground/execution-intercom-detach.ts +39 -35
  103. package/dist/builtin/subagents/src/runs/foreground/execution-run-sync.ts +81 -42
  104. package/dist/builtin/subagents/src/runs/foreground/execution-structured-retries.ts +27 -21
  105. package/dist/builtin/subagents/src/runs/foreground/execution-updates.ts +2 -5
  106. package/dist/builtin/subagents/src/runs/foreground/execution-utils.ts +9 -4
  107. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-async.ts +69 -25
  108. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-chain.ts +36 -19
  109. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-context.ts +95 -62
  110. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-input.ts +30 -9
  111. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-parallel-task.ts +106 -96
  112. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-parallel.ts +68 -36
  113. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-resume.ts +262 -83
  114. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-runtime.ts +6 -1
  115. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-single.ts +67 -41
  116. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-status.ts +129 -44
  117. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-types.ts +20 -3
  118. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-worktree.ts +8 -6
  119. package/dist/builtin/subagents/src/runs/foreground/subagent-executor.ts +65 -47
  120. package/dist/builtin/subagents/src/runs/shared/chain-outputs.ts +37 -12
  121. package/dist/builtin/subagents/src/runs/shared/dynamic-fanout.ts +120 -34
  122. package/dist/builtin/subagents/src/runs/shared/final-drain.ts +12 -7
  123. package/dist/builtin/subagents/src/runs/shared/intercom-group.ts +3 -2
  124. package/dist/builtin/subagents/src/runs/shared/long-running-guard.ts +8 -3
  125. package/dist/builtin/subagents/src/runs/shared/mcp-direct-tool-allowlist.ts +42 -20
  126. package/dist/builtin/subagents/src/runs/shared/model-candidate-filter.ts +8 -4
  127. package/dist/builtin/subagents/src/runs/shared/model-fallback.ts +103 -38
  128. package/dist/builtin/subagents/src/runs/shared/nested-events-control.ts +30 -20
  129. package/dist/builtin/subagents/src/runs/shared/nested-events-core.ts +45 -20
  130. package/dist/builtin/subagents/src/runs/shared/nested-events-projection.ts +57 -23
  131. package/dist/builtin/subagents/src/runs/shared/nested-events-registry.ts +77 -29
  132. package/dist/builtin/subagents/src/runs/shared/nested-events-sanitize.ts +99 -42
  133. package/dist/builtin/subagents/src/runs/shared/nested-events.ts +32 -26
  134. package/dist/builtin/subagents/src/runs/shared/nested-path.ts +22 -17
  135. package/dist/builtin/subagents/src/runs/shared/nested-render.ts +31 -10
  136. package/dist/builtin/subagents/src/runs/shared/parallel-utils.ts +10 -8
  137. package/dist/builtin/subagents/src/runs/shared/pi-args.ts +59 -33
  138. package/dist/builtin/subagents/src/runs/shared/pi-spawn.ts +17 -13
  139. package/dist/builtin/subagents/src/runs/shared/run-history.ts +13 -6
  140. package/dist/builtin/subagents/src/runs/shared/single-output.ts +11 -6
  141. package/dist/builtin/subagents/src/runs/shared/spawn-env.ts +21 -0
  142. package/dist/builtin/subagents/src/runs/shared/structured-output.ts +33 -19
  143. package/dist/builtin/subagents/src/runs/shared/subagent-control.ts +59 -48
  144. package/dist/builtin/subagents/src/runs/shared/subagent-prompt-runtime.ts +18 -11
  145. package/dist/builtin/subagents/src/runs/shared/workflow-graph.ts +41 -11
  146. package/dist/builtin/subagents/src/runs/shared/worktree-post-create.ts +46 -10
  147. package/dist/builtin/subagents/src/runs/shared/worktree-root.ts +21 -5
  148. package/dist/builtin/subagents/src/runs/shared/worktree.ts +89 -34
  149. package/dist/builtin/subagents/src/shared/artifacts.ts +137 -7
  150. package/dist/builtin/subagents/src/shared/event-jsonl-writer.ts +49 -13
  151. package/dist/builtin/subagents/src/shared/fast-mode.ts +13 -6
  152. package/dist/builtin/subagents/src/shared/fork-context.ts +7 -4
  153. package/dist/builtin/subagents/src/shared/formatters.ts +14 -9
  154. package/dist/builtin/subagents/src/shared/jsonl-writer.ts +2 -1
  155. package/dist/builtin/subagents/src/shared/model-info.ts +10 -3
  156. package/dist/builtin/subagents/src/shared/post-exit-stdio-guard.ts +7 -6
  157. package/dist/builtin/subagents/src/shared/session-tokens.ts +2 -1
  158. package/dist/builtin/subagents/src/shared/settings.ts +43 -43
  159. package/dist/builtin/subagents/src/shared/status-format.ts +10 -2
  160. package/dist/builtin/subagents/src/shared/types-async.ts +22 -19
  161. package/dist/builtin/subagents/src/shared/types-config.ts +1 -1
  162. package/dist/builtin/subagents/src/shared/types-depth.ts +23 -11
  163. package/dist/builtin/subagents/src/shared/types-results.ts +49 -6
  164. package/dist/builtin/subagents/src/shared/types-runtime.ts +16 -17
  165. package/dist/builtin/subagents/src/shared/types.ts +2 -2
  166. package/dist/builtin/subagents/src/shared/utils.ts +34 -20
  167. package/dist/builtin/subagents/src/slash/prompt-template-bridge.ts +44 -47
  168. package/dist/builtin/subagents/src/slash/saved-chain-mapping.ts +5 -7
  169. package/dist/builtin/subagents/src/slash/slash-bridge.ts +3 -3
  170. package/dist/builtin/subagents/src/slash/slash-commands.ts +78 -52
  171. package/dist/builtin/subagents/src/slash/slash-live-state.ts +59 -32
  172. package/dist/builtin/subagents/src/tui/render-chain-graph.ts +120 -32
  173. package/dist/builtin/subagents/src/tui/render-event-formatting.ts +85 -22
  174. package/dist/builtin/subagents/src/tui/render-helpers.ts +16 -6
  175. package/dist/builtin/subagents/src/tui/render-layout.ts +8 -3
  176. package/dist/builtin/subagents/src/tui/render-result-compact.ts +125 -43
  177. package/dist/builtin/subagents/src/tui/render-result.ts +128 -85
  178. package/dist/builtin/subagents/src/tui/render-stable-output.ts +17 -13
  179. package/dist/builtin/subagents/src/tui/render-status-progress.ts +52 -20
  180. package/dist/builtin/subagents/src/tui/render-widget-graph.ts +130 -28
  181. package/dist/builtin/subagents/src/tui/render-widget.ts +54 -27
  182. package/dist/builtin/subagents/src/tui/render.ts +10 -3
  183. package/dist/builtin/web-access/CHANGELOG.md +6 -0
  184. package/dist/builtin/web-access/package.json +2 -2
  185. package/dist/builtin/workflows/CHANGELOG.md +127 -0
  186. package/dist/builtin/workflows/README.md +83 -70
  187. package/dist/builtin/workflows/ambient.d.ts +0 -5
  188. package/dist/builtin/workflows/builtin/adversarial-verification-prompts.ts +7 -4
  189. package/dist/builtin/workflows/builtin/adversarial-verification-runner.ts +1 -1
  190. package/dist/builtin/workflows/builtin/adversarial-verification.ts +2 -1
  191. package/dist/builtin/workflows/builtin/classify-and-act-prompts.ts +5 -2
  192. package/dist/builtin/workflows/builtin/classify-and-act-runner.ts +5 -7
  193. package/dist/builtin/workflows/builtin/classify-and-act.ts +3 -2
  194. package/dist/builtin/workflows/builtin/fan-out-and-synthesize-prompts.ts +6 -3
  195. package/dist/builtin/workflows/builtin/fan-out-and-synthesize-runner.ts +5 -5
  196. package/dist/builtin/workflows/builtin/fan-out-and-synthesize.ts +3 -2
  197. package/dist/builtin/workflows/builtin/generate-and-filter-prompts.ts +7 -4
  198. package/dist/builtin/workflows/builtin/generate-and-filter-runner.ts +6 -3
  199. package/dist/builtin/workflows/builtin/generate-and-filter.ts +3 -2
  200. package/dist/builtin/workflows/builtin/goal-artifacts.ts +1 -1
  201. package/dist/builtin/workflows/builtin/goal-models.ts +39 -39
  202. package/dist/builtin/workflows/builtin/goal-orchestrator-prompts.ts +94 -0
  203. package/dist/builtin/workflows/builtin/goal-prompts.ts +70 -285
  204. package/dist/builtin/workflows/builtin/goal-reducer.ts +1 -1
  205. package/dist/builtin/workflows/builtin/goal-runner.ts +72 -116
  206. package/dist/builtin/workflows/builtin/goal.ts +12 -11
  207. package/dist/builtin/workflows/builtin/index.d.ts +17 -112
  208. package/dist/builtin/workflows/builtin/index.ts +1 -2
  209. package/dist/builtin/workflows/builtin/loop-until-done-prompts.ts +20 -12
  210. package/dist/builtin/workflows/builtin/loop-until-done-runner.ts +3 -0
  211. package/dist/builtin/workflows/builtin/loop-until-done.ts +3 -2
  212. package/dist/builtin/workflows/builtin/open-claude-design-phases.ts +149 -88
  213. package/dist/builtin/workflows/builtin/open-claude-design-runner.ts +102 -78
  214. package/dist/builtin/workflows/builtin/open-claude-design-setup.ts +164 -56
  215. package/dist/builtin/workflows/builtin/open-claude-design-utils.ts +16 -21
  216. package/dist/builtin/workflows/builtin/open-claude-design.ts +2 -1
  217. package/dist/builtin/workflows/builtin/ralph-core.ts +61 -57
  218. package/dist/builtin/workflows/builtin/ralph-forked-prompts.ts +41 -45
  219. package/dist/builtin/workflows/builtin/ralph-models.ts +37 -47
  220. package/dist/builtin/workflows/builtin/ralph-reviewer-prompt.ts +37 -117
  221. package/dist/builtin/workflows/builtin/ralph-runner.ts +83 -108
  222. package/dist/builtin/workflows/builtin/ralph.ts +6 -5
  223. package/dist/builtin/workflows/builtin/shared-prompts.ts +117 -70
  224. package/dist/builtin/workflows/builtin/steering-context.ts +51 -0
  225. package/dist/builtin/workflows/builtin/tournament-prompts.ts +21 -12
  226. package/dist/builtin/workflows/builtin/tournament-runner.ts +3 -0
  227. package/dist/builtin/workflows/builtin/tournament.ts +3 -2
  228. package/dist/builtin/workflows/package.json +4 -4
  229. package/dist/builtin/workflows/skills/create-spec/SKILL.md +1 -1
  230. package/dist/builtin/workflows/skills/impeccable/SKILL.md +33 -129
  231. package/dist/builtin/workflows/skills/impeccable/agents/impeccable_asset_producer.toml +11 -3
  232. package/dist/builtin/workflows/skills/impeccable/agents/impeccable_documenter.toml +26 -0
  233. package/dist/builtin/workflows/skills/impeccable/agents/impeccable_finish_reviewer.toml +35 -0
  234. package/dist/builtin/workflows/skills/impeccable/reference/android.md +1 -1
  235. package/dist/builtin/workflows/skills/impeccable/reference/animate.md +72 -189
  236. package/dist/builtin/workflows/skills/impeccable/reference/audit.md +10 -9
  237. package/dist/builtin/workflows/skills/impeccable/reference/audit.native.md +2 -2
  238. package/dist/builtin/workflows/skills/impeccable/reference/bolder.md +19 -108
  239. package/dist/builtin/workflows/skills/impeccable/reference/clarify.md +59 -253
  240. package/dist/builtin/workflows/skills/impeccable/reference/colorize.md +51 -222
  241. package/dist/builtin/workflows/skills/impeccable/reference/craft-floor.md +45 -0
  242. package/dist/builtin/workflows/skills/impeccable/reference/craft.md +3 -121
  243. package/dist/builtin/workflows/skills/impeccable/reference/critique.md +28 -20
  244. package/dist/builtin/workflows/skills/impeccable/reference/degraded/asset-producer.md +97 -0
  245. package/dist/builtin/workflows/skills/impeccable/reference/degraded/documenter.md +23 -0
  246. package/dist/builtin/workflows/skills/impeccable/reference/degraded/finish-reviewer.md +32 -0
  247. package/dist/builtin/workflows/skills/impeccable/reference/degraded/manual-edit-applier.md +92 -0
  248. package/dist/builtin/workflows/skills/impeccable/reference/delight.md +47 -279
  249. package/dist/builtin/workflows/skills/impeccable/reference/distill.md +2 -2
  250. package/dist/builtin/workflows/skills/impeccable/reference/doctor.md +53 -0
  251. package/dist/builtin/workflows/skills/impeccable/reference/document.md +60 -73
  252. package/dist/builtin/workflows/skills/impeccable/reference/harden.md +1 -12
  253. package/dist/builtin/workflows/skills/impeccable/reference/hooks.md +23 -12
  254. package/dist/builtin/workflows/skills/impeccable/reference/init.md +64 -163
  255. package/dist/builtin/workflows/skills/impeccable/reference/ios.md +1 -1
  256. package/dist/builtin/workflows/skills/impeccable/reference/layout.md +52 -153
  257. package/dist/builtin/workflows/skills/impeccable/reference/live.md +47 -36
  258. package/dist/builtin/workflows/skills/impeccable/reference/new-work.md +105 -0
  259. package/dist/builtin/workflows/skills/impeccable/reference/{product.md → operate.md} +6 -5
  260. package/dist/builtin/workflows/skills/impeccable/reference/optimize.md +4 -4
  261. package/dist/builtin/workflows/skills/impeccable/reference/overdrive.md +1 -4
  262. package/dist/builtin/workflows/skills/impeccable/reference/polish.md +68 -212
  263. package/dist/builtin/workflows/skills/impeccable/reference/quieter.md +3 -3
  264. package/dist/builtin/workflows/skills/impeccable/reference/routing.md +18 -0
  265. package/dist/builtin/workflows/skills/impeccable/reference/shape.md +38 -144
  266. package/dist/builtin/workflows/skills/impeccable/reference/typeset.md +48 -269
  267. package/dist/builtin/workflows/skills/impeccable/reference/visualize.md +38 -0
  268. package/dist/builtin/workflows/skills/impeccable/scripts/command-metadata.json +1 -1
  269. package/dist/builtin/workflows/skills/impeccable/scripts/concept-seed.mjs +584 -0
  270. package/dist/builtin/workflows/skills/impeccable/scripts/context-signals.mjs +117 -9
  271. package/dist/builtin/workflows/skills/impeccable/scripts/context.mjs +486 -59
  272. package/dist/builtin/workflows/skills/impeccable/scripts/critique-storage.mjs +16 -45
  273. package/dist/builtin/workflows/skills/impeccable/scripts/detector/browser/injected/index.mjs +96 -10
  274. package/dist/builtin/workflows/skills/impeccable/scripts/detector/cli/main.mjs +143 -26
  275. package/dist/builtin/workflows/skills/impeccable/scripts/detector/design-system.mjs +181 -12
  276. package/dist/builtin/workflows/skills/impeccable/scripts/detector/detect-antipatterns-browser.js +3187 -182
  277. package/dist/builtin/workflows/skills/impeccable/scripts/detector/engines/browser/detect-url.mjs +102 -7
  278. package/dist/builtin/workflows/skills/impeccable/scripts/detector/engines/regex/detect-text.mjs +282 -70
  279. package/dist/builtin/workflows/skills/impeccable/scripts/detector/engines/static-html/css-cascade.mjs +183 -15
  280. package/dist/builtin/workflows/skills/impeccable/scripts/detector/engines/static-html/detect-html.mjs +22 -7
  281. package/dist/builtin/workflows/skills/impeccable/scripts/detector/findings.mjs +7 -1
  282. package/dist/builtin/workflows/skills/impeccable/scripts/detector/node/file-system.mjs +16 -2
  283. package/dist/builtin/workflows/skills/impeccable/scripts/detector/registry/antipatterns.mjs +155 -42
  284. package/dist/builtin/workflows/skills/impeccable/scripts/detector/rules/checks.mjs +2988 -155
  285. package/dist/builtin/workflows/skills/impeccable/scripts/detector/shared/constants.mjs +11 -0
  286. package/dist/builtin/workflows/skills/impeccable/scripts/doctor.mjs +336 -0
  287. package/dist/builtin/workflows/skills/impeccable/scripts/generate-image.mjs +232 -0
  288. package/dist/builtin/workflows/skills/impeccable/scripts/hook-admin.mjs +92 -30
  289. package/dist/builtin/workflows/skills/impeccable/scripts/hook-lib.mjs +414 -120
  290. package/dist/builtin/workflows/skills/impeccable/scripts/hook.mjs +25 -8
  291. package/dist/builtin/workflows/skills/impeccable/scripts/lib/artifact-schema.mjs +93 -0
  292. package/dist/builtin/workflows/skills/impeccable/scripts/lib/composition-catalog.mjs +165 -0
  293. package/dist/builtin/workflows/skills/impeccable/scripts/lib/concept-catalog.mjs +329 -0
  294. package/dist/builtin/workflows/skills/impeccable/scripts/lib/impeccable-config.mjs +20 -5
  295. package/dist/builtin/workflows/skills/impeccable/scripts/lib/impeccable-paths.mjs +16 -8
  296. package/dist/builtin/workflows/skills/impeccable/scripts/lib/provider.mjs +1 -0
  297. package/dist/builtin/workflows/skills/impeccable/scripts/lib/staleness-deep.mjs +455 -0
  298. package/dist/builtin/workflows/skills/impeccable/scripts/lib/staleness-notice.mjs +169 -0
  299. package/dist/builtin/workflows/skills/impeccable/scripts/lib/staleness.mjs +457 -0
  300. package/dist/builtin/workflows/skills/impeccable/scripts/lib/surface-briefs.mjs +151 -0
  301. package/dist/builtin/workflows/skills/impeccable/scripts/lib/target-slug.mjs +33 -0
  302. package/dist/builtin/workflows/skills/impeccable/scripts/lib/template-extensions.mjs +146 -0
  303. package/dist/builtin/workflows/skills/impeccable/scripts/live/completion.mjs +10 -1
  304. package/dist/builtin/workflows/skills/impeccable/scripts/live/event-validation.mjs +15 -0
  305. package/dist/builtin/workflows/skills/impeccable/scripts/live/generation-preflight.mjs +149 -0
  306. package/dist/builtin/workflows/skills/impeccable/scripts/live/poll-lanes.mjs +14 -0
  307. package/dist/builtin/workflows/skills/impeccable/scripts/live/session-store.mjs +109 -32
  308. package/dist/builtin/workflows/skills/impeccable/scripts/live/source-lock.mjs +105 -0
  309. package/dist/builtin/workflows/skills/impeccable/scripts/live/source-search.mjs +105 -0
  310. package/dist/builtin/workflows/skills/impeccable/scripts/live/sveltekit-adapter.mjs +8 -6
  311. package/dist/builtin/workflows/skills/impeccable/scripts/live/tanstack-adapter.mjs +280 -0
  312. package/dist/builtin/workflows/skills/impeccable/scripts/live-accept.mjs +212 -69
  313. package/dist/builtin/workflows/skills/impeccable/scripts/live-browser-dom.js +5 -1
  314. package/dist/builtin/workflows/skills/impeccable/scripts/live-browser-session.js +7 -1
  315. package/dist/builtin/workflows/skills/impeccable/scripts/live-browser.js +565 -115
  316. package/dist/builtin/workflows/skills/impeccable/scripts/live-commit-manual-edits.mjs +3 -0
  317. package/dist/builtin/workflows/skills/impeccable/scripts/live-inject.mjs +198 -14
  318. package/dist/builtin/workflows/skills/impeccable/scripts/live-insert.mjs +24 -6
  319. package/dist/builtin/workflows/skills/impeccable/scripts/live-manual-edit-evidence.mjs +11 -3
  320. package/dist/builtin/workflows/skills/impeccable/scripts/live-poll.mjs +44 -14
  321. package/dist/builtin/workflows/skills/impeccable/scripts/live-server.mjs +405 -34
  322. package/dist/builtin/workflows/skills/impeccable/scripts/live-status.mjs +9 -5
  323. package/dist/builtin/workflows/skills/impeccable/scripts/live-wrap.mjs +81 -67
  324. package/dist/builtin/workflows/skills/impeccable/scripts/live.mjs +7 -2
  325. package/dist/builtin/workflows/skills/impeccable/scripts/palette.mjs +76 -81
  326. package/dist/builtin/workflows/skills/impeccable/scripts/pin.mjs +4 -4
  327. package/dist/builtin/workflows/skills/impeccable/scripts/serve-question.mjs +890 -0
  328. package/dist/builtin/workflows/skills/impeccable/scripts/surface-brief.mjs +74 -0
  329. package/dist/builtin/workflows/skills/prompt-engineer/SKILL.md +57 -252
  330. package/dist/builtin/workflows/skills/prompt-engineer/references/advanced_patterns.md +70 -226
  331. package/dist/builtin/workflows/skills/prompt-engineer/references/core_prompting.md +64 -103
  332. package/dist/builtin/workflows/skills/prompt-engineer/references/quality_improvement.md +81 -155
  333. package/dist/builtin/workflows/src/authoring/typebox-defaults.d.ts +5 -5
  334. package/dist/builtin/workflows/src/authoring/typebox-defaults.ts +160 -197
  335. package/dist/builtin/workflows/src/authoring/workflow.ts +137 -132
  336. package/dist/builtin/workflows/src/authoring.d.ts +7 -3
  337. package/dist/builtin/workflows/src/durable/backend.ts +512 -385
  338. package/dist/builtin/workflows/src/durable/boundary-lifecycle.ts +172 -0
  339. package/dist/builtin/workflows/src/durable/boundary-topology.ts +475 -0
  340. package/dist/builtin/workflows/src/durable/child-invocation.ts +14 -0
  341. package/dist/builtin/workflows/src/durable/child-primitive.ts +115 -74
  342. package/dist/builtin/workflows/src/durable/completed-catalog-stage-groups.ts +290 -0
  343. package/dist/builtin/workflows/src/durable/completed-catalog.ts +419 -189
  344. package/dist/builtin/workflows/src/durable/completed-inspection.ts +118 -105
  345. package/dist/builtin/workflows/src/durable/completed-subtree.ts +35 -0
  346. package/dist/builtin/workflows/src/durable/dbos-backend.ts +484 -414
  347. package/dist/builtin/workflows/src/durable/dbos-embedded-postgres-root.ts +172 -0
  348. package/dist/builtin/workflows/src/durable/dbos-embedded-postgres.ts +183 -137
  349. package/dist/builtin/workflows/src/durable/dbos-envelope.ts +415 -189
  350. package/dist/builtin/workflows/src/durable/dbos-lifecycle.ts +128 -100
  351. package/dist/builtin/workflows/src/durable/dbos-local-postgres.ts +75 -68
  352. package/dist/builtin/workflows/src/durable/dbos-metadata.ts +138 -101
  353. package/dist/builtin/workflows/src/durable/dbos-prompt-reservations.ts +316 -259
  354. package/dist/builtin/workflows/src/durable/dbos-sdk-handle.ts +138 -117
  355. package/dist/builtin/workflows/src/durable/dbos-status-transition.ts +48 -43
  356. package/dist/builtin/workflows/src/durable/dbos-tombstone.ts +14 -14
  357. package/dist/builtin/workflows/src/durable/durable-hash.ts +9 -11
  358. package/dist/builtin/workflows/src/durable/factory.ts +70 -16
  359. package/dist/builtin/workflows/src/durable/format-version.ts +1 -1
  360. package/dist/builtin/workflows/src/durable/index.ts +69 -68
  361. package/dist/builtin/workflows/src/durable/local-command.ts +50 -37
  362. package/dist/builtin/workflows/src/durable/prompt-reservation-state.ts +156 -149
  363. package/dist/builtin/workflows/src/durable/prompt-reservations.ts +16 -16
  364. package/dist/builtin/workflows/src/durable/resume-catalog.ts +11 -11
  365. package/dist/builtin/workflows/src/durable/resume-eligibility.ts +27 -25
  366. package/dist/builtin/workflows/src/durable/resume-runtime.ts +261 -222
  367. package/dist/builtin/workflows/src/durable/retention-policy.ts +31 -30
  368. package/dist/builtin/workflows/src/durable/run-timing.ts +42 -41
  369. package/dist/builtin/workflows/src/durable/scoped-backend.ts +261 -193
  370. package/dist/builtin/workflows/src/durable/stage-primitive.ts +466 -370
  371. package/dist/builtin/workflows/src/durable/stage-topology-validation.ts +247 -0
  372. package/dist/builtin/workflows/src/durable/stage-topology.ts +53 -0
  373. package/dist/builtin/workflows/src/durable/tool-failure-checkpoint.ts +49 -0
  374. package/dist/builtin/workflows/src/durable/tool-outcome.ts +130 -0
  375. package/dist/builtin/workflows/src/durable/tool-primitive.ts +642 -137
  376. package/dist/builtin/workflows/src/durable/types.ts +243 -132
  377. package/dist/builtin/workflows/src/durable/ui-primitive.ts +243 -164
  378. package/dist/builtin/workflows/src/durable/workflow-child-result.ts +61 -0
  379. package/dist/builtin/workflows/src/durable/workflow-status-transition.ts +16 -15
  380. package/dist/builtin/workflows/src/engine/graph-inference.ts +76 -76
  381. package/dist/builtin/workflows/src/engine/options.ts +35 -35
  382. package/dist/builtin/workflows/src/engine/primitives/chain.ts +27 -22
  383. package/dist/builtin/workflows/src/engine/primitives/exit.ts +1 -1
  384. package/dist/builtin/workflows/src/engine/primitives/parallel.ts +64 -52
  385. package/dist/builtin/workflows/src/engine/primitives/task.ts +110 -95
  386. package/dist/builtin/workflows/src/engine/primitives/ui.ts +46 -50
  387. package/dist/builtin/workflows/src/engine/primitives/workflow.ts +194 -151
  388. package/dist/builtin/workflows/src/engine/replay.ts +6 -6
  389. package/dist/builtin/workflows/src/engine/run-durable-admission.ts +50 -0
  390. package/dist/builtin/workflows/src/engine/run-durable-finalize.ts +64 -37
  391. package/dist/builtin/workflows/src/engine/run-durable-stage-session.ts +30 -24
  392. package/dist/builtin/workflows/src/engine/run-durable-topology.ts +288 -0
  393. package/dist/builtin/workflows/src/engine/run-returned-status.ts +60 -57
  394. package/dist/builtin/workflows/src/engine/run-terminal-event.ts +39 -0
  395. package/dist/builtin/workflows/src/engine/run-terminal-failure.ts +53 -0
  396. package/dist/builtin/workflows/src/engine/run-tool-admission-boundary.ts +99 -0
  397. package/dist/builtin/workflows/src/engine/run-tool-control-registry.ts +179 -0
  398. package/dist/builtin/workflows/src/engine/run-tool-execution-tracker.ts +164 -0
  399. package/dist/builtin/workflows/src/engine/run-tool-node-lifecycle.ts +152 -0
  400. package/dist/builtin/workflows/src/engine/run.ts +680 -477
  401. package/dist/builtin/workflows/src/engine/runtime.ts +160 -140
  402. package/dist/builtin/workflows/src/engine/workflow-activity.ts +7 -3
  403. package/dist/builtin/workflows/src/engine/workflow-tool-abort.ts +92 -0
  404. package/dist/builtin/workflows/src/extension/atomic-stage-session.ts +123 -120
  405. package/dist/builtin/workflows/src/extension/background-ui-adapter.ts +108 -112
  406. package/dist/builtin/workflows/src/extension/companions.ts +116 -116
  407. package/dist/builtin/workflows/src/extension/completed-stage-intercom-ask.ts +123 -111
  408. package/dist/builtin/workflows/src/extension/config-file-loader.ts +153 -148
  409. package/dist/builtin/workflows/src/extension/config-loader.ts +264 -283
  410. package/dist/builtin/workflows/src/extension/discovery-loaders.ts +81 -84
  411. package/dist/builtin/workflows/src/extension/discovery.ts +267 -272
  412. package/dist/builtin/workflows/src/extension/dispatcher.ts +214 -217
  413. package/dist/builtin/workflows/src/extension/extension-factory.ts +103 -93
  414. package/dist/builtin/workflows/src/extension/extension-lifecycle.ts +135 -107
  415. package/dist/builtin/workflows/src/extension/extension-runtime-state.ts +414 -409
  416. package/dist/builtin/workflows/src/extension/hil-answer-notifications.ts +270 -261
  417. package/dist/builtin/workflows/src/extension/index.bundle.mjs +74625 -0
  418. package/dist/builtin/workflows/src/extension/index.ts +37 -37
  419. package/dist/builtin/workflows/src/extension/lifecycle-notification-delivery.ts +64 -64
  420. package/dist/builtin/workflows/src/extension/lifecycle-notifications.ts +386 -369
  421. package/dist/builtin/workflows/src/extension/mcp.ts +35 -35
  422. package/dist/builtin/workflows/src/extension/postmortem-deps.ts +31 -35
  423. package/dist/builtin/workflows/src/extension/public-types.ts +162 -185
  424. package/dist/builtin/workflows/src/extension/render-call.ts +85 -84
  425. package/dist/builtin/workflows/src/extension/render-component.ts +9 -11
  426. package/dist/builtin/workflows/src/extension/render-result.ts +453 -348
  427. package/dist/builtin/workflows/src/extension/renderers.ts +35 -35
  428. package/dist/builtin/workflows/src/extension/runtime-active-block-claim.ts +37 -37
  429. package/dist/builtin/workflows/src/extension/runtime-durable-resume.ts +146 -138
  430. package/dist/builtin/workflows/src/extension/runtime.ts +346 -258
  431. package/dist/builtin/workflows/src/extension/status-writer.ts +95 -95
  432. package/dist/builtin/workflows/src/extension/ui-surface.ts +224 -218
  433. package/dist/builtin/workflows/src/extension/wiring.ts +307 -281
  434. package/dist/builtin/workflows/src/extension/workflow-command-completions.ts +109 -108
  435. package/dist/builtin/workflows/src/extension/workflow-command-registration.ts +257 -224
  436. package/dist/builtin/workflows/src/extension/workflow-command-surfaces.ts +84 -83
  437. package/dist/builtin/workflows/src/extension/workflow-command-utils.ts +126 -132
  438. package/dist/builtin/workflows/src/extension/workflow-durable-resume-command.ts +213 -199
  439. package/dist/builtin/workflows/src/extension/workflow-model-catalog.ts +24 -0
  440. package/dist/builtin/workflows/src/extension/workflow-module-loader.ts +110 -95
  441. package/dist/builtin/workflows/src/extension/workflow-policy.ts +7 -9
  442. package/dist/builtin/workflows/src/extension/workflow-ports.ts +30 -34
  443. package/dist/builtin/workflows/src/extension/workflow-prompts.ts +41 -17
  444. package/dist/builtin/workflows/src/extension/workflow-reload-coordinator.ts +46 -46
  445. package/dist/builtin/workflows/src/extension/workflow-reload-report.ts +28 -25
  446. package/dist/builtin/workflows/src/extension/workflow-resume-picker-rows.ts +48 -45
  447. package/dist/builtin/workflows/src/extension/workflow-resume-shadow.ts +28 -31
  448. package/dist/builtin/workflows/src/extension/workflow-run-control-command.ts +539 -453
  449. package/dist/builtin/workflows/src/extension/workflow-schema.ts +149 -91
  450. package/dist/builtin/workflows/src/extension/workflow-stage-results.ts +182 -194
  451. package/dist/builtin/workflows/src/extension/workflow-status-summary.ts +154 -116
  452. package/dist/builtin/workflows/src/extension/workflow-targets.ts +159 -125
  453. package/dist/builtin/workflows/src/extension/workflow-tool-content.ts +204 -216
  454. package/dist/builtin/workflows/src/extension/workflow-tool-control.ts +520 -294
  455. package/dist/builtin/workflows/src/extension/workflow-tool-inspection.ts +146 -150
  456. package/dist/builtin/workflows/src/extension/workflow-tool-registration.ts +43 -46
  457. package/dist/builtin/workflows/src/extension/workflow-tool-send.ts +354 -206
  458. package/dist/builtin/workflows/src/extension/workflow-tool.ts +123 -117
  459. package/dist/builtin/workflows/src/intercom/intercom-bridge.ts +17 -20
  460. package/dist/builtin/workflows/src/intercom/intercom-routing.ts +62 -62
  461. package/dist/builtin/workflows/src/intercom/result-intercom.ts +123 -123
  462. package/dist/builtin/workflows/src/runs/background/cancellation-registry.ts +72 -59
  463. package/dist/builtin/workflows/src/runs/background/durable-resume-transition.ts +45 -45
  464. package/dist/builtin/workflows/src/runs/background/job-tracker.ts +69 -34
  465. package/dist/builtin/workflows/src/runs/background/quit-tool-node.ts +71 -0
  466. package/dist/builtin/workflows/src/runs/background/quit.ts +359 -138
  467. package/dist/builtin/workflows/src/runs/background/resume-acknowledgements.ts +70 -69
  468. package/dist/builtin/workflows/src/runs/background/run-inspect.ts +85 -74
  469. package/dist/builtin/workflows/src/runs/background/runner.ts +122 -121
  470. package/dist/builtin/workflows/src/runs/background/startup-admission.ts +56 -60
  471. package/dist/builtin/workflows/src/runs/background/status.ts +324 -284
  472. package/dist/builtin/workflows/src/runs/background/workflow-lifecycle-aggregate.ts +24 -26
  473. package/dist/builtin/workflows/src/runs/foreground/executor-abort.ts +311 -309
  474. package/dist/builtin/workflows/src/runs/foreground/executor-child-boundary.ts +229 -199
  475. package/dist/builtin/workflows/src/runs/foreground/executor-child-helpers.ts +56 -51
  476. package/dist/builtin/workflows/src/runs/foreground/executor-continuation.ts +168 -152
  477. package/dist/builtin/workflows/src/runs/foreground/executor-direct-helpers.ts +255 -217
  478. package/dist/builtin/workflows/src/runs/foreground/executor-exit-manager.ts +178 -173
  479. package/dist/builtin/workflows/src/runs/foreground/executor-hil.ts +273 -269
  480. package/dist/builtin/workflows/src/runs/foreground/executor-inputs.ts +59 -56
  481. package/dist/builtin/workflows/src/runs/foreground/executor-lifecycle.ts +375 -351
  482. package/dist/builtin/workflows/src/runs/foreground/executor-outputs.ts +123 -127
  483. package/dist/builtin/workflows/src/runs/foreground/executor-prompt-nodes.ts +360 -295
  484. package/dist/builtin/workflows/src/runs/foreground/executor-queued-user-message.ts +47 -47
  485. package/dist/builtin/workflows/src/runs/foreground/executor-run-finalizers.ts +125 -104
  486. package/dist/builtin/workflows/src/runs/foreground/executor-scheduler.ts +189 -189
  487. package/dist/builtin/workflows/src/runs/foreground/executor-stage-call.ts +294 -242
  488. package/dist/builtin/workflows/src/runs/foreground/executor-stage-context.ts +141 -127
  489. package/dist/builtin/workflows/src/runs/foreground/executor-stage-control.ts +219 -179
  490. package/dist/builtin/workflows/src/runs/foreground/executor-stage-factory.ts +406 -354
  491. package/dist/builtin/workflows/src/runs/foreground/executor-stage-replay.ts +143 -126
  492. package/dist/builtin/workflows/src/runs/foreground/executor-stage-types.ts +50 -47
  493. package/dist/builtin/workflows/src/runs/foreground/executor-task-context.ts +1 -1
  494. package/dist/builtin/workflows/src/runs/foreground/executor-task-prompts.ts +148 -153
  495. package/dist/builtin/workflows/src/runs/foreground/executor-types.ts +157 -110
  496. package/dist/builtin/workflows/src/runs/foreground/executor.ts +10 -10
  497. package/dist/builtin/workflows/src/runs/foreground/postmortem-stage-chat.ts +176 -100
  498. package/dist/builtin/workflows/src/runs/foreground/stage-control-registry.ts +363 -257
  499. package/dist/builtin/workflows/src/runs/foreground/stage-delivery-activity.ts +86 -0
  500. package/dist/builtin/workflows/src/runs/foreground/stage-queued-user-messages.ts +95 -0
  501. package/dist/builtin/workflows/src/runs/foreground/stage-runner-candidate.ts +8 -8
  502. package/dist/builtin/workflows/src/runs/foreground/stage-runner-context.ts +233 -221
  503. package/dist/builtin/workflows/src/runs/foreground/stage-runner-controller.ts +630 -494
  504. package/dist/builtin/workflows/src/runs/foreground/stage-runner-message-admission.ts +182 -181
  505. package/dist/builtin/workflows/src/runs/foreground/stage-runner-messages.ts +80 -80
  506. package/dist/builtin/workflows/src/runs/foreground/stage-runner-options.ts +78 -74
  507. package/dist/builtin/workflows/src/runs/foreground/stage-runner-output.ts +102 -104
  508. package/dist/builtin/workflows/src/runs/foreground/stage-runner-pause.ts +200 -0
  509. package/dist/builtin/workflows/src/runs/foreground/stage-runner-replacement.ts +31 -32
  510. package/dist/builtin/workflows/src/runs/foreground/stage-runner-send-user-message.ts +115 -98
  511. package/dist/builtin/workflows/src/runs/foreground/stage-runner-session-options.ts +29 -42
  512. package/dist/builtin/workflows/src/runs/foreground/stage-runner-session.ts +44 -52
  513. package/dist/builtin/workflows/src/runs/foreground/stage-runner-structured-output.ts +63 -58
  514. package/dist/builtin/workflows/src/runs/foreground/stage-runner-types.ts +161 -124
  515. package/dist/builtin/workflows/src/runs/foreground/stage-runner-unresolved-overflow.ts +27 -23
  516. package/dist/builtin/workflows/src/runs/foreground/stage-runner.ts +10 -10
  517. package/dist/builtin/workflows/src/runs/foreground/stage-tool-execution-buffer.ts +33 -31
  518. package/dist/builtin/workflows/src/runs/shared/concurrency.ts +53 -53
  519. package/dist/builtin/workflows/src/runs/shared/graph-inference.ts +1 -1
  520. package/dist/builtin/workflows/src/runs/shared/model-fallback-candidates.ts +257 -385
  521. package/dist/builtin/workflows/src/runs/shared/model-fallback-failures.ts +378 -363
  522. package/dist/builtin/workflows/src/runs/shared/prompt-callsite.ts +55 -55
  523. package/dist/builtin/workflows/src/runs/shared/validate-inputs.ts +75 -84
  524. package/dist/builtin/workflows/src/runs/shared/worktree-cache-lifecycle.ts +1 -3
  525. package/dist/builtin/workflows/src/runs/shared/worktree-cwd.ts +96 -83
  526. package/dist/builtin/workflows/src/runs/shared/worktree-diff.ts +9 -2
  527. package/dist/builtin/workflows/src/runs/shared/worktree-git-runner.ts +21 -6
  528. package/dist/builtin/workflows/src/runs/shared/worktree-git.ts +60 -30
  529. package/dist/builtin/workflows/src/runs/shared/worktree-post-create.ts +12 -5
  530. package/dist/builtin/workflows/src/runs/shared/worktree-setup.ts +51 -30
  531. package/dist/builtin/workflows/src/runs/shared/worktree.ts +4 -4
  532. package/dist/builtin/workflows/src/sdk-surface.ts +38 -19
  533. package/dist/builtin/workflows/src/shared/authoring-contract-stage.d.ts +17 -16
  534. package/dist/builtin/workflows/src/shared/authoring-contract-stage.ts +299 -280
  535. package/dist/builtin/workflows/src/shared/authoring-contract-ui.d.ts +76 -10
  536. package/dist/builtin/workflows/src/shared/authoring-contract-ui.ts +311 -219
  537. package/dist/builtin/workflows/src/shared/expanded-workflow-graph.ts +255 -156
  538. package/dist/builtin/workflows/src/shared/intercom-group.ts +33 -26
  539. package/dist/builtin/workflows/src/shared/persistence-compaction-policy.ts +30 -30
  540. package/dist/builtin/workflows/src/shared/persistence-restore-helpers.ts +435 -379
  541. package/dist/builtin/workflows/src/shared/persistence-restore.ts +187 -181
  542. package/dist/builtin/workflows/src/shared/persistence-session-entries.ts +211 -207
  543. package/dist/builtin/workflows/src/shared/prompt-callsite-context.ts +3 -3
  544. package/dist/builtin/workflows/src/shared/render-inputs-schema.ts +87 -94
  545. package/dist/builtin/workflows/src/shared/resume-continuation.ts +1 -1
  546. package/dist/builtin/workflows/src/shared/returned-run-status.ts +91 -77
  547. package/dist/builtin/workflows/src/shared/run-visibility.ts +2 -2
  548. package/dist/builtin/workflows/src/shared/schema-introspection.ts +50 -60
  549. package/dist/builtin/workflows/src/shared/serializable.ts +72 -86
  550. package/dist/builtin/workflows/src/shared/session-transcript.ts +44 -39
  551. package/dist/builtin/workflows/src/shared/stage-prompt.ts +183 -202
  552. package/dist/builtin/workflows/src/shared/stage-ui-broker.ts +270 -274
  553. package/dist/builtin/workflows/src/shared/store-factory.ts +9 -7
  554. package/dist/builtin/workflows/src/shared/store-internal.ts +172 -168
  555. package/dist/builtin/workflows/src/shared/store-prompt-methods.ts +196 -200
  556. package/dist/builtin/workflows/src/shared/store-public-types.ts +208 -196
  557. package/dist/builtin/workflows/src/shared/store-run-methods.ts +238 -222
  558. package/dist/builtin/workflows/src/shared/store-stage-methods.ts +284 -283
  559. package/dist/builtin/workflows/src/shared/store-tool-node-methods.ts +53 -0
  560. package/dist/builtin/workflows/src/shared/store-types.ts +269 -235
  561. package/dist/builtin/workflows/src/shared/store.ts +7 -7
  562. package/dist/builtin/workflows/src/shared/timing.ts +36 -34
  563. package/dist/builtin/workflows/src/shared/types.ts +257 -217
  564. package/dist/builtin/workflows/src/shared/workflow-authoring-types.d.ts +11 -4
  565. package/dist/builtin/workflows/src/shared/workflow-authoring-types.ts +81 -58
  566. package/dist/builtin/workflows/src/shared/workflow-failures-classifier.ts +247 -221
  567. package/dist/builtin/workflows/src/shared/workflow-failures-contract.ts +45 -46
  568. package/dist/builtin/workflows/src/shared/workflow-failures-decisions.ts +330 -351
  569. package/dist/builtin/workflows/src/shared/workflow-failures-signals.ts +212 -157
  570. package/dist/builtin/workflows/src/shared/workflow-failures.ts +10 -10
  571. package/dist/builtin/workflows/src/shared/workflow-run-ownership.ts +49 -0
  572. package/dist/builtin/workflows/src/tui/chat-surface-message.ts +157 -184
  573. package/dist/builtin/workflows/src/tui/chat-surface.ts +332 -355
  574. package/dist/builtin/workflows/src/tui/color-utils.ts +21 -30
  575. package/dist/builtin/workflows/src/tui/connectors.ts +57 -61
  576. package/dist/builtin/workflows/src/tui/dispatch-confirm.ts +168 -192
  577. package/dist/builtin/workflows/src/tui/edge.ts +10 -9
  578. package/dist/builtin/workflows/src/tui/graph-canvas.ts +131 -134
  579. package/dist/builtin/workflows/src/tui/graph-theme.ts +139 -148
  580. package/dist/builtin/workflows/src/tui/graph-view-constants.ts +6 -6
  581. package/dist/builtin/workflows/src/tui/graph-view-graph-render.ts +146 -179
  582. package/dist/builtin/workflows/src/tui/graph-view-input.ts +295 -329
  583. package/dist/builtin/workflows/src/tui/graph-view-render-helpers.ts +291 -320
  584. package/dist/builtin/workflows/src/tui/graph-view-render.ts +171 -190
  585. package/dist/builtin/workflows/src/tui/graph-view-state.ts +319 -287
  586. package/dist/builtin/workflows/src/tui/graph-view-types.ts +65 -58
  587. package/dist/builtin/workflows/src/tui/header.ts +140 -156
  588. package/dist/builtin/workflows/src/tui/host-input-form.ts +47 -45
  589. package/dist/builtin/workflows/src/tui/inline-form-card.ts +277 -266
  590. package/dist/builtin/workflows/src/tui/inline-form-editor-text.ts +61 -62
  591. package/dist/builtin/workflows/src/tui/inline-form-editor.ts +407 -412
  592. package/dist/builtin/workflows/src/tui/inline-form-overlay.ts +203 -214
  593. package/dist/builtin/workflows/src/tui/inline-form-store.ts +24 -24
  594. package/dist/builtin/workflows/src/tui/inputs-overlay.ts +116 -129
  595. package/dist/builtin/workflows/src/tui/inputs-picker-editing.ts +111 -115
  596. package/dist/builtin/workflows/src/tui/inputs-picker-input.ts +255 -269
  597. package/dist/builtin/workflows/src/tui/inputs-picker-render.ts +248 -236
  598. package/dist/builtin/workflows/src/tui/inputs-picker-types.ts +111 -140
  599. package/dist/builtin/workflows/src/tui/inputs-picker.ts +12 -12
  600. package/dist/builtin/workflows/src/tui/keybindings-adapter.ts +49 -57
  601. package/dist/builtin/workflows/src/tui/layout.ts +124 -133
  602. package/dist/builtin/workflows/src/tui/mouse-input.ts +45 -47
  603. package/dist/builtin/workflows/src/tui/node-card.ts +230 -218
  604. package/dist/builtin/workflows/src/tui/overlay-adapter.ts +381 -398
  605. package/dist/builtin/workflows/src/tui/overlay-terminal-modes.ts +20 -19
  606. package/dist/builtin/workflows/src/tui/prompt-card-input.ts +183 -194
  607. package/dist/builtin/workflows/src/tui/prompt-card-render.ts +243 -302
  608. package/dist/builtin/workflows/src/tui/prompt-card-select.ts +76 -98
  609. package/dist/builtin/workflows/src/tui/prompt-card-state.ts +40 -40
  610. package/dist/builtin/workflows/src/tui/prompt-card-text.ts +76 -83
  611. package/dist/builtin/workflows/src/tui/prompt-card.ts +3 -3
  612. package/dist/builtin/workflows/src/tui/renderers.ts +6 -6
  613. package/dist/builtin/workflows/src/tui/run-detail.ts +300 -256
  614. package/dist/builtin/workflows/src/tui/session-list.ts +19 -18
  615. package/dist/builtin/workflows/src/tui/session-overlays.ts +82 -87
  616. package/dist/builtin/workflows/src/tui/session-picker.ts +258 -275
  617. package/dist/builtin/workflows/src/tui/stage-chat-composer-drafts.ts +11 -11
  618. package/dist/builtin/workflows/src/tui/stage-chat-layout.ts +55 -62
  619. package/dist/builtin/workflows/src/tui/stage-chat-view-archive-history.ts +220 -263
  620. package/dist/builtin/workflows/src/tui/stage-chat-view-custom-ui.ts +91 -102
  621. package/dist/builtin/workflows/src/tui/stage-chat-view-delivery-activity.ts +113 -0
  622. package/dist/builtin/workflows/src/tui/stage-chat-view-footer-status.ts +154 -208
  623. package/dist/builtin/workflows/src/tui/stage-chat-view-input.ts +174 -208
  624. package/dist/builtin/workflows/src/tui/stage-chat-view-live-events.ts +53 -23
  625. package/dist/builtin/workflows/src/tui/stage-chat-view-pending-tools.ts +2 -4
  626. package/dist/builtin/workflows/src/tui/stage-chat-view-render-helpers.ts +85 -88
  627. package/dist/builtin/workflows/src/tui/stage-chat-view-render-settings.ts +39 -17
  628. package/dist/builtin/workflows/src/tui/stage-chat-view-state.ts +435 -409
  629. package/dist/builtin/workflows/src/tui/stage-chat-view-status.ts +24 -25
  630. package/dist/builtin/workflows/src/tui/stage-chat-view-transcript.ts +181 -197
  631. package/dist/builtin/workflows/src/tui/stage-chat-view-types.ts +125 -128
  632. package/dist/builtin/workflows/src/tui/stage-chat-view.ts +210 -205
  633. package/dist/builtin/workflows/src/tui/status-helpers.ts +65 -69
  634. package/dist/builtin/workflows/src/tui/status-list.ts +316 -294
  635. package/dist/builtin/workflows/src/tui/store-widget-installer.ts +213 -214
  636. package/dist/builtin/workflows/src/tui/submit-pane.ts +114 -130
  637. package/dist/builtin/workflows/src/tui/switcher.ts +120 -128
  638. package/dist/builtin/workflows/src/tui/text-helpers.ts +136 -145
  639. package/dist/builtin/workflows/src/tui/toast.ts +68 -67
  640. package/dist/builtin/workflows/src/tui/widget.ts +265 -285
  641. package/dist/builtin/workflows/src/tui/workflow-attach-pane-handle.ts +12 -17
  642. package/dist/builtin/workflows/src/tui/workflow-attach-pane-types.ts +81 -91
  643. package/dist/builtin/workflows/src/tui/workflow-attach-pane.ts +468 -479
  644. package/dist/builtin/workflows/src/tui/workflow-list.ts +130 -145
  645. package/dist/builtin/workflows/src/tui/workflow-notice-card.ts +127 -144
  646. package/dist/builtin/workflows/src/tui/workflow-resume-selector.ts +217 -217
  647. package/dist/builtin/workflows/src/tui/workflow-status.ts +7 -0
  648. package/dist/builtin/workflows/src/workflows/identity.ts +12 -12
  649. package/dist/builtin/workflows/src/workflows/registry.ts +66 -68
  650. package/dist/bun/cli.js.map +1 -1
  651. package/dist/bun/internal-intercom-broker.d.ts.map +1 -1
  652. package/dist/bun/internal-intercom-broker.js +1 -1
  653. package/dist/bun/internal-intercom-broker.js.map +1 -1
  654. package/dist/bun/register-bedrock.js +1 -1
  655. package/dist/bun/register-bedrock.js.map +1 -1
  656. package/dist/cli/args.d.ts +8 -1
  657. package/dist/cli/args.d.ts.map +1 -1
  658. package/dist/cli/args.js +28 -22
  659. package/dist/cli/args.js.map +1 -1
  660. package/dist/cli/config-selector.d.ts +4 -2
  661. package/dist/cli/config-selector.d.ts.map +1 -1
  662. package/dist/cli/config-selector.js +2 -2
  663. package/dist/cli/config-selector.js.map +1 -1
  664. package/dist/cli/credential-print.d.ts +170 -0
  665. package/dist/cli/credential-print.d.ts.map +1 -0
  666. package/dist/cli/credential-print.js +513 -0
  667. package/dist/cli/credential-print.js.map +1 -0
  668. package/dist/cli/list-models.d.ts +2 -2
  669. package/dist/cli/list-models.d.ts.map +1 -1
  670. package/dist/cli/list-models.js +6 -7
  671. package/dist/cli/list-models.js.map +1 -1
  672. package/dist/cli/project-trust.d.ts +1 -1
  673. package/dist/cli/project-trust.d.ts.map +1 -1
  674. package/dist/cli/project-trust.js.map +1 -1
  675. package/dist/cli/session-picker.d.ts.map +1 -1
  676. package/dist/cli/session-picker.js +2 -1
  677. package/dist/cli/session-picker.js.map +1 -1
  678. package/dist/cli/startup-ui.d.ts +3 -0
  679. package/dist/cli/startup-ui.d.ts.map +1 -1
  680. package/dist/cli/startup-ui.js +58 -2
  681. package/dist/cli/startup-ui.js.map +1 -1
  682. package/dist/cli.js +2 -0
  683. package/dist/cli.js.map +1 -1
  684. package/dist/config-command-parser.d.ts +9 -0
  685. package/dist/config-command-parser.d.ts.map +1 -0
  686. package/dist/config-command-parser.js +22 -0
  687. package/dist/config-command-parser.js.map +1 -0
  688. package/dist/config-self-update.d.ts +6 -2
  689. package/dist/config-self-update.d.ts.map +1 -1
  690. package/dist/config-self-update.js +23 -13
  691. package/dist/config-self-update.js.map +1 -1
  692. package/dist/config.d.ts +5 -3
  693. package/dist/config.d.ts.map +1 -1
  694. package/dist/config.js +36 -14
  695. package/dist/config.js.map +1 -1
  696. package/dist/core/agent-session-accessors.d.ts.map +1 -1
  697. package/dist/core/agent-session-accessors.js +125 -24
  698. package/dist/core/agent-session-accessors.js.map +1 -1
  699. package/dist/core/agent-session-auto-compaction.d.ts +4 -3
  700. package/dist/core/agent-session-auto-compaction.d.ts.map +1 -1
  701. package/dist/core/agent-session-auto-compaction.js +59 -64
  702. package/dist/core/agent-session-auto-compaction.js.map +1 -1
  703. package/dist/core/agent-session-bash.d.ts +10 -7
  704. package/dist/core/agent-session-bash.d.ts.map +1 -1
  705. package/dist/core/agent-session-bash.js +34 -13
  706. package/dist/core/agent-session-bash.js.map +1 -1
  707. package/dist/core/agent-session-compaction.d.ts +11 -1
  708. package/dist/core/agent-session-compaction.d.ts.map +1 -1
  709. package/dist/core/agent-session-compaction.js +138 -27
  710. package/dist/core/agent-session-compaction.js.map +1 -1
  711. package/dist/core/agent-session-custom-message-commit.d.ts +14 -0
  712. package/dist/core/agent-session-custom-message-commit.d.ts.map +1 -0
  713. package/dist/core/agent-session-custom-message-commit.js +145 -0
  714. package/dist/core/agent-session-custom-message-commit.js.map +1 -0
  715. package/dist/core/agent-session-delivery-forwarding.d.ts +9 -0
  716. package/dist/core/agent-session-delivery-forwarding.d.ts.map +1 -0
  717. package/dist/core/agent-session-delivery-forwarding.js +36 -0
  718. package/dist/core/agent-session-delivery-forwarding.js.map +1 -0
  719. package/dist/core/agent-session-events.d.ts +1 -1
  720. package/dist/core/agent-session-events.d.ts.map +1 -1
  721. package/dist/core/agent-session-events.js +58 -19
  722. package/dist/core/agent-session-events.js.map +1 -1
  723. package/dist/core/agent-session-export.d.ts +1 -1
  724. package/dist/core/agent-session-export.d.ts.map +1 -1
  725. package/dist/core/agent-session-export.js +32 -25
  726. package/dist/core/agent-session-export.js.map +1 -1
  727. package/dist/core/agent-session-extension-bindings.d.ts +2 -6
  728. package/dist/core/agent-session-extension-bindings.d.ts.map +1 -1
  729. package/dist/core/agent-session-extension-bindings.js +38 -18
  730. package/dist/core/agent-session-extension-bindings.js.map +1 -1
  731. package/dist/core/agent-session-message-queue.d.ts +7 -4
  732. package/dist/core/agent-session-message-queue.d.ts.map +1 -1
  733. package/dist/core/agent-session-message-queue.js +101 -98
  734. package/dist/core/agent-session-message-queue.js.map +1 -1
  735. package/dist/core/agent-session-methods.d.ts +52 -45
  736. package/dist/core/agent-session-methods.d.ts.map +1 -1
  737. package/dist/core/agent-session-methods.js.map +1 -1
  738. package/dist/core/agent-session-models.d.ts +3 -39
  739. package/dist/core/agent-session-models.d.ts.map +1 -1
  740. package/dist/core/agent-session-models.js +22 -160
  741. package/dist/core/agent-session-models.js.map +1 -1
  742. package/dist/core/agent-session-persistent-custom-messages.d.ts +47 -0
  743. package/dist/core/agent-session-persistent-custom-messages.d.ts.map +1 -0
  744. package/dist/core/agent-session-persistent-custom-messages.js +269 -0
  745. package/dist/core/agent-session-persistent-custom-messages.js.map +1 -0
  746. package/dist/core/agent-session-post-tool-compaction.d.ts +1 -1
  747. package/dist/core/agent-session-post-tool-compaction.d.ts.map +1 -1
  748. package/dist/core/agent-session-post-tool-compaction.js +34 -11
  749. package/dist/core/agent-session-post-tool-compaction.js.map +1 -1
  750. package/dist/core/agent-session-prompt.d.ts +2 -0
  751. package/dist/core/agent-session-prompt.d.ts.map +1 -1
  752. package/dist/core/agent-session-prompt.js +52 -25
  753. package/dist/core/agent-session-prompt.js.map +1 -1
  754. package/dist/core/agent-session-queue-pause.d.ts +10 -0
  755. package/dist/core/agent-session-queue-pause.d.ts.map +1 -0
  756. package/dist/core/agent-session-queue-pause.js +87 -0
  757. package/dist/core/agent-session-queue-pause.js.map +1 -0
  758. package/dist/core/agent-session-retry.d.ts +0 -11
  759. package/dist/core/agent-session-retry.d.ts.map +1 -1
  760. package/dist/core/agent-session-retry.js +44 -63
  761. package/dist/core/agent-session-retry.js.map +1 -1
  762. package/dist/core/agent-session-runtime-auth.d.ts +6 -0
  763. package/dist/core/agent-session-runtime-auth.d.ts.map +1 -0
  764. package/dist/core/agent-session-runtime-auth.js +18 -0
  765. package/dist/core/agent-session-runtime-auth.js.map +1 -0
  766. package/dist/core/agent-session-runtime.d.ts +36 -1
  767. package/dist/core/agent-session-runtime.d.ts.map +1 -1
  768. package/dist/core/agent-session-runtime.js +62 -6
  769. package/dist/core/agent-session-runtime.js.map +1 -1
  770. package/dist/core/agent-session-services.d.ts +4 -9
  771. package/dist/core/agent-session-services.d.ts.map +1 -1
  772. package/dist/core/agent-session-services.js +25 -25
  773. package/dist/core/agent-session-services.js.map +1 -1
  774. package/dist/core/agent-session-state.d.ts +1 -1
  775. package/dist/core/agent-session-state.d.ts.map +1 -1
  776. package/dist/core/agent-session-state.js +3 -0
  777. package/dist/core/agent-session-state.js.map +1 -1
  778. package/dist/core/agent-session-tool-hooks.d.ts.map +1 -1
  779. package/dist/core/agent-session-tool-hooks.js +8 -7
  780. package/dist/core/agent-session-tool-hooks.js.map +1 -1
  781. package/dist/core/agent-session-tool-registry.d.ts.map +1 -1
  782. package/dist/core/agent-session-tool-registry.js +6 -20
  783. package/dist/core/agent-session-tool-registry.js.map +1 -1
  784. package/dist/core/agent-session-transfer.d.ts +4 -0
  785. package/dist/core/agent-session-transfer.d.ts.map +1 -0
  786. package/dist/core/agent-session-transfer.js +67 -0
  787. package/dist/core/agent-session-transfer.js.map +1 -0
  788. package/dist/core/agent-session-tree.d.ts +1 -1
  789. package/dist/core/agent-session-tree.d.ts.map +1 -1
  790. package/dist/core/agent-session-tree.js +13 -3
  791. package/dist/core/agent-session-tree.js.map +1 -1
  792. package/dist/core/agent-session-types.d.ts +28 -14
  793. package/dist/core/agent-session-types.d.ts.map +1 -1
  794. package/dist/core/agent-session-types.js +4 -4
  795. package/dist/core/agent-session-types.js.map +1 -1
  796. package/dist/core/agent-session.d.ts +27 -13
  797. package/dist/core/agent-session.d.ts.map +1 -1
  798. package/dist/core/agent-session.js +17 -12
  799. package/dist/core/agent-session.js.map +1 -1
  800. package/dist/core/anthropic-thinking-guard.d.ts.map +1 -1
  801. package/dist/core/anthropic-thinking-guard.js +4 -2
  802. package/dist/core/anthropic-thinking-guard.js.map +1 -1
  803. package/dist/core/async/format.d.ts +1 -1
  804. package/dist/core/async/format.d.ts.map +1 -1
  805. package/dist/core/async/format.js +3 -1
  806. package/dist/core/async/format.js.map +1 -1
  807. package/dist/core/async/job-manager.d.ts.map +1 -1
  808. package/dist/core/async/job-manager.js +20 -5
  809. package/dist/core/async/job-manager.js.map +1 -1
  810. package/dist/core/async/session-manager.d.ts.map +1 -1
  811. package/dist/core/async/session-manager.js.map +1 -1
  812. package/dist/core/atomic-guide-command.d.ts.map +1 -1
  813. package/dist/core/atomic-guide-command.js +34 -35
  814. package/dist/core/atomic-guide-command.js.map +1 -1
  815. package/dist/core/auth-guidance.d.ts.map +1 -1
  816. package/dist/core/auth-guidance.js.map +1 -1
  817. package/dist/core/auth-storage-backends.d.ts +5 -0
  818. package/dist/core/auth-storage-backends.d.ts.map +1 -1
  819. package/dist/core/auth-storage-backends.js +77 -7
  820. package/dist/core/auth-storage-backends.js.map +1 -1
  821. package/dist/core/auth-storage.d.ts +13 -136
  822. package/dist/core/auth-storage.d.ts.map +1 -1
  823. package/dist/core/auth-storage.js +68 -358
  824. package/dist/core/auth-storage.js.map +1 -1
  825. package/dist/core/bash-executor.d.ts +5 -3
  826. package/dist/core/bash-executor.d.ts.map +1 -1
  827. package/dist/core/bash-executor.js +5 -4
  828. package/dist/core/bash-executor.js.map +1 -1
  829. package/dist/core/builtin-packages.d.ts.map +1 -1
  830. package/dist/core/builtin-packages.js +1 -10
  831. package/dist/core/builtin-packages.js.map +1 -1
  832. package/dist/core/cache-stats.d.ts +25 -0
  833. package/dist/core/cache-stats.d.ts.map +1 -0
  834. package/dist/core/cache-stats.js +70 -0
  835. package/dist/core/cache-stats.js.map +1 -0
  836. package/dist/core/callback-activity.d.ts.map +1 -1
  837. package/dist/core/callback-activity.js.map +1 -1
  838. package/dist/core/codex-errors.d.ts +3 -0
  839. package/dist/core/codex-errors.d.ts.map +1 -0
  840. package/dist/core/codex-errors.js +12 -0
  841. package/dist/core/codex-errors.js.map +1 -0
  842. package/dist/core/codex-fast-mode.d.ts.map +1 -1
  843. package/dist/core/codex-fast-mode.js.map +1 -1
  844. package/dist/core/compaction/branch-summarization.d.ts +15 -5
  845. package/dist/core/compaction/branch-summarization.d.ts.map +1 -1
  846. package/dist/core/compaction/branch-summarization.js +23 -12
  847. package/dist/core/compaction/branch-summarization.js.map +1 -1
  848. package/dist/core/compaction/compaction-boundary.d.ts +18 -1
  849. package/dist/core/compaction/compaction-boundary.d.ts.map +1 -1
  850. package/dist/core/compaction/compaction-boundary.js +12 -8
  851. package/dist/core/compaction/compaction-boundary.js.map +1 -1
  852. package/dist/core/compaction/compaction-runner.d.ts +63 -6
  853. package/dist/core/compaction/compaction-runner.d.ts.map +1 -1
  854. package/dist/core/compaction/compaction-runner.js +244 -17
  855. package/dist/core/compaction/compaction-runner.js.map +1 -1
  856. package/dist/core/compaction/compaction-types.d.ts +53 -2
  857. package/dist/core/compaction/compaction-types.d.ts.map +1 -1
  858. package/dist/core/compaction/compaction-types.js.map +1 -1
  859. package/dist/core/compaction/compaction.d.ts.map +1 -1
  860. package/dist/core/compaction/compaction.js +5 -1
  861. package/dist/core/compaction/compaction.js.map +1 -1
  862. package/dist/core/compaction/deleted-ranges.d.ts.map +1 -1
  863. package/dist/core/compaction/deleted-ranges.js.map +1 -1
  864. package/dist/core/compaction/fallback-planner.d.ts +64 -0
  865. package/dist/core/compaction/fallback-planner.d.ts.map +1 -0
  866. package/dist/core/compaction/fallback-planner.js +75 -0
  867. package/dist/core/compaction/fallback-planner.js.map +1 -0
  868. package/dist/core/compaction/index.d.ts +7 -4
  869. package/dist/core/compaction/index.d.ts.map +1 -1
  870. package/dist/core/compaction/index.js +7 -4
  871. package/dist/core/compaction/index.js.map +1 -1
  872. package/dist/core/compaction/planner-outcome.d.ts +86 -0
  873. package/dist/core/compaction/planner-outcome.d.ts.map +1 -0
  874. package/dist/core/compaction/planner-outcome.js +122 -0
  875. package/dist/core/compaction/planner-outcome.js.map +1 -0
  876. package/dist/core/compaction/range-planner-diagnostics.d.ts +58 -6
  877. package/dist/core/compaction/range-planner-diagnostics.d.ts.map +1 -1
  878. package/dist/core/compaction/range-planner-diagnostics.js +71 -31
  879. package/dist/core/compaction/range-planner-diagnostics.js.map +1 -1
  880. package/dist/core/compaction/range-planner.d.ts +39 -8
  881. package/dist/core/compaction/range-planner.d.ts.map +1 -1
  882. package/dist/core/compaction/range-planner.js +140 -51
  883. package/dist/core/compaction/range-planner.js.map +1 -1
  884. package/dist/core/compaction/region-trimming.d.ts +34 -0
  885. package/dist/core/compaction/region-trimming.d.ts.map +1 -0
  886. package/dist/core/compaction/region-trimming.js +73 -0
  887. package/dist/core/compaction/region-trimming.js.map +1 -0
  888. package/dist/core/compaction/transcript-serialization.d.ts +8 -1
  889. package/dist/core/compaction/transcript-serialization.d.ts.map +1 -1
  890. package/dist/core/compaction/transcript-serialization.js +78 -27
  891. package/dist/core/compaction/transcript-serialization.js.map +1 -1
  892. package/dist/core/context-tool-pairing.d.ts +19 -0
  893. package/dist/core/context-tool-pairing.d.ts.map +1 -0
  894. package/dist/core/context-tool-pairing.js +50 -0
  895. package/dist/core/context-tool-pairing.js.map +1 -0
  896. package/dist/core/copilot-env-routing.d.ts +36 -0
  897. package/dist/core/copilot-env-routing.d.ts.map +1 -0
  898. package/dist/core/copilot-env-routing.js +94 -0
  899. package/dist/core/copilot-env-routing.js.map +1 -0
  900. package/dist/core/diagnostics.d.ts +8 -0
  901. package/dist/core/diagnostics.d.ts.map +1 -1
  902. package/dist/core/diagnostics.js.map +1 -1
  903. package/dist/core/exec.d.ts.map +1 -1
  904. package/dist/core/exec.js +5 -0
  905. package/dist/core/exec.js.map +1 -1
  906. package/dist/core/experimental.d.ts.map +1 -1
  907. package/dist/core/experimental.js +2 -1
  908. package/dist/core/experimental.js.map +1 -1
  909. package/dist/core/extensions/agent-events.d.ts +10 -0
  910. package/dist/core/extensions/agent-events.d.ts.map +1 -1
  911. package/dist/core/extensions/agent-events.js.map +1 -1
  912. package/dist/core/extensions/api-types.d.ts +9 -3
  913. package/dist/core/extensions/api-types.d.ts.map +1 -1
  914. package/dist/core/extensions/api-types.js.map +1 -1
  915. package/dist/core/extensions/context-types.d.ts +10 -1
  916. package/dist/core/extensions/context-types.d.ts.map +1 -1
  917. package/dist/core/extensions/context-types.js.map +1 -1
  918. package/dist/core/extensions/event-types.d.ts +2 -2
  919. package/dist/core/extensions/event-types.d.ts.map +1 -1
  920. package/dist/core/extensions/event-types.js.map +1 -1
  921. package/dist/core/extensions/index.d.ts +7 -5
  922. package/dist/core/extensions/index.d.ts.map +1 -1
  923. package/dist/core/extensions/index.js +2 -2
  924. package/dist/core/extensions/index.js.map +1 -1
  925. package/dist/core/extensions/loader-api.d.ts +1 -1
  926. package/dist/core/extensions/loader-api.d.ts.map +1 -1
  927. package/dist/core/extensions/loader-api.js +63 -29
  928. package/dist/core/extensions/loader-api.js.map +1 -1
  929. package/dist/core/extensions/loader-core.d.ts.map +1 -1
  930. package/dist/core/extensions/loader-core.js +3 -2
  931. package/dist/core/extensions/loader-core.js.map +1 -1
  932. package/dist/core/extensions/loader-discovery.d.ts.map +1 -1
  933. package/dist/core/extensions/loader-discovery.js.map +1 -1
  934. package/dist/core/extensions/loader-resources.d.ts.map +1 -1
  935. package/dist/core/extensions/loader-resources.js.map +1 -1
  936. package/dist/core/extensions/loader-runtime.d.ts +2 -4
  937. package/dist/core/extensions/loader-runtime.d.ts.map +1 -1
  938. package/dist/core/extensions/loader-runtime.js +214 -13
  939. package/dist/core/extensions/loader-runtime.js.map +1 -1
  940. package/dist/core/extensions/loader-virtual-modules.d.ts +17 -0
  941. package/dist/core/extensions/loader-virtual-modules.d.ts.map +1 -1
  942. package/dist/core/extensions/loader-virtual-modules.js +288 -19
  943. package/dist/core/extensions/loader-virtual-modules.js.map +1 -1
  944. package/dist/core/extensions/loader.d.ts.map +1 -1
  945. package/dist/core/extensions/loader.js.map +1 -1
  946. package/dist/core/extensions/message-types.d.ts +12 -4
  947. package/dist/core/extensions/message-types.d.ts.map +1 -1
  948. package/dist/core/extensions/message-types.js.map +1 -1
  949. package/dist/core/extensions/provider-types.d.ts +16 -5
  950. package/dist/core/extensions/provider-types.d.ts.map +1 -1
  951. package/dist/core/extensions/provider-types.js.map +1 -1
  952. package/dist/core/extensions/reactive-widget.d.ts.map +1 -1
  953. package/dist/core/extensions/reactive-widget.js.map +1 -1
  954. package/dist/core/extensions/runner-context.d.ts +29 -1
  955. package/dist/core/extensions/runner-context.d.ts.map +1 -1
  956. package/dist/core/extensions/runner-context.js +56 -0
  957. package/dist/core/extensions/runner-context.js.map +1 -1
  958. package/dist/core/extensions/runner-events.d.ts.map +1 -1
  959. package/dist/core/extensions/runner-events.js.map +1 -1
  960. package/dist/core/extensions/runner-registries.d.ts +2 -1
  961. package/dist/core/extensions/runner-registries.d.ts.map +1 -1
  962. package/dist/core/extensions/runner-registries.js +8 -0
  963. package/dist/core/extensions/runner-registries.js.map +1 -1
  964. package/dist/core/extensions/runner.d.ts +7 -2
  965. package/dist/core/extensions/runner.d.ts.map +1 -1
  966. package/dist/core/extensions/runner.js +65 -23
  967. package/dist/core/extensions/runner.js.map +1 -1
  968. package/dist/core/extensions/runtime-types.d.ts +35 -2
  969. package/dist/core/extensions/runtime-types.d.ts.map +1 -1
  970. package/dist/core/extensions/runtime-types.js.map +1 -1
  971. package/dist/core/extensions/session-events.d.ts.map +1 -1
  972. package/dist/core/extensions/session-events.js.map +1 -1
  973. package/dist/core/extensions/tool-types.d.ts +7 -3
  974. package/dist/core/extensions/tool-types.d.ts.map +1 -1
  975. package/dist/core/extensions/tool-types.js.map +1 -1
  976. package/dist/core/extensions/types.d.ts +15 -2
  977. package/dist/core/extensions/types.d.ts.map +1 -1
  978. package/dist/core/extensions/types.js +1 -1
  979. package/dist/core/extensions/types.js.map +1 -1
  980. package/dist/core/extensions/ui-types.d.ts +34 -6
  981. package/dist/core/extensions/ui-types.d.ts.map +1 -1
  982. package/dist/core/extensions/ui-types.js.map +1 -1
  983. package/dist/core/fallback-models.d.ts +37 -0
  984. package/dist/core/fallback-models.d.ts.map +1 -0
  985. package/dist/core/fallback-models.js +57 -0
  986. package/dist/core/fallback-models.js.map +1 -0
  987. package/dist/core/flattened-tool-arguments.d.ts +4 -7
  988. package/dist/core/flattened-tool-arguments.d.ts.map +1 -1
  989. package/dist/core/flattened-tool-arguments.js +4 -7
  990. package/dist/core/flattened-tool-arguments.js.map +1 -1
  991. package/dist/core/footer-data-provider.d.ts +10 -0
  992. package/dist/core/footer-data-provider.d.ts.map +1 -1
  993. package/dist/core/footer-data-provider.js +5 -3
  994. package/dist/core/footer-data-provider.js.map +1 -1
  995. package/dist/core/http-dispatcher.d.ts +1 -0
  996. package/dist/core/http-dispatcher.d.ts.map +1 -1
  997. package/dist/core/http-dispatcher.js +42 -8
  998. package/dist/core/http-dispatcher.js.map +1 -1
  999. package/dist/core/keybindings.d.ts +7 -2
  1000. package/dist/core/keybindings.d.ts.map +1 -1
  1001. package/dist/core/keybindings.js +3 -1
  1002. package/dist/core/keybindings.js.map +1 -1
  1003. package/dist/core/messages.d.ts +24 -4
  1004. package/dist/core/messages.d.ts.map +1 -1
  1005. package/dist/core/messages.js +64 -13
  1006. package/dist/core/messages.js.map +1 -1
  1007. package/dist/core/model-capabilities.d.ts +18 -0
  1008. package/dist/core/model-capabilities.d.ts.map +1 -0
  1009. package/dist/core/model-capabilities.js +22 -0
  1010. package/dist/core/model-capabilities.js.map +1 -0
  1011. package/dist/core/model-config.d.ts +542 -0
  1012. package/dist/core/model-config.d.ts.map +1 -0
  1013. package/dist/core/{model-registry-schemas.js → model-config.js} +92 -32
  1014. package/dist/core/model-config.js.map +1 -0
  1015. package/dist/core/model-refresh-timeout.d.ts +9 -0
  1016. package/dist/core/model-refresh-timeout.d.ts.map +1 -0
  1017. package/dist/core/model-refresh-timeout.js +9 -0
  1018. package/dist/core/model-refresh-timeout.js.map +1 -0
  1019. package/dist/core/model-registry.d.ts +26 -94
  1020. package/dist/core/model-registry.d.ts.map +1 -1
  1021. package/dist/core/model-registry.js +65 -382
  1022. package/dist/core/model-registry.js.map +1 -1
  1023. package/dist/core/model-resolver-cli.d.ts +2 -2
  1024. package/dist/core/model-resolver-cli.d.ts.map +1 -1
  1025. package/dist/core/model-resolver-cli.js +2 -2
  1026. package/dist/core/model-resolver-cli.js.map +1 -1
  1027. package/dist/core/model-resolver-defaults.d.ts.map +1 -1
  1028. package/dist/core/model-resolver-defaults.js +5 -1
  1029. package/dist/core/model-resolver-defaults.js.map +1 -1
  1030. package/dist/core/model-resolver-initial.d.ts +4 -4
  1031. package/dist/core/model-resolver-initial.d.ts.map +1 -1
  1032. package/dist/core/model-resolver-initial.js +26 -17
  1033. package/dist/core/model-resolver-initial.js.map +1 -1
  1034. package/dist/core/model-resolver-patterns.d.ts.map +1 -1
  1035. package/dist/core/model-resolver-patterns.js +0 -2
  1036. package/dist/core/model-resolver-patterns.js.map +1 -1
  1037. package/dist/core/model-resolver-scope.d.ts +5 -3
  1038. package/dist/core/model-resolver-scope.d.ts.map +1 -1
  1039. package/dist/core/model-resolver-scope.js +32 -8
  1040. package/dist/core/model-resolver-scope.js.map +1 -1
  1041. package/dist/core/model-resolver-types.d.ts +2 -0
  1042. package/dist/core/model-resolver-types.d.ts.map +1 -1
  1043. package/dist/core/model-resolver-types.js.map +1 -1
  1044. package/dist/core/model-resolver.d.ts +3 -3
  1045. package/dist/core/model-resolver.d.ts.map +1 -1
  1046. package/dist/core/model-resolver.js +1 -1
  1047. package/dist/core/model-resolver.js.map +1 -1
  1048. package/dist/core/model-runtime-auth.d.ts +7 -0
  1049. package/dist/core/model-runtime-auth.d.ts.map +1 -0
  1050. package/dist/core/model-runtime-auth.js +17 -0
  1051. package/dist/core/model-runtime-auth.js.map +1 -0
  1052. package/dist/core/model-runtime-providers.d.ts +6 -0
  1053. package/dist/core/model-runtime-providers.d.ts.map +1 -0
  1054. package/dist/core/model-runtime-providers.js +22 -0
  1055. package/dist/core/model-runtime-providers.js.map +1 -0
  1056. package/dist/core/model-runtime-restoration.d.ts +6 -0
  1057. package/dist/core/model-runtime-restoration.d.ts.map +1 -0
  1058. package/dist/core/model-runtime-restoration.js +21 -0
  1059. package/dist/core/model-runtime-restoration.js.map +1 -0
  1060. package/dist/core/model-runtime-snapshot.d.ts +19 -0
  1061. package/dist/core/model-runtime-snapshot.d.ts.map +1 -0
  1062. package/dist/core/model-runtime-snapshot.js +111 -0
  1063. package/dist/core/model-runtime-snapshot.js.map +1 -0
  1064. package/dist/core/model-runtime-streaming.d.ts +17 -0
  1065. package/dist/core/model-runtime-streaming.d.ts.map +1 -0
  1066. package/dist/core/model-runtime-streaming.js +66 -0
  1067. package/dist/core/model-runtime-streaming.js.map +1 -0
  1068. package/dist/core/model-runtime-types.d.ts +21 -0
  1069. package/dist/core/model-runtime-types.d.ts.map +1 -0
  1070. package/dist/core/model-runtime-types.js +2 -0
  1071. package/dist/core/model-runtime-types.js.map +1 -0
  1072. package/dist/core/model-runtime.d.ts +79 -0
  1073. package/dist/core/model-runtime.d.ts.map +1 -0
  1074. package/dist/core/model-runtime.js +417 -0
  1075. package/dist/core/model-runtime.js.map +1 -0
  1076. package/dist/core/models-store.d.ts +2 -10
  1077. package/dist/core/models-store.d.ts.map +1 -1
  1078. package/dist/core/models-store.js +2 -29
  1079. package/dist/core/models-store.js.map +1 -1
  1080. package/dist/core/oauth-login.d.ts +24 -0
  1081. package/dist/core/oauth-login.d.ts.map +1 -0
  1082. package/dist/core/oauth-login.js +92 -0
  1083. package/dist/core/oauth-login.js.map +1 -0
  1084. package/dist/core/oauth-provider-metadata.d.ts +5 -0
  1085. package/dist/core/oauth-provider-metadata.d.ts.map +1 -0
  1086. package/dist/core/oauth-provider-metadata.js +33 -0
  1087. package/dist/core/oauth-provider-metadata.js.map +1 -0
  1088. package/dist/core/openai-responses-payload-sanitizer.js.map +1 -1
  1089. package/dist/core/output-guard.d.ts +44 -0
  1090. package/dist/core/output-guard.d.ts.map +1 -1
  1091. package/dist/core/output-guard.js +63 -0
  1092. package/dist/core/output-guard.js.map +1 -1
  1093. package/dist/core/package-manager-auto-resources.d.ts.map +1 -1
  1094. package/dist/core/package-manager-auto-resources.js +18 -5
  1095. package/dist/core/package-manager-auto-resources.js.map +1 -1
  1096. package/dist/core/package-manager-git.d.ts.map +1 -1
  1097. package/dist/core/package-manager-git.js +27 -11
  1098. package/dist/core/package-manager-git.js.map +1 -1
  1099. package/dist/core/package-manager-npm.d.ts.map +1 -1
  1100. package/dist/core/package-manager-npm.js +4 -2
  1101. package/dist/core/package-manager-npm.js.map +1 -1
  1102. package/dist/core/package-manager-operations.d.ts.map +1 -1
  1103. package/dist/core/package-manager-operations.js +2 -2
  1104. package/dist/core/package-manager-operations.js.map +1 -1
  1105. package/dist/core/package-manager-paths.d.ts.map +1 -1
  1106. package/dist/core/package-manager-paths.js.map +1 -1
  1107. package/dist/core/package-manager-resolver.d.ts.map +1 -1
  1108. package/dist/core/package-manager-resolver.js +71 -26
  1109. package/dist/core/package-manager-resolver.js.map +1 -1
  1110. package/dist/core/package-manager-resource-collector.d.ts.map +1 -1
  1111. package/dist/core/package-manager-resource-collector.js +13 -7
  1112. package/dist/core/package-manager-resource-collector.js.map +1 -1
  1113. package/dist/core/package-manager-resource-files.d.ts.map +1 -1
  1114. package/dist/core/package-manager-resource-files.js +4 -3
  1115. package/dist/core/package-manager-resource-files.js.map +1 -1
  1116. package/dist/core/package-manager-resource-patterns.d.ts +1 -0
  1117. package/dist/core/package-manager-resource-patterns.d.ts.map +1 -1
  1118. package/dist/core/package-manager-resource-patterns.js +15 -0
  1119. package/dist/core/package-manager-resource-patterns.js.map +1 -1
  1120. package/dist/core/package-manager-settings.d.ts.map +1 -1
  1121. package/dist/core/package-manager-settings.js +3 -2
  1122. package/dist/core/package-manager-settings.js.map +1 -1
  1123. package/dist/core/package-manager-source.d.ts.map +1 -1
  1124. package/dist/core/package-manager-source.js +16 -9
  1125. package/dist/core/package-manager-source.js.map +1 -1
  1126. package/dist/core/package-manager-types.d.ts +3 -0
  1127. package/dist/core/package-manager-types.d.ts.map +1 -1
  1128. package/dist/core/package-manager-types.js.map +1 -1
  1129. package/dist/core/package-manager.d.ts +1 -1
  1130. package/dist/core/package-manager.d.ts.map +1 -1
  1131. package/dist/core/package-manager.js +2 -3
  1132. package/dist/core/package-manager.js.map +1 -1
  1133. package/dist/core/prompt-templates-async.d.ts.map +1 -1
  1134. package/dist/core/prompt-templates-async.js +15 -7
  1135. package/dist/core/prompt-templates-async.js.map +1 -1
  1136. package/dist/core/prompt-templates.d.ts +1 -0
  1137. package/dist/core/prompt-templates.d.ts.map +1 -1
  1138. package/dist/core/prompt-templates.js +4 -4
  1139. package/dist/core/prompt-templates.js.map +1 -1
  1140. package/dist/core/provider-composer-internal.d.ts +53 -0
  1141. package/dist/core/provider-composer-internal.d.ts.map +1 -0
  1142. package/dist/core/provider-composer-internal.js +273 -0
  1143. package/dist/core/provider-composer-internal.js.map +1 -0
  1144. package/dist/core/provider-composer.d.ts +16 -0
  1145. package/dist/core/provider-composer.d.ts.map +1 -0
  1146. package/dist/core/provider-composer.js +108 -0
  1147. package/dist/core/provider-composer.js.map +1 -0
  1148. package/dist/core/provider-context-usage.d.ts.map +1 -1
  1149. package/dist/core/provider-context-usage.js +2 -1
  1150. package/dist/core/provider-context-usage.js.map +1 -1
  1151. package/dist/core/provider-display-names.d.ts.map +1 -1
  1152. package/dist/core/provider-display-names.js +4 -0
  1153. package/dist/core/provider-display-names.js.map +1 -1
  1154. package/dist/core/remote-catalog-provider.d.ts +1 -1
  1155. package/dist/core/remote-catalog-provider.d.ts.map +1 -1
  1156. package/dist/core/remote-catalog-provider.js +82 -105
  1157. package/dist/core/remote-catalog-provider.js.map +1 -1
  1158. package/dist/core/resolve-config-value.d.ts +8 -7
  1159. package/dist/core/resolve-config-value.d.ts.map +1 -1
  1160. package/dist/core/resolve-config-value.js +26 -23
  1161. package/dist/core/resolve-config-value.js.map +1 -1
  1162. package/dist/core/resource-loader-assets.d.ts.map +1 -1
  1163. package/dist/core/resource-loader-assets.js +58 -8
  1164. package/dist/core/resource-loader-assets.js.map +1 -1
  1165. package/dist/core/resource-loader-context-files.d.ts +6 -0
  1166. package/dist/core/resource-loader-context-files.d.ts.map +1 -1
  1167. package/dist/core/resource-loader-context-files.js +85 -4
  1168. package/dist/core/resource-loader-context-files.js.map +1 -1
  1169. package/dist/core/resource-loader-core.d.ts +13 -3
  1170. package/dist/core/resource-loader-core.d.ts.map +1 -1
  1171. package/dist/core/resource-loader-core.js +39 -19
  1172. package/dist/core/resource-loader-core.js.map +1 -1
  1173. package/dist/core/resource-loader-discovery.d.ts.map +1 -1
  1174. package/dist/core/resource-loader-discovery.js.map +1 -1
  1175. package/dist/core/resource-loader-extensions.d.ts +1 -0
  1176. package/dist/core/resource-loader-extensions.d.ts.map +1 -1
  1177. package/dist/core/resource-loader-extensions.js +140 -12
  1178. package/dist/core/resource-loader-extensions.js.map +1 -1
  1179. package/dist/core/resource-loader-helpers.d.ts.map +1 -1
  1180. package/dist/core/resource-loader-helpers.js +1 -0
  1181. package/dist/core/resource-loader-helpers.js.map +1 -1
  1182. package/dist/core/resource-loader-internals.d.ts +14 -7
  1183. package/dist/core/resource-loader-internals.d.ts.map +1 -1
  1184. package/dist/core/resource-loader-internals.js.map +1 -1
  1185. package/dist/core/resource-loader-package-resources.d.ts.map +1 -1
  1186. package/dist/core/resource-loader-package-resources.js +15 -2
  1187. package/dist/core/resource-loader-package-resources.js.map +1 -1
  1188. package/dist/core/resource-loader-paths.js.map +1 -1
  1189. package/dist/core/resource-loader-reload.d.ts.map +1 -1
  1190. package/dist/core/resource-loader-reload.js +29 -13
  1191. package/dist/core/resource-loader-reload.js.map +1 -1
  1192. package/dist/core/resource-loader-source-info.d.ts +1 -1
  1193. package/dist/core/resource-loader-source-info.d.ts.map +1 -1
  1194. package/dist/core/resource-loader-source-info.js +7 -4
  1195. package/dist/core/resource-loader-source-info.js.map +1 -1
  1196. package/dist/core/resource-loader-types.d.ts +12 -6
  1197. package/dist/core/resource-loader-types.d.ts.map +1 -1
  1198. package/dist/core/resource-loader-types.js.map +1 -1
  1199. package/dist/core/resource-loader.d.ts +1 -1
  1200. package/dist/core/resource-loader.d.ts.map +1 -1
  1201. package/dist/core/resource-loader.js +1 -1
  1202. package/dist/core/resource-loader.js.map +1 -1
  1203. package/dist/core/runtime-credentials.d.ts +16 -0
  1204. package/dist/core/runtime-credentials.d.ts.map +1 -0
  1205. package/dist/core/runtime-credentials.js +42 -0
  1206. package/dist/core/runtime-credentials.js.map +1 -0
  1207. package/dist/core/sdk-exports.d.ts +2 -2
  1208. package/dist/core/sdk-exports.d.ts.map +1 -1
  1209. package/dist/core/sdk-exports.js +2 -2
  1210. package/dist/core/sdk-exports.js.map +1 -1
  1211. package/dist/core/sdk-types.d.ts +16 -18
  1212. package/dist/core/sdk-types.d.ts.map +1 -1
  1213. package/dist/core/sdk-types.js.map +1 -1
  1214. package/dist/core/sdk.d.ts +2 -1
  1215. package/dist/core/sdk.d.ts.map +1 -1
  1216. package/dist/core/sdk.js +61 -132
  1217. package/dist/core/sdk.js.map +1 -1
  1218. package/dist/core/session-manager-archive.d.ts.map +1 -1
  1219. package/dist/core/session-manager-archive.js +5 -2
  1220. package/dist/core/session-manager-archive.js.map +1 -1
  1221. package/dist/core/session-manager-classification.js +3 -3
  1222. package/dist/core/session-manager-classification.js.map +1 -1
  1223. package/dist/core/session-manager-core.d.ts +5 -4
  1224. package/dist/core/session-manager-core.d.ts.map +1 -1
  1225. package/dist/core/session-manager-core.js +29 -33
  1226. package/dist/core/session-manager-core.js.map +1 -1
  1227. package/dist/core/session-manager-entries.d.ts +5 -8
  1228. package/dist/core/session-manager-entries.d.ts.map +1 -1
  1229. package/dist/core/session-manager-entries.js +4 -9
  1230. package/dist/core/session-manager-entries.js.map +1 -1
  1231. package/dist/core/session-manager-history.d.ts +8 -3
  1232. package/dist/core/session-manager-history.d.ts.map +1 -1
  1233. package/dist/core/session-manager-history.js +90 -27
  1234. package/dist/core/session-manager-history.js.map +1 -1
  1235. package/dist/core/session-manager-list.d.ts.map +1 -1
  1236. package/dist/core/session-manager-list.js +1 -1
  1237. package/dist/core/session-manager-list.js.map +1 -1
  1238. package/dist/core/session-manager-migrations.js.map +1 -1
  1239. package/dist/core/session-manager-storage.d.ts +6 -0
  1240. package/dist/core/session-manager-storage.d.ts.map +1 -1
  1241. package/dist/core/session-manager-storage.js +38 -5
  1242. package/dist/core/session-manager-storage.js.map +1 -1
  1243. package/dist/core/session-manager-types.d.ts +10 -8
  1244. package/dist/core/session-manager-types.d.ts.map +1 -1
  1245. package/dist/core/session-manager-types.js.map +1 -1
  1246. package/dist/core/session-manager-validation.d.ts.map +1 -1
  1247. package/dist/core/session-manager-validation.js +3 -16
  1248. package/dist/core/session-manager-validation.js.map +1 -1
  1249. package/dist/core/session-manager.d.ts +4 -4
  1250. package/dist/core/session-manager.d.ts.map +1 -1
  1251. package/dist/core/session-manager.js +2 -2
  1252. package/dist/core/session-manager.js.map +1 -1
  1253. package/dist/core/settings-manager-basic-accessors.d.ts +7 -4
  1254. package/dist/core/settings-manager-basic-accessors.d.ts.map +1 -1
  1255. package/dist/core/settings-manager-basic-accessors.js +35 -50
  1256. package/dist/core/settings-manager-basic-accessors.js.map +1 -1
  1257. package/dist/core/settings-manager-core.d.ts +2 -4
  1258. package/dist/core/settings-manager-core.d.ts.map +1 -1
  1259. package/dist/core/settings-manager-core.js +5 -51
  1260. package/dist/core/settings-manager-core.js.map +1 -1
  1261. package/dist/core/settings-manager-resource-accessors.d.ts +3 -0
  1262. package/dist/core/settings-manager-resource-accessors.d.ts.map +1 -1
  1263. package/dist/core/settings-manager-resource-accessors.js +16 -0
  1264. package/dist/core/settings-manager-resource-accessors.js.map +1 -1
  1265. package/dist/core/settings-manager-ui-accessors.js +2 -1
  1266. package/dist/core/settings-manager-ui-accessors.js.map +1 -1
  1267. package/dist/core/settings-manager.d.ts +1 -1
  1268. package/dist/core/settings-manager.d.ts.map +1 -1
  1269. package/dist/core/settings-manager.js.map +1 -1
  1270. package/dist/core/settings-storage.d.ts +3 -1
  1271. package/dist/core/settings-storage.d.ts.map +1 -1
  1272. package/dist/core/settings-storage.js +23 -1
  1273. package/dist/core/settings-storage.js.map +1 -1
  1274. package/dist/core/settings-types.d.ts +10 -6
  1275. package/dist/core/settings-types.d.ts.map +1 -1
  1276. package/dist/core/settings-types.js.map +1 -1
  1277. package/dist/core/skills-async.d.ts.map +1 -1
  1278. package/dist/core/skills-async.js +18 -8
  1279. package/dist/core/skills-async.js.map +1 -1
  1280. package/dist/core/slash-commands.d.ts +1 -0
  1281. package/dist/core/slash-commands.d.ts.map +1 -1
  1282. package/dist/core/slash-commands.js +127 -24
  1283. package/dist/core/slash-commands.js.map +1 -1
  1284. package/dist/core/source-info.d.ts +3 -1
  1285. package/dist/core/source-info.d.ts.map +1 -1
  1286. package/dist/core/source-info.js +2 -0
  1287. package/dist/core/source-info.js.map +1 -1
  1288. package/dist/core/summarization-retry.d.ts +11 -0
  1289. package/dist/core/summarization-retry.d.ts.map +1 -0
  1290. package/dist/core/summarization-retry.js +21 -0
  1291. package/dist/core/summarization-retry.js.map +1 -0
  1292. package/dist/core/system-prompt.d.ts.map +1 -1
  1293. package/dist/core/system-prompt.js +15 -18
  1294. package/dist/core/system-prompt.js.map +1 -1
  1295. package/dist/core/thinking-blocks.d.ts.map +1 -1
  1296. package/dist/core/thinking-blocks.js +2 -2
  1297. package/dist/core/thinking-blocks.js.map +1 -1
  1298. package/dist/core/tools/artifact-protocol.d.ts.map +1 -1
  1299. package/dist/core/tools/artifact-protocol.js.map +1 -1
  1300. package/dist/core/tools/artifacts.d.ts.map +1 -1
  1301. package/dist/core/tools/artifacts.js.map +1 -1
  1302. package/dist/core/tools/ask-user-question/ask-user-question.d.ts.map +1 -1
  1303. package/dist/core/tools/ask-user-question/ask-user-question.js +1 -1
  1304. package/dist/core/tools/ask-user-question/ask-user-question.js.map +1 -1
  1305. package/dist/core/tools/ask-user-question/state/build-questionnaire.d.ts +1 -1
  1306. package/dist/core/tools/ask-user-question/state/build-questionnaire.d.ts.map +1 -1
  1307. package/dist/core/tools/ask-user-question/state/build-questionnaire.js +1 -1
  1308. package/dist/core/tools/ask-user-question/state/build-questionnaire.js.map +1 -1
  1309. package/dist/core/tools/ask-user-question/state/questionnaire-session.d.ts.map +1 -1
  1310. package/dist/core/tools/ask-user-question/state/questionnaire-session.js +2 -4
  1311. package/dist/core/tools/ask-user-question/state/questionnaire-session.js.map +1 -1
  1312. package/dist/core/tools/ask-user-question/state/state-reducer.d.ts.map +1 -1
  1313. package/dist/core/tools/ask-user-question/state/state-reducer.js.map +1 -1
  1314. package/dist/core/tools/ask-user-question/view/body-residual-spacer.d.ts.map +1 -1
  1315. package/dist/core/tools/ask-user-question/view/body-residual-spacer.js.map +1 -1
  1316. package/dist/core/tools/ask-user-question/view/components/multi-select-view.d.ts.map +1 -1
  1317. package/dist/core/tools/ask-user-question/view/components/multi-select-view.js.map +1 -1
  1318. package/dist/core/tools/ask-user-question/view/components/preview/markdown-content-cache.d.ts +1 -1
  1319. package/dist/core/tools/ask-user-question/view/components/preview/markdown-content-cache.d.ts.map +1 -1
  1320. package/dist/core/tools/ask-user-question/view/components/preview/markdown-content-cache.js.map +1 -1
  1321. package/dist/core/tools/ask-user-question/view/components/preview/preview-block-renderer.d.ts +1 -1
  1322. package/dist/core/tools/ask-user-question/view/components/preview/preview-block-renderer.d.ts.map +1 -1
  1323. package/dist/core/tools/ask-user-question/view/components/preview/preview-block-renderer.js +1 -3
  1324. package/dist/core/tools/ask-user-question/view/components/preview/preview-block-renderer.js.map +1 -1
  1325. package/dist/core/tools/ask-user-question/view/components/submit-picker.d.ts.map +1 -1
  1326. package/dist/core/tools/ask-user-question/view/components/submit-picker.js.map +1 -1
  1327. package/dist/core/tools/ask-user-question/view/components/tab-bar.d.ts.map +1 -1
  1328. package/dist/core/tools/ask-user-question/view/components/tab-bar.js.map +1 -1
  1329. package/dist/core/tools/ask-user-question/view/dialog-builder.d.ts +1 -1
  1330. package/dist/core/tools/ask-user-question/view/dialog-builder.d.ts.map +1 -1
  1331. package/dist/core/tools/ask-user-question/view/dialog-builder.js +1 -1
  1332. package/dist/core/tools/ask-user-question/view/dialog-builder.js.map +1 -1
  1333. package/dist/core/tools/ask-user-question/view/props-adapter.d.ts.map +1 -1
  1334. package/dist/core/tools/ask-user-question/view/props-adapter.js +2 -4
  1335. package/dist/core/tools/ask-user-question/view/props-adapter.js.map +1 -1
  1336. package/dist/core/tools/ask-user-question/view/tab-content-strategy.d.ts +1 -1
  1337. package/dist/core/tools/ask-user-question/view/tab-content-strategy.d.ts.map +1 -1
  1338. package/dist/core/tools/ask-user-question/view/tab-content-strategy.js +2 -9
  1339. package/dist/core/tools/ask-user-question/view/tab-content-strategy.js.map +1 -1
  1340. package/dist/core/tools/bash-async-execution.d.ts.map +1 -1
  1341. package/dist/core/tools/bash-async-execution.js +11 -4
  1342. package/dist/core/tools/bash-async-execution.js.map +1 -1
  1343. package/dist/core/tools/bash-async-jobs.d.ts.map +1 -1
  1344. package/dist/core/tools/bash-async-jobs.js +14 -2
  1345. package/dist/core/tools/bash-async-jobs.js.map +1 -1
  1346. package/dist/core/tools/bash-async-output.d.ts.map +1 -1
  1347. package/dist/core/tools/bash-async-output.js +6 -2
  1348. package/dist/core/tools/bash-async-output.js.map +1 -1
  1349. package/dist/core/tools/bash-interceptor.d.ts.map +1 -1
  1350. package/dist/core/tools/bash-interceptor.js +20 -4
  1351. package/dist/core/tools/bash-interceptor.js.map +1 -1
  1352. package/dist/core/tools/bash-leading-cd.d.ts.map +1 -1
  1353. package/dist/core/tools/bash-leading-cd.js +9 -3
  1354. package/dist/core/tools/bash-leading-cd.js.map +1 -1
  1355. package/dist/core/tools/bash-pty-native.d.ts.map +1 -1
  1356. package/dist/core/tools/bash-pty-native.js.map +1 -1
  1357. package/dist/core/tools/bash-session-environment.d.ts +13 -0
  1358. package/dist/core/tools/bash-session-environment.d.ts.map +1 -0
  1359. package/dist/core/tools/bash-session-environment.js +47 -0
  1360. package/dist/core/tools/bash-session-environment.js.map +1 -0
  1361. package/dist/core/tools/bash.d.ts +4 -1
  1362. package/dist/core/tools/bash.d.ts.map +1 -1
  1363. package/dist/core/tools/bash.js +134 -30
  1364. package/dist/core/tools/bash.js.map +1 -1
  1365. package/dist/core/tools/block-resolver.d.ts.map +1 -1
  1366. package/dist/core/tools/block-resolver.js.map +1 -1
  1367. package/dist/core/tools/conflict-registry.d.ts.map +1 -1
  1368. package/dist/core/tools/conflict-registry.js.map +1 -1
  1369. package/dist/core/tools/directory-tree.d.ts.map +1 -1
  1370. package/dist/core/tools/directory-tree.js +20 -4
  1371. package/dist/core/tools/directory-tree.js.map +1 -1
  1372. package/dist/core/tools/edit.d.ts.map +1 -1
  1373. package/dist/core/tools/edit.js +37 -13
  1374. package/dist/core/tools/edit.js.map +1 -1
  1375. package/dist/core/tools/fetch-url.d.ts.map +1 -1
  1376. package/dist/core/tools/fetch-url.js +127 -41
  1377. package/dist/core/tools/fetch-url.js.map +1 -1
  1378. package/dist/core/tools/find.d.ts.map +1 -1
  1379. package/dist/core/tools/find.js +176 -46
  1380. package/dist/core/tools/find.js.map +1 -1
  1381. package/dist/core/tools/grep.d.ts.map +1 -1
  1382. package/dist/core/tools/grep.js +43 -10
  1383. package/dist/core/tools/grep.js.map +1 -1
  1384. package/dist/core/tools/hashline-engine/apply.d.ts.map +1 -1
  1385. package/dist/core/tools/hashline-engine/apply.js +6 -6
  1386. package/dist/core/tools/hashline-engine/apply.js.map +1 -1
  1387. package/dist/core/tools/hashline-engine/block.js +1 -1
  1388. package/dist/core/tools/hashline-engine/block.js.map +1 -1
  1389. package/dist/core/tools/hashline-engine/format.d.ts.map +1 -1
  1390. package/dist/core/tools/hashline-engine/format.js +1 -1
  1391. package/dist/core/tools/hashline-engine/format.js.map +1 -1
  1392. package/dist/core/tools/hashline-engine/input.d.ts.map +1 -1
  1393. package/dist/core/tools/hashline-engine/input.js +7 -7
  1394. package/dist/core/tools/hashline-engine/input.js.map +1 -1
  1395. package/dist/core/tools/hashline-engine/parser.js +1 -1
  1396. package/dist/core/tools/hashline-engine/parser.js.map +1 -1
  1397. package/dist/core/tools/hashline-engine/patcher.js +5 -5
  1398. package/dist/core/tools/hashline-engine/patcher.js.map +1 -1
  1399. package/dist/core/tools/hashline-engine/prefixes.js +4 -4
  1400. package/dist/core/tools/hashline-engine/prefixes.js.map +1 -1
  1401. package/dist/core/tools/hashline-engine/recovery.d.ts.map +1 -1
  1402. package/dist/core/tools/hashline-engine/recovery.js +4 -2
  1403. package/dist/core/tools/hashline-engine/recovery.js.map +1 -1
  1404. package/dist/core/tools/hashline-engine/snapshots.js +5 -5
  1405. package/dist/core/tools/hashline-engine/snapshots.js.map +1 -1
  1406. package/dist/core/tools/hashline.d.ts.map +1 -1
  1407. package/dist/core/tools/hashline.js +24 -13
  1408. package/dist/core/tools/hashline.js.map +1 -1
  1409. package/dist/core/tools/index.d.ts +6 -6
  1410. package/dist/core/tools/index.d.ts.map +1 -1
  1411. package/dist/core/tools/index.js +6 -6
  1412. package/dist/core/tools/index.js.map +1 -1
  1413. package/dist/core/tools/ls.d.ts.map +1 -1
  1414. package/dist/core/tools/ls.js +2 -1
  1415. package/dist/core/tools/ls.js.map +1 -1
  1416. package/dist/core/tools/notebook.d.ts.map +1 -1
  1417. package/dist/core/tools/notebook.js +13 -3
  1418. package/dist/core/tools/notebook.js.map +1 -1
  1419. package/dist/core/tools/read-document-extract.d.ts.map +1 -1
  1420. package/dist/core/tools/read-document-extract.js +30 -10
  1421. package/dist/core/tools/read-document-extract.js.map +1 -1
  1422. package/dist/core/tools/read-selectors.d.ts.map +1 -1
  1423. package/dist/core/tools/read-selectors.js +59 -15
  1424. package/dist/core/tools/read-selectors.js.map +1 -1
  1425. package/dist/core/tools/read-url.d.ts.map +1 -1
  1426. package/dist/core/tools/read-url.js +41 -7
  1427. package/dist/core/tools/read-url.js.map +1 -1
  1428. package/dist/core/tools/read.d.ts.map +1 -1
  1429. package/dist/core/tools/read.js +307 -72
  1430. package/dist/core/tools/read.js.map +1 -1
  1431. package/dist/core/tools/resource-selectors.d.ts +4 -0
  1432. package/dist/core/tools/resource-selectors.d.ts.map +1 -1
  1433. package/dist/core/tools/resource-selectors.js +324 -84
  1434. package/dist/core/tools/resource-selectors.js.map +1 -1
  1435. package/dist/core/tools/search-details.d.ts.map +1 -1
  1436. package/dist/core/tools/search-details.js +13 -1
  1437. package/dist/core/tools/search-details.js.map +1 -1
  1438. package/dist/core/tools/search-line-ranges.d.ts.map +1 -1
  1439. package/dist/core/tools/search-line-ranges.js +5 -2
  1440. package/dist/core/tools/search-line-ranges.js.map +1 -1
  1441. package/dist/core/tools/search-native.d.ts.map +1 -1
  1442. package/dist/core/tools/search-native.js.map +1 -1
  1443. package/dist/core/tools/search.d.ts.map +1 -1
  1444. package/dist/core/tools/search.js +244 -90
  1445. package/dist/core/tools/search.js.map +1 -1
  1446. package/dist/core/tools/structured-output.d.ts +1 -1
  1447. package/dist/core/tools/structured-output.d.ts.map +1 -1
  1448. package/dist/core/tools/structured-output.js.map +1 -1
  1449. package/dist/core/tools/todos-execute.d.ts.map +1 -1
  1450. package/dist/core/tools/todos-execute.js +4 -4
  1451. package/dist/core/tools/todos-execute.js.map +1 -1
  1452. package/dist/core/tools/todos-locks.d.ts.map +1 -1
  1453. package/dist/core/tools/todos-locks.js.map +1 -1
  1454. package/dist/core/tools/todos-mutations.js +1 -1
  1455. package/dist/core/tools/todos-mutations.js.map +1 -1
  1456. package/dist/core/tools/todos-paths.js +2 -2
  1457. package/dist/core/tools/todos-paths.js.map +1 -1
  1458. package/dist/core/tools/todos-render.d.ts.map +1 -1
  1459. package/dist/core/tools/todos-render.js +2 -2
  1460. package/dist/core/tools/todos-render.js.map +1 -1
  1461. package/dist/core/tools/todos-storage.d.ts.map +1 -1
  1462. package/dist/core/tools/todos-storage.js +1 -2
  1463. package/dist/core/tools/todos-storage.js.map +1 -1
  1464. package/dist/core/tools/todos-types.d.ts.map +1 -1
  1465. package/dist/core/tools/todos-types.js +1 -11
  1466. package/dist/core/tools/todos-types.js.map +1 -1
  1467. package/dist/core/tools/tool-definition-wrapper.d.ts +3 -0
  1468. package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -1
  1469. package/dist/core/tools/tool-definition-wrapper.js +9 -5
  1470. package/dist/core/tools/tool-definition-wrapper.js.map +1 -1
  1471. package/dist/core/tools/url-ip-guards.d.ts.map +1 -1
  1472. package/dist/core/tools/url-ip-guards.js +27 -17
  1473. package/dist/core/tools/url-ip-guards.js.map +1 -1
  1474. package/dist/core/tools/write.d.ts.map +1 -1
  1475. package/dist/core/tools/write.js +88 -29
  1476. package/dist/core/tools/write.js.map +1 -1
  1477. package/dist/core/usage-totals.d.ts +18 -0
  1478. package/dist/core/usage-totals.d.ts.map +1 -0
  1479. package/dist/core/usage-totals.js +43 -0
  1480. package/dist/core/usage-totals.js.map +1 -0
  1481. package/dist/core/workflow-stage-admission.d.ts.map +1 -1
  1482. package/dist/core/workflow-stage-admission.js +8 -2
  1483. package/dist/core/workflow-stage-admission.js.map +1 -1
  1484. package/dist/extensions/index.d.ts +3 -0
  1485. package/dist/extensions/index.d.ts.map +1 -0
  1486. package/dist/extensions/index.js +5 -0
  1487. package/dist/extensions/index.js.map +1 -0
  1488. package/dist/extensions/llama/client.d.ts +61 -0
  1489. package/dist/extensions/llama/client.d.ts.map +1 -0
  1490. package/dist/extensions/llama/client.js +300 -0
  1491. package/dist/extensions/llama/client.js.map +1 -0
  1492. package/dist/extensions/llama/huggingface-ui.d.ts +33 -0
  1493. package/dist/extensions/llama/huggingface-ui.d.ts.map +1 -0
  1494. package/dist/extensions/llama/huggingface-ui.js +166 -0
  1495. package/dist/extensions/llama/huggingface-ui.js.map +1 -0
  1496. package/dist/extensions/llama/huggingface.d.ts +23 -0
  1497. package/dist/extensions/llama/huggingface.d.ts.map +1 -0
  1498. package/dist/extensions/llama/huggingface.js +139 -0
  1499. package/dist/extensions/llama/huggingface.js.map +1 -0
  1500. package/dist/extensions/llama/index.d.ts +3 -0
  1501. package/dist/extensions/llama/index.d.ts.map +1 -0
  1502. package/dist/extensions/llama/index.js +208 -0
  1503. package/dist/extensions/llama/index.js.map +1 -0
  1504. package/dist/extensions/llama/provider.d.ts +10 -0
  1505. package/dist/extensions/llama/provider.d.ts.map +1 -0
  1506. package/dist/extensions/llama/provider.js +107 -0
  1507. package/dist/extensions/llama/provider.js.map +1 -0
  1508. package/dist/extensions/llama/ui.d.ts +42 -0
  1509. package/dist/extensions/llama/ui.d.ts.map +1 -0
  1510. package/dist/extensions/llama/ui.js +237 -0
  1511. package/dist/extensions/llama/ui.js.map +1 -0
  1512. package/dist/index-extensions.d.ts +2 -2
  1513. package/dist/index-extensions.d.ts.map +1 -1
  1514. package/dist/index-extensions.js +1 -1
  1515. package/dist/index-extensions.js.map +1 -1
  1516. package/dist/index.d.ts +22 -23
  1517. package/dist/index.d.ts.map +1 -1
  1518. package/dist/index.js +26 -27
  1519. package/dist/index.js.map +1 -1
  1520. package/dist/main-app-mode.d.ts +1 -0
  1521. package/dist/main-app-mode.d.ts.map +1 -1
  1522. package/dist/main-app-mode.js +3 -0
  1523. package/dist/main-app-mode.js.map +1 -1
  1524. package/dist/main-deferred-startup.d.ts +1 -1
  1525. package/dist/main-deferred-startup.d.ts.map +1 -1
  1526. package/dist/main-deferred-startup.js +16 -15
  1527. package/dist/main-deferred-startup.js.map +1 -1
  1528. package/dist/main-early-input.js.map +1 -1
  1529. package/dist/main-first-time-setup.d.ts +6 -0
  1530. package/dist/main-first-time-setup.d.ts.map +1 -0
  1531. package/dist/main-first-time-setup.js +10 -0
  1532. package/dist/main-first-time-setup.js.map +1 -0
  1533. package/dist/main-runtime-api-key.d.ts +6 -0
  1534. package/dist/main-runtime-api-key.d.ts.map +1 -0
  1535. package/dist/main-runtime-api-key.js +6 -0
  1536. package/dist/main-runtime-api-key.js.map +1 -0
  1537. package/dist/main-session-options.d.ts +2 -2
  1538. package/dist/main-session-options.d.ts.map +1 -1
  1539. package/dist/main-session-options.js +3 -7
  1540. package/dist/main-session-options.js.map +1 -1
  1541. package/dist/main-session.d.ts.map +1 -1
  1542. package/dist/main-session.js +5 -4
  1543. package/dist/main-session.js.map +1 -1
  1544. package/dist/main-types.d.ts +2 -2
  1545. package/dist/main-types.d.ts.map +1 -1
  1546. package/dist/main-types.js.map +1 -1
  1547. package/dist/main.d.ts +1 -1
  1548. package/dist/main.d.ts.map +1 -1
  1549. package/dist/main.js +173 -69
  1550. package/dist/main.js.map +1 -1
  1551. package/dist/migrations-config-values.d.ts.map +1 -1
  1552. package/dist/migrations-config-values.js +3 -1
  1553. package/dist/migrations-config-values.js.map +1 -1
  1554. package/dist/migrations.d.ts.map +1 -1
  1555. package/dist/migrations.js.map +1 -1
  1556. package/dist/modes/index.d.ts +1 -1
  1557. package/dist/modes/index.d.ts.map +1 -1
  1558. package/dist/modes/index.js.map +1 -1
  1559. package/dist/modes/interactive/chat-input-actions.d.ts +1 -1
  1560. package/dist/modes/interactive/chat-input-actions.d.ts.map +1 -1
  1561. package/dist/modes/interactive/chat-input-actions.js +30 -103
  1562. package/dist/modes/interactive/chat-input-actions.js.map +1 -1
  1563. package/dist/modes/interactive/components/atomic-banner.d.ts +9 -8
  1564. package/dist/modes/interactive/components/atomic-banner.d.ts.map +1 -1
  1565. package/dist/modes/interactive/components/atomic-banner.js +68 -22
  1566. package/dist/modes/interactive/components/atomic-banner.js.map +1 -1
  1567. package/dist/modes/interactive/components/atomic-working-status.d.ts +52 -0
  1568. package/dist/modes/interactive/components/atomic-working-status.d.ts.map +1 -0
  1569. package/dist/modes/interactive/components/atomic-working-status.js +215 -0
  1570. package/dist/modes/interactive/components/atomic-working-status.js.map +1 -0
  1571. package/dist/modes/interactive/components/chat-message-renderer.d.ts +1 -1
  1572. package/dist/modes/interactive/components/chat-message-renderer.d.ts.map +1 -1
  1573. package/dist/modes/interactive/components/chat-message-renderer.js +7 -6
  1574. package/dist/modes/interactive/components/chat-message-renderer.js.map +1 -1
  1575. package/dist/modes/interactive/components/chat-session-host-actions.d.ts +3 -2
  1576. package/dist/modes/interactive/components/chat-session-host-actions.d.ts.map +1 -1
  1577. package/dist/modes/interactive/components/chat-session-host-actions.js +93 -17
  1578. package/dist/modes/interactive/components/chat-session-host-actions.js.map +1 -1
  1579. package/dist/modes/interactive/components/chat-session-host-editor.d.ts +4 -4
  1580. package/dist/modes/interactive/components/chat-session-host-editor.d.ts.map +1 -1
  1581. package/dist/modes/interactive/components/chat-session-host-editor.js +12 -7
  1582. package/dist/modes/interactive/components/chat-session-host-editor.js.map +1 -1
  1583. package/dist/modes/interactive/components/chat-session-host-events.d.ts.map +1 -1
  1584. package/dist/modes/interactive/components/chat-session-host-events.js +84 -15
  1585. package/dist/modes/interactive/components/chat-session-host-events.js.map +1 -1
  1586. package/dist/modes/interactive/components/chat-session-host-rendering.d.ts +1 -1
  1587. package/dist/modes/interactive/components/chat-session-host-rendering.d.ts.map +1 -1
  1588. package/dist/modes/interactive/components/chat-session-host-rendering.js +49 -14
  1589. package/dist/modes/interactive/components/chat-session-host-rendering.js.map +1 -1
  1590. package/dist/modes/interactive/components/chat-session-host-runtime.d.ts +36 -2
  1591. package/dist/modes/interactive/components/chat-session-host-runtime.d.ts.map +1 -1
  1592. package/dist/modes/interactive/components/chat-session-host-runtime.js +129 -25
  1593. package/dist/modes/interactive/components/chat-session-host-runtime.js.map +1 -1
  1594. package/dist/modes/interactive/components/chat-session-host-state.d.ts +11 -2
  1595. package/dist/modes/interactive/components/chat-session-host-state.d.ts.map +1 -1
  1596. package/dist/modes/interactive/components/chat-session-host-state.js +5 -0
  1597. package/dist/modes/interactive/components/chat-session-host-state.js.map +1 -1
  1598. package/dist/modes/interactive/components/chat-session-host-terminal-cleanup.d.ts.map +1 -1
  1599. package/dist/modes/interactive/components/chat-session-host-terminal-cleanup.js.map +1 -1
  1600. package/dist/modes/interactive/components/chat-session-host-types.d.ts +19 -2
  1601. package/dist/modes/interactive/components/chat-session-host-types.d.ts.map +1 -1
  1602. package/dist/modes/interactive/components/chat-session-host-types.js.map +1 -1
  1603. package/dist/modes/interactive/components/chat-session-host-utils.d.ts +1 -1
  1604. package/dist/modes/interactive/components/chat-session-host-utils.d.ts.map +1 -1
  1605. package/dist/modes/interactive/components/chat-session-host-utils.js +3 -8
  1606. package/dist/modes/interactive/components/chat-session-host-utils.js.map +1 -1
  1607. package/dist/modes/interactive/components/chat-session-host.d.ts +17 -4
  1608. package/dist/modes/interactive/components/chat-session-host.d.ts.map +1 -1
  1609. package/dist/modes/interactive/components/chat-session-host.js +26 -3
  1610. package/dist/modes/interactive/components/chat-session-host.js.map +1 -1
  1611. package/dist/modes/interactive/components/chat-transcript.d.ts +1 -1
  1612. package/dist/modes/interactive/components/chat-transcript.d.ts.map +1 -1
  1613. package/dist/modes/interactive/components/chat-transcript.js +5 -12
  1614. package/dist/modes/interactive/components/chat-transcript.js.map +1 -1
  1615. package/dist/modes/interactive/components/compaction-boundary-message.d.ts.map +1 -1
  1616. package/dist/modes/interactive/components/compaction-boundary-message.js +20 -8
  1617. package/dist/modes/interactive/components/compaction-boundary-message.js.map +1 -1
  1618. package/dist/modes/interactive/components/config-selector-list.d.ts +6 -6
  1619. package/dist/modes/interactive/components/config-selector-list.d.ts.map +1 -1
  1620. package/dist/modes/interactive/components/config-selector-list.js +66 -125
  1621. package/dist/modes/interactive/components/config-selector-list.js.map +1 -1
  1622. package/dist/modes/interactive/components/config-selector-project-scope.d.ts +4 -0
  1623. package/dist/modes/interactive/components/config-selector-project-scope.d.ts.map +1 -0
  1624. package/dist/modes/interactive/components/config-selector-project-scope.js +59 -0
  1625. package/dist/modes/interactive/components/config-selector-project-scope.js.map +1 -0
  1626. package/dist/modes/interactive/components/config-selector.d.ts +8 -5
  1627. package/dist/modes/interactive/components/config-selector.d.ts.map +1 -1
  1628. package/dist/modes/interactive/components/config-selector.js +46 -13
  1629. package/dist/modes/interactive/components/config-selector.js.map +1 -1
  1630. package/dist/modes/interactive/components/countdown-timer.d.ts.map +1 -1
  1631. package/dist/modes/interactive/components/countdown-timer.js.map +1 -1
  1632. package/dist/modes/interactive/components/custom-editor.d.ts +11 -0
  1633. package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -1
  1634. package/dist/modes/interactive/components/custom-editor.js +21 -5
  1635. package/dist/modes/interactive/components/custom-editor.js.map +1 -1
  1636. package/dist/modes/interactive/components/custom-entry.d.ts +16 -0
  1637. package/dist/modes/interactive/components/custom-entry.d.ts.map +1 -0
  1638. package/dist/modes/interactive/components/custom-entry.js +45 -0
  1639. package/dist/modes/interactive/components/custom-entry.js.map +1 -0
  1640. package/dist/modes/interactive/components/custom-message.d.ts +3 -1
  1641. package/dist/modes/interactive/components/custom-message.d.ts.map +1 -1
  1642. package/dist/modes/interactive/components/custom-message.js +10 -5
  1643. package/dist/modes/interactive/components/custom-message.js.map +1 -1
  1644. package/dist/modes/interactive/components/diff.js +2 -2
  1645. package/dist/modes/interactive/components/diff.js.map +1 -1
  1646. package/dist/modes/interactive/components/extension-editor.d.ts +3 -2
  1647. package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -1
  1648. package/dist/modes/interactive/components/extension-editor.js +14 -43
  1649. package/dist/modes/interactive/components/extension-editor.js.map +1 -1
  1650. package/dist/modes/interactive/components/first-time-setup.d.ts +24 -0
  1651. package/dist/modes/interactive/components/first-time-setup.d.ts.map +1 -0
  1652. package/dist/modes/interactive/components/first-time-setup.js +80 -0
  1653. package/dist/modes/interactive/components/first-time-setup.js.map +1 -0
  1654. package/dist/modes/interactive/components/footer.d.ts +7 -1
  1655. package/dist/modes/interactive/components/footer.d.ts.map +1 -1
  1656. package/dist/modes/interactive/components/footer.js +68 -39
  1657. package/dist/modes/interactive/components/footer.js.map +1 -1
  1658. package/dist/modes/interactive/components/host-input-form-mount.d.ts.map +1 -1
  1659. package/dist/modes/interactive/components/host-input-form-mount.js +4 -2
  1660. package/dist/modes/interactive/components/host-input-form-mount.js.map +1 -1
  1661. package/dist/modes/interactive/components/host-input-form.d.ts +2 -0
  1662. package/dist/modes/interactive/components/host-input-form.d.ts.map +1 -1
  1663. package/dist/modes/interactive/components/host-input-form.js +61 -24
  1664. package/dist/modes/interactive/components/host-input-form.js.map +1 -1
  1665. package/dist/modes/interactive/components/host-session-picker.d.ts.map +1 -1
  1666. package/dist/modes/interactive/components/host-session-picker.js +8 -3
  1667. package/dist/modes/interactive/components/host-session-picker.js.map +1 -1
  1668. package/dist/modes/interactive/components/idle-status.d.ts +8 -0
  1669. package/dist/modes/interactive/components/idle-status.d.ts.map +1 -0
  1670. package/dist/modes/interactive/components/idle-status.js +13 -0
  1671. package/dist/modes/interactive/components/idle-status.js.map +1 -0
  1672. package/dist/modes/interactive/components/index.d.ts +8 -5
  1673. package/dist/modes/interactive/components/index.d.ts.map +1 -1
  1674. package/dist/modes/interactive/components/index.js +5 -2
  1675. package/dist/modes/interactive/components/index.js.map +1 -1
  1676. package/dist/modes/interactive/components/keybinding-hints.d.ts.map +1 -1
  1677. package/dist/modes/interactive/components/keybinding-hints.js.map +1 -1
  1678. package/dist/modes/interactive/components/login-dialog.d.ts +5 -5
  1679. package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
  1680. package/dist/modes/interactive/components/login-dialog.js +15 -9
  1681. package/dist/modes/interactive/components/login-dialog.js.map +1 -1
  1682. package/dist/modes/interactive/components/model-selector.d.ts +4 -3
  1683. package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
  1684. package/dist/modes/interactive/components/model-selector.js +70 -72
  1685. package/dist/modes/interactive/components/model-selector.js.map +1 -1
  1686. package/dist/modes/interactive/components/oauth-selector.d.ts +4 -3
  1687. package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -1
  1688. package/dist/modes/interactive/components/oauth-selector.js +19 -18
  1689. package/dist/modes/interactive/components/oauth-selector.js.map +1 -1
  1690. package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -1
  1691. package/dist/modes/interactive/components/scoped-models-selector.js +22 -13
  1692. package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -1
  1693. package/dist/modes/interactive/components/session-selector-list.d.ts +1 -1
  1694. package/dist/modes/interactive/components/session-selector-list.d.ts.map +1 -1
  1695. package/dist/modes/interactive/components/session-selector-list.js.map +1 -1
  1696. package/dist/modes/interactive/components/session-selector.d.ts.map +1 -1
  1697. package/dist/modes/interactive/components/session-selector.js.map +1 -1
  1698. package/dist/modes/interactive/components/settings-selector-handlers.d.ts.map +1 -1
  1699. package/dist/modes/interactive/components/settings-selector-handlers.js +6 -0
  1700. package/dist/modes/interactive/components/settings-selector-handlers.js.map +1 -1
  1701. package/dist/modes/interactive/components/settings-selector-items.d.ts.map +1 -1
  1702. package/dist/modes/interactive/components/settings-selector-items.js +14 -0
  1703. package/dist/modes/interactive/components/settings-selector-items.js.map +1 -1
  1704. package/dist/modes/interactive/components/settings-selector-submenus.d.ts.map +1 -1
  1705. package/dist/modes/interactive/components/settings-selector-submenus.js.map +1 -1
  1706. package/dist/modes/interactive/components/settings-selector-types.d.ts +4 -0
  1707. package/dist/modes/interactive/components/settings-selector-types.d.ts.map +1 -1
  1708. package/dist/modes/interactive/components/settings-selector-types.js.map +1 -1
  1709. package/dist/modes/interactive/components/startup-identity.d.ts +22 -0
  1710. package/dist/modes/interactive/components/startup-identity.d.ts.map +1 -0
  1711. package/dist/modes/interactive/components/startup-identity.js +58 -0
  1712. package/dist/modes/interactive/components/startup-identity.js.map +1 -0
  1713. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  1714. package/dist/modes/interactive/components/tool-execution.js.map +1 -1
  1715. package/dist/modes/interactive/components/tree-selector-content.d.ts.map +1 -1
  1716. package/dist/modes/interactive/components/tree-selector-content.js +0 -6
  1717. package/dist/modes/interactive/components/tree-selector-content.js.map +1 -1
  1718. package/dist/modes/interactive/components/tree-selector-model.d.ts.map +1 -1
  1719. package/dist/modes/interactive/components/tree-selector-model.js +1 -10
  1720. package/dist/modes/interactive/components/tree-selector-model.js.map +1 -1
  1721. package/dist/modes/interactive/components/tree-selector-viewport.d.ts.map +1 -1
  1722. package/dist/modes/interactive/components/tree-selector-viewport.js.map +1 -1
  1723. package/dist/modes/interactive/components/working-status.d.ts +5 -11
  1724. package/dist/modes/interactive/components/working-status.d.ts.map +1 -1
  1725. package/dist/modes/interactive/components/working-status.js +14 -15
  1726. package/dist/modes/interactive/components/working-status.js.map +1 -1
  1727. package/dist/modes/interactive/external-editor.d.ts +23 -0
  1728. package/dist/modes/interactive/external-editor.d.ts.map +1 -0
  1729. package/dist/modes/interactive/external-editor.js +120 -0
  1730. package/dist/modes/interactive/external-editor.js.map +1 -0
  1731. package/dist/modes/interactive/interactive-agent-events.js +73 -28
  1732. package/dist/modes/interactive/interactive-agent-events.js.map +1 -1
  1733. package/dist/modes/interactive/interactive-auth-login.js +36 -28
  1734. package/dist/modes/interactive/interactive-auth-login.js.map +1 -1
  1735. package/dist/modes/interactive/interactive-auth-routing.d.ts +4 -1
  1736. package/dist/modes/interactive/interactive-auth-routing.d.ts.map +1 -1
  1737. package/dist/modes/interactive/interactive-auth-routing.js +92 -65
  1738. package/dist/modes/interactive/interactive-auth-routing.js.map +1 -1
  1739. package/dist/modes/interactive/interactive-autocomplete.js +24 -14
  1740. package/dist/modes/interactive/interactive-autocomplete.js.map +1 -1
  1741. package/dist/modes/interactive/interactive-bash-compact.d.ts +2 -1
  1742. package/dist/modes/interactive/interactive-bash-compact.d.ts.map +1 -1
  1743. package/dist/modes/interactive/interactive-bash-compact.js +26 -8
  1744. package/dist/modes/interactive/interactive-bash-compact.js.map +1 -1
  1745. package/dist/modes/interactive/interactive-deferred-startup.d.ts.map +1 -1
  1746. package/dist/modes/interactive/interactive-deferred-startup.js +61 -27
  1747. package/dist/modes/interactive/interactive-deferred-startup.js.map +1 -1
  1748. package/dist/modes/interactive/interactive-editor-actions.js +9 -13
  1749. package/dist/modes/interactive/interactive-editor-actions.js.map +1 -1
  1750. package/dist/modes/interactive/interactive-extension-context.js +4 -4
  1751. package/dist/modes/interactive/interactive-extension-context.js.map +1 -1
  1752. package/dist/modes/interactive/interactive-extension-custom-ui.js +15 -8
  1753. package/dist/modes/interactive/interactive-extension-custom-ui.js.map +1 -1
  1754. package/dist/modes/interactive/interactive-extension-dialogs.js +51 -25
  1755. package/dist/modes/interactive/interactive-extension-dialogs.js.map +1 -1
  1756. package/dist/modes/interactive/interactive-extension-runtime.js +15 -6
  1757. package/dist/modes/interactive/interactive-extension-runtime.js.map +1 -1
  1758. package/dist/modes/interactive/interactive-extension-widgets.js +1 -1
  1759. package/dist/modes/interactive/interactive-extension-widgets.js.map +1 -1
  1760. package/dist/modes/interactive/interactive-global-clear.d.ts +55 -3
  1761. package/dist/modes/interactive/interactive-global-clear.d.ts.map +1 -1
  1762. package/dist/modes/interactive/interactive-global-clear.js +61 -3
  1763. package/dist/modes/interactive/interactive-global-clear.js.map +1 -1
  1764. package/dist/modes/interactive/interactive-hotkeys-debug.js +2 -3
  1765. package/dist/modes/interactive/interactive-hotkeys-debug.js.map +1 -1
  1766. package/dist/modes/interactive/interactive-initial-session-binding.d.ts +4 -0
  1767. package/dist/modes/interactive/interactive-initial-session-binding.d.ts.map +1 -0
  1768. package/dist/modes/interactive/interactive-initial-session-binding.js +23 -0
  1769. package/dist/modes/interactive/interactive-initial-session-binding.js.map +1 -0
  1770. package/dist/modes/interactive/interactive-input-handling.d.ts +2 -1
  1771. package/dist/modes/interactive/interactive-input-handling.d.ts.map +1 -1
  1772. package/dist/modes/interactive/interactive-input-handling.js +82 -69
  1773. package/dist/modes/interactive/interactive-input-handling.js.map +1 -1
  1774. package/dist/modes/interactive/interactive-key-identity.d.ts +22 -0
  1775. package/dist/modes/interactive/interactive-key-identity.d.ts.map +1 -0
  1776. package/dist/modes/interactive/interactive-key-identity.js +29 -0
  1777. package/dist/modes/interactive/interactive-key-identity.js.map +1 -0
  1778. package/dist/modes/interactive/interactive-mode-base.d.ts +18 -13
  1779. package/dist/modes/interactive/interactive-mode-base.d.ts.map +1 -1
  1780. package/dist/modes/interactive/interactive-mode-base.js +26 -18
  1781. package/dist/modes/interactive/interactive-mode-base.js.map +1 -1
  1782. package/dist/modes/interactive/interactive-mode-deps.d.ts +20 -22
  1783. package/dist/modes/interactive/interactive-mode-deps.d.ts.map +1 -1
  1784. package/dist/modes/interactive/interactive-mode-deps.js +16 -18
  1785. package/dist/modes/interactive/interactive-mode-deps.js.map +1 -1
  1786. package/dist/modes/interactive/interactive-mode-helpers.d.ts +3 -2
  1787. package/dist/modes/interactive/interactive-mode-helpers.d.ts.map +1 -1
  1788. package/dist/modes/interactive/interactive-mode-helpers.js +8 -18
  1789. package/dist/modes/interactive/interactive-mode-helpers.js.map +1 -1
  1790. package/dist/modes/interactive/interactive-mode-surface.d.ts +28 -17
  1791. package/dist/modes/interactive/interactive-mode-surface.d.ts.map +1 -1
  1792. package/dist/modes/interactive/interactive-mode-surface.js +1 -0
  1793. package/dist/modes/interactive/interactive-mode-surface.js.map +1 -1
  1794. package/dist/modes/interactive/interactive-mode-types.d.ts +2 -2
  1795. package/dist/modes/interactive/interactive-mode-types.d.ts.map +1 -1
  1796. package/dist/modes/interactive/interactive-mode-types.js.map +1 -1
  1797. package/dist/modes/interactive/interactive-mode.d.ts +1 -0
  1798. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  1799. package/dist/modes/interactive/interactive-mode.js +1 -0
  1800. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  1801. package/dist/modes/interactive/interactive-model-catalog-startup.d.ts +12 -0
  1802. package/dist/modes/interactive/interactive-model-catalog-startup.d.ts.map +1 -0
  1803. package/dist/modes/interactive/interactive-model-catalog-startup.js +22 -0
  1804. package/dist/modes/interactive/interactive-model-catalog-startup.js.map +1 -0
  1805. package/dist/modes/interactive/interactive-model-routing.js +41 -111
  1806. package/dist/modes/interactive/interactive-model-routing.js.map +1 -1
  1807. package/dist/modes/interactive/interactive-onboarding.js +7 -7
  1808. package/dist/modes/interactive/interactive-onboarding.js.map +1 -1
  1809. package/dist/modes/interactive/interactive-pause.d.ts +4 -0
  1810. package/dist/modes/interactive/interactive-pause.d.ts.map +1 -0
  1811. package/dist/modes/interactive/interactive-pause.js +8 -0
  1812. package/dist/modes/interactive/interactive-pause.js.map +1 -0
  1813. package/dist/modes/interactive/interactive-process-lifecycle.js +43 -12
  1814. package/dist/modes/interactive/interactive-process-lifecycle.js.map +1 -1
  1815. package/dist/modes/interactive/interactive-prompt-restore.d.ts +58 -0
  1816. package/dist/modes/interactive/interactive-prompt-restore.d.ts.map +1 -0
  1817. package/dist/modes/interactive/interactive-prompt-restore.js +87 -0
  1818. package/dist/modes/interactive/interactive-prompt-restore.js.map +1 -0
  1819. package/dist/modes/interactive/interactive-prompt-turn.d.ts +2 -0
  1820. package/dist/modes/interactive/interactive-prompt-turn.d.ts.map +1 -0
  1821. package/dist/modes/interactive/interactive-prompt-turn.js +56 -0
  1822. package/dist/modes/interactive/interactive-prompt-turn.js.map +1 -0
  1823. package/dist/modes/interactive/interactive-queueing.js +6 -9
  1824. package/dist/modes/interactive/interactive-queueing.js.map +1 -1
  1825. package/dist/modes/interactive/interactive-render-chat.js +128 -48
  1826. package/dist/modes/interactive/interactive-render-chat.js.map +1 -1
  1827. package/dist/modes/interactive/interactive-resource-disclosure.js +1 -3
  1828. package/dist/modes/interactive/interactive-resource-disclosure.js.map +1 -1
  1829. package/dist/modes/interactive/interactive-resource-paths.js +17 -21
  1830. package/dist/modes/interactive/interactive-resource-paths.js.map +1 -1
  1831. package/dist/modes/interactive/interactive-resource-rendering.js +110 -12
  1832. package/dist/modes/interactive/interactive-resource-rendering.js.map +1 -1
  1833. package/dist/modes/interactive/interactive-selectors.js +13 -5
  1834. package/dist/modes/interactive/interactive-selectors.js.map +1 -1
  1835. package/dist/modes/interactive/interactive-session-routing.js +19 -4
  1836. package/dist/modes/interactive/interactive-session-routing.js.map +1 -1
  1837. package/dist/modes/interactive/interactive-session-runtime.js +12 -1
  1838. package/dist/modes/interactive/interactive-session-runtime.js.map +1 -1
  1839. package/dist/modes/interactive/interactive-slash-commands.js +23 -4
  1840. package/dist/modes/interactive/interactive-slash-commands.js.map +1 -1
  1841. package/dist/modes/interactive/interactive-startup-chat-container.d.ts +20 -0
  1842. package/dist/modes/interactive/interactive-startup-chat-container.d.ts.map +1 -0
  1843. package/dist/modes/interactive/interactive-startup-chat-container.js +26 -0
  1844. package/dist/modes/interactive/interactive-startup-chat-container.js.map +1 -0
  1845. package/dist/modes/interactive/interactive-startup.d.ts +1 -1
  1846. package/dist/modes/interactive/interactive-startup.d.ts.map +1 -1
  1847. package/dist/modes/interactive/interactive-startup.js +37 -37
  1848. package/dist/modes/interactive/interactive-startup.js.map +1 -1
  1849. package/dist/modes/interactive/interactive-submission.d.ts +24 -0
  1850. package/dist/modes/interactive/interactive-submission.d.ts.map +1 -0
  1851. package/dist/modes/interactive/interactive-submission.js +10 -0
  1852. package/dist/modes/interactive/interactive-submission.js.map +1 -0
  1853. package/dist/modes/interactive/interactive-summarization-retry-events.d.ts +8 -0
  1854. package/dist/modes/interactive/interactive-summarization-retry-events.d.ts.map +1 -0
  1855. package/dist/modes/interactive/interactive-summarization-retry-events.js +48 -0
  1856. package/dist/modes/interactive/interactive-summarization-retry-events.js.map +1 -0
  1857. package/dist/modes/interactive/login-provider-options.d.ts +21 -0
  1858. package/dist/modes/interactive/login-provider-options.d.ts.map +1 -0
  1859. package/dist/modes/interactive/login-provider-options.js +50 -0
  1860. package/dist/modes/interactive/login-provider-options.js.map +1 -0
  1861. package/dist/modes/interactive/theme/catppuccin-frappe.json +1 -1
  1862. package/dist/modes/interactive/theme/catppuccin-latte.json +1 -1
  1863. package/dist/modes/interactive/theme/catppuccin-macchiato.json +1 -1
  1864. package/dist/modes/interactive/theme/catppuccin-mocha.json +9 -1
  1865. package/dist/modes/interactive/theme/dark.json +1 -1
  1866. package/dist/modes/interactive/theme/global-theme.d.ts +1 -1
  1867. package/dist/modes/interactive/theme/global-theme.d.ts.map +1 -1
  1868. package/dist/modes/interactive/theme/global-theme.js.map +1 -1
  1869. package/dist/modes/interactive/theme/light.json +1 -1
  1870. package/dist/modes/interactive/theme/theme-class.d.ts +4 -0
  1871. package/dist/modes/interactive/theme/theme-class.d.ts.map +1 -1
  1872. package/dist/modes/interactive/theme/theme-class.js +7 -0
  1873. package/dist/modes/interactive/theme/theme-class.js.map +1 -1
  1874. package/dist/modes/interactive/theme/theme-loading.d.ts.map +1 -1
  1875. package/dist/modes/interactive/theme/theme-loading.js +5 -1
  1876. package/dist/modes/interactive/theme/theme-loading.js.map +1 -1
  1877. package/dist/modes/interactive/theme/theme-schema.d.ts +32 -0
  1878. package/dist/modes/interactive/theme/theme-schema.d.ts.map +1 -1
  1879. package/dist/modes/interactive/theme/theme-schema.js +8 -0
  1880. package/dist/modes/interactive/theme/theme-schema.js.map +1 -1
  1881. package/dist/modes/interactive/theme/theme-schema.json +15 -2
  1882. package/dist/modes/interactive/theme/theme.d.ts +2 -2
  1883. package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  1884. package/dist/modes/interactive/theme/theme.js +2 -2
  1885. package/dist/modes/interactive/theme/theme.js.map +1 -1
  1886. package/dist/modes/interactive/whimsical-messages.d.ts +1 -0
  1887. package/dist/modes/interactive/whimsical-messages.d.ts.map +1 -1
  1888. package/dist/modes/interactive/whimsical-messages.js +2 -2
  1889. package/dist/modes/interactive/whimsical-messages.js.map +1 -1
  1890. package/dist/modes/interactive-engine/activity-watchdog.d.ts +16 -6
  1891. package/dist/modes/interactive-engine/activity-watchdog.d.ts.map +1 -1
  1892. package/dist/modes/interactive-engine/activity-watchdog.js +12 -6
  1893. package/dist/modes/interactive-engine/activity-watchdog.js.map +1 -1
  1894. package/dist/modes/interactive-engine/create-isolated-runtime.d.ts.map +1 -1
  1895. package/dist/modes/interactive-engine/create-isolated-runtime.js +8 -5
  1896. package/dist/modes/interactive-engine/create-isolated-runtime.js.map +1 -1
  1897. package/dist/modes/interactive-engine/engine-args.d.ts.map +1 -1
  1898. package/dist/modes/interactive-engine/engine-args.js +0 -1
  1899. package/dist/modes/interactive-engine/engine-args.js.map +1 -1
  1900. package/dist/modes/interactive-engine/engine-child-liveness.d.ts.map +1 -1
  1901. package/dist/modes/interactive-engine/engine-child-liveness.js +6 -4
  1902. package/dist/modes/interactive-engine/engine-child-liveness.js.map +1 -1
  1903. package/dist/modes/interactive-engine/engine-custom-ui.d.ts +3 -2
  1904. package/dist/modes/interactive-engine/engine-custom-ui.d.ts.map +1 -1
  1905. package/dist/modes/interactive-engine/engine-custom-ui.js +37 -28
  1906. package/dist/modes/interactive-engine/engine-custom-ui.js.map +1 -1
  1907. package/dist/modes/interactive-engine/engine-diagnostic-view.d.ts +16 -0
  1908. package/dist/modes/interactive-engine/engine-diagnostic-view.d.ts.map +1 -0
  1909. package/dist/modes/interactive-engine/engine-diagnostic-view.js +19 -0
  1910. package/dist/modes/interactive-engine/engine-diagnostic-view.js.map +1 -0
  1911. package/dist/modes/interactive-engine/engine-dialog-host.d.ts +33 -0
  1912. package/dist/modes/interactive-engine/engine-dialog-host.d.ts.map +1 -0
  1913. package/dist/modes/interactive-engine/engine-dialog-host.js +129 -0
  1914. package/dist/modes/interactive-engine/engine-dialog-host.js.map +1 -0
  1915. package/dist/modes/interactive-engine/engine-generation.d.ts +29 -0
  1916. package/dist/modes/interactive-engine/engine-generation.d.ts.map +1 -0
  1917. package/dist/modes/interactive-engine/engine-generation.js +11 -0
  1918. package/dist/modes/interactive-engine/engine-generation.js.map +1 -0
  1919. package/dist/modes/interactive-engine/engine-health.d.ts +107 -0
  1920. package/dist/modes/interactive-engine/engine-health.d.ts.map +1 -0
  1921. package/dist/modes/interactive-engine/engine-health.js +250 -0
  1922. package/dist/modes/interactive-engine/engine-health.js.map +1 -0
  1923. package/dist/modes/interactive-engine/engine-input-form.d.ts +1 -1
  1924. package/dist/modes/interactive-engine/engine-input-form.d.ts.map +1 -1
  1925. package/dist/modes/interactive-engine/engine-input-form.js +21 -4
  1926. package/dist/modes/interactive-engine/engine-input-form.js.map +1 -1
  1927. package/dist/modes/interactive-engine/engine-monitor.d.ts +8 -1
  1928. package/dist/modes/interactive-engine/engine-monitor.d.ts.map +1 -1
  1929. package/dist/modes/interactive-engine/engine-monitor.js +19 -16
  1930. package/dist/modes/interactive-engine/engine-monitor.js.map +1 -1
  1931. package/dist/modes/interactive-engine/engine-render-service.d.ts.map +1 -1
  1932. package/dist/modes/interactive-engine/engine-render-service.js +19 -24
  1933. package/dist/modes/interactive-engine/engine-render-service.js.map +1 -1
  1934. package/dist/modes/interactive-engine/engine-session-picker.d.ts.map +1 -1
  1935. package/dist/modes/interactive-engine/engine-session-picker.js +4 -2
  1936. package/dist/modes/interactive-engine/engine-session-picker.js.map +1 -1
  1937. package/dist/modes/interactive-engine/extension-ui-bridge.d.ts +18 -3
  1938. package/dist/modes/interactive-engine/extension-ui-bridge.d.ts.map +1 -1
  1939. package/dist/modes/interactive-engine/extension-ui-bridge.js +41 -45
  1940. package/dist/modes/interactive-engine/extension-ui-bridge.js.map +1 -1
  1941. package/dist/modes/interactive-engine/input-form-host.d.ts +1 -0
  1942. package/dist/modes/interactive-engine/input-form-host.d.ts.map +1 -1
  1943. package/dist/modes/interactive-engine/input-form-host.js +18 -3
  1944. package/dist/modes/interactive-engine/input-form-host.js.map +1 -1
  1945. package/dist/modes/interactive-engine/isolated-auth.d.ts +10 -0
  1946. package/dist/modes/interactive-engine/isolated-auth.d.ts.map +1 -0
  1947. package/dist/modes/interactive-engine/isolated-auth.js +15 -0
  1948. package/dist/modes/interactive-engine/isolated-auth.js.map +1 -0
  1949. package/dist/modes/interactive-engine/isolated-runtime.d.ts +44 -11
  1950. package/dist/modes/interactive-engine/isolated-runtime.d.ts.map +1 -1
  1951. package/dist/modes/interactive-engine/isolated-runtime.js +173 -106
  1952. package/dist/modes/interactive-engine/isolated-runtime.js.map +1 -1
  1953. package/dist/modes/interactive-engine/protocol.d.ts +26 -2
  1954. package/dist/modes/interactive-engine/protocol.d.ts.map +1 -1
  1955. package/dist/modes/interactive-engine/protocol.js +192 -63
  1956. package/dist/modes/interactive-engine/protocol.js.map +1 -1
  1957. package/dist/modes/interactive-engine/remote-component.d.ts +38 -0
  1958. package/dist/modes/interactive-engine/remote-component.d.ts.map +1 -1
  1959. package/dist/modes/interactive-engine/remote-component.js +111 -22
  1960. package/dist/modes/interactive-engine/remote-component.js.map +1 -1
  1961. package/dist/modes/interactive-engine/remote-input-ownership.d.ts +48 -0
  1962. package/dist/modes/interactive-engine/remote-input-ownership.d.ts.map +1 -0
  1963. package/dist/modes/interactive-engine/remote-input-ownership.js +42 -0
  1964. package/dist/modes/interactive-engine/remote-input-ownership.js.map +1 -0
  1965. package/dist/modes/interactive-engine/remote-model-catalog.d.ts +17 -0
  1966. package/dist/modes/interactive-engine/remote-model-catalog.d.ts.map +1 -0
  1967. package/dist/modes/interactive-engine/remote-model-catalog.js +80 -0
  1968. package/dist/modes/interactive-engine/remote-model-catalog.js.map +1 -0
  1969. package/dist/modes/interactive-engine/remote-queue-pause.d.ts +13 -0
  1970. package/dist/modes/interactive-engine/remote-queue-pause.d.ts.map +1 -0
  1971. package/dist/modes/interactive-engine/remote-queue-pause.js +38 -0
  1972. package/dist/modes/interactive-engine/remote-queue-pause.js.map +1 -0
  1973. package/dist/modes/interactive-engine/remote-renderer.d.ts +3 -1
  1974. package/dist/modes/interactive-engine/remote-renderer.d.ts.map +1 -1
  1975. package/dist/modes/interactive-engine/remote-renderer.js +41 -10
  1976. package/dist/modes/interactive-engine/remote-renderer.js.map +1 -1
  1977. package/dist/modes/interactive-engine/session-picker-host.d.ts +1 -0
  1978. package/dist/modes/interactive-engine/session-picker-host.d.ts.map +1 -1
  1979. package/dist/modes/interactive-engine/session-picker-host.js +4 -0
  1980. package/dist/modes/interactive-engine/session-picker-host.js.map +1 -1
  1981. package/dist/modes/print-mode.d.ts.map +1 -1
  1982. package/dist/modes/print-mode.js +5 -0
  1983. package/dist/modes/print-mode.js.map +1 -1
  1984. package/dist/modes/rpc/jsonl.d.ts +9 -7
  1985. package/dist/modes/rpc/jsonl.d.ts.map +1 -1
  1986. package/dist/modes/rpc/jsonl.js +23 -24
  1987. package/dist/modes/rpc/jsonl.js.map +1 -1
  1988. package/dist/modes/rpc/queued-writer.d.ts +33 -0
  1989. package/dist/modes/rpc/queued-writer.d.ts.map +1 -0
  1990. package/dist/modes/rpc/queued-writer.js +104 -0
  1991. package/dist/modes/rpc/queued-writer.js.map +1 -0
  1992. package/dist/modes/rpc/rpc-bash-request-owners.d.ts +24 -0
  1993. package/dist/modes/rpc/rpc-bash-request-owners.d.ts.map +1 -0
  1994. package/dist/modes/rpc/rpc-bash-request-owners.js +45 -0
  1995. package/dist/modes/rpc/rpc-bash-request-owners.js.map +1 -0
  1996. package/dist/modes/rpc/rpc-client-api.d.ts +17 -4
  1997. package/dist/modes/rpc/rpc-client-api.d.ts.map +1 -1
  1998. package/dist/modes/rpc/rpc-client-api.js +92 -25
  1999. package/dist/modes/rpc/rpc-client-api.js.map +1 -1
  2000. package/dist/modes/rpc/rpc-client-process.d.ts +11 -4
  2001. package/dist/modes/rpc/rpc-client-process.d.ts.map +1 -1
  2002. package/dist/modes/rpc/rpc-client-process.js +77 -29
  2003. package/dist/modes/rpc/rpc-client-process.js.map +1 -1
  2004. package/dist/modes/rpc/rpc-client-waits.d.ts +17 -1
  2005. package/dist/modes/rpc/rpc-client-waits.d.ts.map +1 -1
  2006. package/dist/modes/rpc/rpc-client-waits.js +25 -0
  2007. package/dist/modes/rpc/rpc-client-waits.js.map +1 -1
  2008. package/dist/modes/rpc/rpc-client.d.ts +68 -9
  2009. package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
  2010. package/dist/modes/rpc/rpc-client.js +205 -158
  2011. package/dist/modes/rpc/rpc-client.js.map +1 -1
  2012. package/dist/modes/rpc/rpc-command-handler.d.ts +10 -3
  2013. package/dist/modes/rpc/rpc-command-handler.d.ts.map +1 -1
  2014. package/dist/modes/rpc/rpc-command-handler.js +165 -43
  2015. package/dist/modes/rpc/rpc-command-handler.js.map +1 -1
  2016. package/dist/modes/rpc/rpc-command-timeouts.d.ts +30 -0
  2017. package/dist/modes/rpc/rpc-command-timeouts.d.ts.map +1 -0
  2018. package/dist/modes/rpc/rpc-command-timeouts.js +52 -0
  2019. package/dist/modes/rpc/rpc-command-timeouts.js.map +1 -0
  2020. package/dist/modes/rpc/rpc-event-buffer.d.ts.map +1 -1
  2021. package/dist/modes/rpc/rpc-event-buffer.js +3 -1
  2022. package/dist/modes/rpc/rpc-event-buffer.js.map +1 -1
  2023. package/dist/modes/rpc/rpc-extension-ui.d.ts +4 -2
  2024. package/dist/modes/rpc/rpc-extension-ui.d.ts.map +1 -1
  2025. package/dist/modes/rpc/rpc-extension-ui.js +50 -17
  2026. package/dist/modes/rpc/rpc-extension-ui.js.map +1 -1
  2027. package/dist/modes/rpc/rpc-generation-buffer.d.ts +21 -0
  2028. package/dist/modes/rpc/rpc-generation-buffer.d.ts.map +1 -0
  2029. package/dist/modes/rpc/rpc-generation-buffer.js +35 -0
  2030. package/dist/modes/rpc/rpc-generation-buffer.js.map +1 -0
  2031. package/dist/modes/rpc/rpc-input-scheduler.d.ts +3 -3
  2032. package/dist/modes/rpc/rpc-input-scheduler.d.ts.map +1 -1
  2033. package/dist/modes/rpc/rpc-input-scheduler.js +19 -8
  2034. package/dist/modes/rpc/rpc-input-scheduler.js.map +1 -1
  2035. package/dist/modes/rpc/rpc-input.d.ts +7 -1
  2036. package/dist/modes/rpc/rpc-input.d.ts.map +1 -1
  2037. package/dist/modes/rpc/rpc-input.js +14 -4
  2038. package/dist/modes/rpc/rpc-input.js.map +1 -1
  2039. package/dist/modes/rpc/rpc-keybindings-reload.d.ts.map +1 -1
  2040. package/dist/modes/rpc/rpc-keybindings-reload.js.map +1 -1
  2041. package/dist/modes/rpc/rpc-mode.d.ts +1 -1
  2042. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  2043. package/dist/modes/rpc/rpc-mode.js +23 -23
  2044. package/dist/modes/rpc/rpc-mode.js.map +1 -1
  2045. package/dist/modes/rpc/rpc-model-fallback-prompt.d.ts +4 -0
  2046. package/dist/modes/rpc/rpc-model-fallback-prompt.d.ts.map +1 -0
  2047. package/dist/modes/rpc/rpc-model-fallback-prompt.js +11 -0
  2048. package/dist/modes/rpc/rpc-model-fallback-prompt.js.map +1 -0
  2049. package/dist/modes/rpc/rpc-oauth-client.d.ts +21 -0
  2050. package/dist/modes/rpc/rpc-oauth-client.d.ts.map +1 -0
  2051. package/dist/modes/rpc/rpc-oauth-client.js +81 -0
  2052. package/dist/modes/rpc/rpc-oauth-client.js.map +1 -0
  2053. package/dist/modes/rpc/rpc-oauth-interaction.d.ts +9 -0
  2054. package/dist/modes/rpc/rpc-oauth-interaction.d.ts.map +1 -0
  2055. package/dist/modes/rpc/rpc-oauth-interaction.js +49 -0
  2056. package/dist/modes/rpc/rpc-oauth-interaction.js.map +1 -0
  2057. package/dist/modes/rpc/rpc-output-buffer.d.ts +2 -1
  2058. package/dist/modes/rpc/rpc-output-buffer.d.ts.map +1 -1
  2059. package/dist/modes/rpc/rpc-output-buffer.js +7 -40
  2060. package/dist/modes/rpc/rpc-output-buffer.js.map +1 -1
  2061. package/dist/modes/rpc/rpc-pending-requests.d.ts +37 -0
  2062. package/dist/modes/rpc/rpc-pending-requests.d.ts.map +1 -0
  2063. package/dist/modes/rpc/rpc-pending-requests.js +57 -0
  2064. package/dist/modes/rpc/rpc-pending-requests.js.map +1 -0
  2065. package/dist/modes/rpc/rpc-provider-auth.d.ts +22 -0
  2066. package/dist/modes/rpc/rpc-provider-auth.d.ts.map +1 -0
  2067. package/dist/modes/rpc/rpc-provider-auth.js +117 -0
  2068. package/dist/modes/rpc/rpc-provider-auth.js.map +1 -0
  2069. package/dist/modes/rpc/rpc-responses.d.ts +0 -1
  2070. package/dist/modes/rpc/rpc-responses.d.ts.map +1 -1
  2071. package/dist/modes/rpc/rpc-responses.js +0 -14
  2072. package/dist/modes/rpc/rpc-responses.js.map +1 -1
  2073. package/dist/modes/rpc/rpc-session-binding.d.ts +2 -1
  2074. package/dist/modes/rpc/rpc-session-binding.d.ts.map +1 -1
  2075. package/dist/modes/rpc/rpc-session-binding.js +71 -43
  2076. package/dist/modes/rpc/rpc-session-binding.js.map +1 -1
  2077. package/dist/modes/rpc/rpc-terminal-drain.d.ts +52 -0
  2078. package/dist/modes/rpc/rpc-terminal-drain.d.ts.map +1 -0
  2079. package/dist/modes/rpc/rpc-terminal-drain.js +85 -0
  2080. package/dist/modes/rpc/rpc-terminal-drain.js.map +1 -0
  2081. package/dist/modes/rpc/rpc-transport-error.d.ts +49 -0
  2082. package/dist/modes/rpc/rpc-transport-error.d.ts.map +1 -0
  2083. package/dist/modes/rpc/rpc-transport-error.js +78 -0
  2084. package/dist/modes/rpc/rpc-transport-error.js.map +1 -0
  2085. package/dist/modes/rpc/rpc-types.d.ts +188 -25
  2086. package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
  2087. package/dist/modes/rpc/rpc-types.js.map +1 -1
  2088. package/dist/package-manager-cli-parser.js.map +1 -1
  2089. package/dist/package-manager-cli.d.ts +3 -3
  2090. package/dist/package-manager-cli.d.ts.map +1 -1
  2091. package/dist/package-manager-cli.js +66 -53
  2092. package/dist/package-manager-cli.js.map +1 -1
  2093. package/dist/rpc-entry.js +6 -2
  2094. package/dist/rpc-entry.js.map +1 -1
  2095. package/dist/self-update-plan.d.ts +12 -0
  2096. package/dist/self-update-plan.d.ts.map +1 -0
  2097. package/dist/self-update-plan.js +42 -0
  2098. package/dist/self-update-plan.js.map +1 -0
  2099. package/dist/utils/child-process.d.ts.map +1 -1
  2100. package/dist/utils/child-process.js.map +1 -1
  2101. package/dist/utils/clipboard-image.js +1 -1
  2102. package/dist/utils/clipboard-image.js.map +1 -1
  2103. package/dist/utils/clipboard-native.d.ts +1 -0
  2104. package/dist/utils/clipboard-native.d.ts.map +1 -1
  2105. package/dist/utils/clipboard-native.js.map +1 -1
  2106. package/dist/utils/clipboard.d.ts +3 -0
  2107. package/dist/utils/clipboard.d.ts.map +1 -1
  2108. package/dist/utils/clipboard.js +31 -8
  2109. package/dist/utils/clipboard.js.map +1 -1
  2110. package/dist/utils/compile-cache.d.ts +8 -0
  2111. package/dist/utils/compile-cache.d.ts.map +1 -0
  2112. package/dist/utils/compile-cache.js +31 -0
  2113. package/dist/utils/compile-cache.js.map +1 -0
  2114. package/dist/utils/fs-watch.d.ts.map +1 -1
  2115. package/dist/utils/fs-watch.js +1 -3
  2116. package/dist/utils/fs-watch.js.map +1 -1
  2117. package/dist/utils/git.js +1 -1
  2118. package/dist/utils/git.js.map +1 -1
  2119. package/dist/utils/interactive-engine-bootstrap.d.ts +67 -0
  2120. package/dist/utils/interactive-engine-bootstrap.d.ts.map +1 -0
  2121. package/dist/utils/interactive-engine-bootstrap.js +117 -0
  2122. package/dist/utils/interactive-engine-bootstrap.js.map +1 -0
  2123. package/dist/utils/interactive-engine-env.d.ts +41 -0
  2124. package/dist/utils/interactive-engine-env.d.ts.map +1 -0
  2125. package/dist/utils/interactive-engine-env.js +67 -0
  2126. package/dist/utils/interactive-engine-env.js.map +1 -0
  2127. package/dist/utils/markit.d.ts.map +1 -1
  2128. package/dist/utils/markit.js +15 -5
  2129. package/dist/utils/markit.js.map +1 -1
  2130. package/dist/utils/shell.js +2 -2
  2131. package/dist/utils/shell.js.map +1 -1
  2132. package/dist/utils/split-launcher.d.ts.map +1 -1
  2133. package/dist/utils/split-launcher.js +1 -2
  2134. package/dist/utils/split-launcher.js.map +1 -1
  2135. package/dist/utils/tools-manager.d.ts.map +1 -1
  2136. package/dist/utils/tools-manager.js +8 -34
  2137. package/dist/utils/tools-manager.js.map +1 -1
  2138. package/dist/utils/version-check.d.ts +1 -0
  2139. package/dist/utils/version-check.d.ts.map +1 -1
  2140. package/dist/utils/version-check.js +7 -5
  2141. package/dist/utils/version-check.js.map +1 -1
  2142. package/docs/changelog.mdx +24 -2
  2143. package/docs/compaction.md +101 -18
  2144. package/docs/custom-provider.md +40 -8
  2145. package/docs/development.md +14 -15
  2146. package/docs/docs.json +12 -2
  2147. package/docs/environment-variables.md +37 -0
  2148. package/docs/extensions.md +166 -18
  2149. package/docs/index.md +1 -0
  2150. package/docs/intercom.md +1 -1
  2151. package/docs/json.md +11 -5
  2152. package/docs/keybindings.md +19 -2
  2153. package/docs/llama-cpp.md +72 -0
  2154. package/docs/models/artificial-analysis-index.md +82 -0
  2155. package/docs/models/model-selection.md +63 -0
  2156. package/docs/models/pareto-efficiency.md +64 -0
  2157. package/docs/models.md +41 -50
  2158. package/docs/packages.md +4 -2
  2159. package/docs/prompt-templates.md +1 -0
  2160. package/docs/providers.md +89 -23
  2161. package/docs/quickstart.md +21 -17
  2162. package/docs/rpc.md +97 -68
  2163. package/docs/sdk.md +68 -71
  2164. package/docs/security.md +15 -0
  2165. package/docs/session-format.md +6 -15
  2166. package/docs/sessions.md +1 -1
  2167. package/docs/settings.md +29 -18
  2168. package/docs/skills.md +8 -0
  2169. package/docs/subagents.md +24 -8
  2170. package/docs/themes.md +10 -1
  2171. package/docs/tui.md +14 -7
  2172. package/docs/usage.md +71 -2
  2173. package/docs/windows.md +1 -1
  2174. package/docs/workflows.md +1253 -534
  2175. package/examples/extensions/README.md +2 -2
  2176. package/examples/extensions/border-status-editor.ts +1 -6
  2177. package/examples/extensions/custom-compaction.ts +7 -2
  2178. package/examples/extensions/custom-footer.ts +1 -1
  2179. package/examples/extensions/custom-provider-anthropic/index.ts +14 -2
  2180. package/examples/extensions/custom-provider-gitlab-duo/index.ts +1 -1
  2181. package/examples/extensions/gondolin/index.ts +1 -1
  2182. package/examples/extensions/handoff.ts +9 -2
  2183. package/examples/extensions/hello.ts +1 -1
  2184. package/examples/extensions/message-renderer.ts +2 -2
  2185. package/examples/extensions/minimal-mode.ts +6 -6
  2186. package/examples/extensions/overlay-qa-focus-components.ts +0 -1
  2187. package/examples/extensions/overlay-qa-streaming-input-components.ts +2 -2
  2188. package/examples/extensions/overlay-qa-tests.ts +16 -14
  2189. package/examples/extensions/overlay-qa-toggle-passive-components.ts +3 -5
  2190. package/examples/extensions/overlay-test.ts +3 -6
  2191. package/examples/extensions/plan-mode/index.ts +1 -1
  2192. package/examples/extensions/preset.ts +1 -1
  2193. package/examples/extensions/qna.ts +1 -1
  2194. package/examples/extensions/sandbox/package-lock.json +3 -3
  2195. package/examples/extensions/structured-output.ts +9 -9
  2196. package/examples/extensions/subagent/display.ts +115 -127
  2197. package/examples/extensions/subagent/index.ts +310 -349
  2198. package/examples/extensions/subagent/render.ts +244 -345
  2199. package/examples/extensions/subagent/runner.ts +223 -230
  2200. package/examples/extensions/subagent/schemas.ts +39 -46
  2201. package/examples/extensions/subagent/types.ts +22 -22
  2202. package/examples/extensions/summarize.ts +4 -1
  2203. package/examples/extensions/tic-tac-toe.ts +4 -4
  2204. package/examples/extensions/todo.ts +1 -1
  2205. package/examples/extensions/tool-override.ts +1 -1
  2206. package/examples/extensions/trigger-compact.ts +4 -1
  2207. package/examples/extensions/working-indicator.ts +3 -2
  2208. package/examples/rpc-extension-ui-components.ts +1 -2
  2209. package/examples/sdk/02-custom-model.ts +8 -10
  2210. package/examples/sdk/03-custom-prompt.ts +1 -6
  2211. package/examples/sdk/06-extensions.ts +1 -6
  2212. package/examples/sdk/07-context-files.ts +1 -6
  2213. package/examples/sdk/09-api-keys-and-oauth.ts +17 -23
  2214. package/examples/sdk/12-full-control.ts +10 -12
  2215. package/examples/sdk/README.md +17 -21
  2216. package/npm-shrinkwrap.json +305 -314
  2217. package/package.json +17 -15
  2218. package/dist/builtin/cursor/CHANGELOG.md +0 -275
  2219. package/dist/builtin/cursor/LICENSE +0 -26
  2220. package/dist/builtin/cursor/README.md +0 -24
  2221. package/dist/builtin/cursor/index.ts +0 -9
  2222. package/dist/builtin/cursor/package.json +0 -47
  2223. package/dist/builtin/cursor/src/auth.ts +0 -352
  2224. package/dist/builtin/cursor/src/catalog-cache.ts +0 -155
  2225. package/dist/builtin/cursor/src/config.ts +0 -123
  2226. package/dist/builtin/cursor/src/conversation-state.ts +0 -135
  2227. package/dist/builtin/cursor/src/cursor-models-raw.json +0 -412
  2228. package/dist/builtin/cursor/src/model-mapper.ts +0 -369
  2229. package/dist/builtin/cursor/src/model-reference.ts +0 -282
  2230. package/dist/builtin/cursor/src/models.ts +0 -54
  2231. package/dist/builtin/cursor/src/native-loader.ts +0 -71
  2232. package/dist/builtin/cursor/src/proto/README.md +0 -34
  2233. package/dist/builtin/cursor/src/proto/agent_pb.ts +0 -15294
  2234. package/dist/builtin/cursor/src/proto/protobuf-codec-base64.ts +0 -22
  2235. package/dist/builtin/cursor/src/proto/protobuf-codec-json.ts +0 -44
  2236. package/dist/builtin/cursor/src/proto/protobuf-codec-request.ts +0 -311
  2237. package/dist/builtin/cursor/src/proto/protobuf-codec-wire.ts +0 -248
  2238. package/dist/builtin/cursor/src/proto/protobuf-codec.ts +0 -200
  2239. package/dist/builtin/cursor/src/provider.ts +0 -301
  2240. package/dist/builtin/cursor/src/stream.ts +0 -494
  2241. package/dist/builtin/cursor/src/transport-errors.ts +0 -74
  2242. package/dist/builtin/cursor/src/transport-frame.ts +0 -56
  2243. package/dist/builtin/cursor/src/transport-http2.ts +0 -122
  2244. package/dist/builtin/cursor/src/transport-native-client.ts +0 -161
  2245. package/dist/builtin/cursor/src/transport-run-stream.ts +0 -188
  2246. package/dist/builtin/cursor/src/transport-timeouts.ts +0 -87
  2247. package/dist/builtin/cursor/src/transport-types.ts +0 -143
  2248. package/dist/builtin/cursor/src/transport.ts +0 -26
  2249. package/dist/builtin/workflows/builtin/deep-research-codebase-runner.ts +0 -492
  2250. package/dist/builtin/workflows/builtin/deep-research-codebase-utils.ts +0 -383
  2251. package/dist/builtin/workflows/builtin/deep-research-codebase.d.ts +0 -35
  2252. package/dist/builtin/workflows/builtin/deep-research-codebase.ts +0 -47
  2253. package/dist/builtin/workflows/skills/impeccable/reference/brand.md +0 -108
  2254. package/dist/builtin/workflows/skills/impeccable/reference/codex.md +0 -105
  2255. package/dist/builtin/workflows/skills/impeccable/reference/interaction-design.md +0 -189
  2256. package/dist/builtin/workflows/skills/impeccable/scripts/hook-before-edit.mjs +0 -516
  2257. package/dist/core/context-window.d.ts +0 -54
  2258. package/dist/core/context-window.d.ts.map +0 -1
  2259. package/dist/core/context-window.js +0 -110
  2260. package/dist/core/context-window.js.map +0 -1
  2261. package/dist/core/copilot-anthropic-sse-repair.d.ts +0 -23
  2262. package/dist/core/copilot-anthropic-sse-repair.d.ts.map +0 -1
  2263. package/dist/core/copilot-anthropic-sse-repair.js +0 -340
  2264. package/dist/core/copilot-anthropic-sse-repair.js.map +0 -1
  2265. package/dist/core/copilot-errors.d.ts +0 -9
  2266. package/dist/core/copilot-errors.d.ts.map +0 -1
  2267. package/dist/core/copilot-errors.js +0 -32
  2268. package/dist/core/copilot-errors.js.map +0 -1
  2269. package/dist/core/copilot-gemini-payload-sanitizer.d.ts +0 -72
  2270. package/dist/core/copilot-gemini-payload-sanitizer.d.ts.map +0 -1
  2271. package/dist/core/copilot-gemini-payload-sanitizer.js +0 -296
  2272. package/dist/core/copilot-gemini-payload-sanitizer.js.map +0 -1
  2273. package/dist/core/copilot-gemini-reasoning.d.ts +0 -126
  2274. package/dist/core/copilot-gemini-reasoning.d.ts.map +0 -1
  2275. package/dist/core/copilot-gemini-reasoning.js +0 -265
  2276. package/dist/core/copilot-gemini-reasoning.js.map +0 -1
  2277. package/dist/core/copilot-gemini-tool-arguments.d.ts +0 -42
  2278. package/dist/core/copilot-gemini-tool-arguments.d.ts.map +0 -1
  2279. package/dist/core/copilot-gemini-tool-arguments.js +0 -159
  2280. package/dist/core/copilot-gemini-tool-arguments.js.map +0 -1
  2281. package/dist/core/copilot-hosts.d.ts +0 -12
  2282. package/dist/core/copilot-hosts.d.ts.map +0 -1
  2283. package/dist/core/copilot-hosts.js +0 -33
  2284. package/dist/core/copilot-hosts.js.map +0 -1
  2285. package/dist/core/copilot-model-catalog.d.ts +0 -114
  2286. package/dist/core/copilot-model-catalog.d.ts.map +0 -1
  2287. package/dist/core/copilot-model-catalog.js +0 -392
  2288. package/dist/core/copilot-model-catalog.js.map +0 -1
  2289. package/dist/core/copilot-model-static-fallbacks.d.ts +0 -43
  2290. package/dist/core/copilot-model-static-fallbacks.d.ts.map +0 -1
  2291. package/dist/core/copilot-model-static-fallbacks.js +0 -50
  2292. package/dist/core/copilot-model-static-fallbacks.js.map +0 -1
  2293. package/dist/core/copilot-model-synthesis.d.ts +0 -10
  2294. package/dist/core/copilot-model-synthesis.d.ts.map +0 -1
  2295. package/dist/core/copilot-model-synthesis.js +0 -91
  2296. package/dist/core/copilot-model-synthesis.js.map +0 -1
  2297. package/dist/core/model-registry-auth.d.ts +0 -8
  2298. package/dist/core/model-registry-auth.d.ts.map +0 -1
  2299. package/dist/core/model-registry-auth.js +0 -83
  2300. package/dist/core/model-registry-auth.js.map +0 -1
  2301. package/dist/core/model-registry-builtins.d.ts +0 -10
  2302. package/dist/core/model-registry-builtins.d.ts.map +0 -1
  2303. package/dist/core/model-registry-builtins.js +0 -171
  2304. package/dist/core/model-registry-builtins.js.map +0 -1
  2305. package/dist/core/model-registry-custom-loader.d.ts +0 -3
  2306. package/dist/core/model-registry-custom-loader.d.ts.map +0 -1
  2307. package/dist/core/model-registry-custom-loader.js +0 -254
  2308. package/dist/core/model-registry-custom-loader.js.map +0 -1
  2309. package/dist/core/model-registry-dynamic.d.ts +0 -7
  2310. package/dist/core/model-registry-dynamic.d.ts.map +0 -1
  2311. package/dist/core/model-registry-dynamic.js +0 -201
  2312. package/dist/core/model-registry-dynamic.js.map +0 -1
  2313. package/dist/core/model-registry-loader.d.ts +0 -5
  2314. package/dist/core/model-registry-loader.d.ts.map +0 -1
  2315. package/dist/core/model-registry-loader.js +0 -28
  2316. package/dist/core/model-registry-loader.js.map +0 -1
  2317. package/dist/core/model-registry-schemas.d.ts +0 -1273
  2318. package/dist/core/model-registry-schemas.d.ts.map +0 -1
  2319. package/dist/core/model-registry-schemas.js.map +0 -1
  2320. package/dist/core/model-registry-types.d.ts +0 -82
  2321. package/dist/core/model-registry-types.d.ts.map +0 -1
  2322. package/dist/core/model-registry-types.js +0 -2
  2323. package/dist/core/model-registry-types.js.map +0 -1
  2324. package/dist/core/oauth-compat.d.ts +0 -17
  2325. package/dist/core/oauth-compat.d.ts.map +0 -1
  2326. package/dist/core/oauth-compat.js +0 -2
  2327. package/dist/core/oauth-compat.js.map +0 -1
  2328. package/dist/core/oauth-provider-bridge.d.ts +0 -40
  2329. package/dist/core/oauth-provider-bridge.d.ts.map +0 -1
  2330. package/dist/core/oauth-provider-bridge.js +0 -169
  2331. package/dist/core/oauth-provider-bridge.js.map +0 -1
  2332. package/dist/modes/interactive/components/context-window-selector.d.ts +0 -53
  2333. package/dist/modes/interactive/components/context-window-selector.d.ts.map +0 -1
  2334. package/dist/modes/interactive/components/context-window-selector.js +0 -136
  2335. package/dist/modes/interactive/components/context-window-selector.js.map +0 -1
  2336. package/dist/modes/rpc/bounded-writer.d.ts +0 -27
  2337. package/dist/modes/rpc/bounded-writer.d.ts.map +0 -1
  2338. package/dist/modes/rpc/bounded-writer.js +0 -103
  2339. package/dist/modes/rpc/bounded-writer.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"patcher.js","sourceRoot":"","sources":["../../../../src/core/tools/hashline-engine/patcher.ts"],"names":[],"mappings":"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","sourcesContent":["// @generated vendored verbatim from oh-my-pi packages/hashline @ 15b5c1397fc -- DO NOT EDIT.\n// Parity source for the Atomic hashline edit engine (issue #1483); adapted only for Atomic's Node runtime (relative imports, Bun->Node host calls, erasable constructor syntax).\n/**\n * High-level patch orchestrator. Reads each section's target file via the\n * configured {@link Filesystem}, strips BOM and normalizes line endings,\n * validates the section snapshot tag (with {@link Recovery}), applies the\n * result back through the same {@link Filesystem}.\n *\n * Two layers:\n * - {@link Patcher.apply} — high-level, preflight-atomic. It validates and\n * applies every section in memory before any write hits disk, then commits\n * in order. It is not write-transactional: a mid-batch filesystem failure\n * can leave earlier sections already written, and the thrown error reports\n * which sections landed.\n * - {@link Patcher.prepare} / {@link Patcher.commit} — granular primitives\n * for callers that need per-section control (e.g. batched LSP flush,\n * custom interleaving). `prepare` performs all the read-side work,\n * validates the section snapshot tag (with recovery), and applies the\n * edits in memory. `commit` writes the prepared result and records a\n * fresh snapshot.\n *\n * Because `prepare` already runs the full apply, a multi-section batch fails\n * before any write when parsing, stale-tag validation, or in-memory apply fails.\n *\n * The patcher itself is stateless across calls; reuse one instance per\n * filesystem configuration.\n */\nimport { applyEdits } from \"./apply.js\";\nimport { hasBlockEdit, resolveBlockEdits } from \"./block.js\";\nimport { computeFileHash, formatHashlineHeader } from \"./format.js\";\nimport type { Filesystem, WriteResult } from \"./fs.js\";\nimport { isNotFound } from \"./fs.js\";\nimport type { Patch, PatchSection } from \"./input.js\";\nimport { HEADTAIL_DRIFT_WARNING, missingSnapshotTagMessage } from \"./messages.js\";\nimport { MismatchError } from \"./mismatch.js\";\nimport { detectLineEnding, type LineEnding, normalizeToLF, restoreLineEndings, stripBom } from \"./normalize.js\";\nimport { Recovery, type RecoveryResult } from \"./recovery.js\";\nimport type { SnapshotStore } from \"./snapshots.js\";\nimport type { ApplyResult, BlockResolution, BlockResolver, Edit } from \"./types.js\";\n\nexport interface PatcherOptions {\n\t/** Storage backend used for all reads and writes. */\n\tfs: Filesystem;\n\t/** Snapshot store that minted and resolves hashline section tags. Required. */\n\tsnapshots: SnapshotStore;\n\t/**\n\t * Resolves `replace block N:` anchors to concrete line spans via tree-sitter.\n\t * Optional: when omitted, any `replace block N:` edit throws on apply (the\n\t * host did not wire a resolver). Plain line-range ops never need it.\n\t */\n\tblockResolver?: BlockResolver;\n}\n\n/** Per-section result returned by {@link Patcher.apply} / {@link Patcher.commit}. */\nexport interface PatchSectionResult {\n\t/** Section path (as authored, after cwd-resolution at parse time). */\n\tpath: string;\n\t/** Filesystem-canonical key for this section (e.g. absolute path). */\n\tcanonicalPath: string;\n\t/** `\"noop\"` when the apply produced no change; otherwise `\"create\"` / `\"update\"`. */\n\top: \"create\" | \"update\" | \"noop\";\n\t/** Pre-edit text (LF-normalized, BOM-stripped). */\n\tbefore: string;\n\t/** Post-edit text (LF-normalized, BOM-stripped). For `\"noop\"` equals `before`. */\n\tafter: string;\n\t/** Same text as `after` but with the original BOM and line ending restored. */\n\tpersisted: string;\n\t/** Final text that the {@link Filesystem} actually wrote (may differ if the FS transformed it). */\n\twritten: string;\n\t/** 4-hex content-hash tag for `after`. Use to anchor follow-up edits. */\n\tfileHash: string;\n\t/** Hashline section header (`[path#tag]`) of the post-edit content. */\n\theader: string;\n\t/** 1-indexed first changed line in `after`, or `undefined` for noops. */\n\tfirstChangedLine?: number;\n\t/** Warnings collected by the parser, applier, and (optionally) recovery. */\n\twarnings: string[];\n\t/**\n\t * Resolved spans for any `replace block`/`delete block` ops, present when the\n\t * apply matched the tagged content. Undefined for patches with no block ops\n\t * (and for resolutions routed through drift recovery, where numbers shift).\n\t */\n\tblockResolutions?: BlockResolution[];\n}\n\nexport interface PatcherApplyResult {\n\tsections: PatchSectionResult[];\n}\n\n/**\n * Opaque token returned by {@link Patcher.prepare}. Carries the section, the\n * raw file content read off disk, and the in-memory apply result.\n * {@link Patcher.commit} just writes the {@link PreparedSection.applyResult}.\n */\nexport class PreparedSection {\n\treadonly section: PatchSection;\n\treadonly canonicalPath: string;\n\treadonly exists: boolean;\n\treadonly rawContent: string;\n\treadonly bom: string;\n\treadonly lineEnding: LineEnding;\n\treadonly normalized: string;\n\treadonly applyResult: ApplyResult;\n\treadonly parseWarnings: readonly string[];\n\t/** @internal */\n\tconstructor(\n\t\tsection: PatchSection,\n\t\tcanonicalPath: string,\n\t\texists: boolean,\n\t\trawContent: string,\n\t\tbom: string,\n\t\tlineEnding: LineEnding,\n\t\tnormalized: string,\n\t\tapplyResult: ApplyResult,\n\t\tparseWarnings: readonly string[],\n\t) {\n\t\tthis.section = section;\n\t\tthis.canonicalPath = canonicalPath;\n\t\tthis.exists = exists;\n\t\tthis.rawContent = rawContent;\n\t\tthis.bom = bom;\n\t\tthis.lineEnding = lineEnding;\n\t\tthis.normalized = normalized;\n\t\tthis.applyResult = applyResult;\n\t\tthis.parseWarnings = parseWarnings;\n\t}\n\n\t/** Convenience: returns true when the apply produced no change. */\n\tget isNoop(): boolean {\n\t\treturn this.applyResult.text === this.normalized;\n\t}\n}\n\nfunction hasAnchorScopedEdit(edits: readonly Edit[]): boolean {\n\treturn edits.some(edit => {\n\t\tif (edit.kind === \"delete\") return true;\n\t\t// A `replace block N:` edit anchors to concrete content on line N.\n\t\tif (edit.kind === \"block\") return true;\n\t\treturn edit.cursor.kind === \"before_anchor\" || edit.cursor.kind === \"after_anchor\";\n\t});\n}\n\nfunction assertSectionHashPresent(sectionPath: string, fileHash: string | undefined): void {\n\tif (fileHash !== undefined) return;\n\tthrow new Error(missingSnapshotTagMessage(sectionPath));\n}\n\nfunction recoveryToApplyResult(result: RecoveryResult): ApplyResult {\n\treturn {\n\t\ttext: result.text,\n\t\tfirstChangedLine: result.firstChangedLine,\n\t\twarnings: result.warnings,\n\t};\n}\nfunction mergeWarnings(...sources: ReadonlyArray<readonly string[] | undefined>): string[] {\n\tconst out: string[] = [];\n\tfor (const source of sources) {\n\t\tif (!source) continue;\n\t\tfor (const warning of source) out.push(warning);\n\t}\n\treturn out;\n}\n\nfunction assertUniqueCanonicalPaths(prepared: readonly PreparedSection[]): void {\n\tconst seen = new Map<string, string>();\n\tfor (const entry of prepared) {\n\t\tconst previous = seen.get(entry.canonicalPath);\n\t\tif (previous !== undefined) {\n\t\t\tthrow new Error(\n\t\t\t\t`Multiple hashline sections resolve to the same file (${previous} and ${entry.section.path}). Merge their ops under one header before applying.`,\n\t\t\t);\n\t\t}\n\t\tseen.set(entry.canonicalPath, entry.section.path);\n\t}\n}\n\n/**\n * High-level patcher. Wires a {@link Filesystem} and a required\n * {@link SnapshotStore} together with the parsing + applying core.\n *\n * Construct once per FS configuration; reuse across patches.\n */\nexport class Patcher {\n\treadonly fs: Filesystem;\n\treadonly snapshots: SnapshotStore;\n\treadonly recovery: Recovery;\n\treadonly blockResolver: BlockResolver | undefined;\n\n\tconstructor(options: PatcherOptions) {\n\t\tif (!options.snapshots) {\n\t\t\tthrow new Error(\"Hashline Patcher requires a SnapshotStore; section tags are opaque store pointers.\");\n\t\t}\n\t\tthis.fs = options.fs;\n\t\tthis.snapshots = options.snapshots;\n\t\tthis.recovery = new Recovery(options.snapshots);\n\t\tthis.blockResolver = options.blockResolver;\n\t}\n\n\t/**\n\t * Apply every section in `patch`. `prepare` runs the full apply for each\n\t * section in memory before any write hits the filesystem, so a\n\t * multi-section batch fails before writing on parse/validation/apply errors.\n\t * Write commits are sequential rather than transactional; if a write fails,\n\t * earlier sections may already be on disk and are listed in the thrown error.\n\t * Returns one {@link PatchSectionResult} per section in the original patch order.\n\t */\n\tasync apply(patch: Patch): Promise<PatcherApplyResult> {\n\t\t// Single-section fast path.\n\t\tif (patch.sections.length === 1) {\n\t\t\tconst prepared = await this.prepare(patch.sections[0]);\n\t\t\treturn { sections: [await this.commit(prepared)] };\n\t\t}\n\n\t\t// Prepare every section first so any failure (stale hash, missing\n\t\t// file, parse error, in-memory no-op) surfaces before any write.\n\t\tconst prepared: PreparedSection[] = [];\n\t\tfor (const section of patch.sections) prepared.push(await this.prepare(section));\n\t\tassertUniqueCanonicalPaths(prepared);\n\t\tfor (const entry of prepared) {\n\t\t\tif (entry.isNoop) {\n\t\t\t\tthrow new Error(`Edits to ${entry.section.path} resulted in no changes being made.`);\n\t\t\t}\n\t\t}\n\n\t\tconst results: PatchSectionResult[] = [];\n\t\tfor (let index = 0; index < prepared.length; index++) {\n\t\t\ttry {\n\t\t\t\tresults.push(await this.commit(prepared[index]));\n\t\t\t} catch (error) {\n\t\t\t\t// A mid-batch write failure leaves earlier sections on disk with no\n\t\t\t\t// rollback; report exactly which sections landed so the caller can\n\t\t\t\t// re-issue only the missing ones instead of double-applying.\n\t\t\t\tconst written = prepared.slice(0, index).map(entry => entry.section.path);\n\t\t\t\tconst notWritten = prepared.slice(index + 1).map(entry => entry.section.path);\n\t\t\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Failed to write ${prepared[index].section.path}: ${message}` +\n\t\t\t\t\t\t(written.length > 0 ? ` Sections already written: ${written.join(\", \")}.` : \"\") +\n\t\t\t\t\t\t(notWritten.length > 0 ? ` Sections not written: ${notWritten.join(\", \")}.` : \"\"),\n\t\t\t\t\t{ cause: error },\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\treturn { sections: results };\n\t}\n\n\t/**\n\t * Run the preflight pass only: read, parse, validate, apply-in-memory.\n\t * No writes hit the filesystem. Use for CI checks and dry runs.\n\t */\n\tasync preflight(patch: Patch): Promise<void> {\n\t\tconst prepared: PreparedSection[] = [];\n\t\tfor (const section of patch.sections) prepared.push(await this.prepare(section));\n\t\tassertUniqueCanonicalPaths(prepared);\n\t\tfor (const entry of prepared) {\n\t\t\tif (entry.isNoop) {\n\t\t\t\tthrow new Error(`Edits to ${entry.section.path} resulted in no changes being made.`);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Read a section's target file, parse the section, validate the snapshot\n\t * tag (with recovery), and apply the edits in memory. Returns a\n\t * {@link PreparedSection} which can be fed to {@link commit} to land\n\t * the result on the filesystem.\n\t *\n\t * Throws on parse error, missing-file-for-anchored-edit, or unrecovered\n\t * tag mismatch ({@link MismatchError}).\n\t */\n\tasync prepare(section: PatchSection): Promise<PreparedSection> {\n\t\tconst { edits, warnings: parseWarnings } = section.parse();\n\t\tassertSectionHashPresent(section.path, section.fileHash);\n\n\t\tconst canonicalPath = this.fs.canonicalPath(section.path);\n\t\tawait this.fs.preflightWrite(section.path);\n\t\tconst { exists, rawContent } = await this.#tryRead(section.path);\n\t\tif (!exists) {\n\t\t\tthrow new Error(`File not found: ${section.path}. Use the write tool to create new files.`);\n\t\t}\n\n\t\tconst { bom, text } = stripBom(rawContent);\n\t\tconst lineEnding = detectLineEnding(text);\n\t\tconst normalized = normalizeToLF(text);\n\n\t\tconst applyResult = this.#applyWithRecovery({\n\t\t\tsection,\n\t\t\tcanonicalPath,\n\t\t\texists,\n\t\t\tnormalized,\n\t\t\tedits,\n\t\t});\n\n\t\treturn new PreparedSection(\n\t\t\tsection,\n\t\t\tcanonicalPath,\n\t\t\texists,\n\t\t\trawContent,\n\t\t\tbom,\n\t\t\tlineEnding,\n\t\t\tnormalized,\n\t\t\tapplyResult,\n\t\t\tparseWarnings,\n\t\t);\n\t}\n\n\t/**\n\t * Commit a previously {@link prepare}d section to the filesystem.\n\t * Restores line endings and BOM, writes via the {@link Filesystem}, and\n\t * records a fresh snapshot in the {@link SnapshotStore} keyed by the\n\t * filesystem-canonical path.\n\t */\n\tasync commit(prepared: PreparedSection): Promise<PatchSectionResult> {\n\t\tconst { section, normalized, bom, lineEnding, parseWarnings, exists, applyResult, canonicalPath } = prepared;\n\t\tconst after = applyResult.text;\n\t\tconst warnings = mergeWarnings(parseWarnings, applyResult.warnings);\n\n\t\tif (after === normalized) {\n\t\t\tconst hash = this.#recordFullSnapshot(canonicalPath, normalized);\n\t\t\treturn {\n\t\t\t\tpath: section.path,\n\t\t\t\tcanonicalPath,\n\t\t\t\top: \"noop\",\n\t\t\t\tbefore: normalized,\n\t\t\t\tafter: normalized,\n\t\t\t\tpersisted: prepared.rawContent,\n\t\t\t\twritten: prepared.rawContent,\n\t\t\t\tfileHash: hash,\n\t\t\t\theader: formatHashlineHeader(section.path, hash),\n\t\t\t\twarnings,\n\t\t\t};\n\t\t}\n\n\t\tconst persisted = bom + restoreLineEndings(after, lineEnding);\n\t\tconst write: WriteResult = await this.fs.writeText(section.path, persisted);\n\t\tconst fileHash = this.#recordFullSnapshot(canonicalPath, after);\n\t\tconst op = exists ? \"update\" : \"create\";\n\n\t\treturn {\n\t\t\tpath: section.path,\n\t\t\tcanonicalPath,\n\t\t\top,\n\t\t\tbefore: normalized,\n\t\t\tafter,\n\t\t\tpersisted,\n\t\t\twritten: write.text,\n\t\t\tfileHash,\n\t\t\theader: formatHashlineHeader(section.path, fileHash),\n\t\t\tfirstChangedLine: applyResult.firstChangedLine,\n\t\t\tblockResolutions: applyResult.blockResolutions,\n\t\t\twarnings,\n\t\t};\n\t}\n\n\tasync #tryRead(path: string): Promise<{ exists: boolean; rawContent: string }> {\n\t\ttry {\n\t\t\tconst content = await this.fs.readText(path);\n\t\t\treturn { exists: true, rawContent: content };\n\t\t} catch (error) {\n\t\t\tif (isNotFound(error)) return { exists: false, rawContent: \"\" };\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\t#recordFullSnapshot(canonicalPath: string, normalized: string): string {\n\t\treturn this.snapshots.record(canonicalPath, normalized);\n\t}\n\t#mismatchError(\n\t\tsection: PatchSection,\n\t\tcanonicalPath: string,\n\t\tnormalized: string,\n\t\texpected: string,\n\t\thashRecognized: boolean,\n\t): MismatchError {\n\t\tconst actualFileHash = this.#recordFullSnapshot(canonicalPath, normalized);\n\t\treturn new MismatchError({\n\t\t\tpath: section.path,\n\t\t\texpectedFileHash: expected,\n\t\t\tactualFileHash,\n\t\t\tfileLines: normalized.split(\"\\n\"),\n\t\t\tanchorLines: section.collectAnchorLines(),\n\t\t\thashRecognized,\n\t\t});\n\t}\n\n\t#applyWithRecovery(args: {\n\t\tsection: PatchSection;\n\t\tcanonicalPath: string;\n\t\texists: boolean;\n\t\tnormalized: string;\n\t\tedits: readonly Edit[];\n\t}): ApplyResult {\n\t\tconst { section, canonicalPath, exists, normalized, edits } = args;\n\t\tconst expected = exists ? section.fileHash : undefined;\n\t\tconst expectedSnapshot = expected === undefined ? null : this.snapshots.byHash(canonicalPath, expected);\n\t\tconst liveHashMatches = expected !== undefined && computeFileHash(normalized) === expected;\n\t\tconst liveSnapshot = expected === undefined ? null : this.snapshots.byHashAndText(canonicalPath, expected, normalized);\n\t\tconst liveMatches = liveHashMatches && liveSnapshot !== null;\n\t\tif (liveHashMatches && !liveMatches) {\n\t\t\tthrow this.#mismatchError(section, canonicalPath, normalized, expected, expectedSnapshot !== null);\n\t\t}\n\n\t\t// Resolve `replace block N:` edits to concrete ranges before recovery\n\t\t// runs. Block anchors are expressed against the snapshot the section tag\n\t\t// names, so resolve against that exact text:\n\t\t// - live content matches the tag (or there is no tag) → resolve against\n\t\t// the live, normalized content;\n\t\t// - the file drifted → resolve against the tagged snapshot's text so the\n\t\t// resulting ranges flow through the 3-way-merge recovery below.\n\t\t// When a block edit needs the tagged snapshot but it is unavailable, the\n\t\t// range cannot be placed safely — reject with a MismatchError (re-read).\n\t\tconst blockResolutions: BlockResolution[] = [];\n\t\tconst resolveWarnings: string[] = [];\n\t\tlet resolved: readonly Edit[] = edits;\n\t\tif (hasBlockEdit(edits)) {\n\t\t\tconst baseText =\n\t\t\t\texpected === undefined || liveMatches ? normalized : expectedSnapshot?.text;\n\t\t\tif (baseText === undefined) {\n\t\t\t\tthrow this.#mismatchError(section, canonicalPath, normalized, expected ?? \"\", false);\n\t\t\t}\n\t\t\tresolved = resolveBlockEdits(edits, baseText, section.path, this.blockResolver, {\n\t\t\t\tonUnresolved: \"throw\",\n\t\t\t\tonResolved: resolution => blockResolutions.push(resolution),\n\t\t\t\tonWarning: warning => resolveWarnings.push(warning),\n\t\t\t});\n\t\t}\n\t\tconst withResolveWarnings = (result: ApplyResult): ApplyResult =>\n\t\t\tresolveWarnings.length === 0\n\t\t\t\t? result\n\t\t\t\t: { ...result, warnings: [...resolveWarnings, ...(result.warnings ?? [])] };\n\n\t\t// No tag, or the tag still names the live content: an edit anchored at any\n\t\t// line is safe to apply, and the resolved block spans line up with what\n\t\t// the caller read, so echo them back. (A drifted file falls through to\n\t\t// recovery below, where line numbers shift, so resolutions are dropped.)\n\t\tif (expected === undefined || liveMatches) {\n\t\t\tconst result = applyEdits(normalized, resolved);\n\t\t\treturn withResolveWarnings(blockResolutions.length > 0 ? { ...result, blockResolutions } : result);\n\t\t}\n\t\t// Head/tail-only inserts are position-stable: \"start\"/\"end\" cannot move\n\t\t// with content drift, so a stale tag is non-fatal. Apply onto the live\n\t\t// content and warn instead of hard-failing — unlike an anchored\n\t\t// mismatch, which cannot be safely relocated and must reject.\n\t\tif (!hasAnchorScopedEdit(resolved)) {\n\t\t\tconst result = applyEdits(normalized, resolved);\n\t\t\treturn withResolveWarnings({ ...result, warnings: [HEADTAIL_DRIFT_WARNING, ...(result.warnings ?? [])] });\n\t\t}\n\t\t// File drifted: try to replay the edit against the version the tag\n\t\t// names and 3-way-merge it onto the live content.\n\t\tconst recovered = this.recovery.tryRecover({\n\t\t\tpath: canonicalPath,\n\t\t\tcurrentText: normalized,\n\t\t\tfileHash: expected,\n\t\t\tedits: resolved,\n\t\t});\n\t\tif (recovered) return withResolveWarnings(recoveryToApplyResult(recovered));\n\t\tconst hashRecognized = expectedSnapshot !== null;\n\t\tthrow this.#mismatchError(section, canonicalPath, normalized, expected, hashRecognized);\n\t}\n}\n"]}
1
+ {"version":3,"file":"patcher.js","sourceRoot":"","sources":["../../../../src/core/tools/hashline-engine/patcher.ts"],"names":[],"mappings":"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","sourcesContent":["// @generated vendored verbatim from oh-my-pi packages/hashline @ 15b5c1397fc -- DO NOT EDIT.\n// Parity source for the Atomic hashline edit engine (issue #1483); adapted only for Atomic's Node runtime (relative imports, Bun->Node host calls, erasable constructor syntax).\n/**\n * High-level patch orchestrator. Reads each section's target file via the\n * configured {@link Filesystem}, strips BOM and normalizes line endings,\n * validates the section snapshot tag (with {@link Recovery}), applies the\n * result back through the same {@link Filesystem}.\n *\n * Two layers:\n * - {@link Patcher.apply} — high-level, preflight-atomic. It validates and\n * applies every section in memory before any write hits disk, then commits\n * in order. It is not write-transactional: a mid-batch filesystem failure\n * can leave earlier sections already written, and the thrown error reports\n * which sections landed.\n * - {@link Patcher.prepare} / {@link Patcher.commit} — granular primitives\n * for callers that need per-section control (e.g. batched LSP flush,\n * custom interleaving). `prepare` performs all the read-side work,\n * validates the section snapshot tag (with recovery), and applies the\n * edits in memory. `commit` writes the prepared result and records a\n * fresh snapshot.\n *\n * Because `prepare` already runs the full apply, a multi-section batch fails\n * before any write when parsing, stale-tag validation, or in-memory apply fails.\n *\n * The patcher itself is stateless across calls; reuse one instance per\n * filesystem configuration.\n */\nimport { applyEdits } from \"./apply.js\";\nimport { hasBlockEdit, resolveBlockEdits } from \"./block.js\";\nimport { computeFileHash, formatHashlineHeader } from \"./format.js\";\nimport type { Filesystem, WriteResult } from \"./fs.js\";\nimport { isNotFound } from \"./fs.js\";\nimport type { Patch, PatchSection } from \"./input.js\";\nimport { HEADTAIL_DRIFT_WARNING, missingSnapshotTagMessage } from \"./messages.js\";\nimport { MismatchError } from \"./mismatch.js\";\nimport { detectLineEnding, type LineEnding, normalizeToLF, restoreLineEndings, stripBom } from \"./normalize.js\";\nimport { Recovery, type RecoveryResult } from \"./recovery.js\";\nimport type { SnapshotStore } from \"./snapshots.js\";\nimport type { ApplyResult, BlockResolution, BlockResolver, Edit } from \"./types.js\";\n\nexport interface PatcherOptions {\n\t/** Storage backend used for all reads and writes. */\n\tfs: Filesystem;\n\t/** Snapshot store that minted and resolves hashline section tags. Required. */\n\tsnapshots: SnapshotStore;\n\t/**\n\t * Resolves `replace block N:` anchors to concrete line spans via tree-sitter.\n\t * Optional: when omitted, any `replace block N:` edit throws on apply (the\n\t * host did not wire a resolver). Plain line-range ops never need it.\n\t */\n\tblockResolver?: BlockResolver;\n}\n\n/** Per-section result returned by {@link Patcher.apply} / {@link Patcher.commit}. */\nexport interface PatchSectionResult {\n\t/** Section path (as authored, after cwd-resolution at parse time). */\n\tpath: string;\n\t/** Filesystem-canonical key for this section (e.g. absolute path). */\n\tcanonicalPath: string;\n\t/** `\"noop\"` when the apply produced no change; otherwise `\"create\"` / `\"update\"`. */\n\top: \"create\" | \"update\" | \"noop\";\n\t/** Pre-edit text (LF-normalized, BOM-stripped). */\n\tbefore: string;\n\t/** Post-edit text (LF-normalized, BOM-stripped). For `\"noop\"` equals `before`. */\n\tafter: string;\n\t/** Same text as `after` but with the original BOM and line ending restored. */\n\tpersisted: string;\n\t/** Final text that the {@link Filesystem} actually wrote (may differ if the FS transformed it). */\n\twritten: string;\n\t/** 4-hex content-hash tag for `after`. Use to anchor follow-up edits. */\n\tfileHash: string;\n\t/** Hashline section header (`[path#tag]`) of the post-edit content. */\n\theader: string;\n\t/** 1-indexed first changed line in `after`, or `undefined` for noops. */\n\tfirstChangedLine?: number;\n\t/** Warnings collected by the parser, applier, and (optionally) recovery. */\n\twarnings: string[];\n\t/**\n\t * Resolved spans for any `replace block`/`delete block` ops, present when the\n\t * apply matched the tagged content. Undefined for patches with no block ops\n\t * (and for resolutions routed through drift recovery, where numbers shift).\n\t */\n\tblockResolutions?: BlockResolution[];\n}\n\nexport interface PatcherApplyResult {\n\tsections: PatchSectionResult[];\n}\n\n/**\n * Opaque token returned by {@link Patcher.prepare}. Carries the section, the\n * raw file content read off disk, and the in-memory apply result.\n * {@link Patcher.commit} just writes the {@link PreparedSection.applyResult}.\n */\nexport class PreparedSection {\n\treadonly section: PatchSection;\n\treadonly canonicalPath: string;\n\treadonly exists: boolean;\n\treadonly rawContent: string;\n\treadonly bom: string;\n\treadonly lineEnding: LineEnding;\n\treadonly normalized: string;\n\treadonly applyResult: ApplyResult;\n\treadonly parseWarnings: readonly string[];\n\t/** @internal */\n\tconstructor(\n\t\tsection: PatchSection,\n\t\tcanonicalPath: string,\n\t\texists: boolean,\n\t\trawContent: string,\n\t\tbom: string,\n\t\tlineEnding: LineEnding,\n\t\tnormalized: string,\n\t\tapplyResult: ApplyResult,\n\t\tparseWarnings: readonly string[],\n\t) {\n\t\tthis.section = section;\n\t\tthis.canonicalPath = canonicalPath;\n\t\tthis.exists = exists;\n\t\tthis.rawContent = rawContent;\n\t\tthis.bom = bom;\n\t\tthis.lineEnding = lineEnding;\n\t\tthis.normalized = normalized;\n\t\tthis.applyResult = applyResult;\n\t\tthis.parseWarnings = parseWarnings;\n\t}\n\n\t/** Convenience: returns true when the apply produced no change. */\n\tget isNoop(): boolean {\n\t\treturn this.applyResult.text === this.normalized;\n\t}\n}\n\nfunction hasAnchorScopedEdit(edits: readonly Edit[]): boolean {\n\treturn edits.some((edit) => {\n\t\tif (edit.kind === \"delete\") return true;\n\t\t// A `replace block N:` edit anchors to concrete content on line N.\n\t\tif (edit.kind === \"block\") return true;\n\t\treturn edit.cursor.kind === \"before_anchor\" || edit.cursor.kind === \"after_anchor\";\n\t});\n}\n\nfunction assertSectionHashPresent(sectionPath: string, fileHash: string | undefined): void {\n\tif (fileHash !== undefined) return;\n\tthrow new Error(missingSnapshotTagMessage(sectionPath));\n}\n\nfunction recoveryToApplyResult(result: RecoveryResult): ApplyResult {\n\treturn {\n\t\ttext: result.text,\n\t\tfirstChangedLine: result.firstChangedLine,\n\t\twarnings: result.warnings,\n\t};\n}\nfunction mergeWarnings(...sources: ReadonlyArray<readonly string[] | undefined>): string[] {\n\tconst out: string[] = [];\n\tfor (const source of sources) {\n\t\tif (!source) continue;\n\t\tfor (const warning of source) out.push(warning);\n\t}\n\treturn out;\n}\n\nfunction assertUniqueCanonicalPaths(prepared: readonly PreparedSection[]): void {\n\tconst seen = new Map<string, string>();\n\tfor (const entry of prepared) {\n\t\tconst previous = seen.get(entry.canonicalPath);\n\t\tif (previous !== undefined) {\n\t\t\tthrow new Error(\n\t\t\t\t`Multiple hashline sections resolve to the same file (${previous} and ${entry.section.path}). Merge their ops under one header before applying.`,\n\t\t\t);\n\t\t}\n\t\tseen.set(entry.canonicalPath, entry.section.path);\n\t}\n}\n\n/**\n * High-level patcher. Wires a {@link Filesystem} and a required\n * {@link SnapshotStore} together with the parsing + applying core.\n *\n * Construct once per FS configuration; reuse across patches.\n */\nexport class Patcher {\n\treadonly fs: Filesystem;\n\treadonly snapshots: SnapshotStore;\n\treadonly recovery: Recovery;\n\treadonly blockResolver: BlockResolver | undefined;\n\n\tconstructor(options: PatcherOptions) {\n\t\tif (!options.snapshots) {\n\t\t\tthrow new Error(\"Hashline Patcher requires a SnapshotStore; section tags are opaque store pointers.\");\n\t\t}\n\t\tthis.fs = options.fs;\n\t\tthis.snapshots = options.snapshots;\n\t\tthis.recovery = new Recovery(options.snapshots);\n\t\tthis.blockResolver = options.blockResolver;\n\t}\n\n\t/**\n\t * Apply every section in `patch`. `prepare` runs the full apply for each\n\t * section in memory before any write hits the filesystem, so a\n\t * multi-section batch fails before writing on parse/validation/apply errors.\n\t * Write commits are sequential rather than transactional; if a write fails,\n\t * earlier sections may already be on disk and are listed in the thrown error.\n\t * Returns one {@link PatchSectionResult} per section in the original patch order.\n\t */\n\tasync apply(patch: Patch): Promise<PatcherApplyResult> {\n\t\t// Single-section fast path.\n\t\tif (patch.sections.length === 1) {\n\t\t\tconst prepared = await this.prepare(patch.sections[0]);\n\t\t\treturn { sections: [await this.commit(prepared)] };\n\t\t}\n\n\t\t// Prepare every section first so any failure (stale hash, missing\n\t\t// file, parse error, in-memory no-op) surfaces before any write.\n\t\tconst prepared: PreparedSection[] = [];\n\t\tfor (const section of patch.sections) prepared.push(await this.prepare(section));\n\t\tassertUniqueCanonicalPaths(prepared);\n\t\tfor (const entry of prepared) {\n\t\t\tif (entry.isNoop) {\n\t\t\t\tthrow new Error(`Edits to ${entry.section.path} resulted in no changes being made.`);\n\t\t\t}\n\t\t}\n\n\t\tconst results: PatchSectionResult[] = [];\n\t\tfor (let index = 0; index < prepared.length; index++) {\n\t\t\ttry {\n\t\t\t\tresults.push(await this.commit(prepared[index]));\n\t\t\t} catch (error) {\n\t\t\t\t// A mid-batch write failure leaves earlier sections on disk with no\n\t\t\t\t// rollback; report exactly which sections landed so the caller can\n\t\t\t\t// re-issue only the missing ones instead of double-applying.\n\t\t\t\tconst written = prepared.slice(0, index).map((entry) => entry.section.path);\n\t\t\t\tconst notWritten = prepared.slice(index + 1).map((entry) => entry.section.path);\n\t\t\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Failed to write ${prepared[index].section.path}: ${message}` +\n\t\t\t\t\t\t(written.length > 0 ? ` Sections already written: ${written.join(\", \")}.` : \"\") +\n\t\t\t\t\t\t(notWritten.length > 0 ? ` Sections not written: ${notWritten.join(\", \")}.` : \"\"),\n\t\t\t\t\t{ cause: error },\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\treturn { sections: results };\n\t}\n\n\t/**\n\t * Run the preflight pass only: read, parse, validate, apply-in-memory.\n\t * No writes hit the filesystem. Use for CI checks and dry runs.\n\t */\n\tasync preflight(patch: Patch): Promise<void> {\n\t\tconst prepared: PreparedSection[] = [];\n\t\tfor (const section of patch.sections) prepared.push(await this.prepare(section));\n\t\tassertUniqueCanonicalPaths(prepared);\n\t\tfor (const entry of prepared) {\n\t\t\tif (entry.isNoop) {\n\t\t\t\tthrow new Error(`Edits to ${entry.section.path} resulted in no changes being made.`);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Read a section's target file, parse the section, validate the snapshot\n\t * tag (with recovery), and apply the edits in memory. Returns a\n\t * {@link PreparedSection} which can be fed to {@link commit} to land\n\t * the result on the filesystem.\n\t *\n\t * Throws on parse error, missing-file-for-anchored-edit, or unrecovered\n\t * tag mismatch ({@link MismatchError}).\n\t */\n\tasync prepare(section: PatchSection): Promise<PreparedSection> {\n\t\tconst { edits, warnings: parseWarnings } = section.parse();\n\t\tassertSectionHashPresent(section.path, section.fileHash);\n\n\t\tconst canonicalPath = this.fs.canonicalPath(section.path);\n\t\tawait this.fs.preflightWrite(section.path);\n\t\tconst { exists, rawContent } = await this.#tryRead(section.path);\n\t\tif (!exists) {\n\t\t\tthrow new Error(`File not found: ${section.path}. Use the write tool to create new files.`);\n\t\t}\n\n\t\tconst { bom, text } = stripBom(rawContent);\n\t\tconst lineEnding = detectLineEnding(text);\n\t\tconst normalized = normalizeToLF(text);\n\n\t\tconst applyResult = this.#applyWithRecovery({\n\t\t\tsection,\n\t\t\tcanonicalPath,\n\t\t\texists,\n\t\t\tnormalized,\n\t\t\tedits,\n\t\t});\n\n\t\treturn new PreparedSection(\n\t\t\tsection,\n\t\t\tcanonicalPath,\n\t\t\texists,\n\t\t\trawContent,\n\t\t\tbom,\n\t\t\tlineEnding,\n\t\t\tnormalized,\n\t\t\tapplyResult,\n\t\t\tparseWarnings,\n\t\t);\n\t}\n\n\t/**\n\t * Commit a previously {@link prepare}d section to the filesystem.\n\t * Restores line endings and BOM, writes via the {@link Filesystem}, and\n\t * records a fresh snapshot in the {@link SnapshotStore} keyed by the\n\t * filesystem-canonical path.\n\t */\n\tasync commit(prepared: PreparedSection): Promise<PatchSectionResult> {\n\t\tconst { section, normalized, bom, lineEnding, parseWarnings, exists, applyResult, canonicalPath } = prepared;\n\t\tconst after = applyResult.text;\n\t\tconst warnings = mergeWarnings(parseWarnings, applyResult.warnings);\n\n\t\tif (after === normalized) {\n\t\t\tconst hash = this.#recordFullSnapshot(canonicalPath, normalized);\n\t\t\treturn {\n\t\t\t\tpath: section.path,\n\t\t\t\tcanonicalPath,\n\t\t\t\top: \"noop\",\n\t\t\t\tbefore: normalized,\n\t\t\t\tafter: normalized,\n\t\t\t\tpersisted: prepared.rawContent,\n\t\t\t\twritten: prepared.rawContent,\n\t\t\t\tfileHash: hash,\n\t\t\t\theader: formatHashlineHeader(section.path, hash),\n\t\t\t\twarnings,\n\t\t\t};\n\t\t}\n\n\t\tconst persisted = bom + restoreLineEndings(after, lineEnding);\n\t\tconst write: WriteResult = await this.fs.writeText(section.path, persisted);\n\t\tconst fileHash = this.#recordFullSnapshot(canonicalPath, after);\n\t\tconst op = exists ? \"update\" : \"create\";\n\n\t\treturn {\n\t\t\tpath: section.path,\n\t\t\tcanonicalPath,\n\t\t\top,\n\t\t\tbefore: normalized,\n\t\t\tafter,\n\t\t\tpersisted,\n\t\t\twritten: write.text,\n\t\t\tfileHash,\n\t\t\theader: formatHashlineHeader(section.path, fileHash),\n\t\t\tfirstChangedLine: applyResult.firstChangedLine,\n\t\t\tblockResolutions: applyResult.blockResolutions,\n\t\t\twarnings,\n\t\t};\n\t}\n\n\tasync #tryRead(path: string): Promise<{ exists: boolean; rawContent: string }> {\n\t\ttry {\n\t\t\tconst content = await this.fs.readText(path);\n\t\t\treturn { exists: true, rawContent: content };\n\t\t} catch (error) {\n\t\t\tif (isNotFound(error)) return { exists: false, rawContent: \"\" };\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\t#recordFullSnapshot(canonicalPath: string, normalized: string): string {\n\t\treturn this.snapshots.record(canonicalPath, normalized);\n\t}\n\t#mismatchError(\n\t\tsection: PatchSection,\n\t\tcanonicalPath: string,\n\t\tnormalized: string,\n\t\texpected: string,\n\t\thashRecognized: boolean,\n\t): MismatchError {\n\t\tconst actualFileHash = this.#recordFullSnapshot(canonicalPath, normalized);\n\t\treturn new MismatchError({\n\t\t\tpath: section.path,\n\t\t\texpectedFileHash: expected,\n\t\t\tactualFileHash,\n\t\t\tfileLines: normalized.split(\"\\n\"),\n\t\t\tanchorLines: section.collectAnchorLines(),\n\t\t\thashRecognized,\n\t\t});\n\t}\n\n\t#applyWithRecovery(args: {\n\t\tsection: PatchSection;\n\t\tcanonicalPath: string;\n\t\texists: boolean;\n\t\tnormalized: string;\n\t\tedits: readonly Edit[];\n\t}): ApplyResult {\n\t\tconst { section, canonicalPath, exists, normalized, edits } = args;\n\t\tconst expected = exists ? section.fileHash : undefined;\n\t\tconst expectedSnapshot = expected === undefined ? null : this.snapshots.byHash(canonicalPath, expected);\n\t\tconst liveHashMatches = expected !== undefined && computeFileHash(normalized) === expected;\n\t\tconst liveSnapshot =\n\t\t\texpected === undefined ? null : this.snapshots.byHashAndText(canonicalPath, expected, normalized);\n\t\tconst liveMatches = liveHashMatches && liveSnapshot !== null;\n\t\tif (liveHashMatches && !liveMatches) {\n\t\t\tthrow this.#mismatchError(section, canonicalPath, normalized, expected, expectedSnapshot !== null);\n\t\t}\n\n\t\t// Resolve `replace block N:` edits to concrete ranges before recovery\n\t\t// runs. Block anchors are expressed against the snapshot the section tag\n\t\t// names, so resolve against that exact text:\n\t\t// - live content matches the tag (or there is no tag) → resolve against\n\t\t// the live, normalized content;\n\t\t// - the file drifted → resolve against the tagged snapshot's text so the\n\t\t// resulting ranges flow through the 3-way-merge recovery below.\n\t\t// When a block edit needs the tagged snapshot but it is unavailable, the\n\t\t// range cannot be placed safely — reject with a MismatchError (re-read).\n\t\tconst blockResolutions: BlockResolution[] = [];\n\t\tconst resolveWarnings: string[] = [];\n\t\tlet resolved: readonly Edit[] = edits;\n\t\tif (hasBlockEdit(edits)) {\n\t\t\tconst baseText = expected === undefined || liveMatches ? normalized : expectedSnapshot?.text;\n\t\t\tif (baseText === undefined) {\n\t\t\t\tthrow this.#mismatchError(section, canonicalPath, normalized, expected ?? \"\", false);\n\t\t\t}\n\t\t\tresolved = resolveBlockEdits(edits, baseText, section.path, this.blockResolver, {\n\t\t\t\tonUnresolved: \"throw\",\n\t\t\t\tonResolved: (resolution) => blockResolutions.push(resolution),\n\t\t\t\tonWarning: (warning) => resolveWarnings.push(warning),\n\t\t\t});\n\t\t}\n\t\tconst withResolveWarnings = (result: ApplyResult): ApplyResult =>\n\t\t\tresolveWarnings.length === 0\n\t\t\t\t? result\n\t\t\t\t: { ...result, warnings: [...resolveWarnings, ...(result.warnings ?? [])] };\n\n\t\t// No tag, or the tag still names the live content: an edit anchored at any\n\t\t// line is safe to apply, and the resolved block spans line up with what\n\t\t// the caller read, so echo them back. (A drifted file falls through to\n\t\t// recovery below, where line numbers shift, so resolutions are dropped.)\n\t\tif (expected === undefined || liveMatches) {\n\t\t\tconst result = applyEdits(normalized, resolved);\n\t\t\treturn withResolveWarnings(blockResolutions.length > 0 ? { ...result, blockResolutions } : result);\n\t\t}\n\t\t// Head/tail-only inserts are position-stable: \"start\"/\"end\" cannot move\n\t\t// with content drift, so a stale tag is non-fatal. Apply onto the live\n\t\t// content and warn instead of hard-failing — unlike an anchored\n\t\t// mismatch, which cannot be safely relocated and must reject.\n\t\tif (!hasAnchorScopedEdit(resolved)) {\n\t\t\tconst result = applyEdits(normalized, resolved);\n\t\t\treturn withResolveWarnings({ ...result, warnings: [HEADTAIL_DRIFT_WARNING, ...(result.warnings ?? [])] });\n\t\t}\n\t\t// File drifted: try to replay the edit against the version the tag\n\t\t// names and 3-way-merge it onto the live content.\n\t\tconst recovered = this.recovery.tryRecover({\n\t\t\tpath: canonicalPath,\n\t\t\tcurrentText: normalized,\n\t\t\tfileHash: expected,\n\t\t\tedits: resolved,\n\t\t});\n\t\tif (recovered) return withResolveWarnings(recoveryToApplyResult(recovered));\n\t\tconst hashRecognized = expectedSnapshot !== null;\n\t\tthrow this.#mismatchError(section, canonicalPath, normalized, expected, hashRecognized);\n\t}\n}\n"]}
@@ -92,8 +92,8 @@ export function stripNewLinePrefixes(lines) {
92
92
  if (!stripHash && !stripPlus && stats.diffPlusHashPrefixCount === 0)
93
93
  return lines;
94
94
  return lines
95
- .filter(line => !READ_TRUNCATION_NOTICE_RE.test(line) && !(stripHash && HL_HEADER_RE.test(line)))
96
- .map(line => {
95
+ .filter((line) => !READ_TRUNCATION_NOTICE_RE.test(line) && !(stripHash && HL_HEADER_RE.test(line)))
96
+ .map((line) => {
97
97
  if (stripHash)
98
98
  return stripLeadingHashlinePrefixes(line);
99
99
  if (stripPlus)
@@ -116,8 +116,8 @@ export function stripHashlinePrefixes(lines) {
116
116
  if (contentLineCount === 0 || stats.hashPrefixCount !== contentLineCount)
117
117
  return lines;
118
118
  return lines
119
- .filter(line => !READ_TRUNCATION_NOTICE_RE.test(line) && !HL_HEADER_RE.test(line))
120
- .map(line => stripLeadingHashlinePrefixes(line));
119
+ .filter((line) => !READ_TRUNCATION_NOTICE_RE.test(line) && !HL_HEADER_RE.test(line))
120
+ .map((line) => stripLeadingHashlinePrefixes(line));
121
121
  }
122
122
  /**
123
123
  * Normalize line payloads by stripping read/search line prefixes. `null` /
@@ -1 +1 @@
1
- {"version":3,"file":"prefixes.js","sourceRoot":"","sources":["../../../../src/core/tools/hashline-engine/prefixes.ts"],"names":[],"mappings":"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","sourcesContent":["// @generated vendored verbatim from oh-my-pi packages/hashline @ 15b5c1397fc -- DO NOT EDIT.\n// Parity source for the Atomic hashline edit engine (issue #1483); adapted only for Atomic's Node runtime (relative imports, Bun->Node host calls, erasable constructor syntax).\n/**\n * When a hashline payload is authored against `read`/`search` output, each\n * line is prefixed with either a hashline-mode line number (`123:`) or, for\n * diff-style echoes, a leading `+`. These helpers detect that and recover\n * the raw text. Two strip modes are exposed:\n *\n * - {@link stripNewLinePrefixes} — opportunistic: strips when the input\n * clearly carries hashline or diff prefixes, leaves it alone otherwise.\n * - {@link stripHashlinePrefixes} — strict: only strips when every non-empty\n * content line is hashline-prefixed.\n *\n * These run *before* the tokenizer; they exist because hashline mode is the\n * common case for echoed file content, and erroneously echoed prefixes will\n * otherwise turn every content line into a (malformed) op.\n */\n\nimport { HL_FILE_HASH_LENGTH } from \"./format.js\";\n\nconst HL_PREFIX_RE = /^\\s*(?:>>>|>>)?\\s*(?:[+*-]\\s*)?\\d+:/;\nconst HL_PREFIX_PLUS_RE = /^\\s*(?:>>>|>>)?\\s*\\+\\s*\\d+:/;\nconst HL_HEADER_RE = new RegExp(`^\\\\s*\\\\[[^#\\\\r\\\\n]+#[0-9a-fA-F]{${HL_FILE_HASH_LENGTH}}\\\\]\\\\s*$`);\nconst DIFF_PLUS_RE = /^[+](?![+])/;\nconst READ_TRUNCATION_NOTICE_RE = /^\\[(?:Showing lines \\d+-\\d+ of \\d+|\\d+ more lines? in (?:file|\\S+))\\b.*\\bUse :L?\\d+/;\n\nfunction stripLeadingHashlinePrefixes(line: string): string {\n\tlet result = line;\n\tlet previous: string;\n\tdo {\n\t\tprevious = result;\n\t\tresult = result.replace(HL_PREFIX_RE, \"\");\n\t} while (result !== previous);\n\treturn result;\n}\n/**\n * Single-pass variant of {@link stripLeadingHashlinePrefixes} that strips at\n * most one leading hashline prefix (`N:`, `>>>N:`, `+N:` etc.) and does NOT\n * loop. Use this when the input carries at most one snapshot prefix (e.g. a\n * bare body row paste from `read` output) — recursive stripping would corrupt\n * content whose own text starts with `digits:`.\n */\nexport function stripOneLeadingHashlinePrefix(line: string): string {\n\treturn line.replace(HL_PREFIX_RE, \"\");\n}\n\ninterface LinePrefixStats {\n\tnonEmpty: number;\n\theaderCount: number;\n\thashPrefixCount: number;\n\tdiffPlusHashPrefixCount: number;\n\tdiffPlusCount: number;\n\ttruncationNoticeCount: number;\n}\n\nfunction collectLinePrefixStats(lines: string[]): LinePrefixStats {\n\tconst stats: LinePrefixStats = {\n\t\tnonEmpty: 0,\n\t\theaderCount: 0,\n\t\thashPrefixCount: 0,\n\t\tdiffPlusHashPrefixCount: 0,\n\t\tdiffPlusCount: 0,\n\t\ttruncationNoticeCount: 0,\n\t};\n\n\tfor (const line of lines) {\n\t\tif (line.length === 0) continue;\n\t\tif (READ_TRUNCATION_NOTICE_RE.test(line)) {\n\t\t\tstats.truncationNoticeCount++;\n\t\t\tcontinue;\n\t\t}\n\t\tif (HL_HEADER_RE.test(line)) {\n\t\t\tstats.nonEmpty++;\n\t\t\tstats.headerCount++;\n\t\t\tcontinue;\n\t\t}\n\t\tstats.nonEmpty++;\n\t\tif (HL_PREFIX_RE.test(line)) stats.hashPrefixCount++;\n\t\tif (HL_PREFIX_PLUS_RE.test(line)) stats.diffPlusHashPrefixCount++;\n\t\tif (DIFF_PLUS_RE.test(line)) stats.diffPlusCount++;\n\t}\n\treturn stats;\n}\n\n/**\n * Strip whichever prefix scheme the lines appear to be carrying:\n * - hashline line-number prefixes (`123:`) when every content line has one\n * - leading `+` (diff style) when at least half the lines have one\n * - mixed `+<n>:` form when present\n *\n * Returns the lines untouched if no scheme is recognized.\n */\nexport function stripNewLinePrefixes(lines: string[]): string[] {\n\tconst stats = collectLinePrefixStats(lines);\n\tif (stats.nonEmpty === 0) return lines;\n\n\tconst contentLineCount = stats.nonEmpty - stats.headerCount;\n\tconst stripHash = contentLineCount > 0 && stats.hashPrefixCount === contentLineCount;\n\tconst stripPlus =\n\t\t!stripHash &&\n\t\tstats.diffPlusHashPrefixCount === 0 &&\n\t\tstats.diffPlusCount > 0 &&\n\t\tstats.diffPlusCount >= stats.nonEmpty * 0.5;\n\n\tif (!stripHash && !stripPlus && stats.diffPlusHashPrefixCount === 0) return lines;\n\n\treturn lines\n\t\t.filter(line => !READ_TRUNCATION_NOTICE_RE.test(line) && !(stripHash && HL_HEADER_RE.test(line)))\n\t\t.map(line => {\n\t\t\tif (stripHash) return stripLeadingHashlinePrefixes(line);\n\t\t\tif (stripPlus) return line.replace(DIFF_PLUS_RE, \"\");\n\t\t\tif (stats.diffPlusHashPrefixCount > 0 && HL_PREFIX_PLUS_RE.test(line)) {\n\t\t\t\treturn line.replace(HL_PREFIX_RE, \"\");\n\t\t\t}\n\t\t\treturn line;\n\t\t});\n}\n\n/**\n * Strict variant: strip hashline prefixes only when every content line is\n * hashline-prefixed. Returns the lines unchanged otherwise.\n */\nexport function stripHashlinePrefixes(lines: string[]): string[] {\n\tconst stats = collectLinePrefixStats(lines);\n\tif (stats.nonEmpty === 0) return lines;\n\tconst contentLineCount = stats.nonEmpty - stats.headerCount;\n\tif (contentLineCount === 0 || stats.hashPrefixCount !== contentLineCount) return lines;\n\treturn lines\n\t\t.filter(line => !READ_TRUNCATION_NOTICE_RE.test(line) && !HL_HEADER_RE.test(line))\n\t\t.map(line => stripLeadingHashlinePrefixes(line));\n}\n\n/**\n * Normalize line payloads by stripping read/search line prefixes. `null` /\n * `undefined` yield `[]`; a single multiline string is split on `\\n`.\n */\nexport function hashlineParseText(edit: string[] | string | null | undefined): string[] {\n\tif (edit == null) return [];\n\tif (typeof edit === \"string\") {\n\t\tconst trimmed = edit.endsWith(\"\\n\") ? edit.slice(0, -1) : edit;\n\t\tedit = trimmed.replaceAll(\"\\r\", \"\").split(\"\\n\");\n\t}\n\treturn stripNewLinePrefixes(edit);\n}\n"]}
1
+ {"version":3,"file":"prefixes.js","sourceRoot":"","sources":["../../../../src/core/tools/hashline-engine/prefixes.ts"],"names":[],"mappings":"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","sourcesContent":["// @generated vendored verbatim from oh-my-pi packages/hashline @ 15b5c1397fc -- DO NOT EDIT.\n// Parity source for the Atomic hashline edit engine (issue #1483); adapted only for Atomic's Node runtime (relative imports, Bun->Node host calls, erasable constructor syntax).\n/**\n * When a hashline payload is authored against `read`/`search` output, each\n * line is prefixed with either a hashline-mode line number (`123:`) or, for\n * diff-style echoes, a leading `+`. These helpers detect that and recover\n * the raw text. Two strip modes are exposed:\n *\n * - {@link stripNewLinePrefixes} — opportunistic: strips when the input\n * clearly carries hashline or diff prefixes, leaves it alone otherwise.\n * - {@link stripHashlinePrefixes} — strict: only strips when every non-empty\n * content line is hashline-prefixed.\n *\n * These run *before* the tokenizer; they exist because hashline mode is the\n * common case for echoed file content, and erroneously echoed prefixes will\n * otherwise turn every content line into a (malformed) op.\n */\n\nimport { HL_FILE_HASH_LENGTH } from \"./format.js\";\n\nconst HL_PREFIX_RE = /^\\s*(?:>>>|>>)?\\s*(?:[+*-]\\s*)?\\d+:/;\nconst HL_PREFIX_PLUS_RE = /^\\s*(?:>>>|>>)?\\s*\\+\\s*\\d+:/;\nconst HL_HEADER_RE = new RegExp(`^\\\\s*\\\\[[^#\\\\r\\\\n]+#[0-9a-fA-F]{${HL_FILE_HASH_LENGTH}}\\\\]\\\\s*$`);\nconst DIFF_PLUS_RE = /^[+](?![+])/;\nconst READ_TRUNCATION_NOTICE_RE = /^\\[(?:Showing lines \\d+-\\d+ of \\d+|\\d+ more lines? in (?:file|\\S+))\\b.*\\bUse :L?\\d+/;\n\nfunction stripLeadingHashlinePrefixes(line: string): string {\n\tlet result = line;\n\tlet previous: string;\n\tdo {\n\t\tprevious = result;\n\t\tresult = result.replace(HL_PREFIX_RE, \"\");\n\t} while (result !== previous);\n\treturn result;\n}\n/**\n * Single-pass variant of {@link stripLeadingHashlinePrefixes} that strips at\n * most one leading hashline prefix (`N:`, `>>>N:`, `+N:` etc.) and does NOT\n * loop. Use this when the input carries at most one snapshot prefix (e.g. a\n * bare body row paste from `read` output) — recursive stripping would corrupt\n * content whose own text starts with `digits:`.\n */\nexport function stripOneLeadingHashlinePrefix(line: string): string {\n\treturn line.replace(HL_PREFIX_RE, \"\");\n}\n\ninterface LinePrefixStats {\n\tnonEmpty: number;\n\theaderCount: number;\n\thashPrefixCount: number;\n\tdiffPlusHashPrefixCount: number;\n\tdiffPlusCount: number;\n\ttruncationNoticeCount: number;\n}\n\nfunction collectLinePrefixStats(lines: string[]): LinePrefixStats {\n\tconst stats: LinePrefixStats = {\n\t\tnonEmpty: 0,\n\t\theaderCount: 0,\n\t\thashPrefixCount: 0,\n\t\tdiffPlusHashPrefixCount: 0,\n\t\tdiffPlusCount: 0,\n\t\ttruncationNoticeCount: 0,\n\t};\n\n\tfor (const line of lines) {\n\t\tif (line.length === 0) continue;\n\t\tif (READ_TRUNCATION_NOTICE_RE.test(line)) {\n\t\t\tstats.truncationNoticeCount++;\n\t\t\tcontinue;\n\t\t}\n\t\tif (HL_HEADER_RE.test(line)) {\n\t\t\tstats.nonEmpty++;\n\t\t\tstats.headerCount++;\n\t\t\tcontinue;\n\t\t}\n\t\tstats.nonEmpty++;\n\t\tif (HL_PREFIX_RE.test(line)) stats.hashPrefixCount++;\n\t\tif (HL_PREFIX_PLUS_RE.test(line)) stats.diffPlusHashPrefixCount++;\n\t\tif (DIFF_PLUS_RE.test(line)) stats.diffPlusCount++;\n\t}\n\treturn stats;\n}\n\n/**\n * Strip whichever prefix scheme the lines appear to be carrying:\n * - hashline line-number prefixes (`123:`) when every content line has one\n * - leading `+` (diff style) when at least half the lines have one\n * - mixed `+<n>:` form when present\n *\n * Returns the lines untouched if no scheme is recognized.\n */\nexport function stripNewLinePrefixes(lines: string[]): string[] {\n\tconst stats = collectLinePrefixStats(lines);\n\tif (stats.nonEmpty === 0) return lines;\n\n\tconst contentLineCount = stats.nonEmpty - stats.headerCount;\n\tconst stripHash = contentLineCount > 0 && stats.hashPrefixCount === contentLineCount;\n\tconst stripPlus =\n\t\t!stripHash &&\n\t\tstats.diffPlusHashPrefixCount === 0 &&\n\t\tstats.diffPlusCount > 0 &&\n\t\tstats.diffPlusCount >= stats.nonEmpty * 0.5;\n\n\tif (!stripHash && !stripPlus && stats.diffPlusHashPrefixCount === 0) return lines;\n\n\treturn lines\n\t\t.filter((line) => !READ_TRUNCATION_NOTICE_RE.test(line) && !(stripHash && HL_HEADER_RE.test(line)))\n\t\t.map((line) => {\n\t\t\tif (stripHash) return stripLeadingHashlinePrefixes(line);\n\t\t\tif (stripPlus) return line.replace(DIFF_PLUS_RE, \"\");\n\t\t\tif (stats.diffPlusHashPrefixCount > 0 && HL_PREFIX_PLUS_RE.test(line)) {\n\t\t\t\treturn line.replace(HL_PREFIX_RE, \"\");\n\t\t\t}\n\t\t\treturn line;\n\t\t});\n}\n\n/**\n * Strict variant: strip hashline prefixes only when every content line is\n * hashline-prefixed. Returns the lines unchanged otherwise.\n */\nexport function stripHashlinePrefixes(lines: string[]): string[] {\n\tconst stats = collectLinePrefixStats(lines);\n\tif (stats.nonEmpty === 0) return lines;\n\tconst contentLineCount = stats.nonEmpty - stats.headerCount;\n\tif (contentLineCount === 0 || stats.hashPrefixCount !== contentLineCount) return lines;\n\treturn lines\n\t\t.filter((line) => !READ_TRUNCATION_NOTICE_RE.test(line) && !HL_HEADER_RE.test(line))\n\t\t.map((line) => stripLeadingHashlinePrefixes(line));\n}\n\n/**\n * Normalize line payloads by stripping read/search line prefixes. `null` /\n * `undefined` yield `[]`; a single multiline string is split on `\\n`.\n */\nexport function hashlineParseText(edit: string[] | string | null | undefined): string[] {\n\tif (edit == null) return [];\n\tif (typeof edit === \"string\") {\n\t\tconst trimmed = edit.endsWith(\"\\n\") ? edit.slice(0, -1) : edit;\n\t\tedit = trimmed.replaceAll(\"\\r\", \"\").split(\"\\n\");\n\t}\n\treturn stripNewLinePrefixes(edit);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"recovery.d.ts","sourceRoot":"","sources":["../../../../src/core/tools/hashline-engine/recovery.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAY,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,KAAK,EAAuB,IAAI,EAAE,MAAM,YAAY,CAAC;AAO5D,MAAM,WAAW,YAAY;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,cAAc;IAC9B,0BAA0B;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,yFAAyF;IACzF,gBAAgB,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,qFAAqF;IACrF,QAAQ,EAAE,MAAM,EAAE,CAAC;CACnB;AAkHD;;;;;;;;;;;;;;GAcG;AACH,qBAAa,QAAQ;IACpB,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;IAC9B,YAAY,KAAK,EAAE,aAAa,EAAyB;IACzD;;;OAGG;IACH,UAAU,CAAC,IAAI,EAAE,YAAY,GAAG,cAAc,GAAG,IAAI,CAcpD;CACD"}
1
+ {"version":3,"file":"recovery.d.ts","sourceRoot":"","sources":["../../../../src/core/tools/hashline-engine/recovery.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAY,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,KAAK,EAAuB,IAAI,EAAE,MAAM,YAAY,CAAC;AAO5D,MAAM,WAAW,YAAY;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,cAAc;IAC9B,0BAA0B;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,yFAAyF;IACzF,gBAAgB,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,qFAAqF;IACrF,QAAQ,EAAE,MAAM,EAAE,CAAC;CACnB;AAkHD;;;;;;;;;;;;;;GAcG;AACH,qBAAa,QAAQ;IACpB,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;IAC9B,YAAY,KAAK,EAAE,aAAa,EAE/B;IACD;;;OAGG;IACH,UAAU,CAAC,IAAI,EAAE,YAAY,GAAG,cAAc,GAAG,IAAI,CAcpD;CACD"}
@@ -12,7 +12,7 @@
12
12
  */
13
13
  import * as Diff from "diff";
14
14
  import { applyEdits } from "./apply.js";
15
- import { RECOVERY_EXTERNAL_WARNING, RECOVERY_SESSION_CHAIN_WARNING, RECOVERY_SESSION_REPLAY_WARNING } from "./messages.js";
15
+ import { RECOVERY_EXTERNAL_WARNING, RECOVERY_SESSION_CHAIN_WARNING, RECOVERY_SESSION_REPLAY_WARNING, } from "./messages.js";
16
16
  // Section tags are line-precise; never let Diff.applyPatch slide a hunk
17
17
  // onto a duplicate closer 100+ lines away. If snapshot replay does not
18
18
  // align exactly, refuse and let the caller re-read.
@@ -141,7 +141,9 @@ function isHeadSnapshot(head, snapshot) {
141
141
  * can still land the edit on the wrong row; see {@link replaySessionChainOnCurrent}.
142
142
  */
143
143
  export class Recovery {
144
- constructor(store) { this.store = store; }
144
+ constructor(store) {
145
+ this.store = store;
146
+ }
145
147
  /**
146
148
  * Attempt recovery. Returns `null` when no path forward is found — the
147
149
  * caller should then surface a {@link MismatchError}.
@@ -1 +1 @@
1
- {"version":3,"file":"recovery.js","sourceRoot":"","sources":["../../../../src/core/tools/hashline-engine/recovery.ts"],"names":[],"mappings":"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","sourcesContent":["// @generated vendored verbatim from oh-my-pi packages/hashline @ 15b5c1397fc -- DO NOT EDIT.\n// Parity source for the Atomic hashline edit engine (issue #1483); adapted only for Atomic's Node runtime (relative imports, Bun->Node host calls, erasable constructor syntax).\n/**\n * Recover from a stale section snapshot tag by replaying the would-be edit\n * against a cached pre-edit snapshot of the file and 3-way-merging the\n * result onto the current on-disk content.\n *\n * The patcher consults this when a section tag resolves to a snapshot that no\n * longer matches the live file content. The recovery class is stateless apart\n * from the {@link SnapshotStore} it queries; the snapshot store is the seam\n * lets you plug in your own caching strategy.\n */\nimport * as Diff from \"diff\";\nimport { applyEdits } from \"./apply.js\";\nimport { RECOVERY_EXTERNAL_WARNING, RECOVERY_SESSION_CHAIN_WARNING, RECOVERY_SESSION_REPLAY_WARNING } from \"./messages.js\";\nimport type { Snapshot, SnapshotStore } from \"./snapshots.js\";\nimport type { Anchor, ApplyResult, Edit } from \"./types.js\";\n\n// Section tags are line-precise; never let Diff.applyPatch slide a hunk\n// onto a duplicate closer 100+ lines away. If snapshot replay does not\n// align exactly, refuse and let the caller re-read.\nconst RECOVERY_FUZZ_FACTOR = 0;\n\nexport interface RecoveryArgs {\n\tpath: string;\n\tcurrentText: string;\n\tfileHash: string;\n\tedits: readonly Edit[];\n}\n\nexport interface RecoveryResult {\n\t/** Post-recovery text. */\n\ttext: string;\n\t/** First changed line (1-indexed) relative to the live `currentText`, or `undefined`. */\n\tfirstChangedLine: number | undefined;\n\t/** Warnings collected during recovery, including the user-facing recovery banner. */\n\twarnings: string[];\n}\n\nfunction applyEditsToSnapshot(\n\tpreviousText: string,\n\tcurrentText: string,\n\tedits: readonly Edit[],\n\trecoveryWarning: string,\n): RecoveryResult | null {\n\tlet applied: ApplyResult;\n\ttry {\n\t\tapplied = applyEdits(previousText, [...edits]);\n\t} catch {\n\t\treturn null;\n\t}\n\tif (applied.text === previousText) return null;\n\n\tconst patch = Diff.structuredPatch(\"file\", \"file\", previousText, applied.text, \"\", \"\", { context: 3 });\n\tconst merged = Diff.applyPatch(currentText, patch, { fuzzFactor: RECOVERY_FUZZ_FACTOR });\n\tif (typeof merged !== \"string\" || merged === currentText) return null;\n\n\tconst firstChangedLine = findFirstChangedLine(currentText, merged) ?? applied.firstChangedLine;\n\tconst hasNetChange = firstChangedLine !== undefined;\n\tconst warnings = hasNetChange ? [recoveryWarning, ...(applied.warnings ?? [])] : [...(applied.warnings ?? [])];\n\n\treturn { text: merged, firstChangedLine, warnings };\n}\n\nfunction collectAnchorLines(edits: readonly Edit[]): number[] {\n\tconst lines: number[] = [];\n\tfor (const edit of edits) {\n\t\tfor (const anchor of getEditAnchors(edit)) lines.push(anchor.line);\n\t}\n\treturn lines;\n}\n\nfunction getEditAnchors(edit: Edit): Anchor[] {\n\tif (edit.kind === \"delete\") return [edit.anchor];\n\t// Recovery only ever receives already-resolved edits (no `block`); this arm\n\t// exists for type-exhaustiveness over the full `Edit` union.\n\tif (edit.kind === \"block\") return [edit.anchor];\n\treturn edit.cursor.kind === \"before_anchor\" || edit.cursor.kind === \"after_anchor\" ? [edit.cursor.anchor] : [];\n}\n\n/**\n * Returns true when every anchor line in `edits` has identical content in\n * `previousText` and `currentText`. The session-chain replay fast-path\n * requires this: if the prior in-session edit rewrote the line the model is\n * now re-targeting with a stale hash, replaying onto current would silently\n * overwrite the new content with whatever the model authored against the\n * old content — a corruption window, not a recovery.\n */\nfunction verifyAnchorContent(previousText: string, currentText: string, edits: readonly Edit[]): boolean {\n\tconst lines = collectAnchorLines(edits);\n\tif (lines.length === 0) return true;\n\tconst prev = previousText.split(\"\\n\");\n\tconst curr = currentText.split(\"\\n\");\n\tfor (const line of lines) {\n\t\tconst idx = line - 1;\n\t\tif (idx < 0 || idx >= prev.length || idx >= curr.length) return false;\n\t\tif (prev[idx] !== curr[idx]) return false;\n\t}\n\treturn true;\n}\n\nfunction replaySessionChainOnCurrent(\n\tpreviousText: string,\n\tcurrentText: string,\n\tedits: readonly Edit[],\n): RecoveryResult | null {\n\t// Two guards narrow the corruption window. Neither alone is sufficient,\n\t// and even together they don't fully prove correctness — replay is the\n\t// less-certain recovery mode and emits RECOVERY_SESSION_REPLAY_WARNING\n\t// so the caller can verify the diff.\n\t// - Equal line counts: every line number in `edits` still resolves to\n\t// SOME logical row (no net shift across the prior chain). A\n\t// coincidental insert+delete pair can still leave indices pointing\n\t// at different logical rows than the model anchored against.\n\t// - Anchor-content alignment: the row at each anchor's line index has\n\t// identical content in previous and current. Catches the common\n\t// case of a prior edit rewriting the targeted line; can still be\n\t// coincidentally satisfied by a duplicated row at the shifted\n\t// index.\n\tif (previousText.split(\"\\n\").length !== currentText.split(\"\\n\").length) return null;\n\tif (!verifyAnchorContent(previousText, currentText, edits)) return null;\n\tlet applied: ApplyResult;\n\ttry {\n\t\tapplied = applyEdits(currentText, [...edits]);\n\t} catch {\n\t\treturn null;\n\t}\n\tif (applied.text === currentText) return null;\n\treturn {\n\t\ttext: applied.text,\n\t\tfirstChangedLine: applied.firstChangedLine,\n\t\twarnings: [RECOVERY_SESSION_REPLAY_WARNING, ...(applied.warnings ?? [])],\n\t};\n}\n\n/** First 1-indexed line at which `a` and `b` diverge, or `undefined` if equal. */\nfunction findFirstChangedLine(a: string, b: string): number | undefined {\n\tif (a === b) return undefined;\n\tconst aLines = a.split(\"\\n\");\n\tconst bLines = b.split(\"\\n\");\n\tconst max = Math.max(aLines.length, bLines.length);\n\tfor (let i = 0; i < max; i++) {\n\t\tif (aLines[i] !== bLines[i]) return i + 1;\n\t}\n\treturn undefined;\n}\n\nfunction isHeadSnapshot(head: Snapshot | null, snapshot: Snapshot): boolean {\n\treturn head === snapshot;\n}\n\n/**\n * Stateless recovery driver over a {@link SnapshotStore}. Construct once and\n * call {@link Recovery.tryRecover} per stale-tag incident. The default\n * implementation tries two strategies in order:\n *\n * 1. Apply the edits on the full-file version the tag names, then 3-way-merge\n * the resulting patch onto the live content (handles external writes).\n * 2. (Session chain) If that version wasn't the head, replay the edits onto\n * the live content directly when line counts match AND every edit's anchor\n * line content is unchanged between version and current — a prior in-session\n * edit advanced the tag and the model's anchors still name the same logical\n * rows. Emits a dedicated {@link RECOVERY_SESSION_REPLAY_WARNING} because\n * even with both guards a coincidental insert+delete pair on duplicate rows\n * can still land the edit on the wrong row; see {@link replaySessionChainOnCurrent}.\n */\nexport class Recovery {\n\treadonly store: SnapshotStore;\n\tconstructor(store: SnapshotStore) { this.store = store; }\n\t/**\n\t * Attempt recovery. Returns `null` when no path forward is found — the\n\t * caller should then surface a {@link MismatchError}.\n\t */\n\ttryRecover(args: RecoveryArgs): RecoveryResult | null {\n\t\tconst { path, currentText, fileHash, edits } = args;\n\t\tconst snapshot = this.store.byHash(path, fileHash);\n\t\tif (!snapshot) return null;\n\t\tconst isHead = isHeadSnapshot(this.store.head(path), snapshot);\n\t\tconst recoveryWarning = isHead ? RECOVERY_EXTERNAL_WARNING : RECOVERY_SESSION_CHAIN_WARNING;\n\t\tconst merged = applyEditsToSnapshot(snapshot.text, currentText, edits, recoveryWarning);\n\t\tif (merged !== null) return merged;\n\t\t// Session-chain fallback: the 3-way merge on the version refused.\n\t\t// Replay onto current is gated by line-count equality AND\n\t\t// anchor-content alignment — see `replaySessionChainOnCurrent`\n\t\t// for why both guards together still don't fully prove correctness.\n\t\tif (!isHead) return replaySessionChainOnCurrent(snapshot.text, currentText, edits);\n\t\treturn null;\n\t}\n}\n"]}
1
+ {"version":3,"file":"recovery.js","sourceRoot":"","sources":["../../../../src/core/tools/hashline-engine/recovery.ts"],"names":[],"mappings":"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","sourcesContent":["// @generated vendored verbatim from oh-my-pi packages/hashline @ 15b5c1397fc -- DO NOT EDIT.\n// Parity source for the Atomic hashline edit engine (issue #1483); adapted only for Atomic's Node runtime (relative imports, Bun->Node host calls, erasable constructor syntax).\n/**\n * Recover from a stale section snapshot tag by replaying the would-be edit\n * against a cached pre-edit snapshot of the file and 3-way-merging the\n * result onto the current on-disk content.\n *\n * The patcher consults this when a section tag resolves to a snapshot that no\n * longer matches the live file content. The recovery class is stateless apart\n * from the {@link SnapshotStore} it queries; the snapshot store is the seam\n * lets you plug in your own caching strategy.\n */\nimport * as Diff from \"diff\";\nimport { applyEdits } from \"./apply.js\";\nimport {\n\tRECOVERY_EXTERNAL_WARNING,\n\tRECOVERY_SESSION_CHAIN_WARNING,\n\tRECOVERY_SESSION_REPLAY_WARNING,\n} from \"./messages.js\";\nimport type { Snapshot, SnapshotStore } from \"./snapshots.js\";\nimport type { Anchor, ApplyResult, Edit } from \"./types.js\";\n\n// Section tags are line-precise; never let Diff.applyPatch slide a hunk\n// onto a duplicate closer 100+ lines away. If snapshot replay does not\n// align exactly, refuse and let the caller re-read.\nconst RECOVERY_FUZZ_FACTOR = 0;\n\nexport interface RecoveryArgs {\n\tpath: string;\n\tcurrentText: string;\n\tfileHash: string;\n\tedits: readonly Edit[];\n}\n\nexport interface RecoveryResult {\n\t/** Post-recovery text. */\n\ttext: string;\n\t/** First changed line (1-indexed) relative to the live `currentText`, or `undefined`. */\n\tfirstChangedLine: number | undefined;\n\t/** Warnings collected during recovery, including the user-facing recovery banner. */\n\twarnings: string[];\n}\n\nfunction applyEditsToSnapshot(\n\tpreviousText: string,\n\tcurrentText: string,\n\tedits: readonly Edit[],\n\trecoveryWarning: string,\n): RecoveryResult | null {\n\tlet applied: ApplyResult;\n\ttry {\n\t\tapplied = applyEdits(previousText, [...edits]);\n\t} catch {\n\t\treturn null;\n\t}\n\tif (applied.text === previousText) return null;\n\n\tconst patch = Diff.structuredPatch(\"file\", \"file\", previousText, applied.text, \"\", \"\", { context: 3 });\n\tconst merged = Diff.applyPatch(currentText, patch, { fuzzFactor: RECOVERY_FUZZ_FACTOR });\n\tif (typeof merged !== \"string\" || merged === currentText) return null;\n\n\tconst firstChangedLine = findFirstChangedLine(currentText, merged) ?? applied.firstChangedLine;\n\tconst hasNetChange = firstChangedLine !== undefined;\n\tconst warnings = hasNetChange ? [recoveryWarning, ...(applied.warnings ?? [])] : [...(applied.warnings ?? [])];\n\n\treturn { text: merged, firstChangedLine, warnings };\n}\n\nfunction collectAnchorLines(edits: readonly Edit[]): number[] {\n\tconst lines: number[] = [];\n\tfor (const edit of edits) {\n\t\tfor (const anchor of getEditAnchors(edit)) lines.push(anchor.line);\n\t}\n\treturn lines;\n}\n\nfunction getEditAnchors(edit: Edit): Anchor[] {\n\tif (edit.kind === \"delete\") return [edit.anchor];\n\t// Recovery only ever receives already-resolved edits (no `block`); this arm\n\t// exists for type-exhaustiveness over the full `Edit` union.\n\tif (edit.kind === \"block\") return [edit.anchor];\n\treturn edit.cursor.kind === \"before_anchor\" || edit.cursor.kind === \"after_anchor\" ? [edit.cursor.anchor] : [];\n}\n\n/**\n * Returns true when every anchor line in `edits` has identical content in\n * `previousText` and `currentText`. The session-chain replay fast-path\n * requires this: if the prior in-session edit rewrote the line the model is\n * now re-targeting with a stale hash, replaying onto current would silently\n * overwrite the new content with whatever the model authored against the\n * old content — a corruption window, not a recovery.\n */\nfunction verifyAnchorContent(previousText: string, currentText: string, edits: readonly Edit[]): boolean {\n\tconst lines = collectAnchorLines(edits);\n\tif (lines.length === 0) return true;\n\tconst prev = previousText.split(\"\\n\");\n\tconst curr = currentText.split(\"\\n\");\n\tfor (const line of lines) {\n\t\tconst idx = line - 1;\n\t\tif (idx < 0 || idx >= prev.length || idx >= curr.length) return false;\n\t\tif (prev[idx] !== curr[idx]) return false;\n\t}\n\treturn true;\n}\n\nfunction replaySessionChainOnCurrent(\n\tpreviousText: string,\n\tcurrentText: string,\n\tedits: readonly Edit[],\n): RecoveryResult | null {\n\t// Two guards narrow the corruption window. Neither alone is sufficient,\n\t// and even together they don't fully prove correctness — replay is the\n\t// less-certain recovery mode and emits RECOVERY_SESSION_REPLAY_WARNING\n\t// so the caller can verify the diff.\n\t// - Equal line counts: every line number in `edits` still resolves to\n\t// SOME logical row (no net shift across the prior chain). A\n\t// coincidental insert+delete pair can still leave indices pointing\n\t// at different logical rows than the model anchored against.\n\t// - Anchor-content alignment: the row at each anchor's line index has\n\t// identical content in previous and current. Catches the common\n\t// case of a prior edit rewriting the targeted line; can still be\n\t// coincidentally satisfied by a duplicated row at the shifted\n\t// index.\n\tif (previousText.split(\"\\n\").length !== currentText.split(\"\\n\").length) return null;\n\tif (!verifyAnchorContent(previousText, currentText, edits)) return null;\n\tlet applied: ApplyResult;\n\ttry {\n\t\tapplied = applyEdits(currentText, [...edits]);\n\t} catch {\n\t\treturn null;\n\t}\n\tif (applied.text === currentText) return null;\n\treturn {\n\t\ttext: applied.text,\n\t\tfirstChangedLine: applied.firstChangedLine,\n\t\twarnings: [RECOVERY_SESSION_REPLAY_WARNING, ...(applied.warnings ?? [])],\n\t};\n}\n\n/** First 1-indexed line at which `a` and `b` diverge, or `undefined` if equal. */\nfunction findFirstChangedLine(a: string, b: string): number | undefined {\n\tif (a === b) return undefined;\n\tconst aLines = a.split(\"\\n\");\n\tconst bLines = b.split(\"\\n\");\n\tconst max = Math.max(aLines.length, bLines.length);\n\tfor (let i = 0; i < max; i++) {\n\t\tif (aLines[i] !== bLines[i]) return i + 1;\n\t}\n\treturn undefined;\n}\n\nfunction isHeadSnapshot(head: Snapshot | null, snapshot: Snapshot): boolean {\n\treturn head === snapshot;\n}\n\n/**\n * Stateless recovery driver over a {@link SnapshotStore}. Construct once and\n * call {@link Recovery.tryRecover} per stale-tag incident. The default\n * implementation tries two strategies in order:\n *\n * 1. Apply the edits on the full-file version the tag names, then 3-way-merge\n * the resulting patch onto the live content (handles external writes).\n * 2. (Session chain) If that version wasn't the head, replay the edits onto\n * the live content directly when line counts match AND every edit's anchor\n * line content is unchanged between version and current — a prior in-session\n * edit advanced the tag and the model's anchors still name the same logical\n * rows. Emits a dedicated {@link RECOVERY_SESSION_REPLAY_WARNING} because\n * even with both guards a coincidental insert+delete pair on duplicate rows\n * can still land the edit on the wrong row; see {@link replaySessionChainOnCurrent}.\n */\nexport class Recovery {\n\treadonly store: SnapshotStore;\n\tconstructor(store: SnapshotStore) {\n\t\tthis.store = store;\n\t}\n\t/**\n\t * Attempt recovery. Returns `null` when no path forward is found — the\n\t * caller should then surface a {@link MismatchError}.\n\t */\n\ttryRecover(args: RecoveryArgs): RecoveryResult | null {\n\t\tconst { path, currentText, fileHash, edits } = args;\n\t\tconst snapshot = this.store.byHash(path, fileHash);\n\t\tif (!snapshot) return null;\n\t\tconst isHead = isHeadSnapshot(this.store.head(path), snapshot);\n\t\tconst recoveryWarning = isHead ? RECOVERY_EXTERNAL_WARNING : RECOVERY_SESSION_CHAIN_WARNING;\n\t\tconst merged = applyEditsToSnapshot(snapshot.text, currentText, edits, recoveryWarning);\n\t\tif (merged !== null) return merged;\n\t\t// Session-chain fallback: the 3-way merge on the version refused.\n\t\t// Replay onto current is gated by line-count equality AND\n\t\t// anchor-content alignment — see `replaySessionChainOnCurrent`\n\t\t// for why both guards together still don't fully prove correctness.\n\t\tif (!isHead) return replaySessionChainOnCurrent(snapshot.text, currentText, edits);\n\t\treturn null;\n\t}\n}\n"]}
@@ -57,7 +57,7 @@ export class InMemorySnapshotStore extends SnapshotStore {
57
57
  this.#versions = new LRUCache({
58
58
  max: options.maxPaths ?? DEFAULT_MAX_PATHS,
59
59
  maxSize: options.maxTotalBytes ?? DEFAULT_MAX_TOTAL_BYTES,
60
- sizeCalculation: history => {
60
+ sizeCalculation: (history) => {
61
61
  let total = 1;
62
62
  for (const version of history)
63
63
  total += version.text.length;
@@ -70,19 +70,19 @@ export class InMemorySnapshotStore extends SnapshotStore {
70
70
  return this.#versions.get(path)?.[0] ?? null;
71
71
  }
72
72
  byHash(path, hash) {
73
- const matches = this.#versions.get(path)?.filter(version => version.hash === hash) ?? [];
73
+ const matches = this.#versions.get(path)?.filter((version) => version.hash === hash) ?? [];
74
74
  // A 4-hex tag can collide. Recovery only proceeds when the tag maps to a
75
75
  // single retained snapshot; otherwise the caller must re-read.
76
76
  return matches.length === 1 ? matches[0] : null;
77
77
  }
78
78
  byHashAndText(path, hash, text) {
79
- return this.#versions.get(path)?.find(version => version.hash === hash && version.text === text) ?? null;
79
+ return this.#versions.get(path)?.find((version) => version.hash === hash && version.text === text) ?? null;
80
80
  }
81
81
  record(path, fullText) {
82
82
  const hash = computeFileHash(fullText);
83
83
  // `get` refreshes LRU recency for `path`.
84
84
  const history = this.#versions.get(path) ?? [];
85
- const existing = history.find(version => version.hash === hash && version.text === fullText);
85
+ const existing = history.find((version) => version.hash === hash && version.text === fullText);
86
86
  if (existing) {
87
87
  // Same content state observed again: refresh recency and promote to
88
88
  // head (it is the current file content), then reuse the tag. Hash
@@ -90,7 +90,7 @@ export class InMemorySnapshotStore extends SnapshotStore {
90
90
  // snapshots; the 4-hex tag is only a lookup key, not proof of identity.
91
91
  existing.recordedAt = Date.now();
92
92
  if (history[0] !== existing) {
93
- this.#versions.set(path, [existing, ...history.filter(version => version !== existing)]);
93
+ this.#versions.set(path, [existing, ...history.filter((version) => version !== existing)]);
94
94
  }
95
95
  return hash;
96
96
  }
@@ -1 +1 @@
1
- {"version":3,"file":"snapshots.js","sourceRoot":"","sources":["../../../../src/core/tools/hashline-engine/snapshots.ts"],"names":[],"mappings":"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","sourcesContent":["// @generated vendored verbatim from oh-my-pi packages/hashline @ 15b5c1397fc -- DO NOT EDIT.\n// Parity source for the Atomic hashline edit engine (issue #1483); adapted only for Atomic's Node runtime (relative imports, Bun->Node host calls, erasable constructor syntax).\n/**\n * Per-session snapshot store used by {@link Recovery} and {@link Patcher} to\n * bind hashline section tags to the exact file content that minted them.\n *\n * A section tag is a content-derived hash of the *whole file* (see\n * {@link computeFileHash}). Any read of byte-identical content mints the same\n * tag, so reads of one file state fuse onto one anchor and a follow-up edit\n * anchored at any line validates whenever the live file still hashes to it.\n *\n * Producers (typically `read` / `search` / `write` tools) call\n * {@link SnapshotStore.record} with the full normalized text they observed.\n * The store hashes it, dedups against the per-path history, and returns the\n * tag. Consumers (the patcher) resolve an unambiguous stale tag back to the\n * recorded full text via {@link SnapshotStore.byHash} and 3-way-merge the\n * would-be edit onto the live content.\n *\n * The abstract base class lets callers plug in whatever storage they like\n * (LRU, persistent SQLite, etc.). {@link InMemorySnapshotStore} ships as a\n * sensible default backed by `lru-cache`: a bounded set of paths, each with a\n * short history of full-file versions so in-session edit chains can still\n * recover against the version a stale tag names.\n */\nimport { LRUCache } from \"lru-cache/raw\";\nimport { computeFileHash } from \"./format.js\";\n\n/**\n * One full-file version observed at a point in time. The tag the model sees is\n * {@link Snapshot.hash}; recovery replays edits against {@link Snapshot.text}.\n */\nexport interface Snapshot {\n\t/** Canonical path this version belongs to. */\n\treadonly path: string;\n\t/** Full normalized (LF, no BOM) file text as observed. */\n\treadonly text: string;\n\t/** Content-derived tag for {@link Snapshot.text} (see {@link computeFileHash}). */\n\treadonly hash: string;\n\t/** Timestamp (ms since epoch) the version was recorded. */\n\trecordedAt: number;\n}\n\n/**\n * Storage seam for full-file version snapshots. The patcher calls {@link head}\n * for the latest version of a path and {@link byHash} when it needs the\n * specific historical version a section's stale tag names.\n */\nexport abstract class SnapshotStore {\n\t/** Most-recently recorded version for `path`, or `null` if none. */\n\tabstract head(path: string): Snapshot | null;\n\n\t/** Recorded unambiguous version for `path` whose tag equals `hash`, or `null`. */\n\tabstract byHash(path: string, hash: string): Snapshot | null;\n\n\t/** Recorded version for `path` whose tag and full text both match, or `null`. */\n\tbyHashAndText(path: string, hash: string, text: string): Snapshot | null {\n\t\tconst snapshot = this.byHash(path, hash);\n\t\treturn snapshot?.text === text ? snapshot : null;\n\t}\n\n\t/** Record the full normalized text of `path` and return its content tag. */\n\tabstract record(path: string, fullText: string): string;\n\n\t/** Drop the version history for a single path. */\n\tabstract invalidate(path: string): void;\n\n\t/** Drop every version history. */\n\tabstract clear(): void;\n}\n\nconst DEFAULT_MAX_PATHS = 30;\nconst DEFAULT_MAX_VERSIONS_PER_PATH = 4;\n/** Global ceiling on retained snapshot text across all paths (UTF-16 code units). */\nconst DEFAULT_MAX_TOTAL_BYTES = 64 * 1024 * 1024;\n\nexport interface InMemorySnapshotStoreOptions {\n\t/** Maximum number of distinct paths tracked at once (default 30). LRU eviction. */\n\tmaxPaths?: number;\n\t/** Maximum full-file versions retained per path (default 4). Oldest dropped first. */\n\tmaxVersionsPerPath?: number;\n\t/**\n\t * Global ceiling on retained snapshot text summed across every path's\n\t * version history, measured in UTF-16 code units (default 64 MiB).\n\t * Least-recently-used path histories are evicted to stay under it.\n\t */\n\tmaxTotalBytes?: number;\n}\n\n/**\n * In-memory {@link SnapshotStore} backed by `lru-cache`. Per-path history is a\n * short ring of full-file versions (oldest dropped first); per-session path\n * tracking is LRU-bounded so cold paths age out automatically.\n *\n * Recording byte-identical content again refreshes recency and reuses the\n * existing tag (read fusion); recording new content unshifts a fresh version\n * onto the front of the path history.\n */\nexport class InMemorySnapshotStore extends SnapshotStore {\n\treadonly #versions: LRUCache<string, Snapshot[]>;\n\treadonly #maxVersionsPerPath: number;\n\n\tconstructor(options: InMemorySnapshotStoreOptions = {}) {\n\t\tsuper();\n\t\tthis.#versions = new LRUCache<string, Snapshot[]>({\n\t\t\tmax: options.maxPaths ?? DEFAULT_MAX_PATHS,\n\t\t\tmaxSize: options.maxTotalBytes ?? DEFAULT_MAX_TOTAL_BYTES,\n\t\t\tsizeCalculation: history => {\n\t\t\t\tlet total = 1;\n\t\t\t\tfor (const version of history) total += version.text.length;\n\t\t\t\treturn total;\n\t\t\t},\n\t\t});\n\t\tthis.#maxVersionsPerPath = options.maxVersionsPerPath ?? DEFAULT_MAX_VERSIONS_PER_PATH;\n\t}\n\n\thead(path: string): Snapshot | null {\n\t\treturn this.#versions.get(path)?.[0] ?? null;\n\t}\n\n\tbyHash(path: string, hash: string): Snapshot | null {\n\t\tconst matches = this.#versions.get(path)?.filter(version => version.hash === hash) ?? [];\n\t\t// A 4-hex tag can collide. Recovery only proceeds when the tag maps to a\n\t\t// single retained snapshot; otherwise the caller must re-read.\n\t\treturn matches.length === 1 ? matches[0]! : null;\n\t}\n\n\toverride byHashAndText(path: string, hash: string, text: string): Snapshot | null {\n\t\treturn this.#versions.get(path)?.find(version => version.hash === hash && version.text === text) ?? null;\n\t}\n\n\trecord(path: string, fullText: string): string {\n\t\tconst hash = computeFileHash(fullText);\n\t\t// `get` refreshes LRU recency for `path`.\n\t\tconst history = this.#versions.get(path) ?? [];\n\t\tconst existing = history.find(version => version.hash === hash && version.text === fullText);\n\t\tif (existing) {\n\t\t\t// Same content state observed again: refresh recency and promote to\n\t\t\t// head (it is the current file content), then reuse the tag. Hash\n\t\t\t// collisions with different text must be retained as distinct\n\t\t\t// snapshots; the 4-hex tag is only a lookup key, not proof of identity.\n\t\t\texisting.recordedAt = Date.now();\n\t\t\tif (history[0] !== existing) {\n\t\t\t\tthis.#versions.set(path, [existing, ...history.filter(version => version !== existing)]);\n\t\t\t}\n\t\t\treturn hash;\n\t\t}\n\n\t\tconst snapshot: Snapshot = { path, text: fullText, hash, recordedAt: Date.now() };\n\t\tthis.#versions.set(path, [snapshot, ...history].slice(0, this.#maxVersionsPerPath));\n\t\treturn hash;\n\t}\n\n\tinvalidate(path: string): void {\n\t\tthis.#versions.delete(path);\n\t}\n\n\tclear(): void {\n\t\tthis.#versions.clear();\n\t}\n}\n"]}
1
+ {"version":3,"file":"snapshots.js","sourceRoot":"","sources":["../../../../src/core/tools/hashline-engine/snapshots.ts"],"names":[],"mappings":"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","sourcesContent":["// @generated vendored verbatim from oh-my-pi packages/hashline @ 15b5c1397fc -- DO NOT EDIT.\n// Parity source for the Atomic hashline edit engine (issue #1483); adapted only for Atomic's Node runtime (relative imports, Bun->Node host calls, erasable constructor syntax).\n/**\n * Per-session snapshot store used by {@link Recovery} and {@link Patcher} to\n * bind hashline section tags to the exact file content that minted them.\n *\n * A section tag is a content-derived hash of the *whole file* (see\n * {@link computeFileHash}). Any read of byte-identical content mints the same\n * tag, so reads of one file state fuse onto one anchor and a follow-up edit\n * anchored at any line validates whenever the live file still hashes to it.\n *\n * Producers (typically `read` / `search` / `write` tools) call\n * {@link SnapshotStore.record} with the full normalized text they observed.\n * The store hashes it, dedups against the per-path history, and returns the\n * tag. Consumers (the patcher) resolve an unambiguous stale tag back to the\n * recorded full text via {@link SnapshotStore.byHash} and 3-way-merge the\n * would-be edit onto the live content.\n *\n * The abstract base class lets callers plug in whatever storage they like\n * (LRU, persistent SQLite, etc.). {@link InMemorySnapshotStore} ships as a\n * sensible default backed by `lru-cache`: a bounded set of paths, each with a\n * short history of full-file versions so in-session edit chains can still\n * recover against the version a stale tag names.\n */\nimport { LRUCache } from \"lru-cache/raw\";\nimport { computeFileHash } from \"./format.js\";\n\n/**\n * One full-file version observed at a point in time. The tag the model sees is\n * {@link Snapshot.hash}; recovery replays edits against {@link Snapshot.text}.\n */\nexport interface Snapshot {\n\t/** Canonical path this version belongs to. */\n\treadonly path: string;\n\t/** Full normalized (LF, no BOM) file text as observed. */\n\treadonly text: string;\n\t/** Content-derived tag for {@link Snapshot.text} (see {@link computeFileHash}). */\n\treadonly hash: string;\n\t/** Timestamp (ms since epoch) the version was recorded. */\n\trecordedAt: number;\n}\n\n/**\n * Storage seam for full-file version snapshots. The patcher calls {@link head}\n * for the latest version of a path and {@link byHash} when it needs the\n * specific historical version a section's stale tag names.\n */\nexport abstract class SnapshotStore {\n\t/** Most-recently recorded version for `path`, or `null` if none. */\n\tabstract head(path: string): Snapshot | null;\n\n\t/** Recorded unambiguous version for `path` whose tag equals `hash`, or `null`. */\n\tabstract byHash(path: string, hash: string): Snapshot | null;\n\n\t/** Recorded version for `path` whose tag and full text both match, or `null`. */\n\tbyHashAndText(path: string, hash: string, text: string): Snapshot | null {\n\t\tconst snapshot = this.byHash(path, hash);\n\t\treturn snapshot?.text === text ? snapshot : null;\n\t}\n\n\t/** Record the full normalized text of `path` and return its content tag. */\n\tabstract record(path: string, fullText: string): string;\n\n\t/** Drop the version history for a single path. */\n\tabstract invalidate(path: string): void;\n\n\t/** Drop every version history. */\n\tabstract clear(): void;\n}\n\nconst DEFAULT_MAX_PATHS = 30;\nconst DEFAULT_MAX_VERSIONS_PER_PATH = 4;\n/** Global ceiling on retained snapshot text across all paths (UTF-16 code units). */\nconst DEFAULT_MAX_TOTAL_BYTES = 64 * 1024 * 1024;\n\nexport interface InMemorySnapshotStoreOptions {\n\t/** Maximum number of distinct paths tracked at once (default 30). LRU eviction. */\n\tmaxPaths?: number;\n\t/** Maximum full-file versions retained per path (default 4). Oldest dropped first. */\n\tmaxVersionsPerPath?: number;\n\t/**\n\t * Global ceiling on retained snapshot text summed across every path's\n\t * version history, measured in UTF-16 code units (default 64 MiB).\n\t * Least-recently-used path histories are evicted to stay under it.\n\t */\n\tmaxTotalBytes?: number;\n}\n\n/**\n * In-memory {@link SnapshotStore} backed by `lru-cache`. Per-path history is a\n * short ring of full-file versions (oldest dropped first); per-session path\n * tracking is LRU-bounded so cold paths age out automatically.\n *\n * Recording byte-identical content again refreshes recency and reuses the\n * existing tag (read fusion); recording new content unshifts a fresh version\n * onto the front of the path history.\n */\nexport class InMemorySnapshotStore extends SnapshotStore {\n\treadonly #versions: LRUCache<string, Snapshot[]>;\n\treadonly #maxVersionsPerPath: number;\n\n\tconstructor(options: InMemorySnapshotStoreOptions = {}) {\n\t\tsuper();\n\t\tthis.#versions = new LRUCache<string, Snapshot[]>({\n\t\t\tmax: options.maxPaths ?? DEFAULT_MAX_PATHS,\n\t\t\tmaxSize: options.maxTotalBytes ?? DEFAULT_MAX_TOTAL_BYTES,\n\t\t\tsizeCalculation: (history) => {\n\t\t\t\tlet total = 1;\n\t\t\t\tfor (const version of history) total += version.text.length;\n\t\t\t\treturn total;\n\t\t\t},\n\t\t});\n\t\tthis.#maxVersionsPerPath = options.maxVersionsPerPath ?? DEFAULT_MAX_VERSIONS_PER_PATH;\n\t}\n\n\thead(path: string): Snapshot | null {\n\t\treturn this.#versions.get(path)?.[0] ?? null;\n\t}\n\n\tbyHash(path: string, hash: string): Snapshot | null {\n\t\tconst matches = this.#versions.get(path)?.filter((version) => version.hash === hash) ?? [];\n\t\t// A 4-hex tag can collide. Recovery only proceeds when the tag maps to a\n\t\t// single retained snapshot; otherwise the caller must re-read.\n\t\treturn matches.length === 1 ? matches[0]! : null;\n\t}\n\n\toverride byHashAndText(path: string, hash: string, text: string): Snapshot | null {\n\t\treturn this.#versions.get(path)?.find((version) => version.hash === hash && version.text === text) ?? null;\n\t}\n\n\trecord(path: string, fullText: string): string {\n\t\tconst hash = computeFileHash(fullText);\n\t\t// `get` refreshes LRU recency for `path`.\n\t\tconst history = this.#versions.get(path) ?? [];\n\t\tconst existing = history.find((version) => version.hash === hash && version.text === fullText);\n\t\tif (existing) {\n\t\t\t// Same content state observed again: refresh recency and promote to\n\t\t\t// head (it is the current file content), then reuse the tag. Hash\n\t\t\t// collisions with different text must be retained as distinct\n\t\t\t// snapshots; the 4-hex tag is only a lookup key, not proof of identity.\n\t\t\texisting.recordedAt = Date.now();\n\t\t\tif (history[0] !== existing) {\n\t\t\t\tthis.#versions.set(path, [existing, ...history.filter((version) => version !== existing)]);\n\t\t\t}\n\t\t\treturn hash;\n\t\t}\n\n\t\tconst snapshot: Snapshot = { path, text: fullText, hash, recordedAt: Date.now() };\n\t\tthis.#versions.set(path, [snapshot, ...history].slice(0, this.#maxVersionsPerPath));\n\t\treturn hash;\n\t}\n\n\tinvalidate(path: string): void {\n\t\tthis.#versions.delete(path);\n\t}\n\n\tclear(): void {\n\t\tthis.#versions.clear();\n\t}\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"hashline.d.ts","sourceRoot":"","sources":["../../../src/core/tools/hashline.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqF,KAAK,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAGnJ,MAAM,WAAW,gBAAgB;IAChC,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,qBAAqB;IACrC,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC;IAClC,MAAM,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,gBAAgB,CAAC;IAC7E,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS,CAAC;CAC7E;AAMD,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAI7E;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED,wBAAgB,2BAA2B,IAAI,qBAAqB,CAkBnE;AAED,wBAAgB,sBAAsB,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,qBAAqB,GAAG,gBAAgB,CAEzI;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,gBAAgB,EAAE,OAAO,SAAmB,EAAE,SAAS,SAAI,GAAG,MAAM,CAEnH;AAED,MAAM,WAAW,uBAAuB;IAAG,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE;AAE/E,wBAAgB,uCAAuC,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,qBAAqB,GAAG,uBAAuB,CAoDnK;AAED,wBAAgB,+BAA+B,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,qBAAqB,GAAG,MAAM,CAExI;AAED,wBAAgB,+BAA+B,CAAC,QAAQ,EAAE,gBAAgB,EAAE,IAAI,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,QAAQ,GAAE,SAAS,MAAM,EAAO,GAAG,MAAM,CAExK"}
1
+ {"version":3,"file":"hashline.d.ts","sourceRoot":"","sources":["../../../src/core/tools/hashline.ts"],"names":[],"mappings":"AACA,OAAO,EAKN,KAAK,aAAa,EAClB,MAAM,4BAA4B,CAAC;AAEpC,MAAM,WAAW,gBAAgB;IAChC,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,qBAAqB;IACrC,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC;IAClC,MAAM,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,gBAAgB,CAAC;IAC7E,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS,CAAC;CAC7E;AAMD,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAI7E;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAKhE;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED,wBAAgB,2BAA2B,IAAI,qBAAqB,CAkBnE;AAED,wBAAgB,sBAAsB,CACrC,YAAY,EAAE,MAAM,EACpB,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,qBAAqB,GAC1B,gBAAgB,CAElB;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,gBAAgB,EAAE,OAAO,SAAmB,EAAE,SAAS,SAAI,GAAG,MAAM,CAKnH;AAED,MAAM,WAAW,uBAAuB;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;CAClB;AAED,wBAAgB,uCAAuC,CACtD,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,MAAM,EACrB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,qBAAqB,GAC1B,uBAAuB,CAwDzB;AAED,wBAAgB,+BAA+B,CAC9C,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,qBAAqB,GAC1B,MAAM,CAER;AAED,wBAAgB,+BAA+B,CAC9C,QAAQ,EAAE,gBAAgB,EAC1B,IAAI,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAAE,EAClD,QAAQ,GAAE,SAAS,MAAM,EAAO,GAC9B,MAAM,CAMR"}
@@ -1,5 +1,5 @@
1
- import { computeFileHash, formatHashlineHeader, formatNumberedLines, InMemorySnapshotStore } from "./hashline-engine/index.js";
2
1
  import { isAbsolute, normalize as normalizePath, relative, sep } from "node:path";
2
+ import { computeFileHash, formatHashlineHeader, formatNumberedLines, InMemorySnapshotStore, } from "./hashline-engine/index.js";
3
3
  function toPosixPath(filePath) {
4
4
  return filePath.split(sep).join("/");
5
5
  }
@@ -10,7 +10,10 @@ export function hashlineDisplayPath(absolutePath, cwd) {
10
10
  return toPosixPath(absolutePath);
11
11
  }
12
12
  export function normalizeHashlineContent(content) {
13
- return content.replace(/^\uFEFF/, "").replace(/\r\n/g, "\n").replace(/\r/g, "\n");
13
+ return content
14
+ .replace(/^\uFEFF/, "")
15
+ .replace(/\r\n/g, "\n")
16
+ .replace(/\r/g, "\n");
14
17
  }
15
18
  export function computeHashlineTag(content) {
16
19
  return computeFileHash(normalizeHashlineContent(content));
@@ -38,12 +41,16 @@ export function recordHashlineSnapshot(absolutePath, cwd, content, store) {
38
41
  return store.record(absolutePath, cwd, content);
39
42
  }
40
43
  export function formatHashlineContent(snapshot, content = snapshot.content, startLine = 1) {
41
- return [formatHashlineHeader(snapshot.displayPath, snapshot.tag), formatNumberedLines(normalizeHashlineContent(content), startLine)].join("\n");
44
+ return [
45
+ formatHashlineHeader(snapshot.displayPath, snapshot.tag),
46
+ formatNumberedLines(normalizeHashlineContent(content), startLine),
47
+ ].join("\n");
42
48
  }
43
49
  export function stripKnownHashlineCopiedContentWithMeta(content, _absolutePath, _cwd, store) {
44
50
  const normalized = normalizeHashlineContent(content);
45
51
  const lines = normalized.split("\n");
46
- const headerIndex = lines.findIndex((line, index) => /^\[[^\]\n]+#[0-9A-Fa-f]{4}\]$/.test(line) && lines.slice(0, index).every((prefix) => prefix.trim() === "" || /^#\s+.+\/?$/.test(prefix)));
52
+ const headerIndex = lines.findIndex((line, index) => /^\[[^\]\n]+#[0-9A-Fa-f]{4}\]$/.test(line) &&
53
+ lines.slice(0, index).every((prefix) => prefix.trim() === "" || /^#\s+.+\/?$/.test(prefix)));
47
54
  if (headerIndex < 0)
48
55
  return { content, stripped: false };
49
56
  const header = (lines[headerIndex] ?? "").match(/^\[([^\]\n]+)#([0-9A-Fa-f]{4})\]$/);
@@ -64,14 +71,14 @@ export function stripKnownHashlineCopiedContentWithMeta(content, _absolutePath,
64
71
  // note), and `Resolved …` conflict footers. These never carry a line
65
72
  // number, so they mark the end of the numbered body — they must not abort
66
73
  // stripping the way an arbitrary non-row line would.
67
- const isToolFooter = (line) => line.trim() === ""
68
- || /^\[\d+ more lines in file\./.test(line)
69
- || /^\[Showing lines /.test(line)
70
- || /^Successfully wrote \d+ bytes to /.test(line)
71
- || /^Resolved \d+ conflicts?/.test(line)
72
- || /^Resolved conflict \d+/.test(line)
73
- || /^Note: stripped copied hashline/.test(line)
74
- || /^\[[^\]\n]+#[0-9A-Fa-f]{4}\]$/.test(line);
74
+ const isToolFooter = (line) => line.trim() === "" ||
75
+ /^\[\d+ more lines in file\./.test(line) ||
76
+ /^\[Showing lines /.test(line) ||
77
+ /^Successfully wrote \d+ bytes to /.test(line) ||
78
+ /^Resolved \d+ conflicts?/.test(line) ||
79
+ /^Resolved conflict \d+/.test(line) ||
80
+ /^Note: stripped copied hashline/.test(line) ||
81
+ /^\[[^\]\n]+#[0-9A-Fa-f]{4}\]$/.test(line);
75
82
  let onlyFooter = true;
76
83
  for (const line of body) {
77
84
  if (isToolFooter(line)) {
@@ -105,6 +112,10 @@ export function stripKnownHashlineCopiedContent(content, absolutePath, cwd, stor
105
112
  return stripKnownHashlineCopiedContentWithMeta(content, absolutePath, cwd, store).content;
106
113
  }
107
114
  export function formatCompactHashlineEditResult(snapshot, diff, messages = []) {
108
- return [formatHashlineHeader(snapshot.displayPath, snapshot.tag), ...messages, diff.diff?.trim() || `First changed line: ${diff.firstChangedLine ?? 1}`].join("\n");
115
+ return [
116
+ formatHashlineHeader(snapshot.displayPath, snapshot.tag),
117
+ ...messages,
118
+ diff.diff?.trim() || `First changed line: ${diff.firstChangedLine ?? 1}`,
119
+ ].join("\n");
109
120
  }
110
121
  //# sourceMappingURL=hashline.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hashline.js","sourceRoot":"","sources":["../../../src/core/tools/hashline.ts"],"names":[],"mappings":"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","sourcesContent":["import { computeFileHash, formatHashlineHeader, formatNumberedLines, InMemorySnapshotStore, type SnapshotStore } from \"./hashline-engine/index.ts\";\nimport { isAbsolute, normalize as normalizePath, relative, sep } from \"node:path\";\n\nexport interface HashlineSnapshot {\n\tabsolutePath: string;\n\tdisplayPath: string;\n\ttag: string;\n\tcontent: string;\n}\n\nexport interface HashlineSnapshotStore {\n\treadonly snapshots: SnapshotStore;\n\trecord(absolutePath: string, cwd: string, content: string): HashlineSnapshot;\n\tfindByHeader(displayPath: string, tag: string): HashlineSnapshot | undefined;\n}\n\nfunction toPosixPath(filePath: string): string {\n\treturn filePath.split(sep).join(\"/\");\n}\n\nexport function hashlineDisplayPath(absolutePath: string, cwd: string): string {\n\tconst relativePath = relative(cwd, absolutePath);\n\tif (relativePath && !relativePath.startsWith(\"..\") && !isAbsolute(relativePath)) return toPosixPath(relativePath);\n\treturn toPosixPath(absolutePath);\n}\n\nexport function normalizeHashlineContent(content: string): string {\n\treturn content.replace(/^\\uFEFF/, \"\").replace(/\\r\\n/g, \"\\n\").replace(/\\r/g, \"\\n\");\n}\n\nexport function computeHashlineTag(content: string): string {\n\treturn computeFileHash(normalizeHashlineContent(content));\n}\n\nexport function createHashlineSnapshotStore(): HashlineSnapshotStore {\n\tconst snapshots = new InMemorySnapshotStore();\n\tconst headers = new Map<string, HashlineSnapshot>();\n\treturn {\n\t\tsnapshots,\n\t\trecord(absolutePath: string, cwd: string, content: string): HashlineSnapshot {\n\t\t\tconst normalizedPath = normalizePath(absolutePath);\n\t\t\tconst normalized = normalizeHashlineContent(content);\n\t\t\tconst displayPath = hashlineDisplayPath(normalizedPath, cwd);\n\t\t\tconst tag = snapshots.record(normalizedPath, normalized);\n\t\t\tconst snapshot = { absolutePath: normalizedPath, displayPath, tag, content: normalized };\n\t\t\theaders.set(`${displayPath}\\0${tag}`, snapshot);\n\t\t\treturn snapshot;\n\t\t},\n\t\tfindByHeader(displayPath: string, tag: string): HashlineSnapshot | undefined {\n\t\t\treturn headers.get(`${displayPath}\\0${tag.toUpperCase()}`);\n\t\t},\n\t};\n}\n\nexport function recordHashlineSnapshot(absolutePath: string, cwd: string, content: string, store: HashlineSnapshotStore): HashlineSnapshot {\n\treturn store.record(absolutePath, cwd, content);\n}\n\nexport function formatHashlineContent(snapshot: HashlineSnapshot, content = snapshot.content, startLine = 1): string {\n\treturn [formatHashlineHeader(snapshot.displayPath, snapshot.tag), formatNumberedLines(normalizeHashlineContent(content), startLine)].join(\"\\n\");\n}\n\nexport interface StrippedHashlineContent { content: string; stripped: boolean }\n\nexport function stripKnownHashlineCopiedContentWithMeta(content: string, _absolutePath: string, _cwd: string, store: HashlineSnapshotStore): StrippedHashlineContent {\n\tconst normalized = normalizeHashlineContent(content);\n\tconst lines = normalized.split(\"\\n\");\n\tconst headerIndex = lines.findIndex((line, index) => /^\\[[^\\]\\n]+#[0-9A-Fa-f]{4}\\]$/.test(line) && lines.slice(0, index).every((prefix) => prefix.trim() === \"\" || /^#\\s+.+\\/?$/.test(prefix)));\n\tif (headerIndex < 0) return { content, stripped: false };\n\tconst header = (lines[headerIndex] ?? \"\").match(/^\\[([^\\]\\n]+)#([0-9A-Fa-f]{4})\\]$/);\n\tif (!header) return { content, stripped: false };\n\tconst snapshot = store.findByHeader(header[1] ?? \"\", header[2] ?? \"\");\n\tif (!snapshot) return { content, stripped: false };\n\tconst body = lines.slice(headerIndex + 1);\n\tif (body.length === 0) return { content: snapshot.content, stripped: true };\n\tconst stripped: string[] = [];\n\tconst snapshotLines = snapshot.content.split(\"\\n\");\n\tlet sawRow = false;\n\t// Trailing tool chrome a model is likely to copy along with the hashline\n\t// body: the read/search continuation footers, the write tool's own\n\t// `Successfully wrote N bytes to <path>` confirmation (and its stripped-\n\t// note), and `Resolved …` conflict footers. These never carry a line\n\t// number, so they mark the end of the numbered body — they must not abort\n\t// stripping the way an arbitrary non-row line would.\n\tconst isToolFooter = (line: string): boolean =>\n\t\tline.trim() === \"\"\n\t\t|| /^\\[\\d+ more lines in file\\./.test(line)\n\t\t|| /^\\[Showing lines /.test(line)\n\t\t|| /^Successfully wrote \\d+ bytes to /.test(line)\n\t\t|| /^Resolved \\d+ conflicts?/.test(line)\n\t\t|| /^Resolved conflict \\d+/.test(line)\n\t\t|| /^Note: stripped copied hashline/.test(line)\n\t\t|| /^\\[[^\\]\\n]+#[0-9A-Fa-f]{4}\\]$/.test(line);\n\tlet onlyFooter = true;\n\tfor (const line of body) {\n\t\tif (isToolFooter(line)) {\n\t\t\t// A footer after the numbered body ends the body; a footer before any\n\t\t\t// row (leading blanks / a copied snapshot header) is just skipped.\n\t\t\tif (sawRow) break;\n\t\t\tcontinue;\n\t\t}\n\t\tonlyFooter = false;\n\t\tconst match = line.match(/^[* ]?(\\d+):(.*)$/s);\n\t\tif (!match) return { content, stripped: false };\n\t\tsawRow = true;\n\t\tconst lineNumber = Number.parseInt(match[1] ?? \"0\", 10);\n\t\tconst strippedLine = match[2] ?? \"\";\n\t\tif (snapshotLines[lineNumber - 1] !== strippedLine) return { content, stripped: false };\n\t\tstripped.push(strippedLine);\n\t}\n\tif (sawRow) return { content: stripped.join(\"\\n\"), stripped: true };\n\t// Header + only tool chrome (e.g. a copied write confirmation\n\t// `Successfully wrote N bytes to <path>`) names a known snapshot with no\n\t// numbered body to recover — resolve to the snapshot's stored content.\n\tif (onlyFooter) return { content: snapshot.content, stripped: true };\n\treturn { content, stripped: false };\n}\n\nexport function stripKnownHashlineCopiedContent(content: string, absolutePath: string, cwd: string, store: HashlineSnapshotStore): string {\n\treturn stripKnownHashlineCopiedContentWithMeta(content, absolutePath, cwd, store).content;\n}\n\nexport function formatCompactHashlineEditResult(snapshot: HashlineSnapshot, diff: { diff?: string; firstChangedLine?: number }, messages: readonly string[] = []): string {\n\treturn [formatHashlineHeader(snapshot.displayPath, snapshot.tag), ...messages, diff.diff?.trim() || `First changed line: ${diff.firstChangedLine ?? 1}`].join(\"\\n\");\n}\n"]}
1
+ {"version":3,"file":"hashline.js","sourceRoot":"","sources":["../../../src/core/tools/hashline.ts"],"names":[],"mappings":"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","sourcesContent":["import { isAbsolute, normalize as normalizePath, relative, sep } from \"node:path\";\nimport {\n\tcomputeFileHash,\n\tformatHashlineHeader,\n\tformatNumberedLines,\n\tInMemorySnapshotStore,\n\ttype SnapshotStore,\n} from \"./hashline-engine/index.ts\";\n\nexport interface HashlineSnapshot {\n\tabsolutePath: string;\n\tdisplayPath: string;\n\ttag: string;\n\tcontent: string;\n}\n\nexport interface HashlineSnapshotStore {\n\treadonly snapshots: SnapshotStore;\n\trecord(absolutePath: string, cwd: string, content: string): HashlineSnapshot;\n\tfindByHeader(displayPath: string, tag: string): HashlineSnapshot | undefined;\n}\n\nfunction toPosixPath(filePath: string): string {\n\treturn filePath.split(sep).join(\"/\");\n}\n\nexport function hashlineDisplayPath(absolutePath: string, cwd: string): string {\n\tconst relativePath = relative(cwd, absolutePath);\n\tif (relativePath && !relativePath.startsWith(\"..\") && !isAbsolute(relativePath)) return toPosixPath(relativePath);\n\treturn toPosixPath(absolutePath);\n}\n\nexport function normalizeHashlineContent(content: string): string {\n\treturn content\n\t\t.replace(/^\\uFEFF/, \"\")\n\t\t.replace(/\\r\\n/g, \"\\n\")\n\t\t.replace(/\\r/g, \"\\n\");\n}\n\nexport function computeHashlineTag(content: string): string {\n\treturn computeFileHash(normalizeHashlineContent(content));\n}\n\nexport function createHashlineSnapshotStore(): HashlineSnapshotStore {\n\tconst snapshots = new InMemorySnapshotStore();\n\tconst headers = new Map<string, HashlineSnapshot>();\n\treturn {\n\t\tsnapshots,\n\t\trecord(absolutePath: string, cwd: string, content: string): HashlineSnapshot {\n\t\t\tconst normalizedPath = normalizePath(absolutePath);\n\t\t\tconst normalized = normalizeHashlineContent(content);\n\t\t\tconst displayPath = hashlineDisplayPath(normalizedPath, cwd);\n\t\t\tconst tag = snapshots.record(normalizedPath, normalized);\n\t\t\tconst snapshot = { absolutePath: normalizedPath, displayPath, tag, content: normalized };\n\t\t\theaders.set(`${displayPath}\\0${tag}`, snapshot);\n\t\t\treturn snapshot;\n\t\t},\n\t\tfindByHeader(displayPath: string, tag: string): HashlineSnapshot | undefined {\n\t\t\treturn headers.get(`${displayPath}\\0${tag.toUpperCase()}`);\n\t\t},\n\t};\n}\n\nexport function recordHashlineSnapshot(\n\tabsolutePath: string,\n\tcwd: string,\n\tcontent: string,\n\tstore: HashlineSnapshotStore,\n): HashlineSnapshot {\n\treturn store.record(absolutePath, cwd, content);\n}\n\nexport function formatHashlineContent(snapshot: HashlineSnapshot, content = snapshot.content, startLine = 1): string {\n\treturn [\n\t\tformatHashlineHeader(snapshot.displayPath, snapshot.tag),\n\t\tformatNumberedLines(normalizeHashlineContent(content), startLine),\n\t].join(\"\\n\");\n}\n\nexport interface StrippedHashlineContent {\n\tcontent: string;\n\tstripped: boolean;\n}\n\nexport function stripKnownHashlineCopiedContentWithMeta(\n\tcontent: string,\n\t_absolutePath: string,\n\t_cwd: string,\n\tstore: HashlineSnapshotStore,\n): StrippedHashlineContent {\n\tconst normalized = normalizeHashlineContent(content);\n\tconst lines = normalized.split(\"\\n\");\n\tconst headerIndex = lines.findIndex(\n\t\t(line, index) =>\n\t\t\t/^\\[[^\\]\\n]+#[0-9A-Fa-f]{4}\\]$/.test(line) &&\n\t\t\tlines.slice(0, index).every((prefix) => prefix.trim() === \"\" || /^#\\s+.+\\/?$/.test(prefix)),\n\t);\n\tif (headerIndex < 0) return { content, stripped: false };\n\tconst header = (lines[headerIndex] ?? \"\").match(/^\\[([^\\]\\n]+)#([0-9A-Fa-f]{4})\\]$/);\n\tif (!header) return { content, stripped: false };\n\tconst snapshot = store.findByHeader(header[1] ?? \"\", header[2] ?? \"\");\n\tif (!snapshot) return { content, stripped: false };\n\tconst body = lines.slice(headerIndex + 1);\n\tif (body.length === 0) return { content: snapshot.content, stripped: true };\n\tconst stripped: string[] = [];\n\tconst snapshotLines = snapshot.content.split(\"\\n\");\n\tlet sawRow = false;\n\t// Trailing tool chrome a model is likely to copy along with the hashline\n\t// body: the read/search continuation footers, the write tool's own\n\t// `Successfully wrote N bytes to <path>` confirmation (and its stripped-\n\t// note), and `Resolved …` conflict footers. These never carry a line\n\t// number, so they mark the end of the numbered body — they must not abort\n\t// stripping the way an arbitrary non-row line would.\n\tconst isToolFooter = (line: string): boolean =>\n\t\tline.trim() === \"\" ||\n\t\t/^\\[\\d+ more lines in file\\./.test(line) ||\n\t\t/^\\[Showing lines /.test(line) ||\n\t\t/^Successfully wrote \\d+ bytes to /.test(line) ||\n\t\t/^Resolved \\d+ conflicts?/.test(line) ||\n\t\t/^Resolved conflict \\d+/.test(line) ||\n\t\t/^Note: stripped copied hashline/.test(line) ||\n\t\t/^\\[[^\\]\\n]+#[0-9A-Fa-f]{4}\\]$/.test(line);\n\tlet onlyFooter = true;\n\tfor (const line of body) {\n\t\tif (isToolFooter(line)) {\n\t\t\t// A footer after the numbered body ends the body; a footer before any\n\t\t\t// row (leading blanks / a copied snapshot header) is just skipped.\n\t\t\tif (sawRow) break;\n\t\t\tcontinue;\n\t\t}\n\t\tonlyFooter = false;\n\t\tconst match = line.match(/^[* ]?(\\d+):(.*)$/s);\n\t\tif (!match) return { content, stripped: false };\n\t\tsawRow = true;\n\t\tconst lineNumber = Number.parseInt(match[1] ?? \"0\", 10);\n\t\tconst strippedLine = match[2] ?? \"\";\n\t\tif (snapshotLines[lineNumber - 1] !== strippedLine) return { content, stripped: false };\n\t\tstripped.push(strippedLine);\n\t}\n\tif (sawRow) return { content: stripped.join(\"\\n\"), stripped: true };\n\t// Header + only tool chrome (e.g. a copied write confirmation\n\t// `Successfully wrote N bytes to <path>`) names a known snapshot with no\n\t// numbered body to recover — resolve to the snapshot's stored content.\n\tif (onlyFooter) return { content: snapshot.content, stripped: true };\n\treturn { content, stripped: false };\n}\n\nexport function stripKnownHashlineCopiedContent(\n\tcontent: string,\n\tabsolutePath: string,\n\tcwd: string,\n\tstore: HashlineSnapshotStore,\n): string {\n\treturn stripKnownHashlineCopiedContentWithMeta(content, absolutePath, cwd, store).content;\n}\n\nexport function formatCompactHashlineEditResult(\n\tsnapshot: HashlineSnapshot,\n\tdiff: { diff?: string; firstChangedLine?: number },\n\tmessages: readonly string[] = [],\n): string {\n\treturn [\n\t\tformatHashlineHeader(snapshot.displayPath, snapshot.tag),\n\t\t...messages,\n\t\tdiff.diff?.trim() || `First changed line: ${diff.firstChangedLine ?? 1}`,\n\t].join(\"\\n\");\n}\n"]}
@@ -1,25 +1,25 @@
1
+ export { createAskUserQuestionToolDefinition } from "./ask-user-question/index.ts";
1
2
  export { type BashOperations, type BashSpawnContext, type BashSpawnHook, type BashToolDetails, type BashToolInput, type BashToolOptions, createBashTool, createBashToolDefinition, createLocalBashOperations, } from "./bash.ts";
2
3
  export { createEditTool, createEditToolDefinition, type EditOperations, type EditToolDetails, type EditToolInput, type EditToolOptions, } from "./edit.ts";
3
4
  export { withFileMutationQueue } from "./file-mutation-queue.ts";
4
5
  export { createFindTool, createFindToolDefinition, type FindOperations, type FindToolDetails, type FindToolInput, type FindToolOptions, } from "./find.ts";
5
- export { createSearchTool, createSearchToolDefinition, type SearchToolDetails, type SearchToolInput, type SearchToolOptions, } from "./search.ts";
6
6
  export { createLsTool, createLsToolDefinition, type LsOperations, type LsToolDetails, type LsToolInput, type LsToolOptions, } from "./ls.ts";
7
7
  export { createReadTool, createReadToolDefinition, type ReadOperations, type ReadToolDetails, type ReadToolInput, type ReadToolOptions, } from "./read.ts";
8
+ export { createSearchTool, createSearchToolDefinition, type SearchToolDetails, type SearchToolInput, type SearchToolOptions, } from "./search.ts";
9
+ export { createStructuredOutputCapture, createStructuredOutputTool, type JsonObject, type JsonPrimitive, type JsonValue, STRUCTURED_OUTPUT_TOOL_NAME, type StructuredOutputCapture, type StructuredOutputFileCapture, type StructuredOutputToolOptions, } from "./structured-output.ts";
10
+ export { createTodoToolDefinition } from "./todos.ts";
8
11
  export { DEFAULT_MAX_BYTES, DEFAULT_MAX_LINES, formatSize, type TruncationOptions, type TruncationResult, truncateHead, truncateLine, truncateTail, } from "./truncate.ts";
9
12
  export { createWriteTool, createWriteToolDefinition, type WriteOperations, type WriteToolInput, type WriteToolOptions, } from "./write.ts";
10
- export { createAskUserQuestionToolDefinition } from "./ask-user-question/index.ts";
11
- export { STRUCTURED_OUTPUT_TOOL_NAME, createStructuredOutputCapture, createStructuredOutputTool, type JsonObject, type JsonPrimitive, type JsonValue, type StructuredOutputCapture, type StructuredOutputFileCapture, type StructuredOutputToolOptions, } from "./structured-output.ts";
12
- export { createTodoToolDefinition } from "./todos.ts";
13
13
  import type { AgentTool } from "@earendil-works/pi-agent-core";
14
14
  import type { TSchema } from "typebox";
15
15
  import type { ToolDefinition } from "../extensions/types.ts";
16
- import { type HashlineSnapshotStore } from "./hashline.ts";
17
16
  import { type BashToolOptions } from "./bash.ts";
18
17
  import { type EditToolOptions } from "./edit.ts";
19
18
  import { type FindToolOptions } from "./find.ts";
19
+ import { type HashlineSnapshotStore } from "./hashline.ts";
20
20
  import { type LsToolOptions } from "./ls.ts";
21
- import { type SearchToolOptions } from "./search.ts";
22
21
  import { type ReadToolOptions } from "./read.ts";
22
+ import { type SearchToolOptions } from "./search.ts";
23
23
  import { type WriteToolOptions } from "./write.ts";
24
24
  export type Tool = AgentTool<TSchema, unknown>;
25
25
  export type ToolDef = ToolDefinition<TSchema, unknown>;