@bastani/atomic 0.9.11-alpha.1 → 0.9.11-alpha.11

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 (2353) hide show
  1. package/CHANGELOG.md +278 -0
  2. package/README.md +16 -11
  3. package/dist/builtin/intercom/package.json +3 -3
  4. package/dist/builtin/intercom/subagent-relay.ts +8 -5
  5. package/dist/builtin/mcp/CHANGELOG.md +12 -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 +34 -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/notification-content.ts +14 -9
  50. package/dist/builtin/subagents/src/extension/prompt-guidance.ts +4 -2
  51. package/dist/builtin/subagents/src/extension/schemas.ts +304 -177
  52. package/dist/builtin/subagents/src/extension/startup-maintenance.ts +137 -73
  53. package/dist/builtin/subagents/src/intercom/intercom-bridge.ts +49 -21
  54. package/dist/builtin/subagents/src/intercom/result-intercom.ts +76 -38
  55. package/dist/builtin/subagents/src/runs/background/async-event-journal.ts +12 -6
  56. package/dist/builtin/subagents/src/runs/background/async-execution-chain.ts +183 -57
  57. package/dist/builtin/subagents/src/runs/background/async-execution-common.ts +15 -18
  58. package/dist/builtin/subagents/src/runs/background/async-execution-single.ts +67 -26
  59. package/dist/builtin/subagents/src/runs/background/async-execution-types.ts +8 -8
  60. package/dist/builtin/subagents/src/runs/background/async-execution.ts +1 -1
  61. package/dist/builtin/subagents/src/runs/background/async-job-tracker.ts +86 -32
  62. package/dist/builtin/subagents/src/runs/background/async-resume.ts +93 -36
  63. package/dist/builtin/subagents/src/runs/background/async-status.ts +82 -27
  64. package/dist/builtin/subagents/src/runs/background/completion-claims.ts +12 -5
  65. package/dist/builtin/subagents/src/runs/background/completion-dedupe.ts +3 -1
  66. package/dist/builtin/subagents/src/runs/background/completion-notification.ts +3 -1
  67. package/dist/builtin/subagents/src/runs/background/notify.ts +57 -21
  68. package/dist/builtin/subagents/src/runs/background/parallel-groups.ts +28 -14
  69. package/dist/builtin/subagents/src/runs/background/result-delivery-processor.ts +147 -79
  70. package/dist/builtin/subagents/src/runs/background/result-file-claims.ts +20 -5
  71. package/dist/builtin/subagents/src/runs/background/result-quarantine.ts +7 -2
  72. package/dist/builtin/subagents/src/runs/background/result-status.ts +11 -5
  73. package/dist/builtin/subagents/src/runs/background/result-watcher-data.ts +18 -5
  74. package/dist/builtin/subagents/src/runs/background/result-watcher.ts +104 -35
  75. package/dist/builtin/subagents/src/runs/background/run-id-resolver.ts +28 -7
  76. package/dist/builtin/subagents/src/runs/background/run-status.ts +120 -32
  77. package/dist/builtin/subagents/src/runs/background/stale-run-reconciler.ts +98 -39
  78. package/dist/builtin/subagents/src/runs/background/subagent-runner-dynamic.ts +185 -37
  79. package/dist/builtin/subagents/src/runs/background/subagent-runner-finalize.ts +23 -9
  80. package/dist/builtin/subagents/src/runs/background/subagent-runner-output.ts +6 -2
  81. package/dist/builtin/subagents/src/runs/background/subagent-runner-parallel-helpers.ts +34 -18
  82. package/dist/builtin/subagents/src/runs/background/subagent-runner-parallel.ts +175 -26
  83. package/dist/builtin/subagents/src/runs/background/subagent-runner-sequential.ts +68 -23
  84. package/dist/builtin/subagents/src/runs/background/subagent-runner-state.ts +200 -49
  85. package/dist/builtin/subagents/src/runs/background/subagent-runner-step.ts +82 -49
  86. package/dist/builtin/subagents/src/runs/background/subagent-runner-streaming.ts +33 -11
  87. package/dist/builtin/subagents/src/runs/background/subagent-runner-types.ts +16 -6
  88. package/dist/builtin/subagents/src/runs/background/subagent-runner-utils.ts +2 -3
  89. package/dist/builtin/subagents/src/runs/background/subagent-runner.ts +11 -8
  90. package/dist/builtin/subagents/src/runs/foreground/chain-execution-details.ts +5 -2
  91. package/dist/builtin/subagents/src/runs/foreground/chain-execution-dynamic-step.ts +115 -31
  92. package/dist/builtin/subagents/src/runs/foreground/chain-execution-parallel-runner.ts +71 -54
  93. package/dist/builtin/subagents/src/runs/foreground/chain-execution-parallel-step.ts +104 -37
  94. package/dist/builtin/subagents/src/runs/foreground/chain-execution-sequential-step.ts +102 -61
  95. package/dist/builtin/subagents/src/runs/foreground/chain-execution-types.ts +24 -10
  96. package/dist/builtin/subagents/src/runs/foreground/chain-execution.ts +9 -6
  97. package/dist/builtin/subagents/src/runs/foreground/detached-cleanup-barrier.ts +22 -22
  98. package/dist/builtin/subagents/src/runs/foreground/execution-attempt-control.ts +45 -40
  99. package/dist/builtin/subagents/src/runs/foreground/execution-attempt-finalize.ts +6 -5
  100. package/dist/builtin/subagents/src/runs/foreground/execution-attempt.ts +118 -43
  101. package/dist/builtin/subagents/src/runs/foreground/execution-detach-reservations.ts +17 -7
  102. package/dist/builtin/subagents/src/runs/foreground/execution-detach-route.ts +5 -3
  103. package/dist/builtin/subagents/src/runs/foreground/execution-intercom-detach.ts +39 -35
  104. package/dist/builtin/subagents/src/runs/foreground/execution-run-sync.ts +81 -42
  105. package/dist/builtin/subagents/src/runs/foreground/execution-structured-retries.ts +27 -21
  106. package/dist/builtin/subagents/src/runs/foreground/execution-updates.ts +2 -5
  107. package/dist/builtin/subagents/src/runs/foreground/execution-utils.ts +9 -4
  108. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-async.ts +69 -25
  109. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-chain.ts +36 -19
  110. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-context.ts +95 -62
  111. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-input.ts +30 -9
  112. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-parallel-task.ts +106 -96
  113. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-parallel.ts +68 -36
  114. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-resume.ts +262 -83
  115. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-runtime.ts +6 -1
  116. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-single.ts +67 -41
  117. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-status.ts +129 -44
  118. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-types.ts +20 -3
  119. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-worktree.ts +8 -6
  120. package/dist/builtin/subagents/src/runs/foreground/subagent-executor.ts +65 -47
  121. package/dist/builtin/subagents/src/runs/shared/chain-outputs.ts +37 -12
  122. package/dist/builtin/subagents/src/runs/shared/dynamic-fanout.ts +120 -34
  123. package/dist/builtin/subagents/src/runs/shared/final-drain.ts +12 -7
  124. package/dist/builtin/subagents/src/runs/shared/intercom-group.ts +3 -2
  125. package/dist/builtin/subagents/src/runs/shared/long-running-guard.ts +8 -3
  126. package/dist/builtin/subagents/src/runs/shared/mcp-direct-tool-allowlist.ts +42 -20
  127. package/dist/builtin/subagents/src/runs/shared/model-candidate-filter.ts +8 -4
  128. package/dist/builtin/subagents/src/runs/shared/model-fallback.ts +103 -38
  129. package/dist/builtin/subagents/src/runs/shared/nested-events-control.ts +30 -20
  130. package/dist/builtin/subagents/src/runs/shared/nested-events-core.ts +45 -20
  131. package/dist/builtin/subagents/src/runs/shared/nested-events-projection.ts +57 -23
  132. package/dist/builtin/subagents/src/runs/shared/nested-events-registry.ts +77 -29
  133. package/dist/builtin/subagents/src/runs/shared/nested-events-sanitize.ts +99 -42
  134. package/dist/builtin/subagents/src/runs/shared/nested-events.ts +32 -26
  135. package/dist/builtin/subagents/src/runs/shared/nested-path.ts +22 -17
  136. package/dist/builtin/subagents/src/runs/shared/nested-render.ts +31 -10
  137. package/dist/builtin/subagents/src/runs/shared/parallel-utils.ts +10 -8
  138. package/dist/builtin/subagents/src/runs/shared/pi-args.ts +59 -33
  139. package/dist/builtin/subagents/src/runs/shared/pi-spawn.ts +17 -13
  140. package/dist/builtin/subagents/src/runs/shared/run-history.ts +13 -6
  141. package/dist/builtin/subagents/src/runs/shared/single-output.ts +11 -6
  142. package/dist/builtin/subagents/src/runs/shared/spawn-env.ts +21 -0
  143. package/dist/builtin/subagents/src/runs/shared/structured-output.ts +33 -19
  144. package/dist/builtin/subagents/src/runs/shared/subagent-control.ts +59 -48
  145. package/dist/builtin/subagents/src/runs/shared/subagent-prompt-runtime.ts +18 -11
  146. package/dist/builtin/subagents/src/runs/shared/workflow-graph.ts +41 -11
  147. package/dist/builtin/subagents/src/runs/shared/worktree-post-create.ts +46 -10
  148. package/dist/builtin/subagents/src/runs/shared/worktree-root.ts +21 -5
  149. package/dist/builtin/subagents/src/runs/shared/worktree.ts +89 -34
  150. package/dist/builtin/subagents/src/shared/artifacts.ts +137 -7
  151. package/dist/builtin/subagents/src/shared/event-jsonl-writer.ts +49 -13
  152. package/dist/builtin/subagents/src/shared/fast-mode.ts +13 -6
  153. package/dist/builtin/subagents/src/shared/fork-context.ts +7 -4
  154. package/dist/builtin/subagents/src/shared/formatters.ts +14 -9
  155. package/dist/builtin/subagents/src/shared/jsonl-writer.ts +2 -1
  156. package/dist/builtin/subagents/src/shared/model-info.ts +10 -3
  157. package/dist/builtin/subagents/src/shared/post-exit-stdio-guard.ts +7 -6
  158. package/dist/builtin/subagents/src/shared/session-tokens.ts +2 -1
  159. package/dist/builtin/subagents/src/shared/settings.ts +43 -43
  160. package/dist/builtin/subagents/src/shared/status-format.ts +10 -2
  161. package/dist/builtin/subagents/src/shared/types-async.ts +22 -19
  162. package/dist/builtin/subagents/src/shared/types-config.ts +1 -1
  163. package/dist/builtin/subagents/src/shared/types-depth.ts +23 -11
  164. package/dist/builtin/subagents/src/shared/types-results.ts +49 -6
  165. package/dist/builtin/subagents/src/shared/types-runtime.ts +16 -17
  166. package/dist/builtin/subagents/src/shared/types.ts +2 -2
  167. package/dist/builtin/subagents/src/shared/utils.ts +34 -20
  168. package/dist/builtin/subagents/src/slash/prompt-template-bridge.ts +44 -47
  169. package/dist/builtin/subagents/src/slash/saved-chain-mapping.ts +5 -7
  170. package/dist/builtin/subagents/src/slash/slash-bridge.ts +3 -3
  171. package/dist/builtin/subagents/src/slash/slash-commands.ts +78 -52
  172. package/dist/builtin/subagents/src/slash/slash-live-state.ts +59 -32
  173. package/dist/builtin/subagents/src/tui/render-chain-graph.ts +120 -32
  174. package/dist/builtin/subagents/src/tui/render-event-formatting.ts +85 -22
  175. package/dist/builtin/subagents/src/tui/render-helpers.ts +16 -6
  176. package/dist/builtin/subagents/src/tui/render-layout.ts +8 -3
  177. package/dist/builtin/subagents/src/tui/render-result-compact.ts +125 -43
  178. package/dist/builtin/subagents/src/tui/render-result.ts +128 -85
  179. package/dist/builtin/subagents/src/tui/render-stable-output.ts +17 -13
  180. package/dist/builtin/subagents/src/tui/render-status-progress.ts +52 -20
  181. package/dist/builtin/subagents/src/tui/render-widget-graph.ts +130 -28
  182. package/dist/builtin/subagents/src/tui/render-widget.ts +54 -27
  183. package/dist/builtin/subagents/src/tui/render.ts +10 -3
  184. package/dist/builtin/web-access/CHANGELOG.md +6 -0
  185. package/dist/builtin/web-access/content-tools.ts +1 -0
  186. package/dist/builtin/web-access/flat-string.ts +37 -0
  187. package/dist/builtin/web-access/github-api.ts +2 -1
  188. package/dist/builtin/web-access/github-extract.ts +3 -2
  189. package/dist/builtin/web-access/package.json +2 -2
  190. package/dist/builtin/workflows/CHANGELOG.md +120 -0
  191. package/dist/builtin/workflows/README.md +78 -70
  192. package/dist/builtin/workflows/ambient.d.ts +0 -5
  193. package/dist/builtin/workflows/builtin/adversarial-verification-prompts.ts +7 -4
  194. package/dist/builtin/workflows/builtin/adversarial-verification-runner.ts +1 -1
  195. package/dist/builtin/workflows/builtin/adversarial-verification.ts +2 -1
  196. package/dist/builtin/workflows/builtin/classify-and-act-prompts.ts +5 -2
  197. package/dist/builtin/workflows/builtin/classify-and-act-runner.ts +5 -7
  198. package/dist/builtin/workflows/builtin/classify-and-act.ts +3 -2
  199. package/dist/builtin/workflows/builtin/fan-out-and-synthesize-prompts.ts +6 -3
  200. package/dist/builtin/workflows/builtin/fan-out-and-synthesize-runner.ts +5 -5
  201. package/dist/builtin/workflows/builtin/fan-out-and-synthesize.ts +3 -2
  202. package/dist/builtin/workflows/builtin/generate-and-filter-prompts.ts +7 -4
  203. package/dist/builtin/workflows/builtin/generate-and-filter-runner.ts +6 -3
  204. package/dist/builtin/workflows/builtin/generate-and-filter.ts +3 -2
  205. package/dist/builtin/workflows/builtin/goal-artifacts.ts +1 -1
  206. package/dist/builtin/workflows/builtin/goal-ledger.ts +6 -4
  207. package/dist/builtin/workflows/builtin/goal-models.ts +39 -39
  208. package/dist/builtin/workflows/builtin/goal-orchestrator-prompts.ts +94 -0
  209. package/dist/builtin/workflows/builtin/goal-prompts.ts +70 -285
  210. package/dist/builtin/workflows/builtin/goal-reducer.ts +1 -1
  211. package/dist/builtin/workflows/builtin/goal-runner.ts +74 -117
  212. package/dist/builtin/workflows/builtin/goal.ts +13 -12
  213. package/dist/builtin/workflows/builtin/index.d.ts +17 -112
  214. package/dist/builtin/workflows/builtin/index.ts +1 -2
  215. package/dist/builtin/workflows/builtin/loop-until-done-prompts.ts +20 -12
  216. package/dist/builtin/workflows/builtin/loop-until-done-runner.ts +3 -0
  217. package/dist/builtin/workflows/builtin/loop-until-done.ts +3 -2
  218. package/dist/builtin/workflows/builtin/open-claude-design-phases.ts +149 -88
  219. package/dist/builtin/workflows/builtin/open-claude-design-runner.ts +102 -78
  220. package/dist/builtin/workflows/builtin/open-claude-design-setup.ts +164 -56
  221. package/dist/builtin/workflows/builtin/open-claude-design-utils.ts +16 -21
  222. package/dist/builtin/workflows/builtin/open-claude-design.ts +2 -1
  223. package/dist/builtin/workflows/builtin/ralph-core.ts +67 -64
  224. package/dist/builtin/workflows/builtin/ralph-forked-prompts.ts +40 -46
  225. package/dist/builtin/workflows/builtin/ralph-models.ts +37 -47
  226. package/dist/builtin/workflows/builtin/ralph-reviewer-prompt.ts +37 -117
  227. package/dist/builtin/workflows/builtin/ralph-runner.ts +88 -116
  228. package/dist/builtin/workflows/builtin/ralph.ts +8 -6
  229. package/dist/builtin/workflows/builtin/shared-prompts.ts +117 -70
  230. package/dist/builtin/workflows/builtin/steering-context.ts +51 -0
  231. package/dist/builtin/workflows/builtin/tournament-prompts.ts +21 -12
  232. package/dist/builtin/workflows/builtin/tournament-runner.ts +3 -0
  233. package/dist/builtin/workflows/builtin/tournament.ts +3 -2
  234. package/dist/builtin/workflows/package.json +4 -4
  235. package/dist/builtin/workflows/skills/create-spec/SKILL.md +1 -1
  236. package/dist/builtin/workflows/skills/impeccable/SKILL.md +33 -129
  237. package/dist/builtin/workflows/skills/impeccable/agents/impeccable_asset_producer.toml +11 -3
  238. package/dist/builtin/workflows/skills/impeccable/agents/impeccable_documenter.toml +26 -0
  239. package/dist/builtin/workflows/skills/impeccable/agents/impeccable_finish_reviewer.toml +35 -0
  240. package/dist/builtin/workflows/skills/impeccable/reference/android.md +1 -1
  241. package/dist/builtin/workflows/skills/impeccable/reference/animate.md +72 -189
  242. package/dist/builtin/workflows/skills/impeccable/reference/audit.md +10 -9
  243. package/dist/builtin/workflows/skills/impeccable/reference/audit.native.md +2 -2
  244. package/dist/builtin/workflows/skills/impeccable/reference/bolder.md +19 -108
  245. package/dist/builtin/workflows/skills/impeccable/reference/clarify.md +59 -253
  246. package/dist/builtin/workflows/skills/impeccable/reference/colorize.md +51 -222
  247. package/dist/builtin/workflows/skills/impeccable/reference/craft-floor.md +45 -0
  248. package/dist/builtin/workflows/skills/impeccable/reference/craft.md +3 -121
  249. package/dist/builtin/workflows/skills/impeccable/reference/critique.md +28 -20
  250. package/dist/builtin/workflows/skills/impeccable/reference/degraded/asset-producer.md +97 -0
  251. package/dist/builtin/workflows/skills/impeccable/reference/degraded/documenter.md +23 -0
  252. package/dist/builtin/workflows/skills/impeccable/reference/degraded/finish-reviewer.md +32 -0
  253. package/dist/builtin/workflows/skills/impeccable/reference/degraded/manual-edit-applier.md +92 -0
  254. package/dist/builtin/workflows/skills/impeccable/reference/delight.md +47 -279
  255. package/dist/builtin/workflows/skills/impeccable/reference/distill.md +2 -2
  256. package/dist/builtin/workflows/skills/impeccable/reference/doctor.md +53 -0
  257. package/dist/builtin/workflows/skills/impeccable/reference/document.md +60 -73
  258. package/dist/builtin/workflows/skills/impeccable/reference/harden.md +1 -12
  259. package/dist/builtin/workflows/skills/impeccable/reference/hooks.md +23 -12
  260. package/dist/builtin/workflows/skills/impeccable/reference/init.md +64 -163
  261. package/dist/builtin/workflows/skills/impeccable/reference/ios.md +1 -1
  262. package/dist/builtin/workflows/skills/impeccable/reference/layout.md +52 -153
  263. package/dist/builtin/workflows/skills/impeccable/reference/live.md +47 -36
  264. package/dist/builtin/workflows/skills/impeccable/reference/new-work.md +105 -0
  265. package/dist/builtin/workflows/skills/impeccable/reference/{product.md → operate.md} +6 -5
  266. package/dist/builtin/workflows/skills/impeccable/reference/optimize.md +4 -4
  267. package/dist/builtin/workflows/skills/impeccable/reference/overdrive.md +1 -4
  268. package/dist/builtin/workflows/skills/impeccable/reference/polish.md +68 -212
  269. package/dist/builtin/workflows/skills/impeccable/reference/quieter.md +3 -3
  270. package/dist/builtin/workflows/skills/impeccable/reference/routing.md +18 -0
  271. package/dist/builtin/workflows/skills/impeccable/reference/shape.md +38 -144
  272. package/dist/builtin/workflows/skills/impeccable/reference/typeset.md +48 -269
  273. package/dist/builtin/workflows/skills/impeccable/reference/visualize.md +38 -0
  274. package/dist/builtin/workflows/skills/impeccable/scripts/command-metadata.json +1 -1
  275. package/dist/builtin/workflows/skills/impeccable/scripts/concept-seed.mjs +584 -0
  276. package/dist/builtin/workflows/skills/impeccable/scripts/context-signals.mjs +117 -9
  277. package/dist/builtin/workflows/skills/impeccable/scripts/context.mjs +486 -59
  278. package/dist/builtin/workflows/skills/impeccable/scripts/critique-storage.mjs +16 -45
  279. package/dist/builtin/workflows/skills/impeccable/scripts/detector/browser/injected/index.mjs +96 -10
  280. package/dist/builtin/workflows/skills/impeccable/scripts/detector/cli/main.mjs +143 -26
  281. package/dist/builtin/workflows/skills/impeccable/scripts/detector/design-system.mjs +181 -12
  282. package/dist/builtin/workflows/skills/impeccable/scripts/detector/detect-antipatterns-browser.js +3187 -182
  283. package/dist/builtin/workflows/skills/impeccable/scripts/detector/engines/browser/detect-url.mjs +102 -7
  284. package/dist/builtin/workflows/skills/impeccable/scripts/detector/engines/regex/detect-text.mjs +282 -70
  285. package/dist/builtin/workflows/skills/impeccable/scripts/detector/engines/static-html/css-cascade.mjs +183 -15
  286. package/dist/builtin/workflows/skills/impeccable/scripts/detector/engines/static-html/detect-html.mjs +22 -7
  287. package/dist/builtin/workflows/skills/impeccable/scripts/detector/findings.mjs +7 -1
  288. package/dist/builtin/workflows/skills/impeccable/scripts/detector/node/file-system.mjs +16 -2
  289. package/dist/builtin/workflows/skills/impeccable/scripts/detector/registry/antipatterns.mjs +155 -42
  290. package/dist/builtin/workflows/skills/impeccable/scripts/detector/rules/checks.mjs +2988 -155
  291. package/dist/builtin/workflows/skills/impeccable/scripts/detector/shared/constants.mjs +11 -0
  292. package/dist/builtin/workflows/skills/impeccable/scripts/doctor.mjs +336 -0
  293. package/dist/builtin/workflows/skills/impeccable/scripts/generate-image.mjs +232 -0
  294. package/dist/builtin/workflows/skills/impeccable/scripts/hook-admin.mjs +92 -30
  295. package/dist/builtin/workflows/skills/impeccable/scripts/hook-lib.mjs +414 -120
  296. package/dist/builtin/workflows/skills/impeccable/scripts/hook.mjs +25 -8
  297. package/dist/builtin/workflows/skills/impeccable/scripts/lib/artifact-schema.mjs +93 -0
  298. package/dist/builtin/workflows/skills/impeccable/scripts/lib/composition-catalog.mjs +165 -0
  299. package/dist/builtin/workflows/skills/impeccable/scripts/lib/concept-catalog.mjs +329 -0
  300. package/dist/builtin/workflows/skills/impeccable/scripts/lib/impeccable-config.mjs +20 -5
  301. package/dist/builtin/workflows/skills/impeccable/scripts/lib/impeccable-paths.mjs +16 -8
  302. package/dist/builtin/workflows/skills/impeccable/scripts/lib/provider.mjs +1 -0
  303. package/dist/builtin/workflows/skills/impeccable/scripts/lib/staleness-deep.mjs +455 -0
  304. package/dist/builtin/workflows/skills/impeccable/scripts/lib/staleness-notice.mjs +169 -0
  305. package/dist/builtin/workflows/skills/impeccable/scripts/lib/staleness.mjs +457 -0
  306. package/dist/builtin/workflows/skills/impeccable/scripts/lib/surface-briefs.mjs +151 -0
  307. package/dist/builtin/workflows/skills/impeccable/scripts/lib/target-slug.mjs +33 -0
  308. package/dist/builtin/workflows/skills/impeccable/scripts/lib/template-extensions.mjs +146 -0
  309. package/dist/builtin/workflows/skills/impeccable/scripts/live/completion.mjs +10 -1
  310. package/dist/builtin/workflows/skills/impeccable/scripts/live/event-validation.mjs +15 -0
  311. package/dist/builtin/workflows/skills/impeccable/scripts/live/generation-preflight.mjs +149 -0
  312. package/dist/builtin/workflows/skills/impeccable/scripts/live/poll-lanes.mjs +14 -0
  313. package/dist/builtin/workflows/skills/impeccable/scripts/live/session-store.mjs +109 -32
  314. package/dist/builtin/workflows/skills/impeccable/scripts/live/source-lock.mjs +105 -0
  315. package/dist/builtin/workflows/skills/impeccable/scripts/live/source-search.mjs +105 -0
  316. package/dist/builtin/workflows/skills/impeccable/scripts/live/sveltekit-adapter.mjs +8 -6
  317. package/dist/builtin/workflows/skills/impeccable/scripts/live/tanstack-adapter.mjs +280 -0
  318. package/dist/builtin/workflows/skills/impeccable/scripts/live-accept.mjs +212 -69
  319. package/dist/builtin/workflows/skills/impeccable/scripts/live-browser-dom.js +5 -1
  320. package/dist/builtin/workflows/skills/impeccable/scripts/live-browser-session.js +7 -1
  321. package/dist/builtin/workflows/skills/impeccable/scripts/live-browser.js +565 -115
  322. package/dist/builtin/workflows/skills/impeccable/scripts/live-commit-manual-edits.mjs +3 -0
  323. package/dist/builtin/workflows/skills/impeccable/scripts/live-inject.mjs +198 -14
  324. package/dist/builtin/workflows/skills/impeccable/scripts/live-insert.mjs +24 -6
  325. package/dist/builtin/workflows/skills/impeccable/scripts/live-manual-edit-evidence.mjs +11 -3
  326. package/dist/builtin/workflows/skills/impeccable/scripts/live-poll.mjs +44 -14
  327. package/dist/builtin/workflows/skills/impeccable/scripts/live-server.mjs +405 -34
  328. package/dist/builtin/workflows/skills/impeccable/scripts/live-status.mjs +9 -5
  329. package/dist/builtin/workflows/skills/impeccable/scripts/live-wrap.mjs +81 -67
  330. package/dist/builtin/workflows/skills/impeccable/scripts/live.mjs +7 -2
  331. package/dist/builtin/workflows/skills/impeccable/scripts/palette.mjs +76 -81
  332. package/dist/builtin/workflows/skills/impeccable/scripts/pin.mjs +4 -4
  333. package/dist/builtin/workflows/skills/impeccable/scripts/serve-question.mjs +890 -0
  334. package/dist/builtin/workflows/skills/impeccable/scripts/surface-brief.mjs +74 -0
  335. package/dist/builtin/workflows/skills/prompt-engineer/SKILL.md +57 -252
  336. package/dist/builtin/workflows/skills/prompt-engineer/references/advanced_patterns.md +70 -226
  337. package/dist/builtin/workflows/skills/prompt-engineer/references/core_prompting.md +64 -103
  338. package/dist/builtin/workflows/skills/prompt-engineer/references/quality_improvement.md +81 -155
  339. package/dist/builtin/workflows/src/authoring/typebox-defaults.d.ts +5 -5
  340. package/dist/builtin/workflows/src/authoring/typebox-defaults.ts +160 -197
  341. package/dist/builtin/workflows/src/authoring/workflow.ts +137 -132
  342. package/dist/builtin/workflows/src/authoring.d.ts +7 -3
  343. package/dist/builtin/workflows/src/durable/backend.ts +510 -383
  344. package/dist/builtin/workflows/src/durable/boundary-lifecycle.ts +172 -0
  345. package/dist/builtin/workflows/src/durable/boundary-topology.ts +475 -0
  346. package/dist/builtin/workflows/src/durable/child-invocation.ts +14 -0
  347. package/dist/builtin/workflows/src/durable/child-primitive.ts +115 -74
  348. package/dist/builtin/workflows/src/durable/completed-catalog-stage-groups.ts +290 -0
  349. package/dist/builtin/workflows/src/durable/completed-catalog.ts +425 -189
  350. package/dist/builtin/workflows/src/durable/completed-inspection.ts +117 -105
  351. package/dist/builtin/workflows/src/durable/completed-subtree.ts +35 -0
  352. package/dist/builtin/workflows/src/durable/dbos-backend.ts +484 -414
  353. package/dist/builtin/workflows/src/durable/dbos-embedded-postgres-root.ts +86 -87
  354. package/dist/builtin/workflows/src/durable/dbos-embedded-postgres.ts +171 -149
  355. package/dist/builtin/workflows/src/durable/dbos-envelope.ts +415 -189
  356. package/dist/builtin/workflows/src/durable/dbos-lifecycle.ts +128 -106
  357. package/dist/builtin/workflows/src/durable/dbos-local-postgres.ts +75 -68
  358. package/dist/builtin/workflows/src/durable/dbos-metadata.ts +138 -101
  359. package/dist/builtin/workflows/src/durable/dbos-prompt-reservations.ts +316 -259
  360. package/dist/builtin/workflows/src/durable/dbos-sdk-handle.ts +138 -117
  361. package/dist/builtin/workflows/src/durable/dbos-status-transition.ts +48 -43
  362. package/dist/builtin/workflows/src/durable/dbos-tombstone.ts +14 -14
  363. package/dist/builtin/workflows/src/durable/durable-hash.ts +9 -11
  364. package/dist/builtin/workflows/src/durable/factory.ts +54 -29
  365. package/dist/builtin/workflows/src/durable/format-version.ts +1 -1
  366. package/dist/builtin/workflows/src/durable/index.ts +69 -68
  367. package/dist/builtin/workflows/src/durable/local-command.ts +47 -43
  368. package/dist/builtin/workflows/src/durable/prompt-reservation-state.ts +156 -149
  369. package/dist/builtin/workflows/src/durable/prompt-reservations.ts +16 -16
  370. package/dist/builtin/workflows/src/durable/resume-catalog.ts +11 -11
  371. package/dist/builtin/workflows/src/durable/resume-eligibility.ts +69 -25
  372. package/dist/builtin/workflows/src/durable/resume-runtime.ts +262 -224
  373. package/dist/builtin/workflows/src/durable/retention-policy.ts +31 -30
  374. package/dist/builtin/workflows/src/durable/run-timing.ts +42 -41
  375. package/dist/builtin/workflows/src/durable/scoped-backend.ts +261 -193
  376. package/dist/builtin/workflows/src/durable/stage-primitive.ts +466 -370
  377. package/dist/builtin/workflows/src/durable/stage-topology-validation.ts +247 -0
  378. package/dist/builtin/workflows/src/durable/stage-topology.ts +53 -0
  379. package/dist/builtin/workflows/src/durable/tool-failure-checkpoint.ts +49 -0
  380. package/dist/builtin/workflows/src/durable/tool-outcome.ts +130 -0
  381. package/dist/builtin/workflows/src/durable/tool-primitive.ts +650 -137
  382. package/dist/builtin/workflows/src/durable/types.ts +243 -132
  383. package/dist/builtin/workflows/src/durable/ui-primitive.ts +243 -164
  384. package/dist/builtin/workflows/src/durable/workflow-child-result.ts +61 -0
  385. package/dist/builtin/workflows/src/durable/workflow-status-transition.ts +16 -15
  386. package/dist/builtin/workflows/src/engine/graph-inference.ts +76 -76
  387. package/dist/builtin/workflows/src/engine/options.ts +35 -35
  388. package/dist/builtin/workflows/src/engine/primitives/chain.ts +27 -22
  389. package/dist/builtin/workflows/src/engine/primitives/exit.ts +1 -1
  390. package/dist/builtin/workflows/src/engine/primitives/parallel.ts +64 -52
  391. package/dist/builtin/workflows/src/engine/primitives/task.ts +110 -95
  392. package/dist/builtin/workflows/src/engine/primitives/ui.ts +46 -50
  393. package/dist/builtin/workflows/src/engine/primitives/workflow.ts +194 -151
  394. package/dist/builtin/workflows/src/engine/replay.ts +6 -6
  395. package/dist/builtin/workflows/src/engine/run-durable-admission.ts +50 -0
  396. package/dist/builtin/workflows/src/engine/run-durable-finalize.ts +64 -37
  397. package/dist/builtin/workflows/src/engine/run-durable-stage-session.ts +30 -24
  398. package/dist/builtin/workflows/src/engine/run-durable-topology.ts +288 -0
  399. package/dist/builtin/workflows/src/engine/run-returned-status.ts +60 -57
  400. package/dist/builtin/workflows/src/engine/run-terminal-event.ts +39 -0
  401. package/dist/builtin/workflows/src/engine/run-terminal-failure.ts +53 -0
  402. package/dist/builtin/workflows/src/engine/run-tool-admission-boundary.ts +99 -0
  403. package/dist/builtin/workflows/src/engine/run-tool-control-registry.ts +179 -0
  404. package/dist/builtin/workflows/src/engine/run-tool-execution-tracker.ts +164 -0
  405. package/dist/builtin/workflows/src/engine/run-tool-node-lifecycle.ts +152 -0
  406. package/dist/builtin/workflows/src/engine/run.ts +681 -477
  407. package/dist/builtin/workflows/src/engine/runtime.ts +160 -140
  408. package/dist/builtin/workflows/src/engine/workflow-activity.ts +7 -3
  409. package/dist/builtin/workflows/src/engine/workflow-tool-abort.ts +92 -0
  410. package/dist/builtin/workflows/src/extension/atomic-stage-session.ts +123 -120
  411. package/dist/builtin/workflows/src/extension/background-ui-adapter.ts +108 -112
  412. package/dist/builtin/workflows/src/extension/companions.ts +116 -116
  413. package/dist/builtin/workflows/src/extension/completed-stage-intercom-ask.ts +123 -111
  414. package/dist/builtin/workflows/src/extension/config-file-loader.ts +153 -148
  415. package/dist/builtin/workflows/src/extension/config-loader.ts +264 -283
  416. package/dist/builtin/workflows/src/extension/discovery-loaders.ts +81 -84
  417. package/dist/builtin/workflows/src/extension/discovery.ts +267 -272
  418. package/dist/builtin/workflows/src/extension/dispatcher.ts +214 -217
  419. package/dist/builtin/workflows/src/extension/extension-factory.ts +103 -93
  420. package/dist/builtin/workflows/src/extension/extension-lifecycle.ts +127 -111
  421. package/dist/builtin/workflows/src/extension/extension-runtime-state.ts +418 -409
  422. package/dist/builtin/workflows/src/extension/hil-answer-notifications.ts +273 -261
  423. package/dist/builtin/workflows/src/extension/index.bundle.mjs +75711 -0
  424. package/dist/builtin/workflows/src/extension/index.ts +37 -37
  425. package/dist/builtin/workflows/src/extension/lifecycle-notification-delivery.ts +64 -64
  426. package/dist/builtin/workflows/src/extension/lifecycle-notifications.ts +389 -369
  427. package/dist/builtin/workflows/src/extension/mcp.ts +35 -35
  428. package/dist/builtin/workflows/src/extension/postmortem-deps.ts +32 -35
  429. package/dist/builtin/workflows/src/extension/public-types.ts +160 -182
  430. package/dist/builtin/workflows/src/extension/render-call.ts +85 -88
  431. package/dist/builtin/workflows/src/extension/render-component.ts +9 -11
  432. package/dist/builtin/workflows/src/extension/render-result.ts +443 -375
  433. package/dist/builtin/workflows/src/extension/renderers.ts +35 -35
  434. package/dist/builtin/workflows/src/extension/runtime-active-block-claim.ts +37 -37
  435. package/dist/builtin/workflows/src/extension/runtime-durable-resume.ts +143 -138
  436. package/dist/builtin/workflows/src/extension/runtime.ts +346 -258
  437. package/dist/builtin/workflows/src/extension/status-writer.ts +95 -95
  438. package/dist/builtin/workflows/src/extension/ui-surface.ts +224 -218
  439. package/dist/builtin/workflows/src/extension/wiring.ts +307 -281
  440. package/dist/builtin/workflows/src/extension/workflow-command-completions.ts +109 -108
  441. package/dist/builtin/workflows/src/extension/workflow-command-registration.ts +253 -224
  442. package/dist/builtin/workflows/src/extension/workflow-command-surfaces.ts +84 -83
  443. package/dist/builtin/workflows/src/extension/workflow-command-utils.ts +126 -132
  444. package/dist/builtin/workflows/src/extension/workflow-durable-resume-command.ts +213 -202
  445. package/dist/builtin/workflows/src/extension/workflow-model-catalog.ts +24 -0
  446. package/dist/builtin/workflows/src/extension/workflow-module-loader.ts +110 -95
  447. package/dist/builtin/workflows/src/extension/workflow-policy.ts +7 -9
  448. package/dist/builtin/workflows/src/extension/workflow-ports.ts +30 -34
  449. package/dist/builtin/workflows/src/extension/workflow-prompts.ts +41 -20
  450. package/dist/builtin/workflows/src/extension/workflow-reload-coordinator.ts +46 -46
  451. package/dist/builtin/workflows/src/extension/workflow-reload-report.ts +28 -25
  452. package/dist/builtin/workflows/src/extension/workflow-resume-picker-rows.ts +61 -46
  453. package/dist/builtin/workflows/src/extension/workflow-resume-shadow.ts +29 -31
  454. package/dist/builtin/workflows/src/extension/workflow-run-control-command.ts +531 -453
  455. package/dist/builtin/workflows/src/extension/workflow-schema.ts +149 -92
  456. package/dist/builtin/workflows/src/extension/workflow-stage-results.ts +182 -194
  457. package/dist/builtin/workflows/src/extension/workflow-status-summary.ts +151 -118
  458. package/dist/builtin/workflows/src/extension/workflow-targets.ts +159 -128
  459. package/dist/builtin/workflows/src/extension/workflow-tool-content.ts +204 -217
  460. package/dist/builtin/workflows/src/extension/workflow-tool-control.ts +485 -372
  461. package/dist/builtin/workflows/src/extension/workflow-tool-inspection.ts +124 -150
  462. package/dist/builtin/workflows/src/extension/workflow-tool-registration.ts +43 -46
  463. package/dist/builtin/workflows/src/extension/workflow-tool-send.ts +346 -206
  464. package/dist/builtin/workflows/src/extension/workflow-tool.ts +113 -129
  465. package/dist/builtin/workflows/src/intercom/intercom-bridge.ts +17 -20
  466. package/dist/builtin/workflows/src/intercom/intercom-routing.ts +62 -62
  467. package/dist/builtin/workflows/src/intercom/result-intercom.ts +123 -123
  468. package/dist/builtin/workflows/src/runs/background/cancellation-registry.ts +72 -59
  469. package/dist/builtin/workflows/src/runs/background/durable-resume-transition.ts +45 -45
  470. package/dist/builtin/workflows/src/runs/background/job-tracker.ts +69 -34
  471. package/dist/builtin/workflows/src/runs/background/quit-tool-node.ts +71 -0
  472. package/dist/builtin/workflows/src/runs/background/quit.ts +360 -138
  473. package/dist/builtin/workflows/src/runs/background/resume-acknowledgements.ts +70 -69
  474. package/dist/builtin/workflows/src/runs/background/run-inspect.ts +90 -79
  475. package/dist/builtin/workflows/src/runs/background/runner.ts +122 -121
  476. package/dist/builtin/workflows/src/runs/background/startup-admission.ts +56 -60
  477. package/dist/builtin/workflows/src/runs/background/status.ts +325 -284
  478. package/dist/builtin/workflows/src/runs/background/workflow-lifecycle-aggregate.ts +25 -26
  479. package/dist/builtin/workflows/src/runs/foreground/executor-abort.ts +311 -309
  480. package/dist/builtin/workflows/src/runs/foreground/executor-child-boundary.ts +229 -199
  481. package/dist/builtin/workflows/src/runs/foreground/executor-child-helpers.ts +56 -51
  482. package/dist/builtin/workflows/src/runs/foreground/executor-continuation.ts +168 -152
  483. package/dist/builtin/workflows/src/runs/foreground/executor-direct-helpers.ts +258 -220
  484. package/dist/builtin/workflows/src/runs/foreground/executor-exit-manager.ts +178 -173
  485. package/dist/builtin/workflows/src/runs/foreground/executor-hil.ts +273 -269
  486. package/dist/builtin/workflows/src/runs/foreground/executor-inputs.ts +59 -56
  487. package/dist/builtin/workflows/src/runs/foreground/executor-lifecycle.ts +379 -351
  488. package/dist/builtin/workflows/src/runs/foreground/executor-outputs.ts +123 -127
  489. package/dist/builtin/workflows/src/runs/foreground/executor-prompt-nodes.ts +360 -295
  490. package/dist/builtin/workflows/src/runs/foreground/executor-queued-user-message.ts +47 -47
  491. package/dist/builtin/workflows/src/runs/foreground/executor-run-finalizers.ts +125 -104
  492. package/dist/builtin/workflows/src/runs/foreground/executor-scheduler.ts +191 -189
  493. package/dist/builtin/workflows/src/runs/foreground/executor-stage-call.ts +309 -242
  494. package/dist/builtin/workflows/src/runs/foreground/executor-stage-context.ts +141 -127
  495. package/dist/builtin/workflows/src/runs/foreground/executor-stage-control.ts +219 -179
  496. package/dist/builtin/workflows/src/runs/foreground/executor-stage-factory.ts +410 -354
  497. package/dist/builtin/workflows/src/runs/foreground/executor-stage-replay.ts +143 -126
  498. package/dist/builtin/workflows/src/runs/foreground/executor-stage-types.ts +50 -47
  499. package/dist/builtin/workflows/src/runs/foreground/executor-task-context.ts +1 -1
  500. package/dist/builtin/workflows/src/runs/foreground/executor-task-prompts.ts +153 -153
  501. package/dist/builtin/workflows/src/runs/foreground/executor-types.ts +157 -110
  502. package/dist/builtin/workflows/src/runs/foreground/executor.ts +10 -10
  503. package/dist/builtin/workflows/src/runs/foreground/postmortem-stage-chat.ts +176 -100
  504. package/dist/builtin/workflows/src/runs/foreground/stage-control-registry.ts +363 -257
  505. package/dist/builtin/workflows/src/runs/foreground/stage-delivery-activity.ts +86 -0
  506. package/dist/builtin/workflows/src/runs/foreground/stage-queued-user-messages.ts +95 -0
  507. package/dist/builtin/workflows/src/runs/foreground/stage-runner-candidate.ts +8 -8
  508. package/dist/builtin/workflows/src/runs/foreground/stage-runner-context.ts +277 -219
  509. package/dist/builtin/workflows/src/runs/foreground/stage-runner-controller.ts +636 -494
  510. package/dist/builtin/workflows/src/runs/foreground/stage-runner-message-admission.ts +182 -181
  511. package/dist/builtin/workflows/src/runs/foreground/stage-runner-messages.ts +80 -80
  512. package/dist/builtin/workflows/src/runs/foreground/stage-runner-options.ts +78 -74
  513. package/dist/builtin/workflows/src/runs/foreground/stage-runner-output.ts +235 -106
  514. package/dist/builtin/workflows/src/runs/foreground/stage-runner-pause.ts +200 -0
  515. package/dist/builtin/workflows/src/runs/foreground/stage-runner-replacement.ts +31 -32
  516. package/dist/builtin/workflows/src/runs/foreground/stage-runner-send-user-message.ts +115 -98
  517. package/dist/builtin/workflows/src/runs/foreground/stage-runner-session-options.ts +29 -42
  518. package/dist/builtin/workflows/src/runs/foreground/stage-runner-session.ts +44 -52
  519. package/dist/builtin/workflows/src/runs/foreground/stage-runner-structured-output.ts +63 -58
  520. package/dist/builtin/workflows/src/runs/foreground/stage-runner-types.ts +161 -124
  521. package/dist/builtin/workflows/src/runs/foreground/stage-runner-unresolved-overflow.ts +27 -23
  522. package/dist/builtin/workflows/src/runs/foreground/stage-runner.ts +10 -10
  523. package/dist/builtin/workflows/src/runs/foreground/stage-tool-execution-buffer.ts +33 -31
  524. package/dist/builtin/workflows/src/runs/shared/concurrency.ts +53 -53
  525. package/dist/builtin/workflows/src/runs/shared/graph-inference.ts +1 -1
  526. package/dist/builtin/workflows/src/runs/shared/model-fallback-candidates.ts +257 -385
  527. package/dist/builtin/workflows/src/runs/shared/model-fallback-failures.ts +378 -363
  528. package/dist/builtin/workflows/src/runs/shared/prompt-callsite.ts +55 -55
  529. package/dist/builtin/workflows/src/runs/shared/validate-inputs.ts +75 -84
  530. package/dist/builtin/workflows/src/runs/shared/worktree-cache-lifecycle.ts +1 -3
  531. package/dist/builtin/workflows/src/runs/shared/worktree-cwd.ts +96 -83
  532. package/dist/builtin/workflows/src/runs/shared/worktree-diff.ts +9 -2
  533. package/dist/builtin/workflows/src/runs/shared/worktree-git-runner.ts +21 -6
  534. package/dist/builtin/workflows/src/runs/shared/worktree-git.ts +60 -30
  535. package/dist/builtin/workflows/src/runs/shared/worktree-post-create.ts +12 -5
  536. package/dist/builtin/workflows/src/runs/shared/worktree-setup.ts +51 -30
  537. package/dist/builtin/workflows/src/runs/shared/worktree.ts +4 -4
  538. package/dist/builtin/workflows/src/sdk-surface.ts +38 -19
  539. package/dist/builtin/workflows/src/shared/authoring-contract-stage.d.ts +17 -16
  540. package/dist/builtin/workflows/src/shared/authoring-contract-stage.ts +299 -280
  541. package/dist/builtin/workflows/src/shared/authoring-contract-ui.d.ts +78 -10
  542. package/dist/builtin/workflows/src/shared/authoring-contract-ui.ts +313 -219
  543. package/dist/builtin/workflows/src/shared/expanded-workflow-graph.ts +400 -152
  544. package/dist/builtin/workflows/src/shared/flat-string.ts +33 -0
  545. package/dist/builtin/workflows/src/shared/graph-store-snapshot.ts +144 -0
  546. package/dist/builtin/workflows/src/shared/intercom-group.ts +33 -26
  547. package/dist/builtin/workflows/src/shared/persistence-compaction-policy.ts +30 -30
  548. package/dist/builtin/workflows/src/shared/persistence-restore-helpers.ts +435 -379
  549. package/dist/builtin/workflows/src/shared/persistence-restore.ts +187 -181
  550. package/dist/builtin/workflows/src/shared/persistence-session-entries.ts +211 -208
  551. package/dist/builtin/workflows/src/shared/prompt-callsite-context.ts +3 -3
  552. package/dist/builtin/workflows/src/shared/render-inputs-schema.ts +87 -94
  553. package/dist/builtin/workflows/src/shared/resume-continuation.ts +1 -1
  554. package/dist/builtin/workflows/src/shared/returned-run-status.ts +91 -77
  555. package/dist/builtin/workflows/src/shared/run-id.ts +36 -0
  556. package/dist/builtin/workflows/src/shared/run-visibility.ts +2 -2
  557. package/dist/builtin/workflows/src/shared/schema-introspection.ts +50 -60
  558. package/dist/builtin/workflows/src/shared/serializable.ts +72 -86
  559. package/dist/builtin/workflows/src/shared/session-transcript.ts +44 -39
  560. package/dist/builtin/workflows/src/shared/stage-prompt.ts +183 -202
  561. package/dist/builtin/workflows/src/shared/stage-ui-broker.ts +270 -274
  562. package/dist/builtin/workflows/src/shared/store-factory.ts +9 -7
  563. package/dist/builtin/workflows/src/shared/store-internal.ts +201 -168
  564. package/dist/builtin/workflows/src/shared/store-observation.ts +10 -0
  565. package/dist/builtin/workflows/src/shared/store-prompt-methods.ts +196 -200
  566. package/dist/builtin/workflows/src/shared/store-public-types.ts +216 -196
  567. package/dist/builtin/workflows/src/shared/store-run-methods.ts +252 -222
  568. package/dist/builtin/workflows/src/shared/store-stage-methods.ts +284 -283
  569. package/dist/builtin/workflows/src/shared/store-tool-node-methods.ts +53 -0
  570. package/dist/builtin/workflows/src/shared/store-types.ts +273 -235
  571. package/dist/builtin/workflows/src/shared/store.ts +7 -7
  572. package/dist/builtin/workflows/src/shared/timing.ts +36 -34
  573. package/dist/builtin/workflows/src/shared/types.ts +259 -217
  574. package/dist/builtin/workflows/src/shared/workflow-artifacts.ts +261 -0
  575. package/dist/builtin/workflows/src/shared/workflow-authoring-types.d.ts +11 -4
  576. package/dist/builtin/workflows/src/shared/workflow-authoring-types.ts +81 -58
  577. package/dist/builtin/workflows/src/shared/workflow-failures-classifier.ts +247 -221
  578. package/dist/builtin/workflows/src/shared/workflow-failures-contract.ts +45 -46
  579. package/dist/builtin/workflows/src/shared/workflow-failures-decisions.ts +330 -351
  580. package/dist/builtin/workflows/src/shared/workflow-failures-signals.ts +212 -157
  581. package/dist/builtin/workflows/src/shared/workflow-failures.ts +10 -10
  582. package/dist/builtin/workflows/src/shared/workflow-run-ownership.ts +49 -0
  583. package/dist/builtin/workflows/src/tui/chat-surface-message.ts +157 -184
  584. package/dist/builtin/workflows/src/tui/chat-surface.ts +332 -355
  585. package/dist/builtin/workflows/src/tui/color-utils.ts +21 -30
  586. package/dist/builtin/workflows/src/tui/connectors.ts +57 -61
  587. package/dist/builtin/workflows/src/tui/dispatch-confirm.ts +192 -200
  588. package/dist/builtin/workflows/src/tui/edge.ts +10 -9
  589. package/dist/builtin/workflows/src/tui/graph-canvas.ts +148 -134
  590. package/dist/builtin/workflows/src/tui/graph-theme.ts +139 -148
  591. package/dist/builtin/workflows/src/tui/graph-view-constants.ts +9 -6
  592. package/dist/builtin/workflows/src/tui/graph-view-graph-render.ts +147 -183
  593. package/dist/builtin/workflows/src/tui/graph-view-input.ts +295 -329
  594. package/dist/builtin/workflows/src/tui/graph-view-render-helpers.ts +291 -320
  595. package/dist/builtin/workflows/src/tui/graph-view-render.ts +160 -192
  596. package/dist/builtin/workflows/src/tui/graph-view-state.ts +487 -308
  597. package/dist/builtin/workflows/src/tui/graph-view-types.ts +65 -58
  598. package/dist/builtin/workflows/src/tui/header.ts +140 -156
  599. package/dist/builtin/workflows/src/tui/host-input-form.ts +47 -45
  600. package/dist/builtin/workflows/src/tui/inline-form-card.ts +277 -266
  601. package/dist/builtin/workflows/src/tui/inline-form-editor-text.ts +61 -62
  602. package/dist/builtin/workflows/src/tui/inline-form-editor.ts +407 -412
  603. package/dist/builtin/workflows/src/tui/inline-form-overlay.ts +203 -214
  604. package/dist/builtin/workflows/src/tui/inline-form-store.ts +24 -24
  605. package/dist/builtin/workflows/src/tui/inputs-overlay.ts +116 -129
  606. package/dist/builtin/workflows/src/tui/inputs-picker-editing.ts +111 -115
  607. package/dist/builtin/workflows/src/tui/inputs-picker-input.ts +255 -269
  608. package/dist/builtin/workflows/src/tui/inputs-picker-render.ts +248 -236
  609. package/dist/builtin/workflows/src/tui/inputs-picker-types.ts +111 -140
  610. package/dist/builtin/workflows/src/tui/inputs-picker.ts +12 -12
  611. package/dist/builtin/workflows/src/tui/keybindings-adapter.ts +49 -57
  612. package/dist/builtin/workflows/src/tui/layout.ts +130 -133
  613. package/dist/builtin/workflows/src/tui/mouse-input.ts +45 -47
  614. package/dist/builtin/workflows/src/tui/node-card.ts +247 -223
  615. package/dist/builtin/workflows/src/tui/overlay-adapter.ts +383 -398
  616. package/dist/builtin/workflows/src/tui/overlay-terminal-modes.ts +20 -19
  617. package/dist/builtin/workflows/src/tui/prompt-card-input.ts +183 -194
  618. package/dist/builtin/workflows/src/tui/prompt-card-render.ts +529 -318
  619. package/dist/builtin/workflows/src/tui/prompt-card-select.ts +76 -98
  620. package/dist/builtin/workflows/src/tui/prompt-card-state.ts +40 -40
  621. package/dist/builtin/workflows/src/tui/prompt-card-text.ts +76 -83
  622. package/dist/builtin/workflows/src/tui/prompt-card.ts +3 -3
  623. package/dist/builtin/workflows/src/tui/renderers.ts +6 -7
  624. package/dist/builtin/workflows/src/tui/run-detail.ts +320 -259
  625. package/dist/builtin/workflows/src/tui/run-identity-rows.ts +97 -0
  626. package/dist/builtin/workflows/src/tui/session-list.ts +19 -18
  627. package/dist/builtin/workflows/src/tui/session-overlays.ts +103 -87
  628. package/dist/builtin/workflows/src/tui/session-picker.ts +318 -282
  629. package/dist/builtin/workflows/src/tui/stage-chat-composer-drafts.ts +11 -11
  630. package/dist/builtin/workflows/src/tui/stage-chat-layout.ts +55 -62
  631. package/dist/builtin/workflows/src/tui/stage-chat-view-archive-history.ts +384 -263
  632. package/dist/builtin/workflows/src/tui/stage-chat-view-custom-ui.ts +91 -102
  633. package/dist/builtin/workflows/src/tui/stage-chat-view-delivery-activity.ts +113 -0
  634. package/dist/builtin/workflows/src/tui/stage-chat-view-footer-status.ts +189 -209
  635. package/dist/builtin/workflows/src/tui/stage-chat-view-input.ts +178 -208
  636. package/dist/builtin/workflows/src/tui/stage-chat-view-live-events.ts +53 -23
  637. package/dist/builtin/workflows/src/tui/stage-chat-view-pending-tools.ts +2 -4
  638. package/dist/builtin/workflows/src/tui/stage-chat-view-render-helpers.ts +85 -88
  639. package/dist/builtin/workflows/src/tui/stage-chat-view-render-settings.ts +39 -17
  640. package/dist/builtin/workflows/src/tui/stage-chat-view-state.ts +475 -409
  641. package/dist/builtin/workflows/src/tui/stage-chat-view-status.ts +24 -25
  642. package/dist/builtin/workflows/src/tui/stage-chat-view-transcript.ts +181 -197
  643. package/dist/builtin/workflows/src/tui/stage-chat-view-types.ts +128 -129
  644. package/dist/builtin/workflows/src/tui/stage-chat-view.ts +211 -205
  645. package/dist/builtin/workflows/src/tui/status-helpers.ts +65 -69
  646. package/dist/builtin/workflows/src/tui/status-list.ts +349 -305
  647. package/dist/builtin/workflows/src/tui/store-widget-installer.ts +214 -214
  648. package/dist/builtin/workflows/src/tui/submit-pane.ts +114 -130
  649. package/dist/builtin/workflows/src/tui/switcher.ts +120 -128
  650. package/dist/builtin/workflows/src/tui/text-helpers.ts +136 -145
  651. package/dist/builtin/workflows/src/tui/widget.ts +284 -295
  652. package/dist/builtin/workflows/src/tui/workflow-attach-pane-handle.ts +12 -17
  653. package/dist/builtin/workflows/src/tui/workflow-attach-pane-types.ts +81 -91
  654. package/dist/builtin/workflows/src/tui/workflow-attach-pane.ts +473 -479
  655. package/dist/builtin/workflows/src/tui/workflow-list.ts +130 -145
  656. package/dist/builtin/workflows/src/tui/workflow-notice-card.ts +127 -144
  657. package/dist/builtin/workflows/src/tui/workflow-resume-selector.ts +231 -218
  658. package/dist/builtin/workflows/src/tui/workflow-status.ts +7 -0
  659. package/dist/builtin/workflows/src/workflows/identity.ts +12 -12
  660. package/dist/builtin/workflows/src/workflows/registry.ts +66 -68
  661. package/dist/bun/cli.js.map +1 -1
  662. package/dist/bun/internal-intercom-broker.d.ts.map +1 -1
  663. package/dist/bun/internal-intercom-broker.js +1 -1
  664. package/dist/bun/internal-intercom-broker.js.map +1 -1
  665. package/dist/bun/register-bedrock.js +1 -1
  666. package/dist/bun/register-bedrock.js.map +1 -1
  667. package/dist/cli/args.d.ts +8 -1
  668. package/dist/cli/args.d.ts.map +1 -1
  669. package/dist/cli/args.js +28 -22
  670. package/dist/cli/args.js.map +1 -1
  671. package/dist/cli/config-selector.d.ts +4 -2
  672. package/dist/cli/config-selector.d.ts.map +1 -1
  673. package/dist/cli/config-selector.js +2 -2
  674. package/dist/cli/config-selector.js.map +1 -1
  675. package/dist/cli/credential-print.d.ts +170 -0
  676. package/dist/cli/credential-print.d.ts.map +1 -0
  677. package/dist/cli/credential-print.js +513 -0
  678. package/dist/cli/credential-print.js.map +1 -0
  679. package/dist/cli/list-models.d.ts +2 -2
  680. package/dist/cli/list-models.d.ts.map +1 -1
  681. package/dist/cli/list-models.js +6 -7
  682. package/dist/cli/list-models.js.map +1 -1
  683. package/dist/cli/project-trust.d.ts +1 -1
  684. package/dist/cli/project-trust.d.ts.map +1 -1
  685. package/dist/cli/project-trust.js.map +1 -1
  686. package/dist/cli/session-picker.d.ts.map +1 -1
  687. package/dist/cli/session-picker.js +2 -1
  688. package/dist/cli/session-picker.js.map +1 -1
  689. package/dist/cli/startup-ui.d.ts +3 -0
  690. package/dist/cli/startup-ui.d.ts.map +1 -1
  691. package/dist/cli/startup-ui.js +58 -2
  692. package/dist/cli/startup-ui.js.map +1 -1
  693. package/dist/cli.js +2 -0
  694. package/dist/cli.js.map +1 -1
  695. package/dist/config-command-parser.d.ts +9 -0
  696. package/dist/config-command-parser.d.ts.map +1 -0
  697. package/dist/config-command-parser.js +22 -0
  698. package/dist/config-command-parser.js.map +1 -0
  699. package/dist/config-self-update.d.ts +6 -2
  700. package/dist/config-self-update.d.ts.map +1 -1
  701. package/dist/config-self-update.js +23 -13
  702. package/dist/config-self-update.js.map +1 -1
  703. package/dist/config.d.ts +5 -3
  704. package/dist/config.d.ts.map +1 -1
  705. package/dist/config.js +36 -14
  706. package/dist/config.js.map +1 -1
  707. package/dist/core/agent-session-accessors.d.ts.map +1 -1
  708. package/dist/core/agent-session-accessors.js +130 -24
  709. package/dist/core/agent-session-accessors.js.map +1 -1
  710. package/dist/core/agent-session-auto-compaction.d.ts +4 -3
  711. package/dist/core/agent-session-auto-compaction.d.ts.map +1 -1
  712. package/dist/core/agent-session-auto-compaction.js +64 -64
  713. package/dist/core/agent-session-auto-compaction.js.map +1 -1
  714. package/dist/core/agent-session-bash.d.ts +10 -7
  715. package/dist/core/agent-session-bash.d.ts.map +1 -1
  716. package/dist/core/agent-session-bash.js +34 -13
  717. package/dist/core/agent-session-bash.js.map +1 -1
  718. package/dist/core/agent-session-compaction.d.ts +11 -1
  719. package/dist/core/agent-session-compaction.d.ts.map +1 -1
  720. package/dist/core/agent-session-compaction.js +141 -27
  721. package/dist/core/agent-session-compaction.js.map +1 -1
  722. package/dist/core/agent-session-custom-message-commit.d.ts +14 -0
  723. package/dist/core/agent-session-custom-message-commit.d.ts.map +1 -0
  724. package/dist/core/agent-session-custom-message-commit.js +145 -0
  725. package/dist/core/agent-session-custom-message-commit.js.map +1 -0
  726. package/dist/core/agent-session-delivery-forwarding.d.ts +9 -0
  727. package/dist/core/agent-session-delivery-forwarding.d.ts.map +1 -0
  728. package/dist/core/agent-session-delivery-forwarding.js +36 -0
  729. package/dist/core/agent-session-delivery-forwarding.js.map +1 -0
  730. package/dist/core/agent-session-events.d.ts +1 -1
  731. package/dist/core/agent-session-events.d.ts.map +1 -1
  732. package/dist/core/agent-session-events.js +58 -19
  733. package/dist/core/agent-session-events.js.map +1 -1
  734. package/dist/core/agent-session-export.d.ts +1 -1
  735. package/dist/core/agent-session-export.d.ts.map +1 -1
  736. package/dist/core/agent-session-export.js +32 -25
  737. package/dist/core/agent-session-export.js.map +1 -1
  738. package/dist/core/agent-session-extension-bindings.d.ts +2 -6
  739. package/dist/core/agent-session-extension-bindings.d.ts.map +1 -1
  740. package/dist/core/agent-session-extension-bindings.js +38 -18
  741. package/dist/core/agent-session-extension-bindings.js.map +1 -1
  742. package/dist/core/agent-session-message-queue.d.ts +10 -11
  743. package/dist/core/agent-session-message-queue.d.ts.map +1 -1
  744. package/dist/core/agent-session-message-queue.js +123 -106
  745. package/dist/core/agent-session-message-queue.js.map +1 -1
  746. package/dist/core/agent-session-methods.d.ts +55 -46
  747. package/dist/core/agent-session-methods.d.ts.map +1 -1
  748. package/dist/core/agent-session-methods.js.map +1 -1
  749. package/dist/core/agent-session-models.d.ts +3 -39
  750. package/dist/core/agent-session-models.d.ts.map +1 -1
  751. package/dist/core/agent-session-models.js +22 -160
  752. package/dist/core/agent-session-models.js.map +1 -1
  753. package/dist/core/agent-session-persistent-custom-messages.d.ts +47 -0
  754. package/dist/core/agent-session-persistent-custom-messages.d.ts.map +1 -0
  755. package/dist/core/agent-session-persistent-custom-messages.js +272 -0
  756. package/dist/core/agent-session-persistent-custom-messages.js.map +1 -0
  757. package/dist/core/agent-session-post-tool-compaction.d.ts +1 -1
  758. package/dist/core/agent-session-post-tool-compaction.d.ts.map +1 -1
  759. package/dist/core/agent-session-post-tool-compaction.js +45 -13
  760. package/dist/core/agent-session-post-tool-compaction.js.map +1 -1
  761. package/dist/core/agent-session-prompt.d.ts +2 -0
  762. package/dist/core/agent-session-prompt.d.ts.map +1 -1
  763. package/dist/core/agent-session-prompt.js +52 -25
  764. package/dist/core/agent-session-prompt.js.map +1 -1
  765. package/dist/core/agent-session-queue-pause.d.ts +10 -0
  766. package/dist/core/agent-session-queue-pause.d.ts.map +1 -0
  767. package/dist/core/agent-session-queue-pause.js +87 -0
  768. package/dist/core/agent-session-queue-pause.js.map +1 -0
  769. package/dist/core/agent-session-retry.d.ts +0 -11
  770. package/dist/core/agent-session-retry.d.ts.map +1 -1
  771. package/dist/core/agent-session-retry.js +38 -64
  772. package/dist/core/agent-session-retry.js.map +1 -1
  773. package/dist/core/agent-session-runtime-auth.d.ts +6 -0
  774. package/dist/core/agent-session-runtime-auth.d.ts.map +1 -0
  775. package/dist/core/agent-session-runtime-auth.js +18 -0
  776. package/dist/core/agent-session-runtime-auth.js.map +1 -0
  777. package/dist/core/agent-session-runtime.d.ts +25 -3
  778. package/dist/core/agent-session-runtime.d.ts.map +1 -1
  779. package/dist/core/agent-session-runtime.js +55 -11
  780. package/dist/core/agent-session-runtime.js.map +1 -1
  781. package/dist/core/agent-session-services.d.ts +4 -9
  782. package/dist/core/agent-session-services.d.ts.map +1 -1
  783. package/dist/core/agent-session-services.js +25 -25
  784. package/dist/core/agent-session-services.js.map +1 -1
  785. package/dist/core/agent-session-state.d.ts +1 -1
  786. package/dist/core/agent-session-state.d.ts.map +1 -1
  787. package/dist/core/agent-session-state.js +3 -0
  788. package/dist/core/agent-session-state.js.map +1 -1
  789. package/dist/core/agent-session-tool-hooks.d.ts.map +1 -1
  790. package/dist/core/agent-session-tool-hooks.js +8 -7
  791. package/dist/core/agent-session-tool-hooks.js.map +1 -1
  792. package/dist/core/agent-session-tool-registry.d.ts.map +1 -1
  793. package/dist/core/agent-session-tool-registry.js +6 -20
  794. package/dist/core/agent-session-tool-registry.js.map +1 -1
  795. package/dist/core/agent-session-transfer.d.ts +4 -0
  796. package/dist/core/agent-session-transfer.d.ts.map +1 -0
  797. package/dist/core/agent-session-transfer.js +67 -0
  798. package/dist/core/agent-session-transfer.js.map +1 -0
  799. package/dist/core/agent-session-tree.d.ts +1 -1
  800. package/dist/core/agent-session-tree.d.ts.map +1 -1
  801. package/dist/core/agent-session-tree.js +17 -3
  802. package/dist/core/agent-session-tree.js.map +1 -1
  803. package/dist/core/agent-session-types.d.ts +32 -14
  804. package/dist/core/agent-session-types.d.ts.map +1 -1
  805. package/dist/core/agent-session-types.js +4 -4
  806. package/dist/core/agent-session-types.js.map +1 -1
  807. package/dist/core/agent-session.d.ts +28 -13
  808. package/dist/core/agent-session.d.ts.map +1 -1
  809. package/dist/core/agent-session.js +18 -12
  810. package/dist/core/agent-session.js.map +1 -1
  811. package/dist/core/anthropic-thinking-guard.d.ts.map +1 -1
  812. package/dist/core/anthropic-thinking-guard.js +4 -2
  813. package/dist/core/anthropic-thinking-guard.js.map +1 -1
  814. package/dist/core/async/format.d.ts +1 -1
  815. package/dist/core/async/format.d.ts.map +1 -1
  816. package/dist/core/async/format.js +3 -1
  817. package/dist/core/async/format.js.map +1 -1
  818. package/dist/core/async/job-manager.d.ts.map +1 -1
  819. package/dist/core/async/job-manager.js +20 -5
  820. package/dist/core/async/job-manager.js.map +1 -1
  821. package/dist/core/async/session-manager.d.ts.map +1 -1
  822. package/dist/core/async/session-manager.js.map +1 -1
  823. package/dist/core/atomic-guide-command.d.ts.map +1 -1
  824. package/dist/core/atomic-guide-command.js +32 -35
  825. package/dist/core/atomic-guide-command.js.map +1 -1
  826. package/dist/core/auth-guidance.d.ts.map +1 -1
  827. package/dist/core/auth-guidance.js.map +1 -1
  828. package/dist/core/auth-storage-backends.d.ts +1 -0
  829. package/dist/core/auth-storage-backends.d.ts.map +1 -1
  830. package/dist/core/auth-storage-backends.js +30 -5
  831. package/dist/core/auth-storage-backends.js.map +1 -1
  832. package/dist/core/auth-storage.d.ts +13 -136
  833. package/dist/core/auth-storage.d.ts.map +1 -1
  834. package/dist/core/auth-storage.js +69 -375
  835. package/dist/core/auth-storage.js.map +1 -1
  836. package/dist/core/bash-executor.d.ts +5 -3
  837. package/dist/core/bash-executor.d.ts.map +1 -1
  838. package/dist/core/bash-executor.js +5 -4
  839. package/dist/core/bash-executor.js.map +1 -1
  840. package/dist/core/bounded-model-refresh.d.ts +14 -0
  841. package/dist/core/bounded-model-refresh.d.ts.map +1 -0
  842. package/dist/core/bounded-model-refresh.js +38 -0
  843. package/dist/core/bounded-model-refresh.js.map +1 -0
  844. package/dist/core/builtin-packages.d.ts.map +1 -1
  845. package/dist/core/builtin-packages.js +1 -10
  846. package/dist/core/builtin-packages.js.map +1 -1
  847. package/dist/core/cache-stats.d.ts +25 -0
  848. package/dist/core/cache-stats.d.ts.map +1 -0
  849. package/dist/core/cache-stats.js +70 -0
  850. package/dist/core/cache-stats.js.map +1 -0
  851. package/dist/core/callback-activity.d.ts.map +1 -1
  852. package/dist/core/callback-activity.js.map +1 -1
  853. package/dist/core/codex-errors.d.ts.map +1 -1
  854. package/dist/core/codex-errors.js +1 -1
  855. package/dist/core/codex-errors.js.map +1 -1
  856. package/dist/core/codex-fast-mode.d.ts.map +1 -1
  857. package/dist/core/codex-fast-mode.js.map +1 -1
  858. package/dist/core/compaction/branch-summarization.d.ts +15 -5
  859. package/dist/core/compaction/branch-summarization.d.ts.map +1 -1
  860. package/dist/core/compaction/branch-summarization.js +23 -12
  861. package/dist/core/compaction/branch-summarization.js.map +1 -1
  862. package/dist/core/compaction/compaction-boundary.d.ts +18 -1
  863. package/dist/core/compaction/compaction-boundary.d.ts.map +1 -1
  864. package/dist/core/compaction/compaction-boundary.js +12 -8
  865. package/dist/core/compaction/compaction-boundary.js.map +1 -1
  866. package/dist/core/compaction/compaction-runner.d.ts +63 -6
  867. package/dist/core/compaction/compaction-runner.d.ts.map +1 -1
  868. package/dist/core/compaction/compaction-runner.js +244 -17
  869. package/dist/core/compaction/compaction-runner.js.map +1 -1
  870. package/dist/core/compaction/compaction-types.d.ts +53 -2
  871. package/dist/core/compaction/compaction-types.d.ts.map +1 -1
  872. package/dist/core/compaction/compaction-types.js.map +1 -1
  873. package/dist/core/compaction/compaction.d.ts.map +1 -1
  874. package/dist/core/compaction/compaction.js +5 -1
  875. package/dist/core/compaction/compaction.js.map +1 -1
  876. package/dist/core/compaction/deleted-ranges.d.ts.map +1 -1
  877. package/dist/core/compaction/deleted-ranges.js.map +1 -1
  878. package/dist/core/compaction/fallback-planner.d.ts +64 -0
  879. package/dist/core/compaction/fallback-planner.d.ts.map +1 -0
  880. package/dist/core/compaction/fallback-planner.js +75 -0
  881. package/dist/core/compaction/fallback-planner.js.map +1 -0
  882. package/dist/core/compaction/index.d.ts +7 -4
  883. package/dist/core/compaction/index.d.ts.map +1 -1
  884. package/dist/core/compaction/index.js +7 -4
  885. package/dist/core/compaction/index.js.map +1 -1
  886. package/dist/core/compaction/planner-outcome.d.ts +86 -0
  887. package/dist/core/compaction/planner-outcome.d.ts.map +1 -0
  888. package/dist/core/compaction/planner-outcome.js +122 -0
  889. package/dist/core/compaction/planner-outcome.js.map +1 -0
  890. package/dist/core/compaction/range-planner-diagnostics.d.ts +58 -6
  891. package/dist/core/compaction/range-planner-diagnostics.d.ts.map +1 -1
  892. package/dist/core/compaction/range-planner-diagnostics.js +71 -31
  893. package/dist/core/compaction/range-planner-diagnostics.js.map +1 -1
  894. package/dist/core/compaction/range-planner.d.ts +39 -8
  895. package/dist/core/compaction/range-planner.d.ts.map +1 -1
  896. package/dist/core/compaction/range-planner.js +140 -51
  897. package/dist/core/compaction/range-planner.js.map +1 -1
  898. package/dist/core/compaction/region-trimming.d.ts +34 -0
  899. package/dist/core/compaction/region-trimming.d.ts.map +1 -0
  900. package/dist/core/compaction/region-trimming.js +73 -0
  901. package/dist/core/compaction/region-trimming.js.map +1 -0
  902. package/dist/core/compaction/transcript-serialization.d.ts +8 -1
  903. package/dist/core/compaction/transcript-serialization.d.ts.map +1 -1
  904. package/dist/core/compaction/transcript-serialization.js +78 -27
  905. package/dist/core/compaction/transcript-serialization.js.map +1 -1
  906. package/dist/core/context-tool-pairing.d.ts +19 -0
  907. package/dist/core/context-tool-pairing.d.ts.map +1 -0
  908. package/dist/core/context-tool-pairing.js +50 -0
  909. package/dist/core/context-tool-pairing.js.map +1 -0
  910. package/dist/core/copilot-env-routing.d.ts +36 -0
  911. package/dist/core/copilot-env-routing.d.ts.map +1 -0
  912. package/dist/core/copilot-env-routing.js +94 -0
  913. package/dist/core/copilot-env-routing.js.map +1 -0
  914. package/dist/core/diagnostics.d.ts +8 -0
  915. package/dist/core/diagnostics.d.ts.map +1 -1
  916. package/dist/core/diagnostics.js.map +1 -1
  917. package/dist/core/exec.d.ts.map +1 -1
  918. package/dist/core/exec.js +5 -0
  919. package/dist/core/exec.js.map +1 -1
  920. package/dist/core/experimental.d.ts.map +1 -1
  921. package/dist/core/experimental.js +2 -1
  922. package/dist/core/experimental.js.map +1 -1
  923. package/dist/core/extensions/agent-events.d.ts +10 -0
  924. package/dist/core/extensions/agent-events.d.ts.map +1 -1
  925. package/dist/core/extensions/agent-events.js.map +1 -1
  926. package/dist/core/extensions/api-types.d.ts +9 -3
  927. package/dist/core/extensions/api-types.d.ts.map +1 -1
  928. package/dist/core/extensions/api-types.js.map +1 -1
  929. package/dist/core/extensions/context-types.d.ts +10 -1
  930. package/dist/core/extensions/context-types.d.ts.map +1 -1
  931. package/dist/core/extensions/context-types.js.map +1 -1
  932. package/dist/core/extensions/event-types.d.ts +2 -2
  933. package/dist/core/extensions/event-types.d.ts.map +1 -1
  934. package/dist/core/extensions/event-types.js.map +1 -1
  935. package/dist/core/extensions/index.d.ts +7 -5
  936. package/dist/core/extensions/index.d.ts.map +1 -1
  937. package/dist/core/extensions/index.js +2 -2
  938. package/dist/core/extensions/index.js.map +1 -1
  939. package/dist/core/extensions/loader-api.d.ts +1 -1
  940. package/dist/core/extensions/loader-api.d.ts.map +1 -1
  941. package/dist/core/extensions/loader-api.js +63 -29
  942. package/dist/core/extensions/loader-api.js.map +1 -1
  943. package/dist/core/extensions/loader-core.d.ts.map +1 -1
  944. package/dist/core/extensions/loader-core.js +3 -2
  945. package/dist/core/extensions/loader-core.js.map +1 -1
  946. package/dist/core/extensions/loader-discovery.d.ts.map +1 -1
  947. package/dist/core/extensions/loader-discovery.js.map +1 -1
  948. package/dist/core/extensions/loader-resources.d.ts.map +1 -1
  949. package/dist/core/extensions/loader-resources.js.map +1 -1
  950. package/dist/core/extensions/loader-runtime.d.ts +2 -4
  951. package/dist/core/extensions/loader-runtime.d.ts.map +1 -1
  952. package/dist/core/extensions/loader-runtime.js +214 -13
  953. package/dist/core/extensions/loader-runtime.js.map +1 -1
  954. package/dist/core/extensions/loader-virtual-modules.d.ts +17 -0
  955. package/dist/core/extensions/loader-virtual-modules.d.ts.map +1 -1
  956. package/dist/core/extensions/loader-virtual-modules.js +288 -19
  957. package/dist/core/extensions/loader-virtual-modules.js.map +1 -1
  958. package/dist/core/extensions/loader.d.ts.map +1 -1
  959. package/dist/core/extensions/loader.js.map +1 -1
  960. package/dist/core/extensions/message-types.d.ts +12 -4
  961. package/dist/core/extensions/message-types.d.ts.map +1 -1
  962. package/dist/core/extensions/message-types.js.map +1 -1
  963. package/dist/core/extensions/provider-types.d.ts +16 -5
  964. package/dist/core/extensions/provider-types.d.ts.map +1 -1
  965. package/dist/core/extensions/provider-types.js.map +1 -1
  966. package/dist/core/extensions/reactive-widget.d.ts.map +1 -1
  967. package/dist/core/extensions/reactive-widget.js.map +1 -1
  968. package/dist/core/extensions/runner-context.d.ts +29 -1
  969. package/dist/core/extensions/runner-context.d.ts.map +1 -1
  970. package/dist/core/extensions/runner-context.js +56 -0
  971. package/dist/core/extensions/runner-context.js.map +1 -1
  972. package/dist/core/extensions/runner-events.d.ts.map +1 -1
  973. package/dist/core/extensions/runner-events.js.map +1 -1
  974. package/dist/core/extensions/runner-registries.d.ts +2 -1
  975. package/dist/core/extensions/runner-registries.d.ts.map +1 -1
  976. package/dist/core/extensions/runner-registries.js +8 -0
  977. package/dist/core/extensions/runner-registries.js.map +1 -1
  978. package/dist/core/extensions/runner.d.ts +7 -2
  979. package/dist/core/extensions/runner.d.ts.map +1 -1
  980. package/dist/core/extensions/runner.js +65 -23
  981. package/dist/core/extensions/runner.js.map +1 -1
  982. package/dist/core/extensions/runtime-types.d.ts +35 -2
  983. package/dist/core/extensions/runtime-types.d.ts.map +1 -1
  984. package/dist/core/extensions/runtime-types.js.map +1 -1
  985. package/dist/core/extensions/session-events.d.ts.map +1 -1
  986. package/dist/core/extensions/session-events.js.map +1 -1
  987. package/dist/core/extensions/tool-types.d.ts +7 -3
  988. package/dist/core/extensions/tool-types.d.ts.map +1 -1
  989. package/dist/core/extensions/tool-types.js.map +1 -1
  990. package/dist/core/extensions/types.d.ts +15 -2
  991. package/dist/core/extensions/types.d.ts.map +1 -1
  992. package/dist/core/extensions/types.js +1 -1
  993. package/dist/core/extensions/types.js.map +1 -1
  994. package/dist/core/extensions/ui-types.d.ts +34 -6
  995. package/dist/core/extensions/ui-types.d.ts.map +1 -1
  996. package/dist/core/extensions/ui-types.js.map +1 -1
  997. package/dist/core/fallback-models.d.ts +37 -0
  998. package/dist/core/fallback-models.d.ts.map +1 -0
  999. package/dist/core/fallback-models.js +57 -0
  1000. package/dist/core/fallback-models.js.map +1 -0
  1001. package/dist/core/flattened-tool-arguments.d.ts +4 -7
  1002. package/dist/core/flattened-tool-arguments.d.ts.map +1 -1
  1003. package/dist/core/flattened-tool-arguments.js +4 -7
  1004. package/dist/core/flattened-tool-arguments.js.map +1 -1
  1005. package/dist/core/footer-data-provider.d.ts +10 -0
  1006. package/dist/core/footer-data-provider.d.ts.map +1 -1
  1007. package/dist/core/footer-data-provider.js +5 -3
  1008. package/dist/core/footer-data-provider.js.map +1 -1
  1009. package/dist/core/http-dispatcher.d.ts +1 -0
  1010. package/dist/core/http-dispatcher.d.ts.map +1 -1
  1011. package/dist/core/http-dispatcher.js +42 -8
  1012. package/dist/core/http-dispatcher.js.map +1 -1
  1013. package/dist/core/keybindings.d.ts +7 -2
  1014. package/dist/core/keybindings.d.ts.map +1 -1
  1015. package/dist/core/keybindings.js +3 -1
  1016. package/dist/core/keybindings.js.map +1 -1
  1017. package/dist/core/messages.d.ts +29 -5
  1018. package/dist/core/messages.d.ts.map +1 -1
  1019. package/dist/core/messages.js +66 -14
  1020. package/dist/core/messages.js.map +1 -1
  1021. package/dist/core/model-capabilities.d.ts +18 -0
  1022. package/dist/core/model-capabilities.d.ts.map +1 -0
  1023. package/dist/core/model-capabilities.js +22 -0
  1024. package/dist/core/model-capabilities.js.map +1 -0
  1025. package/dist/core/model-config.d.ts +542 -0
  1026. package/dist/core/model-config.d.ts.map +1 -0
  1027. package/dist/core/{model-registry-schemas.js → model-config.js} +92 -32
  1028. package/dist/core/model-config.js.map +1 -0
  1029. package/dist/core/model-refresh-timeout.d.ts +9 -0
  1030. package/dist/core/model-refresh-timeout.d.ts.map +1 -0
  1031. package/dist/core/model-refresh-timeout.js +9 -0
  1032. package/dist/core/model-refresh-timeout.js.map +1 -0
  1033. package/dist/core/model-registry.d.ts +26 -94
  1034. package/dist/core/model-registry.d.ts.map +1 -1
  1035. package/dist/core/model-registry.js +65 -382
  1036. package/dist/core/model-registry.js.map +1 -1
  1037. package/dist/core/model-resolver-cli.d.ts +2 -2
  1038. package/dist/core/model-resolver-cli.d.ts.map +1 -1
  1039. package/dist/core/model-resolver-cli.js +2 -2
  1040. package/dist/core/model-resolver-cli.js.map +1 -1
  1041. package/dist/core/model-resolver-defaults.d.ts.map +1 -1
  1042. package/dist/core/model-resolver-defaults.js +5 -1
  1043. package/dist/core/model-resolver-defaults.js.map +1 -1
  1044. package/dist/core/model-resolver-initial.d.ts +4 -4
  1045. package/dist/core/model-resolver-initial.d.ts.map +1 -1
  1046. package/dist/core/model-resolver-initial.js +26 -17
  1047. package/dist/core/model-resolver-initial.js.map +1 -1
  1048. package/dist/core/model-resolver-patterns.d.ts.map +1 -1
  1049. package/dist/core/model-resolver-patterns.js +0 -2
  1050. package/dist/core/model-resolver-patterns.js.map +1 -1
  1051. package/dist/core/model-resolver-scope.d.ts +5 -3
  1052. package/dist/core/model-resolver-scope.d.ts.map +1 -1
  1053. package/dist/core/model-resolver-scope.js +32 -8
  1054. package/dist/core/model-resolver-scope.js.map +1 -1
  1055. package/dist/core/model-resolver-types.d.ts +2 -0
  1056. package/dist/core/model-resolver-types.d.ts.map +1 -1
  1057. package/dist/core/model-resolver-types.js.map +1 -1
  1058. package/dist/core/model-resolver.d.ts +3 -3
  1059. package/dist/core/model-resolver.d.ts.map +1 -1
  1060. package/dist/core/model-resolver.js +1 -1
  1061. package/dist/core/model-resolver.js.map +1 -1
  1062. package/dist/core/model-runtime-auth.d.ts +7 -0
  1063. package/dist/core/model-runtime-auth.d.ts.map +1 -0
  1064. package/dist/core/model-runtime-auth.js +17 -0
  1065. package/dist/core/model-runtime-auth.js.map +1 -0
  1066. package/dist/core/model-runtime-providers.d.ts +6 -0
  1067. package/dist/core/model-runtime-providers.d.ts.map +1 -0
  1068. package/dist/core/model-runtime-providers.js +22 -0
  1069. package/dist/core/model-runtime-providers.js.map +1 -0
  1070. package/dist/core/model-runtime-restoration.d.ts +6 -0
  1071. package/dist/core/model-runtime-restoration.d.ts.map +1 -0
  1072. package/dist/core/model-runtime-restoration.js +21 -0
  1073. package/dist/core/model-runtime-restoration.js.map +1 -0
  1074. package/dist/core/model-runtime-snapshot.d.ts +19 -0
  1075. package/dist/core/model-runtime-snapshot.d.ts.map +1 -0
  1076. package/dist/core/model-runtime-snapshot.js +111 -0
  1077. package/dist/core/model-runtime-snapshot.js.map +1 -0
  1078. package/dist/core/model-runtime-streaming.d.ts +17 -0
  1079. package/dist/core/model-runtime-streaming.d.ts.map +1 -0
  1080. package/dist/core/model-runtime-streaming.js +66 -0
  1081. package/dist/core/model-runtime-streaming.js.map +1 -0
  1082. package/dist/core/model-runtime-types.d.ts +21 -0
  1083. package/dist/core/model-runtime-types.d.ts.map +1 -0
  1084. package/dist/core/model-runtime-types.js +2 -0
  1085. package/dist/core/model-runtime-types.js.map +1 -0
  1086. package/dist/core/model-runtime.d.ts +79 -0
  1087. package/dist/core/model-runtime.d.ts.map +1 -0
  1088. package/dist/core/model-runtime.js +417 -0
  1089. package/dist/core/model-runtime.js.map +1 -0
  1090. package/dist/core/models-store.d.ts +2 -10
  1091. package/dist/core/models-store.d.ts.map +1 -1
  1092. package/dist/core/models-store.js +2 -29
  1093. package/dist/core/models-store.js.map +1 -1
  1094. package/dist/core/oauth-login.d.ts +24 -0
  1095. package/dist/core/oauth-login.d.ts.map +1 -0
  1096. package/dist/core/oauth-login.js +92 -0
  1097. package/dist/core/oauth-login.js.map +1 -0
  1098. package/dist/core/oauth-provider-metadata.d.ts +5 -0
  1099. package/dist/core/oauth-provider-metadata.d.ts.map +1 -0
  1100. package/dist/core/oauth-provider-metadata.js +33 -0
  1101. package/dist/core/oauth-provider-metadata.js.map +1 -0
  1102. package/dist/core/openai-responses-payload-sanitizer.js.map +1 -1
  1103. package/dist/core/output-guard.d.ts +44 -0
  1104. package/dist/core/output-guard.d.ts.map +1 -1
  1105. package/dist/core/output-guard.js +63 -0
  1106. package/dist/core/output-guard.js.map +1 -1
  1107. package/dist/core/package-manager-auto-resources.d.ts.map +1 -1
  1108. package/dist/core/package-manager-auto-resources.js +18 -5
  1109. package/dist/core/package-manager-auto-resources.js.map +1 -1
  1110. package/dist/core/package-manager-git.d.ts.map +1 -1
  1111. package/dist/core/package-manager-git.js +27 -11
  1112. package/dist/core/package-manager-git.js.map +1 -1
  1113. package/dist/core/package-manager-npm.d.ts.map +1 -1
  1114. package/dist/core/package-manager-npm.js +4 -2
  1115. package/dist/core/package-manager-npm.js.map +1 -1
  1116. package/dist/core/package-manager-operations.d.ts.map +1 -1
  1117. package/dist/core/package-manager-operations.js +2 -2
  1118. package/dist/core/package-manager-operations.js.map +1 -1
  1119. package/dist/core/package-manager-paths.d.ts.map +1 -1
  1120. package/dist/core/package-manager-paths.js.map +1 -1
  1121. package/dist/core/package-manager-resolver.d.ts.map +1 -1
  1122. package/dist/core/package-manager-resolver.js +71 -26
  1123. package/dist/core/package-manager-resolver.js.map +1 -1
  1124. package/dist/core/package-manager-resource-collector.d.ts.map +1 -1
  1125. package/dist/core/package-manager-resource-collector.js +13 -7
  1126. package/dist/core/package-manager-resource-collector.js.map +1 -1
  1127. package/dist/core/package-manager-resource-files.d.ts.map +1 -1
  1128. package/dist/core/package-manager-resource-files.js +4 -3
  1129. package/dist/core/package-manager-resource-files.js.map +1 -1
  1130. package/dist/core/package-manager-resource-patterns.d.ts +1 -0
  1131. package/dist/core/package-manager-resource-patterns.d.ts.map +1 -1
  1132. package/dist/core/package-manager-resource-patterns.js +15 -0
  1133. package/dist/core/package-manager-resource-patterns.js.map +1 -1
  1134. package/dist/core/package-manager-settings.d.ts.map +1 -1
  1135. package/dist/core/package-manager-settings.js +3 -2
  1136. package/dist/core/package-manager-settings.js.map +1 -1
  1137. package/dist/core/package-manager-source.d.ts.map +1 -1
  1138. package/dist/core/package-manager-source.js +16 -9
  1139. package/dist/core/package-manager-source.js.map +1 -1
  1140. package/dist/core/package-manager-types.d.ts +3 -0
  1141. package/dist/core/package-manager-types.d.ts.map +1 -1
  1142. package/dist/core/package-manager-types.js.map +1 -1
  1143. package/dist/core/package-manager.d.ts +1 -1
  1144. package/dist/core/package-manager.d.ts.map +1 -1
  1145. package/dist/core/package-manager.js +2 -3
  1146. package/dist/core/package-manager.js.map +1 -1
  1147. package/dist/core/prompt-templates-async.d.ts.map +1 -1
  1148. package/dist/core/prompt-templates-async.js +15 -7
  1149. package/dist/core/prompt-templates-async.js.map +1 -1
  1150. package/dist/core/prompt-templates.d.ts +1 -0
  1151. package/dist/core/prompt-templates.d.ts.map +1 -1
  1152. package/dist/core/prompt-templates.js +4 -4
  1153. package/dist/core/prompt-templates.js.map +1 -1
  1154. package/dist/core/provider-composer-internal.d.ts +53 -0
  1155. package/dist/core/provider-composer-internal.d.ts.map +1 -0
  1156. package/dist/core/provider-composer-internal.js +273 -0
  1157. package/dist/core/provider-composer-internal.js.map +1 -0
  1158. package/dist/core/provider-composer.d.ts +16 -0
  1159. package/dist/core/provider-composer.d.ts.map +1 -0
  1160. package/dist/core/provider-composer.js +108 -0
  1161. package/dist/core/provider-composer.js.map +1 -0
  1162. package/dist/core/provider-context-usage.d.ts.map +1 -1
  1163. package/dist/core/provider-context-usage.js +2 -1
  1164. package/dist/core/provider-context-usage.js.map +1 -1
  1165. package/dist/core/provider-display-names.d.ts.map +1 -1
  1166. package/dist/core/provider-display-names.js +4 -0
  1167. package/dist/core/provider-display-names.js.map +1 -1
  1168. package/dist/core/remote-catalog-provider.d.ts +1 -1
  1169. package/dist/core/remote-catalog-provider.d.ts.map +1 -1
  1170. package/dist/core/remote-catalog-provider.js +82 -105
  1171. package/dist/core/remote-catalog-provider.js.map +1 -1
  1172. package/dist/core/resolve-config-value.d.ts +8 -7
  1173. package/dist/core/resolve-config-value.d.ts.map +1 -1
  1174. package/dist/core/resolve-config-value.js +26 -23
  1175. package/dist/core/resolve-config-value.js.map +1 -1
  1176. package/dist/core/resource-loader-assets.d.ts.map +1 -1
  1177. package/dist/core/resource-loader-assets.js +58 -8
  1178. package/dist/core/resource-loader-assets.js.map +1 -1
  1179. package/dist/core/resource-loader-context-files.d.ts +6 -0
  1180. package/dist/core/resource-loader-context-files.d.ts.map +1 -1
  1181. package/dist/core/resource-loader-context-files.js +85 -4
  1182. package/dist/core/resource-loader-context-files.js.map +1 -1
  1183. package/dist/core/resource-loader-core.d.ts +13 -3
  1184. package/dist/core/resource-loader-core.d.ts.map +1 -1
  1185. package/dist/core/resource-loader-core.js +39 -19
  1186. package/dist/core/resource-loader-core.js.map +1 -1
  1187. package/dist/core/resource-loader-discovery.d.ts.map +1 -1
  1188. package/dist/core/resource-loader-discovery.js.map +1 -1
  1189. package/dist/core/resource-loader-extensions.d.ts +1 -0
  1190. package/dist/core/resource-loader-extensions.d.ts.map +1 -1
  1191. package/dist/core/resource-loader-extensions.js +140 -12
  1192. package/dist/core/resource-loader-extensions.js.map +1 -1
  1193. package/dist/core/resource-loader-helpers.d.ts.map +1 -1
  1194. package/dist/core/resource-loader-helpers.js +1 -0
  1195. package/dist/core/resource-loader-helpers.js.map +1 -1
  1196. package/dist/core/resource-loader-internals.d.ts +14 -7
  1197. package/dist/core/resource-loader-internals.d.ts.map +1 -1
  1198. package/dist/core/resource-loader-internals.js.map +1 -1
  1199. package/dist/core/resource-loader-package-resources.d.ts.map +1 -1
  1200. package/dist/core/resource-loader-package-resources.js +15 -2
  1201. package/dist/core/resource-loader-package-resources.js.map +1 -1
  1202. package/dist/core/resource-loader-paths.js.map +1 -1
  1203. package/dist/core/resource-loader-reload.d.ts.map +1 -1
  1204. package/dist/core/resource-loader-reload.js +29 -13
  1205. package/dist/core/resource-loader-reload.js.map +1 -1
  1206. package/dist/core/resource-loader-source-info.d.ts +1 -1
  1207. package/dist/core/resource-loader-source-info.d.ts.map +1 -1
  1208. package/dist/core/resource-loader-source-info.js +7 -4
  1209. package/dist/core/resource-loader-source-info.js.map +1 -1
  1210. package/dist/core/resource-loader-types.d.ts +12 -6
  1211. package/dist/core/resource-loader-types.d.ts.map +1 -1
  1212. package/dist/core/resource-loader-types.js.map +1 -1
  1213. package/dist/core/resource-loader.d.ts +1 -1
  1214. package/dist/core/resource-loader.d.ts.map +1 -1
  1215. package/dist/core/resource-loader.js +1 -1
  1216. package/dist/core/resource-loader.js.map +1 -1
  1217. package/dist/core/runtime-credentials.d.ts +16 -0
  1218. package/dist/core/runtime-credentials.d.ts.map +1 -0
  1219. package/dist/core/runtime-credentials.js +42 -0
  1220. package/dist/core/runtime-credentials.js.map +1 -0
  1221. package/dist/core/sdk-exports.d.ts +2 -2
  1222. package/dist/core/sdk-exports.d.ts.map +1 -1
  1223. package/dist/core/sdk-exports.js +2 -2
  1224. package/dist/core/sdk-exports.js.map +1 -1
  1225. package/dist/core/sdk-types.d.ts +16 -18
  1226. package/dist/core/sdk-types.d.ts.map +1 -1
  1227. package/dist/core/sdk-types.js.map +1 -1
  1228. package/dist/core/sdk.d.ts +2 -1
  1229. package/dist/core/sdk.d.ts.map +1 -1
  1230. package/dist/core/sdk.js +61 -132
  1231. package/dist/core/sdk.js.map +1 -1
  1232. package/dist/core/session-manager-archive.d.ts.map +1 -1
  1233. package/dist/core/session-manager-archive.js +5 -2
  1234. package/dist/core/session-manager-archive.js.map +1 -1
  1235. package/dist/core/session-manager-classification.js +3 -3
  1236. package/dist/core/session-manager-classification.js.map +1 -1
  1237. package/dist/core/session-manager-core.d.ts +5 -4
  1238. package/dist/core/session-manager-core.d.ts.map +1 -1
  1239. package/dist/core/session-manager-core.js +29 -33
  1240. package/dist/core/session-manager-core.js.map +1 -1
  1241. package/dist/core/session-manager-entries.d.ts +6 -9
  1242. package/dist/core/session-manager-entries.d.ts.map +1 -1
  1243. package/dist/core/session-manager-entries.js +5 -9
  1244. package/dist/core/session-manager-entries.js.map +1 -1
  1245. package/dist/core/session-manager-history.d.ts +8 -3
  1246. package/dist/core/session-manager-history.d.ts.map +1 -1
  1247. package/dist/core/session-manager-history.js +90 -27
  1248. package/dist/core/session-manager-history.js.map +1 -1
  1249. package/dist/core/session-manager-list.d.ts.map +1 -1
  1250. package/dist/core/session-manager-list.js +1 -1
  1251. package/dist/core/session-manager-list.js.map +1 -1
  1252. package/dist/core/session-manager-migrations.js.map +1 -1
  1253. package/dist/core/session-manager-storage.d.ts +6 -0
  1254. package/dist/core/session-manager-storage.d.ts.map +1 -1
  1255. package/dist/core/session-manager-storage.js +38 -5
  1256. package/dist/core/session-manager-storage.js.map +1 -1
  1257. package/dist/core/session-manager-types.d.ts +13 -8
  1258. package/dist/core/session-manager-types.d.ts.map +1 -1
  1259. package/dist/core/session-manager-types.js.map +1 -1
  1260. package/dist/core/session-manager-validation.d.ts.map +1 -1
  1261. package/dist/core/session-manager-validation.js +3 -16
  1262. package/dist/core/session-manager-validation.js.map +1 -1
  1263. package/dist/core/session-manager.d.ts +4 -4
  1264. package/dist/core/session-manager.d.ts.map +1 -1
  1265. package/dist/core/session-manager.js +2 -2
  1266. package/dist/core/session-manager.js.map +1 -1
  1267. package/dist/core/settings-manager-basic-accessors.d.ts +7 -4
  1268. package/dist/core/settings-manager-basic-accessors.d.ts.map +1 -1
  1269. package/dist/core/settings-manager-basic-accessors.js +35 -50
  1270. package/dist/core/settings-manager-basic-accessors.js.map +1 -1
  1271. package/dist/core/settings-manager-core.d.ts +2 -4
  1272. package/dist/core/settings-manager-core.d.ts.map +1 -1
  1273. package/dist/core/settings-manager-core.js +5 -51
  1274. package/dist/core/settings-manager-core.js.map +1 -1
  1275. package/dist/core/settings-manager-resource-accessors.d.ts +3 -0
  1276. package/dist/core/settings-manager-resource-accessors.d.ts.map +1 -1
  1277. package/dist/core/settings-manager-resource-accessors.js +16 -0
  1278. package/dist/core/settings-manager-resource-accessors.js.map +1 -1
  1279. package/dist/core/settings-manager-ui-accessors.js +2 -1
  1280. package/dist/core/settings-manager-ui-accessors.js.map +1 -1
  1281. package/dist/core/settings-manager.d.ts +1 -1
  1282. package/dist/core/settings-manager.d.ts.map +1 -1
  1283. package/dist/core/settings-manager.js.map +1 -1
  1284. package/dist/core/settings-storage.d.ts +3 -1
  1285. package/dist/core/settings-storage.d.ts.map +1 -1
  1286. package/dist/core/settings-storage.js +23 -1
  1287. package/dist/core/settings-storage.js.map +1 -1
  1288. package/dist/core/settings-types.d.ts +10 -6
  1289. package/dist/core/settings-types.d.ts.map +1 -1
  1290. package/dist/core/settings-types.js.map +1 -1
  1291. package/dist/core/skills-async.d.ts.map +1 -1
  1292. package/dist/core/skills-async.js +18 -8
  1293. package/dist/core/skills-async.js.map +1 -1
  1294. package/dist/core/slash-commands.d.ts +1 -0
  1295. package/dist/core/slash-commands.d.ts.map +1 -1
  1296. package/dist/core/slash-commands.js +127 -24
  1297. package/dist/core/slash-commands.js.map +1 -1
  1298. package/dist/core/source-info.d.ts +3 -1
  1299. package/dist/core/source-info.d.ts.map +1 -1
  1300. package/dist/core/source-info.js +2 -0
  1301. package/dist/core/source-info.js.map +1 -1
  1302. package/dist/core/summarization-retry.d.ts +11 -0
  1303. package/dist/core/summarization-retry.d.ts.map +1 -0
  1304. package/dist/core/summarization-retry.js +21 -0
  1305. package/dist/core/summarization-retry.js.map +1 -0
  1306. package/dist/core/system-prompt.d.ts.map +1 -1
  1307. package/dist/core/system-prompt.js +15 -18
  1308. package/dist/core/system-prompt.js.map +1 -1
  1309. package/dist/core/thinking-blocks.d.ts.map +1 -1
  1310. package/dist/core/thinking-blocks.js +2 -2
  1311. package/dist/core/thinking-blocks.js.map +1 -1
  1312. package/dist/core/tools/artifact-protocol.d.ts.map +1 -1
  1313. package/dist/core/tools/artifact-protocol.js.map +1 -1
  1314. package/dist/core/tools/artifacts.d.ts.map +1 -1
  1315. package/dist/core/tools/artifacts.js.map +1 -1
  1316. package/dist/core/tools/ask-user-question/ask-user-question.d.ts.map +1 -1
  1317. package/dist/core/tools/ask-user-question/ask-user-question.js +1 -1
  1318. package/dist/core/tools/ask-user-question/ask-user-question.js.map +1 -1
  1319. package/dist/core/tools/ask-user-question/state/build-questionnaire.d.ts +1 -1
  1320. package/dist/core/tools/ask-user-question/state/build-questionnaire.d.ts.map +1 -1
  1321. package/dist/core/tools/ask-user-question/state/build-questionnaire.js +1 -1
  1322. package/dist/core/tools/ask-user-question/state/build-questionnaire.js.map +1 -1
  1323. package/dist/core/tools/ask-user-question/state/questionnaire-session.d.ts.map +1 -1
  1324. package/dist/core/tools/ask-user-question/state/questionnaire-session.js +2 -4
  1325. package/dist/core/tools/ask-user-question/state/questionnaire-session.js.map +1 -1
  1326. package/dist/core/tools/ask-user-question/state/state-reducer.d.ts.map +1 -1
  1327. package/dist/core/tools/ask-user-question/state/state-reducer.js.map +1 -1
  1328. package/dist/core/tools/ask-user-question/view/body-residual-spacer.d.ts.map +1 -1
  1329. package/dist/core/tools/ask-user-question/view/body-residual-spacer.js.map +1 -1
  1330. package/dist/core/tools/ask-user-question/view/components/multi-select-view.d.ts.map +1 -1
  1331. package/dist/core/tools/ask-user-question/view/components/multi-select-view.js.map +1 -1
  1332. package/dist/core/tools/ask-user-question/view/components/preview/markdown-content-cache.d.ts +1 -1
  1333. package/dist/core/tools/ask-user-question/view/components/preview/markdown-content-cache.d.ts.map +1 -1
  1334. package/dist/core/tools/ask-user-question/view/components/preview/markdown-content-cache.js.map +1 -1
  1335. package/dist/core/tools/ask-user-question/view/components/preview/preview-block-renderer.d.ts +1 -1
  1336. package/dist/core/tools/ask-user-question/view/components/preview/preview-block-renderer.d.ts.map +1 -1
  1337. package/dist/core/tools/ask-user-question/view/components/preview/preview-block-renderer.js +1 -3
  1338. package/dist/core/tools/ask-user-question/view/components/preview/preview-block-renderer.js.map +1 -1
  1339. package/dist/core/tools/ask-user-question/view/components/submit-picker.d.ts.map +1 -1
  1340. package/dist/core/tools/ask-user-question/view/components/submit-picker.js.map +1 -1
  1341. package/dist/core/tools/ask-user-question/view/components/tab-bar.d.ts.map +1 -1
  1342. package/dist/core/tools/ask-user-question/view/components/tab-bar.js.map +1 -1
  1343. package/dist/core/tools/ask-user-question/view/dialog-builder.d.ts +1 -1
  1344. package/dist/core/tools/ask-user-question/view/dialog-builder.d.ts.map +1 -1
  1345. package/dist/core/tools/ask-user-question/view/dialog-builder.js +1 -1
  1346. package/dist/core/tools/ask-user-question/view/dialog-builder.js.map +1 -1
  1347. package/dist/core/tools/ask-user-question/view/props-adapter.d.ts.map +1 -1
  1348. package/dist/core/tools/ask-user-question/view/props-adapter.js +2 -4
  1349. package/dist/core/tools/ask-user-question/view/props-adapter.js.map +1 -1
  1350. package/dist/core/tools/ask-user-question/view/tab-content-strategy.d.ts +1 -1
  1351. package/dist/core/tools/ask-user-question/view/tab-content-strategy.d.ts.map +1 -1
  1352. package/dist/core/tools/ask-user-question/view/tab-content-strategy.js +2 -9
  1353. package/dist/core/tools/ask-user-question/view/tab-content-strategy.js.map +1 -1
  1354. package/dist/core/tools/bash-async-execution.d.ts.map +1 -1
  1355. package/dist/core/tools/bash-async-execution.js +11 -4
  1356. package/dist/core/tools/bash-async-execution.js.map +1 -1
  1357. package/dist/core/tools/bash-async-jobs.d.ts.map +1 -1
  1358. package/dist/core/tools/bash-async-jobs.js +14 -2
  1359. package/dist/core/tools/bash-async-jobs.js.map +1 -1
  1360. package/dist/core/tools/bash-async-output.d.ts.map +1 -1
  1361. package/dist/core/tools/bash-async-output.js +6 -2
  1362. package/dist/core/tools/bash-async-output.js.map +1 -1
  1363. package/dist/core/tools/bash-interceptor.d.ts.map +1 -1
  1364. package/dist/core/tools/bash-interceptor.js +20 -4
  1365. package/dist/core/tools/bash-interceptor.js.map +1 -1
  1366. package/dist/core/tools/bash-leading-cd.d.ts.map +1 -1
  1367. package/dist/core/tools/bash-leading-cd.js +9 -3
  1368. package/dist/core/tools/bash-leading-cd.js.map +1 -1
  1369. package/dist/core/tools/bash-pty-native.d.ts.map +1 -1
  1370. package/dist/core/tools/bash-pty-native.js.map +1 -1
  1371. package/dist/core/tools/bash-session-environment.d.ts +13 -0
  1372. package/dist/core/tools/bash-session-environment.d.ts.map +1 -0
  1373. package/dist/core/tools/bash-session-environment.js +47 -0
  1374. package/dist/core/tools/bash-session-environment.js.map +1 -0
  1375. package/dist/core/tools/bash.d.ts +4 -1
  1376. package/dist/core/tools/bash.d.ts.map +1 -1
  1377. package/dist/core/tools/bash.js +134 -30
  1378. package/dist/core/tools/bash.js.map +1 -1
  1379. package/dist/core/tools/block-resolver.d.ts.map +1 -1
  1380. package/dist/core/tools/block-resolver.js.map +1 -1
  1381. package/dist/core/tools/conflict-registry.d.ts.map +1 -1
  1382. package/dist/core/tools/conflict-registry.js.map +1 -1
  1383. package/dist/core/tools/directory-tree.d.ts.map +1 -1
  1384. package/dist/core/tools/directory-tree.js +20 -4
  1385. package/dist/core/tools/directory-tree.js.map +1 -1
  1386. package/dist/core/tools/edit.d.ts.map +1 -1
  1387. package/dist/core/tools/edit.js +37 -13
  1388. package/dist/core/tools/edit.js.map +1 -1
  1389. package/dist/core/tools/fetch-url.d.ts.map +1 -1
  1390. package/dist/core/tools/fetch-url.js +127 -41
  1391. package/dist/core/tools/fetch-url.js.map +1 -1
  1392. package/dist/core/tools/find.d.ts.map +1 -1
  1393. package/dist/core/tools/find.js +176 -46
  1394. package/dist/core/tools/find.js.map +1 -1
  1395. package/dist/core/tools/grep.d.ts.map +1 -1
  1396. package/dist/core/tools/grep.js +43 -10
  1397. package/dist/core/tools/grep.js.map +1 -1
  1398. package/dist/core/tools/hashline-engine/apply.d.ts.map +1 -1
  1399. package/dist/core/tools/hashline-engine/apply.js +6 -6
  1400. package/dist/core/tools/hashline-engine/apply.js.map +1 -1
  1401. package/dist/core/tools/hashline-engine/block.js +1 -1
  1402. package/dist/core/tools/hashline-engine/block.js.map +1 -1
  1403. package/dist/core/tools/hashline-engine/format.d.ts.map +1 -1
  1404. package/dist/core/tools/hashline-engine/format.js +1 -1
  1405. package/dist/core/tools/hashline-engine/format.js.map +1 -1
  1406. package/dist/core/tools/hashline-engine/input.d.ts.map +1 -1
  1407. package/dist/core/tools/hashline-engine/input.js +7 -7
  1408. package/dist/core/tools/hashline-engine/input.js.map +1 -1
  1409. package/dist/core/tools/hashline-engine/parser.js +1 -1
  1410. package/dist/core/tools/hashline-engine/parser.js.map +1 -1
  1411. package/dist/core/tools/hashline-engine/patcher.js +5 -5
  1412. package/dist/core/tools/hashline-engine/patcher.js.map +1 -1
  1413. package/dist/core/tools/hashline-engine/prefixes.js +4 -4
  1414. package/dist/core/tools/hashline-engine/prefixes.js.map +1 -1
  1415. package/dist/core/tools/hashline-engine/recovery.d.ts.map +1 -1
  1416. package/dist/core/tools/hashline-engine/recovery.js +4 -2
  1417. package/dist/core/tools/hashline-engine/recovery.js.map +1 -1
  1418. package/dist/core/tools/hashline-engine/snapshots.js +5 -5
  1419. package/dist/core/tools/hashline-engine/snapshots.js.map +1 -1
  1420. package/dist/core/tools/hashline.d.ts.map +1 -1
  1421. package/dist/core/tools/hashline.js +24 -13
  1422. package/dist/core/tools/hashline.js.map +1 -1
  1423. package/dist/core/tools/index.d.ts +6 -6
  1424. package/dist/core/tools/index.d.ts.map +1 -1
  1425. package/dist/core/tools/index.js +6 -6
  1426. package/dist/core/tools/index.js.map +1 -1
  1427. package/dist/core/tools/ls.d.ts.map +1 -1
  1428. package/dist/core/tools/ls.js +2 -1
  1429. package/dist/core/tools/ls.js.map +1 -1
  1430. package/dist/core/tools/notebook.d.ts.map +1 -1
  1431. package/dist/core/tools/notebook.js +13 -3
  1432. package/dist/core/tools/notebook.js.map +1 -1
  1433. package/dist/core/tools/read-document-extract.d.ts.map +1 -1
  1434. package/dist/core/tools/read-document-extract.js +30 -10
  1435. package/dist/core/tools/read-document-extract.js.map +1 -1
  1436. package/dist/core/tools/read-selectors.d.ts.map +1 -1
  1437. package/dist/core/tools/read-selectors.js +59 -15
  1438. package/dist/core/tools/read-selectors.js.map +1 -1
  1439. package/dist/core/tools/read-url.d.ts.map +1 -1
  1440. package/dist/core/tools/read-url.js +41 -7
  1441. package/dist/core/tools/read-url.js.map +1 -1
  1442. package/dist/core/tools/read.d.ts.map +1 -1
  1443. package/dist/core/tools/read.js +307 -72
  1444. package/dist/core/tools/read.js.map +1 -1
  1445. package/dist/core/tools/resource-selectors.d.ts +4 -0
  1446. package/dist/core/tools/resource-selectors.d.ts.map +1 -1
  1447. package/dist/core/tools/resource-selectors.js +324 -84
  1448. package/dist/core/tools/resource-selectors.js.map +1 -1
  1449. package/dist/core/tools/search-details.d.ts.map +1 -1
  1450. package/dist/core/tools/search-details.js +13 -1
  1451. package/dist/core/tools/search-details.js.map +1 -1
  1452. package/dist/core/tools/search-line-ranges.d.ts.map +1 -1
  1453. package/dist/core/tools/search-line-ranges.js +5 -2
  1454. package/dist/core/tools/search-line-ranges.js.map +1 -1
  1455. package/dist/core/tools/search-native.d.ts.map +1 -1
  1456. package/dist/core/tools/search-native.js.map +1 -1
  1457. package/dist/core/tools/search.d.ts.map +1 -1
  1458. package/dist/core/tools/search.js +244 -90
  1459. package/dist/core/tools/search.js.map +1 -1
  1460. package/dist/core/tools/structured-output.d.ts +1 -1
  1461. package/dist/core/tools/structured-output.d.ts.map +1 -1
  1462. package/dist/core/tools/structured-output.js.map +1 -1
  1463. package/dist/core/tools/todos-execute.d.ts.map +1 -1
  1464. package/dist/core/tools/todos-execute.js +4 -4
  1465. package/dist/core/tools/todos-execute.js.map +1 -1
  1466. package/dist/core/tools/todos-locks.d.ts.map +1 -1
  1467. package/dist/core/tools/todos-locks.js.map +1 -1
  1468. package/dist/core/tools/todos-mutations.js +1 -1
  1469. package/dist/core/tools/todos-mutations.js.map +1 -1
  1470. package/dist/core/tools/todos-paths.js +2 -2
  1471. package/dist/core/tools/todos-paths.js.map +1 -1
  1472. package/dist/core/tools/todos-render.d.ts.map +1 -1
  1473. package/dist/core/tools/todos-render.js +2 -2
  1474. package/dist/core/tools/todos-render.js.map +1 -1
  1475. package/dist/core/tools/todos-storage.d.ts.map +1 -1
  1476. package/dist/core/tools/todos-storage.js +1 -2
  1477. package/dist/core/tools/todos-storage.js.map +1 -1
  1478. package/dist/core/tools/todos-types.d.ts.map +1 -1
  1479. package/dist/core/tools/todos-types.js +1 -11
  1480. package/dist/core/tools/todos-types.js.map +1 -1
  1481. package/dist/core/tools/tool-definition-wrapper.d.ts +3 -0
  1482. package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -1
  1483. package/dist/core/tools/tool-definition-wrapper.js +9 -5
  1484. package/dist/core/tools/tool-definition-wrapper.js.map +1 -1
  1485. package/dist/core/tools/url-ip-guards.d.ts.map +1 -1
  1486. package/dist/core/tools/url-ip-guards.js +27 -17
  1487. package/dist/core/tools/url-ip-guards.js.map +1 -1
  1488. package/dist/core/tools/write.d.ts.map +1 -1
  1489. package/dist/core/tools/write.js +88 -29
  1490. package/dist/core/tools/write.js.map +1 -1
  1491. package/dist/core/usage-totals.d.ts +18 -0
  1492. package/dist/core/usage-totals.d.ts.map +1 -0
  1493. package/dist/core/usage-totals.js +43 -0
  1494. package/dist/core/usage-totals.js.map +1 -0
  1495. package/dist/core/workflow-stage-admission.d.ts.map +1 -1
  1496. package/dist/core/workflow-stage-admission.js +8 -2
  1497. package/dist/core/workflow-stage-admission.js.map +1 -1
  1498. package/dist/extensions/index.d.ts +3 -0
  1499. package/dist/extensions/index.d.ts.map +1 -0
  1500. package/dist/extensions/index.js +5 -0
  1501. package/dist/extensions/index.js.map +1 -0
  1502. package/dist/extensions/llama/client.d.ts +61 -0
  1503. package/dist/extensions/llama/client.d.ts.map +1 -0
  1504. package/dist/extensions/llama/client.js +300 -0
  1505. package/dist/extensions/llama/client.js.map +1 -0
  1506. package/dist/extensions/llama/huggingface-ui.d.ts +33 -0
  1507. package/dist/extensions/llama/huggingface-ui.d.ts.map +1 -0
  1508. package/dist/extensions/llama/huggingface-ui.js +166 -0
  1509. package/dist/extensions/llama/huggingface-ui.js.map +1 -0
  1510. package/dist/extensions/llama/huggingface.d.ts +23 -0
  1511. package/dist/extensions/llama/huggingface.d.ts.map +1 -0
  1512. package/dist/extensions/llama/huggingface.js +139 -0
  1513. package/dist/extensions/llama/huggingface.js.map +1 -0
  1514. package/dist/extensions/llama/index.d.ts +3 -0
  1515. package/dist/extensions/llama/index.d.ts.map +1 -0
  1516. package/dist/extensions/llama/index.js +208 -0
  1517. package/dist/extensions/llama/index.js.map +1 -0
  1518. package/dist/extensions/llama/provider.d.ts +10 -0
  1519. package/dist/extensions/llama/provider.d.ts.map +1 -0
  1520. package/dist/extensions/llama/provider.js +107 -0
  1521. package/dist/extensions/llama/provider.js.map +1 -0
  1522. package/dist/extensions/llama/ui.d.ts +42 -0
  1523. package/dist/extensions/llama/ui.d.ts.map +1 -0
  1524. package/dist/extensions/llama/ui.js +237 -0
  1525. package/dist/extensions/llama/ui.js.map +1 -0
  1526. package/dist/index-extensions.d.ts +2 -2
  1527. package/dist/index-extensions.d.ts.map +1 -1
  1528. package/dist/index-extensions.js +1 -1
  1529. package/dist/index-extensions.js.map +1 -1
  1530. package/dist/index.d.ts +22 -23
  1531. package/dist/index.d.ts.map +1 -1
  1532. package/dist/index.js +26 -27
  1533. package/dist/index.js.map +1 -1
  1534. package/dist/main-app-mode.d.ts +1 -0
  1535. package/dist/main-app-mode.d.ts.map +1 -1
  1536. package/dist/main-app-mode.js +3 -0
  1537. package/dist/main-app-mode.js.map +1 -1
  1538. package/dist/main-deferred-startup.d.ts +1 -1
  1539. package/dist/main-deferred-startup.d.ts.map +1 -1
  1540. package/dist/main-deferred-startup.js +16 -15
  1541. package/dist/main-deferred-startup.js.map +1 -1
  1542. package/dist/main-early-input.js.map +1 -1
  1543. package/dist/main-first-time-setup.d.ts +6 -0
  1544. package/dist/main-first-time-setup.d.ts.map +1 -0
  1545. package/dist/main-first-time-setup.js +10 -0
  1546. package/dist/main-first-time-setup.js.map +1 -0
  1547. package/dist/main-runtime-api-key.d.ts +6 -0
  1548. package/dist/main-runtime-api-key.d.ts.map +1 -0
  1549. package/dist/main-runtime-api-key.js +6 -0
  1550. package/dist/main-runtime-api-key.js.map +1 -0
  1551. package/dist/main-session-options.d.ts +2 -2
  1552. package/dist/main-session-options.d.ts.map +1 -1
  1553. package/dist/main-session-options.js +3 -7
  1554. package/dist/main-session-options.js.map +1 -1
  1555. package/dist/main-session.d.ts.map +1 -1
  1556. package/dist/main-session.js +5 -4
  1557. package/dist/main-session.js.map +1 -1
  1558. package/dist/main-types.d.ts +2 -2
  1559. package/dist/main-types.d.ts.map +1 -1
  1560. package/dist/main-types.js.map +1 -1
  1561. package/dist/main.d.ts +1 -1
  1562. package/dist/main.d.ts.map +1 -1
  1563. package/dist/main.js +173 -69
  1564. package/dist/main.js.map +1 -1
  1565. package/dist/migrations-config-values.d.ts.map +1 -1
  1566. package/dist/migrations-config-values.js +3 -1
  1567. package/dist/migrations-config-values.js.map +1 -1
  1568. package/dist/migrations.d.ts.map +1 -1
  1569. package/dist/migrations.js.map +1 -1
  1570. package/dist/modes/index.d.ts +1 -1
  1571. package/dist/modes/index.d.ts.map +1 -1
  1572. package/dist/modes/index.js.map +1 -1
  1573. package/dist/modes/interactive/chat-input-actions.d.ts +1 -1
  1574. package/dist/modes/interactive/chat-input-actions.d.ts.map +1 -1
  1575. package/dist/modes/interactive/chat-input-actions.js +30 -103
  1576. package/dist/modes/interactive/chat-input-actions.js.map +1 -1
  1577. package/dist/modes/interactive/components/atomic-banner.d.ts +9 -8
  1578. package/dist/modes/interactive/components/atomic-banner.d.ts.map +1 -1
  1579. package/dist/modes/interactive/components/atomic-banner.js +68 -22
  1580. package/dist/modes/interactive/components/atomic-banner.js.map +1 -1
  1581. package/dist/modes/interactive/components/atomic-working-status.d.ts +52 -0
  1582. package/dist/modes/interactive/components/atomic-working-status.d.ts.map +1 -0
  1583. package/dist/modes/interactive/components/atomic-working-status.js +215 -0
  1584. package/dist/modes/interactive/components/atomic-working-status.js.map +1 -0
  1585. package/dist/modes/interactive/components/chat-message-renderer.d.ts +1 -1
  1586. package/dist/modes/interactive/components/chat-message-renderer.d.ts.map +1 -1
  1587. package/dist/modes/interactive/components/chat-message-renderer.js +7 -6
  1588. package/dist/modes/interactive/components/chat-message-renderer.js.map +1 -1
  1589. package/dist/modes/interactive/components/chat-session-host-actions.d.ts +10 -4
  1590. package/dist/modes/interactive/components/chat-session-host-actions.d.ts.map +1 -1
  1591. package/dist/modes/interactive/components/chat-session-host-actions.js +105 -20
  1592. package/dist/modes/interactive/components/chat-session-host-actions.js.map +1 -1
  1593. package/dist/modes/interactive/components/chat-session-host-editor.d.ts +7 -5
  1594. package/dist/modes/interactive/components/chat-session-host-editor.d.ts.map +1 -1
  1595. package/dist/modes/interactive/components/chat-session-host-editor.js +14 -9
  1596. package/dist/modes/interactive/components/chat-session-host-editor.js.map +1 -1
  1597. package/dist/modes/interactive/components/chat-session-host-events.d.ts +3 -0
  1598. package/dist/modes/interactive/components/chat-session-host-events.d.ts.map +1 -1
  1599. package/dist/modes/interactive/components/chat-session-host-events.js +86 -16
  1600. package/dist/modes/interactive/components/chat-session-host-events.js.map +1 -1
  1601. package/dist/modes/interactive/components/chat-session-host-rendering.d.ts +1 -1
  1602. package/dist/modes/interactive/components/chat-session-host-rendering.d.ts.map +1 -1
  1603. package/dist/modes/interactive/components/chat-session-host-rendering.js +49 -14
  1604. package/dist/modes/interactive/components/chat-session-host-rendering.js.map +1 -1
  1605. package/dist/modes/interactive/components/chat-session-host-runtime.d.ts +36 -2
  1606. package/dist/modes/interactive/components/chat-session-host-runtime.d.ts.map +1 -1
  1607. package/dist/modes/interactive/components/chat-session-host-runtime.js +129 -25
  1608. package/dist/modes/interactive/components/chat-session-host-runtime.js.map +1 -1
  1609. package/dist/modes/interactive/components/chat-session-host-state.d.ts +11 -2
  1610. package/dist/modes/interactive/components/chat-session-host-state.d.ts.map +1 -1
  1611. package/dist/modes/interactive/components/chat-session-host-state.js +5 -0
  1612. package/dist/modes/interactive/components/chat-session-host-state.js.map +1 -1
  1613. package/dist/modes/interactive/components/chat-session-host-terminal-cleanup.d.ts.map +1 -1
  1614. package/dist/modes/interactive/components/chat-session-host-terminal-cleanup.js.map +1 -1
  1615. package/dist/modes/interactive/components/chat-session-host-types.d.ts +19 -2
  1616. package/dist/modes/interactive/components/chat-session-host-types.d.ts.map +1 -1
  1617. package/dist/modes/interactive/components/chat-session-host-types.js.map +1 -1
  1618. package/dist/modes/interactive/components/chat-session-host-utils.d.ts +1 -1
  1619. package/dist/modes/interactive/components/chat-session-host-utils.d.ts.map +1 -1
  1620. package/dist/modes/interactive/components/chat-session-host-utils.js +3 -8
  1621. package/dist/modes/interactive/components/chat-session-host-utils.js.map +1 -1
  1622. package/dist/modes/interactive/components/chat-session-host.d.ts +33 -6
  1623. package/dist/modes/interactive/components/chat-session-host.d.ts.map +1 -1
  1624. package/dist/modes/interactive/components/chat-session-host.js +57 -7
  1625. package/dist/modes/interactive/components/chat-session-host.js.map +1 -1
  1626. package/dist/modes/interactive/components/chat-transcript.d.ts +1 -1
  1627. package/dist/modes/interactive/components/chat-transcript.d.ts.map +1 -1
  1628. package/dist/modes/interactive/components/chat-transcript.js +5 -12
  1629. package/dist/modes/interactive/components/chat-transcript.js.map +1 -1
  1630. package/dist/modes/interactive/components/compaction-boundary-message.d.ts.map +1 -1
  1631. package/dist/modes/interactive/components/compaction-boundary-message.js +20 -8
  1632. package/dist/modes/interactive/components/compaction-boundary-message.js.map +1 -1
  1633. package/dist/modes/interactive/components/config-selector-list.d.ts +6 -6
  1634. package/dist/modes/interactive/components/config-selector-list.d.ts.map +1 -1
  1635. package/dist/modes/interactive/components/config-selector-list.js +66 -125
  1636. package/dist/modes/interactive/components/config-selector-list.js.map +1 -1
  1637. package/dist/modes/interactive/components/config-selector-project-scope.d.ts +4 -0
  1638. package/dist/modes/interactive/components/config-selector-project-scope.d.ts.map +1 -0
  1639. package/dist/modes/interactive/components/config-selector-project-scope.js +59 -0
  1640. package/dist/modes/interactive/components/config-selector-project-scope.js.map +1 -0
  1641. package/dist/modes/interactive/components/config-selector.d.ts +8 -5
  1642. package/dist/modes/interactive/components/config-selector.d.ts.map +1 -1
  1643. package/dist/modes/interactive/components/config-selector.js +46 -13
  1644. package/dist/modes/interactive/components/config-selector.js.map +1 -1
  1645. package/dist/modes/interactive/components/countdown-timer.d.ts.map +1 -1
  1646. package/dist/modes/interactive/components/countdown-timer.js.map +1 -1
  1647. package/dist/modes/interactive/components/custom-editor.d.ts +11 -0
  1648. package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -1
  1649. package/dist/modes/interactive/components/custom-editor.js +21 -5
  1650. package/dist/modes/interactive/components/custom-editor.js.map +1 -1
  1651. package/dist/modes/interactive/components/custom-entry.d.ts +16 -0
  1652. package/dist/modes/interactive/components/custom-entry.d.ts.map +1 -0
  1653. package/dist/modes/interactive/components/custom-entry.js +45 -0
  1654. package/dist/modes/interactive/components/custom-entry.js.map +1 -0
  1655. package/dist/modes/interactive/components/custom-message.d.ts +3 -1
  1656. package/dist/modes/interactive/components/custom-message.d.ts.map +1 -1
  1657. package/dist/modes/interactive/components/custom-message.js +10 -5
  1658. package/dist/modes/interactive/components/custom-message.js.map +1 -1
  1659. package/dist/modes/interactive/components/diff.js +2 -2
  1660. package/dist/modes/interactive/components/diff.js.map +1 -1
  1661. package/dist/modes/interactive/components/extension-editor.d.ts +3 -2
  1662. package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -1
  1663. package/dist/modes/interactive/components/extension-editor.js +14 -43
  1664. package/dist/modes/interactive/components/extension-editor.js.map +1 -1
  1665. package/dist/modes/interactive/components/first-time-setup.d.ts +24 -0
  1666. package/dist/modes/interactive/components/first-time-setup.d.ts.map +1 -0
  1667. package/dist/modes/interactive/components/first-time-setup.js +80 -0
  1668. package/dist/modes/interactive/components/first-time-setup.js.map +1 -0
  1669. package/dist/modes/interactive/components/footer.d.ts +7 -1
  1670. package/dist/modes/interactive/components/footer.d.ts.map +1 -1
  1671. package/dist/modes/interactive/components/footer.js +68 -39
  1672. package/dist/modes/interactive/components/footer.js.map +1 -1
  1673. package/dist/modes/interactive/components/host-input-form-mount.d.ts.map +1 -1
  1674. package/dist/modes/interactive/components/host-input-form-mount.js +4 -2
  1675. package/dist/modes/interactive/components/host-input-form-mount.js.map +1 -1
  1676. package/dist/modes/interactive/components/host-input-form.d.ts +2 -0
  1677. package/dist/modes/interactive/components/host-input-form.d.ts.map +1 -1
  1678. package/dist/modes/interactive/components/host-input-form.js +61 -24
  1679. package/dist/modes/interactive/components/host-input-form.js.map +1 -1
  1680. package/dist/modes/interactive/components/host-session-picker.d.ts.map +1 -1
  1681. package/dist/modes/interactive/components/host-session-picker.js +8 -3
  1682. package/dist/modes/interactive/components/host-session-picker.js.map +1 -1
  1683. package/dist/modes/interactive/components/idle-status.d.ts +8 -0
  1684. package/dist/modes/interactive/components/idle-status.d.ts.map +1 -0
  1685. package/dist/modes/interactive/components/idle-status.js +13 -0
  1686. package/dist/modes/interactive/components/idle-status.js.map +1 -0
  1687. package/dist/modes/interactive/components/index.d.ts +9 -5
  1688. package/dist/modes/interactive/components/index.d.ts.map +1 -1
  1689. package/dist/modes/interactive/components/index.js +5 -2
  1690. package/dist/modes/interactive/components/index.js.map +1 -1
  1691. package/dist/modes/interactive/components/keybinding-hints.d.ts.map +1 -1
  1692. package/dist/modes/interactive/components/keybinding-hints.js.map +1 -1
  1693. package/dist/modes/interactive/components/login-dialog.d.ts +5 -5
  1694. package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
  1695. package/dist/modes/interactive/components/login-dialog.js +15 -9
  1696. package/dist/modes/interactive/components/login-dialog.js.map +1 -1
  1697. package/dist/modes/interactive/components/model-selector.d.ts +3 -3
  1698. package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
  1699. package/dist/modes/interactive/components/model-selector.js +44 -68
  1700. package/dist/modes/interactive/components/model-selector.js.map +1 -1
  1701. package/dist/modes/interactive/components/oauth-selector.d.ts +4 -3
  1702. package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -1
  1703. package/dist/modes/interactive/components/oauth-selector.js +19 -18
  1704. package/dist/modes/interactive/components/oauth-selector.js.map +1 -1
  1705. package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -1
  1706. package/dist/modes/interactive/components/scoped-models-selector.js +22 -13
  1707. package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -1
  1708. package/dist/modes/interactive/components/session-selector-list.d.ts +1 -1
  1709. package/dist/modes/interactive/components/session-selector-list.d.ts.map +1 -1
  1710. package/dist/modes/interactive/components/session-selector-list.js.map +1 -1
  1711. package/dist/modes/interactive/components/session-selector.d.ts.map +1 -1
  1712. package/dist/modes/interactive/components/session-selector.js.map +1 -1
  1713. package/dist/modes/interactive/components/settings-selector-handlers.d.ts.map +1 -1
  1714. package/dist/modes/interactive/components/settings-selector-handlers.js +6 -0
  1715. package/dist/modes/interactive/components/settings-selector-handlers.js.map +1 -1
  1716. package/dist/modes/interactive/components/settings-selector-items.d.ts.map +1 -1
  1717. package/dist/modes/interactive/components/settings-selector-items.js +14 -0
  1718. package/dist/modes/interactive/components/settings-selector-items.js.map +1 -1
  1719. package/dist/modes/interactive/components/settings-selector-submenus.d.ts.map +1 -1
  1720. package/dist/modes/interactive/components/settings-selector-submenus.js.map +1 -1
  1721. package/dist/modes/interactive/components/settings-selector-types.d.ts +4 -0
  1722. package/dist/modes/interactive/components/settings-selector-types.d.ts.map +1 -1
  1723. package/dist/modes/interactive/components/settings-selector-types.js.map +1 -1
  1724. package/dist/modes/interactive/components/startup-identity.d.ts +22 -0
  1725. package/dist/modes/interactive/components/startup-identity.d.ts.map +1 -0
  1726. package/dist/modes/interactive/components/startup-identity.js +58 -0
  1727. package/dist/modes/interactive/components/startup-identity.js.map +1 -0
  1728. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  1729. package/dist/modes/interactive/components/tool-execution.js.map +1 -1
  1730. package/dist/modes/interactive/components/tree-selector-content.d.ts.map +1 -1
  1731. package/dist/modes/interactive/components/tree-selector-content.js +0 -6
  1732. package/dist/modes/interactive/components/tree-selector-content.js.map +1 -1
  1733. package/dist/modes/interactive/components/tree-selector-model.d.ts.map +1 -1
  1734. package/dist/modes/interactive/components/tree-selector-model.js +1 -10
  1735. package/dist/modes/interactive/components/tree-selector-model.js.map +1 -1
  1736. package/dist/modes/interactive/components/tree-selector-viewport.d.ts.map +1 -1
  1737. package/dist/modes/interactive/components/tree-selector-viewport.js.map +1 -1
  1738. package/dist/modes/interactive/components/working-status.d.ts +5 -11
  1739. package/dist/modes/interactive/components/working-status.d.ts.map +1 -1
  1740. package/dist/modes/interactive/components/working-status.js +14 -15
  1741. package/dist/modes/interactive/components/working-status.js.map +1 -1
  1742. package/dist/modes/interactive/external-editor.d.ts +23 -0
  1743. package/dist/modes/interactive/external-editor.d.ts.map +1 -0
  1744. package/dist/modes/interactive/external-editor.js +120 -0
  1745. package/dist/modes/interactive/external-editor.js.map +1 -0
  1746. package/dist/modes/interactive/interactive-agent-events.js +73 -28
  1747. package/dist/modes/interactive/interactive-agent-events.js.map +1 -1
  1748. package/dist/modes/interactive/interactive-auth-login.js +36 -28
  1749. package/dist/modes/interactive/interactive-auth-login.js.map +1 -1
  1750. package/dist/modes/interactive/interactive-auth-routing.d.ts +3 -1
  1751. package/dist/modes/interactive/interactive-auth-routing.d.ts.map +1 -1
  1752. package/dist/modes/interactive/interactive-auth-routing.js +86 -64
  1753. package/dist/modes/interactive/interactive-auth-routing.js.map +1 -1
  1754. package/dist/modes/interactive/interactive-autocomplete.js +13 -13
  1755. package/dist/modes/interactive/interactive-autocomplete.js.map +1 -1
  1756. package/dist/modes/interactive/interactive-bash-compact.d.ts +2 -1
  1757. package/dist/modes/interactive/interactive-bash-compact.d.ts.map +1 -1
  1758. package/dist/modes/interactive/interactive-bash-compact.js +26 -8
  1759. package/dist/modes/interactive/interactive-bash-compact.js.map +1 -1
  1760. package/dist/modes/interactive/interactive-deferred-startup.d.ts.map +1 -1
  1761. package/dist/modes/interactive/interactive-deferred-startup.js +61 -27
  1762. package/dist/modes/interactive/interactive-deferred-startup.js.map +1 -1
  1763. package/dist/modes/interactive/interactive-editor-actions.js +9 -12
  1764. package/dist/modes/interactive/interactive-editor-actions.js.map +1 -1
  1765. package/dist/modes/interactive/interactive-extension-context.js +4 -4
  1766. package/dist/modes/interactive/interactive-extension-context.js.map +1 -1
  1767. package/dist/modes/interactive/interactive-extension-custom-ui.js +15 -8
  1768. package/dist/modes/interactive/interactive-extension-custom-ui.js.map +1 -1
  1769. package/dist/modes/interactive/interactive-extension-dialogs.js +51 -25
  1770. package/dist/modes/interactive/interactive-extension-dialogs.js.map +1 -1
  1771. package/dist/modes/interactive/interactive-extension-runtime.js +15 -6
  1772. package/dist/modes/interactive/interactive-extension-runtime.js.map +1 -1
  1773. package/dist/modes/interactive/interactive-extension-widgets.js +1 -1
  1774. package/dist/modes/interactive/interactive-extension-widgets.js.map +1 -1
  1775. package/dist/modes/interactive/interactive-global-clear.d.ts +55 -3
  1776. package/dist/modes/interactive/interactive-global-clear.d.ts.map +1 -1
  1777. package/dist/modes/interactive/interactive-global-clear.js +61 -3
  1778. package/dist/modes/interactive/interactive-global-clear.js.map +1 -1
  1779. package/dist/modes/interactive/interactive-hotkeys-debug.js +2 -3
  1780. package/dist/modes/interactive/interactive-hotkeys-debug.js.map +1 -1
  1781. package/dist/modes/interactive/interactive-initial-session-binding.d.ts +4 -0
  1782. package/dist/modes/interactive/interactive-initial-session-binding.d.ts.map +1 -0
  1783. package/dist/modes/interactive/interactive-initial-session-binding.js +23 -0
  1784. package/dist/modes/interactive/interactive-initial-session-binding.js.map +1 -0
  1785. package/dist/modes/interactive/interactive-input-handling.d.ts +2 -1
  1786. package/dist/modes/interactive/interactive-input-handling.d.ts.map +1 -1
  1787. package/dist/modes/interactive/interactive-input-handling.js +82 -69
  1788. package/dist/modes/interactive/interactive-input-handling.js.map +1 -1
  1789. package/dist/modes/interactive/interactive-key-identity.d.ts +22 -0
  1790. package/dist/modes/interactive/interactive-key-identity.d.ts.map +1 -0
  1791. package/dist/modes/interactive/interactive-key-identity.js +29 -0
  1792. package/dist/modes/interactive/interactive-key-identity.js.map +1 -0
  1793. package/dist/modes/interactive/interactive-mode-base.d.ts +18 -13
  1794. package/dist/modes/interactive/interactive-mode-base.d.ts.map +1 -1
  1795. package/dist/modes/interactive/interactive-mode-base.js +26 -18
  1796. package/dist/modes/interactive/interactive-mode-base.js.map +1 -1
  1797. package/dist/modes/interactive/interactive-mode-deps.d.ts +20 -22
  1798. package/dist/modes/interactive/interactive-mode-deps.d.ts.map +1 -1
  1799. package/dist/modes/interactive/interactive-mode-deps.js +16 -18
  1800. package/dist/modes/interactive/interactive-mode-deps.js.map +1 -1
  1801. package/dist/modes/interactive/interactive-mode-helpers.d.ts +3 -2
  1802. package/dist/modes/interactive/interactive-mode-helpers.d.ts.map +1 -1
  1803. package/dist/modes/interactive/interactive-mode-helpers.js +8 -18
  1804. package/dist/modes/interactive/interactive-mode-helpers.js.map +1 -1
  1805. package/dist/modes/interactive/interactive-mode-surface.d.ts +32 -18
  1806. package/dist/modes/interactive/interactive-mode-surface.d.ts.map +1 -1
  1807. package/dist/modes/interactive/interactive-mode-surface.js +1 -0
  1808. package/dist/modes/interactive/interactive-mode-surface.js.map +1 -1
  1809. package/dist/modes/interactive/interactive-mode-types.d.ts +2 -2
  1810. package/dist/modes/interactive/interactive-mode-types.d.ts.map +1 -1
  1811. package/dist/modes/interactive/interactive-mode-types.js.map +1 -1
  1812. package/dist/modes/interactive/interactive-mode.d.ts +1 -0
  1813. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  1814. package/dist/modes/interactive/interactive-mode.js +1 -0
  1815. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  1816. package/dist/modes/interactive/interactive-model-catalog-startup.d.ts +12 -0
  1817. package/dist/modes/interactive/interactive-model-catalog-startup.d.ts.map +1 -0
  1818. package/dist/modes/interactive/interactive-model-catalog-startup.js +22 -0
  1819. package/dist/modes/interactive/interactive-model-catalog-startup.js.map +1 -0
  1820. package/dist/modes/interactive/interactive-model-routing.js +44 -111
  1821. package/dist/modes/interactive/interactive-model-routing.js.map +1 -1
  1822. package/dist/modes/interactive/interactive-onboarding.js +7 -7
  1823. package/dist/modes/interactive/interactive-onboarding.js.map +1 -1
  1824. package/dist/modes/interactive/interactive-pause.d.ts +6 -0
  1825. package/dist/modes/interactive/interactive-pause.d.ts.map +1 -0
  1826. package/dist/modes/interactive/interactive-pause.js +12 -0
  1827. package/dist/modes/interactive/interactive-pause.js.map +1 -0
  1828. package/dist/modes/interactive/interactive-process-lifecycle.js +43 -12
  1829. package/dist/modes/interactive/interactive-process-lifecycle.js.map +1 -1
  1830. package/dist/modes/interactive/interactive-prompt-restore.d.ts +58 -0
  1831. package/dist/modes/interactive/interactive-prompt-restore.d.ts.map +1 -0
  1832. package/dist/modes/interactive/interactive-prompt-restore.js +87 -0
  1833. package/dist/modes/interactive/interactive-prompt-restore.js.map +1 -0
  1834. package/dist/modes/interactive/interactive-prompt-turn.d.ts +2 -0
  1835. package/dist/modes/interactive/interactive-prompt-turn.d.ts.map +1 -0
  1836. package/dist/modes/interactive/interactive-prompt-turn.js +56 -0
  1837. package/dist/modes/interactive/interactive-prompt-turn.js.map +1 -0
  1838. package/dist/modes/interactive/interactive-queueing.js +9 -12
  1839. package/dist/modes/interactive/interactive-queueing.js.map +1 -1
  1840. package/dist/modes/interactive/interactive-render-chat.js +128 -48
  1841. package/dist/modes/interactive/interactive-render-chat.js.map +1 -1
  1842. package/dist/modes/interactive/interactive-resource-disclosure.js +1 -3
  1843. package/dist/modes/interactive/interactive-resource-disclosure.js.map +1 -1
  1844. package/dist/modes/interactive/interactive-resource-paths.js +17 -21
  1845. package/dist/modes/interactive/interactive-resource-paths.js.map +1 -1
  1846. package/dist/modes/interactive/interactive-resource-rendering.js +110 -12
  1847. package/dist/modes/interactive/interactive-resource-rendering.js.map +1 -1
  1848. package/dist/modes/interactive/interactive-selectors.js +13 -5
  1849. package/dist/modes/interactive/interactive-selectors.js.map +1 -1
  1850. package/dist/modes/interactive/interactive-session-routing.js +19 -4
  1851. package/dist/modes/interactive/interactive-session-routing.js.map +1 -1
  1852. package/dist/modes/interactive/interactive-session-runtime.js +12 -1
  1853. package/dist/modes/interactive/interactive-session-runtime.js.map +1 -1
  1854. package/dist/modes/interactive/interactive-slash-commands.js +23 -4
  1855. package/dist/modes/interactive/interactive-slash-commands.js.map +1 -1
  1856. package/dist/modes/interactive/interactive-startup-chat-container.d.ts +20 -0
  1857. package/dist/modes/interactive/interactive-startup-chat-container.d.ts.map +1 -0
  1858. package/dist/modes/interactive/interactive-startup-chat-container.js +26 -0
  1859. package/dist/modes/interactive/interactive-startup-chat-container.js.map +1 -0
  1860. package/dist/modes/interactive/interactive-startup.d.ts +1 -1
  1861. package/dist/modes/interactive/interactive-startup.d.ts.map +1 -1
  1862. package/dist/modes/interactive/interactive-startup.js +37 -37
  1863. package/dist/modes/interactive/interactive-startup.js.map +1 -1
  1864. package/dist/modes/interactive/interactive-submission.d.ts +24 -0
  1865. package/dist/modes/interactive/interactive-submission.d.ts.map +1 -0
  1866. package/dist/modes/interactive/interactive-submission.js +10 -0
  1867. package/dist/modes/interactive/interactive-submission.js.map +1 -0
  1868. package/dist/modes/interactive/interactive-summarization-retry-events.d.ts +8 -0
  1869. package/dist/modes/interactive/interactive-summarization-retry-events.d.ts.map +1 -0
  1870. package/dist/modes/interactive/interactive-summarization-retry-events.js +48 -0
  1871. package/dist/modes/interactive/interactive-summarization-retry-events.js.map +1 -0
  1872. package/dist/modes/interactive/login-provider-options.d.ts +21 -0
  1873. package/dist/modes/interactive/login-provider-options.d.ts.map +1 -0
  1874. package/dist/modes/interactive/login-provider-options.js +50 -0
  1875. package/dist/modes/interactive/login-provider-options.js.map +1 -0
  1876. package/dist/modes/interactive/theme/catppuccin-frappe.json +1 -1
  1877. package/dist/modes/interactive/theme/catppuccin-latte.json +1 -1
  1878. package/dist/modes/interactive/theme/catppuccin-macchiato.json +1 -1
  1879. package/dist/modes/interactive/theme/catppuccin-mocha.json +9 -1
  1880. package/dist/modes/interactive/theme/dark.json +1 -1
  1881. package/dist/modes/interactive/theme/global-theme.d.ts +1 -1
  1882. package/dist/modes/interactive/theme/global-theme.d.ts.map +1 -1
  1883. package/dist/modes/interactive/theme/global-theme.js.map +1 -1
  1884. package/dist/modes/interactive/theme/light.json +1 -1
  1885. package/dist/modes/interactive/theme/theme-class.d.ts +4 -0
  1886. package/dist/modes/interactive/theme/theme-class.d.ts.map +1 -1
  1887. package/dist/modes/interactive/theme/theme-class.js +7 -0
  1888. package/dist/modes/interactive/theme/theme-class.js.map +1 -1
  1889. package/dist/modes/interactive/theme/theme-loading.d.ts.map +1 -1
  1890. package/dist/modes/interactive/theme/theme-loading.js +5 -1
  1891. package/dist/modes/interactive/theme/theme-loading.js.map +1 -1
  1892. package/dist/modes/interactive/theme/theme-schema.d.ts +32 -0
  1893. package/dist/modes/interactive/theme/theme-schema.d.ts.map +1 -1
  1894. package/dist/modes/interactive/theme/theme-schema.js +8 -0
  1895. package/dist/modes/interactive/theme/theme-schema.js.map +1 -1
  1896. package/dist/modes/interactive/theme/theme-schema.json +15 -2
  1897. package/dist/modes/interactive/theme/theme.d.ts +2 -2
  1898. package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  1899. package/dist/modes/interactive/theme/theme.js +2 -2
  1900. package/dist/modes/interactive/theme/theme.js.map +1 -1
  1901. package/dist/modes/interactive/whimsical-messages.d.ts +1 -0
  1902. package/dist/modes/interactive/whimsical-messages.d.ts.map +1 -1
  1903. package/dist/modes/interactive/whimsical-messages.js +2 -2
  1904. package/dist/modes/interactive/whimsical-messages.js.map +1 -1
  1905. package/dist/modes/interactive-engine/activity-watchdog.d.ts +16 -6
  1906. package/dist/modes/interactive-engine/activity-watchdog.d.ts.map +1 -1
  1907. package/dist/modes/interactive-engine/activity-watchdog.js +12 -6
  1908. package/dist/modes/interactive-engine/activity-watchdog.js.map +1 -1
  1909. package/dist/modes/interactive-engine/create-isolated-runtime.d.ts.map +1 -1
  1910. package/dist/modes/interactive-engine/create-isolated-runtime.js +8 -5
  1911. package/dist/modes/interactive-engine/create-isolated-runtime.js.map +1 -1
  1912. package/dist/modes/interactive-engine/engine-args.d.ts.map +1 -1
  1913. package/dist/modes/interactive-engine/engine-args.js +0 -1
  1914. package/dist/modes/interactive-engine/engine-args.js.map +1 -1
  1915. package/dist/modes/interactive-engine/engine-child-liveness.d.ts.map +1 -1
  1916. package/dist/modes/interactive-engine/engine-child-liveness.js +6 -4
  1917. package/dist/modes/interactive-engine/engine-child-liveness.js.map +1 -1
  1918. package/dist/modes/interactive-engine/engine-custom-ui.d.ts +3 -2
  1919. package/dist/modes/interactive-engine/engine-custom-ui.d.ts.map +1 -1
  1920. package/dist/modes/interactive-engine/engine-custom-ui.js +37 -28
  1921. package/dist/modes/interactive-engine/engine-custom-ui.js.map +1 -1
  1922. package/dist/modes/interactive-engine/engine-diagnostic-view.d.ts +16 -0
  1923. package/dist/modes/interactive-engine/engine-diagnostic-view.d.ts.map +1 -0
  1924. package/dist/modes/interactive-engine/engine-diagnostic-view.js +19 -0
  1925. package/dist/modes/interactive-engine/engine-diagnostic-view.js.map +1 -0
  1926. package/dist/modes/interactive-engine/engine-dialog-host.d.ts +33 -0
  1927. package/dist/modes/interactive-engine/engine-dialog-host.d.ts.map +1 -0
  1928. package/dist/modes/interactive-engine/engine-dialog-host.js +129 -0
  1929. package/dist/modes/interactive-engine/engine-dialog-host.js.map +1 -0
  1930. package/dist/modes/interactive-engine/engine-generation.d.ts +29 -0
  1931. package/dist/modes/interactive-engine/engine-generation.d.ts.map +1 -0
  1932. package/dist/modes/interactive-engine/engine-generation.js +11 -0
  1933. package/dist/modes/interactive-engine/engine-generation.js.map +1 -0
  1934. package/dist/modes/interactive-engine/engine-health.d.ts +107 -0
  1935. package/dist/modes/interactive-engine/engine-health.d.ts.map +1 -0
  1936. package/dist/modes/interactive-engine/engine-health.js +250 -0
  1937. package/dist/modes/interactive-engine/engine-health.js.map +1 -0
  1938. package/dist/modes/interactive-engine/engine-input-form.d.ts +1 -1
  1939. package/dist/modes/interactive-engine/engine-input-form.d.ts.map +1 -1
  1940. package/dist/modes/interactive-engine/engine-input-form.js +21 -4
  1941. package/dist/modes/interactive-engine/engine-input-form.js.map +1 -1
  1942. package/dist/modes/interactive-engine/engine-monitor.d.ts +8 -1
  1943. package/dist/modes/interactive-engine/engine-monitor.d.ts.map +1 -1
  1944. package/dist/modes/interactive-engine/engine-monitor.js +19 -16
  1945. package/dist/modes/interactive-engine/engine-monitor.js.map +1 -1
  1946. package/dist/modes/interactive-engine/engine-render-service.d.ts.map +1 -1
  1947. package/dist/modes/interactive-engine/engine-render-service.js +19 -24
  1948. package/dist/modes/interactive-engine/engine-render-service.js.map +1 -1
  1949. package/dist/modes/interactive-engine/engine-session-picker.d.ts.map +1 -1
  1950. package/dist/modes/interactive-engine/engine-session-picker.js +4 -2
  1951. package/dist/modes/interactive-engine/engine-session-picker.js.map +1 -1
  1952. package/dist/modes/interactive-engine/extension-ui-bridge.d.ts +16 -3
  1953. package/dist/modes/interactive-engine/extension-ui-bridge.d.ts.map +1 -1
  1954. package/dist/modes/interactive-engine/extension-ui-bridge.js +35 -45
  1955. package/dist/modes/interactive-engine/extension-ui-bridge.js.map +1 -1
  1956. package/dist/modes/interactive-engine/input-form-host.d.ts +1 -0
  1957. package/dist/modes/interactive-engine/input-form-host.d.ts.map +1 -1
  1958. package/dist/modes/interactive-engine/input-form-host.js +18 -3
  1959. package/dist/modes/interactive-engine/input-form-host.js.map +1 -1
  1960. package/dist/modes/interactive-engine/isolated-auth.d.ts +10 -0
  1961. package/dist/modes/interactive-engine/isolated-auth.d.ts.map +1 -0
  1962. package/dist/modes/interactive-engine/isolated-auth.js +15 -0
  1963. package/dist/modes/interactive-engine/isolated-auth.js.map +1 -0
  1964. package/dist/modes/interactive-engine/isolated-runtime.d.ts +41 -6
  1965. package/dist/modes/interactive-engine/isolated-runtime.d.ts.map +1 -1
  1966. package/dist/modes/interactive-engine/isolated-runtime.js +166 -84
  1967. package/dist/modes/interactive-engine/isolated-runtime.js.map +1 -1
  1968. package/dist/modes/interactive-engine/protocol.d.ts +26 -2
  1969. package/dist/modes/interactive-engine/protocol.d.ts.map +1 -1
  1970. package/dist/modes/interactive-engine/protocol.js +192 -63
  1971. package/dist/modes/interactive-engine/protocol.js.map +1 -1
  1972. package/dist/modes/interactive-engine/remote-component.d.ts +38 -0
  1973. package/dist/modes/interactive-engine/remote-component.d.ts.map +1 -1
  1974. package/dist/modes/interactive-engine/remote-component.js +111 -22
  1975. package/dist/modes/interactive-engine/remote-component.js.map +1 -1
  1976. package/dist/modes/interactive-engine/remote-input-ownership.d.ts +48 -0
  1977. package/dist/modes/interactive-engine/remote-input-ownership.d.ts.map +1 -0
  1978. package/dist/modes/interactive-engine/remote-input-ownership.js +42 -0
  1979. package/dist/modes/interactive-engine/remote-input-ownership.js.map +1 -0
  1980. package/dist/modes/interactive-engine/remote-model-catalog.d.ts +2 -0
  1981. package/dist/modes/interactive-engine/remote-model-catalog.d.ts.map +1 -1
  1982. package/dist/modes/interactive-engine/remote-model-catalog.js +23 -10
  1983. package/dist/modes/interactive-engine/remote-model-catalog.js.map +1 -1
  1984. package/dist/modes/interactive-engine/remote-queue-pause.d.ts +13 -0
  1985. package/dist/modes/interactive-engine/remote-queue-pause.d.ts.map +1 -0
  1986. package/dist/modes/interactive-engine/remote-queue-pause.js +38 -0
  1987. package/dist/modes/interactive-engine/remote-queue-pause.js.map +1 -0
  1988. package/dist/modes/interactive-engine/remote-renderer.d.ts +3 -1
  1989. package/dist/modes/interactive-engine/remote-renderer.d.ts.map +1 -1
  1990. package/dist/modes/interactive-engine/remote-renderer.js +41 -10
  1991. package/dist/modes/interactive-engine/remote-renderer.js.map +1 -1
  1992. package/dist/modes/interactive-engine/session-picker-host.d.ts +1 -0
  1993. package/dist/modes/interactive-engine/session-picker-host.d.ts.map +1 -1
  1994. package/dist/modes/interactive-engine/session-picker-host.js +4 -0
  1995. package/dist/modes/interactive-engine/session-picker-host.js.map +1 -1
  1996. package/dist/modes/print-mode.d.ts.map +1 -1
  1997. package/dist/modes/print-mode.js +5 -0
  1998. package/dist/modes/print-mode.js.map +1 -1
  1999. package/dist/modes/rpc/jsonl.d.ts +9 -7
  2000. package/dist/modes/rpc/jsonl.d.ts.map +1 -1
  2001. package/dist/modes/rpc/jsonl.js +23 -24
  2002. package/dist/modes/rpc/jsonl.js.map +1 -1
  2003. package/dist/modes/rpc/queued-writer.d.ts +33 -0
  2004. package/dist/modes/rpc/queued-writer.d.ts.map +1 -0
  2005. package/dist/modes/rpc/queued-writer.js +104 -0
  2006. package/dist/modes/rpc/queued-writer.js.map +1 -0
  2007. package/dist/modes/rpc/rpc-bash-request-owners.d.ts +24 -0
  2008. package/dist/modes/rpc/rpc-bash-request-owners.d.ts.map +1 -0
  2009. package/dist/modes/rpc/rpc-bash-request-owners.js +45 -0
  2010. package/dist/modes/rpc/rpc-bash-request-owners.js.map +1 -0
  2011. package/dist/modes/rpc/rpc-client-api.d.ts +10 -4
  2012. package/dist/modes/rpc/rpc-client-api.d.ts.map +1 -1
  2013. package/dist/modes/rpc/rpc-client-api.js +83 -25
  2014. package/dist/modes/rpc/rpc-client-api.js.map +1 -1
  2015. package/dist/modes/rpc/rpc-client-process.d.ts +11 -4
  2016. package/dist/modes/rpc/rpc-client-process.d.ts.map +1 -1
  2017. package/dist/modes/rpc/rpc-client-process.js +77 -29
  2018. package/dist/modes/rpc/rpc-client-process.js.map +1 -1
  2019. package/dist/modes/rpc/rpc-client-waits.d.ts +17 -1
  2020. package/dist/modes/rpc/rpc-client-waits.d.ts.map +1 -1
  2021. package/dist/modes/rpc/rpc-client-waits.js +25 -0
  2022. package/dist/modes/rpc/rpc-client-waits.js.map +1 -1
  2023. package/dist/modes/rpc/rpc-client.d.ts +68 -9
  2024. package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
  2025. package/dist/modes/rpc/rpc-client.js +205 -158
  2026. package/dist/modes/rpc/rpc-client.js.map +1 -1
  2027. package/dist/modes/rpc/rpc-command-handler.d.ts +10 -3
  2028. package/dist/modes/rpc/rpc-command-handler.d.ts.map +1 -1
  2029. package/dist/modes/rpc/rpc-command-handler.js +149 -56
  2030. package/dist/modes/rpc/rpc-command-handler.js.map +1 -1
  2031. package/dist/modes/rpc/rpc-command-timeouts.d.ts +30 -0
  2032. package/dist/modes/rpc/rpc-command-timeouts.d.ts.map +1 -0
  2033. package/dist/modes/rpc/rpc-command-timeouts.js +52 -0
  2034. package/dist/modes/rpc/rpc-command-timeouts.js.map +1 -0
  2035. package/dist/modes/rpc/rpc-event-buffer.d.ts.map +1 -1
  2036. package/dist/modes/rpc/rpc-event-buffer.js +3 -1
  2037. package/dist/modes/rpc/rpc-event-buffer.js.map +1 -1
  2038. package/dist/modes/rpc/rpc-extension-ui.d.ts +4 -2
  2039. package/dist/modes/rpc/rpc-extension-ui.d.ts.map +1 -1
  2040. package/dist/modes/rpc/rpc-extension-ui.js +50 -17
  2041. package/dist/modes/rpc/rpc-extension-ui.js.map +1 -1
  2042. package/dist/modes/rpc/rpc-generation-buffer.d.ts +21 -0
  2043. package/dist/modes/rpc/rpc-generation-buffer.d.ts.map +1 -0
  2044. package/dist/modes/rpc/rpc-generation-buffer.js +35 -0
  2045. package/dist/modes/rpc/rpc-generation-buffer.js.map +1 -0
  2046. package/dist/modes/rpc/rpc-input-scheduler.d.ts +3 -3
  2047. package/dist/modes/rpc/rpc-input-scheduler.d.ts.map +1 -1
  2048. package/dist/modes/rpc/rpc-input-scheduler.js +19 -8
  2049. package/dist/modes/rpc/rpc-input-scheduler.js.map +1 -1
  2050. package/dist/modes/rpc/rpc-input.d.ts +7 -1
  2051. package/dist/modes/rpc/rpc-input.d.ts.map +1 -1
  2052. package/dist/modes/rpc/rpc-input.js +14 -4
  2053. package/dist/modes/rpc/rpc-input.js.map +1 -1
  2054. package/dist/modes/rpc/rpc-keybindings-reload.d.ts.map +1 -1
  2055. package/dist/modes/rpc/rpc-keybindings-reload.js.map +1 -1
  2056. package/dist/modes/rpc/rpc-mode.d.ts +1 -1
  2057. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  2058. package/dist/modes/rpc/rpc-mode.js +23 -23
  2059. package/dist/modes/rpc/rpc-mode.js.map +1 -1
  2060. package/dist/modes/rpc/rpc-model-fallback-prompt.d.ts +4 -0
  2061. package/dist/modes/rpc/rpc-model-fallback-prompt.d.ts.map +1 -0
  2062. package/dist/modes/rpc/rpc-model-fallback-prompt.js +11 -0
  2063. package/dist/modes/rpc/rpc-model-fallback-prompt.js.map +1 -0
  2064. package/dist/modes/rpc/rpc-oauth-client.d.ts +21 -0
  2065. package/dist/modes/rpc/rpc-oauth-client.d.ts.map +1 -0
  2066. package/dist/modes/rpc/rpc-oauth-client.js +81 -0
  2067. package/dist/modes/rpc/rpc-oauth-client.js.map +1 -0
  2068. package/dist/modes/rpc/rpc-oauth-interaction.d.ts +9 -0
  2069. package/dist/modes/rpc/rpc-oauth-interaction.d.ts.map +1 -0
  2070. package/dist/modes/rpc/rpc-oauth-interaction.js +49 -0
  2071. package/dist/modes/rpc/rpc-oauth-interaction.js.map +1 -0
  2072. package/dist/modes/rpc/rpc-output-buffer.d.ts +2 -1
  2073. package/dist/modes/rpc/rpc-output-buffer.d.ts.map +1 -1
  2074. package/dist/modes/rpc/rpc-output-buffer.js +7 -40
  2075. package/dist/modes/rpc/rpc-output-buffer.js.map +1 -1
  2076. package/dist/modes/rpc/rpc-pending-requests.d.ts +37 -0
  2077. package/dist/modes/rpc/rpc-pending-requests.d.ts.map +1 -0
  2078. package/dist/modes/rpc/rpc-pending-requests.js +57 -0
  2079. package/dist/modes/rpc/rpc-pending-requests.js.map +1 -0
  2080. package/dist/modes/rpc/rpc-provider-auth.d.ts +22 -0
  2081. package/dist/modes/rpc/rpc-provider-auth.d.ts.map +1 -0
  2082. package/dist/modes/rpc/rpc-provider-auth.js +117 -0
  2083. package/dist/modes/rpc/rpc-provider-auth.js.map +1 -0
  2084. package/dist/modes/rpc/rpc-responses.d.ts +0 -1
  2085. package/dist/modes/rpc/rpc-responses.d.ts.map +1 -1
  2086. package/dist/modes/rpc/rpc-responses.js +0 -14
  2087. package/dist/modes/rpc/rpc-responses.js.map +1 -1
  2088. package/dist/modes/rpc/rpc-session-binding.d.ts +2 -1
  2089. package/dist/modes/rpc/rpc-session-binding.d.ts.map +1 -1
  2090. package/dist/modes/rpc/rpc-session-binding.js +71 -43
  2091. package/dist/modes/rpc/rpc-session-binding.js.map +1 -1
  2092. package/dist/modes/rpc/rpc-terminal-drain.d.ts +52 -0
  2093. package/dist/modes/rpc/rpc-terminal-drain.d.ts.map +1 -0
  2094. package/dist/modes/rpc/rpc-terminal-drain.js +85 -0
  2095. package/dist/modes/rpc/rpc-terminal-drain.js.map +1 -0
  2096. package/dist/modes/rpc/rpc-transport-error.d.ts +49 -0
  2097. package/dist/modes/rpc/rpc-transport-error.d.ts.map +1 -0
  2098. package/dist/modes/rpc/rpc-transport-error.js +78 -0
  2099. package/dist/modes/rpc/rpc-transport-error.js.map +1 -0
  2100. package/dist/modes/rpc/rpc-types.d.ts +125 -21
  2101. package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
  2102. package/dist/modes/rpc/rpc-types.js.map +1 -1
  2103. package/dist/package-manager-cli-parser.js.map +1 -1
  2104. package/dist/package-manager-cli.d.ts +3 -3
  2105. package/dist/package-manager-cli.d.ts.map +1 -1
  2106. package/dist/package-manager-cli.js +66 -53
  2107. package/dist/package-manager-cli.js.map +1 -1
  2108. package/dist/rpc-entry.js +6 -2
  2109. package/dist/rpc-entry.js.map +1 -1
  2110. package/dist/self-update-plan.d.ts +12 -0
  2111. package/dist/self-update-plan.d.ts.map +1 -0
  2112. package/dist/self-update-plan.js +42 -0
  2113. package/dist/self-update-plan.js.map +1 -0
  2114. package/dist/utils/child-process.d.ts.map +1 -1
  2115. package/dist/utils/child-process.js.map +1 -1
  2116. package/dist/utils/clipboard-image.js +1 -1
  2117. package/dist/utils/clipboard-image.js.map +1 -1
  2118. package/dist/utils/clipboard-native.d.ts +1 -0
  2119. package/dist/utils/clipboard-native.d.ts.map +1 -1
  2120. package/dist/utils/clipboard-native.js.map +1 -1
  2121. package/dist/utils/clipboard.d.ts +3 -0
  2122. package/dist/utils/clipboard.d.ts.map +1 -1
  2123. package/dist/utils/clipboard.js +31 -8
  2124. package/dist/utils/clipboard.js.map +1 -1
  2125. package/dist/utils/compile-cache.d.ts +8 -0
  2126. package/dist/utils/compile-cache.d.ts.map +1 -0
  2127. package/dist/utils/compile-cache.js +31 -0
  2128. package/dist/utils/compile-cache.js.map +1 -0
  2129. package/dist/utils/fs-watch.d.ts.map +1 -1
  2130. package/dist/utils/fs-watch.js +1 -3
  2131. package/dist/utils/fs-watch.js.map +1 -1
  2132. package/dist/utils/git.js +1 -1
  2133. package/dist/utils/git.js.map +1 -1
  2134. package/dist/utils/interactive-engine-bootstrap.d.ts +67 -0
  2135. package/dist/utils/interactive-engine-bootstrap.d.ts.map +1 -0
  2136. package/dist/utils/interactive-engine-bootstrap.js +117 -0
  2137. package/dist/utils/interactive-engine-bootstrap.js.map +1 -0
  2138. package/dist/utils/interactive-engine-env.d.ts +41 -0
  2139. package/dist/utils/interactive-engine-env.d.ts.map +1 -0
  2140. package/dist/utils/interactive-engine-env.js +67 -0
  2141. package/dist/utils/interactive-engine-env.js.map +1 -0
  2142. package/dist/utils/markit.d.ts.map +1 -1
  2143. package/dist/utils/markit.js +15 -5
  2144. package/dist/utils/markit.js.map +1 -1
  2145. package/dist/utils/shell.js +2 -2
  2146. package/dist/utils/shell.js.map +1 -1
  2147. package/dist/utils/split-launcher.d.ts.map +1 -1
  2148. package/dist/utils/split-launcher.js +1 -2
  2149. package/dist/utils/split-launcher.js.map +1 -1
  2150. package/dist/utils/tools-manager.d.ts.map +1 -1
  2151. package/dist/utils/tools-manager.js +8 -34
  2152. package/dist/utils/tools-manager.js.map +1 -1
  2153. package/dist/utils/version-check.d.ts +1 -0
  2154. package/dist/utils/version-check.d.ts.map +1 -1
  2155. package/dist/utils/version-check.js +7 -5
  2156. package/dist/utils/version-check.js.map +1 -1
  2157. package/docs/changelog.mdx +24 -2
  2158. package/docs/compaction.md +101 -18
  2159. package/docs/custom-provider.md +40 -8
  2160. package/docs/development.md +14 -15
  2161. package/docs/docs.json +3 -1
  2162. package/docs/environment-variables.md +37 -0
  2163. package/docs/extensions.md +166 -18
  2164. package/docs/index.md +11 -0
  2165. package/docs/intercom.md +1 -1
  2166. package/docs/json.md +11 -5
  2167. package/docs/keybindings.md +19 -2
  2168. package/docs/llama-cpp.md +72 -0
  2169. package/docs/models.md +41 -50
  2170. package/docs/packages.md +4 -2
  2171. package/docs/prompt-templates.md +1 -0
  2172. package/docs/providers.md +86 -24
  2173. package/docs/quickstart.md +28 -18
  2174. package/docs/rpc.md +88 -86
  2175. package/docs/sdk.md +68 -71
  2176. package/docs/security.md +15 -0
  2177. package/docs/session-format.md +6 -15
  2178. package/docs/sessions.md +1 -1
  2179. package/docs/settings.md +29 -18
  2180. package/docs/skills.md +8 -0
  2181. package/docs/subagents.md +24 -8
  2182. package/docs/termux.md +3 -1
  2183. package/docs/themes.md +10 -1
  2184. package/docs/tui.md +14 -7
  2185. package/docs/usage.md +72 -2
  2186. package/docs/windows.md +1 -1
  2187. package/docs/workflows.md +1304 -562
  2188. package/examples/extensions/README.md +2 -2
  2189. package/examples/extensions/border-status-editor.ts +1 -6
  2190. package/examples/extensions/custom-compaction.ts +7 -2
  2191. package/examples/extensions/custom-footer.ts +1 -1
  2192. package/examples/extensions/custom-provider-anthropic/index.ts +14 -2
  2193. package/examples/extensions/custom-provider-gitlab-duo/index.ts +1 -1
  2194. package/examples/extensions/gondolin/index.ts +1 -1
  2195. package/examples/extensions/handoff.ts +9 -2
  2196. package/examples/extensions/hello.ts +1 -1
  2197. package/examples/extensions/message-renderer.ts +2 -2
  2198. package/examples/extensions/minimal-mode.ts +6 -6
  2199. package/examples/extensions/overlay-qa-focus-components.ts +0 -1
  2200. package/examples/extensions/overlay-qa-streaming-input-components.ts +2 -2
  2201. package/examples/extensions/overlay-qa-tests.ts +16 -14
  2202. package/examples/extensions/overlay-qa-toggle-passive-components.ts +3 -5
  2203. package/examples/extensions/overlay-test.ts +3 -6
  2204. package/examples/extensions/plan-mode/index.ts +1 -1
  2205. package/examples/extensions/preset.ts +1 -1
  2206. package/examples/extensions/qna.ts +1 -1
  2207. package/examples/extensions/sandbox/package-lock.json +3 -3
  2208. package/examples/extensions/structured-output.ts +9 -9
  2209. package/examples/extensions/subagent/display.ts +115 -127
  2210. package/examples/extensions/subagent/index.ts +310 -349
  2211. package/examples/extensions/subagent/render.ts +244 -345
  2212. package/examples/extensions/subagent/runner.ts +223 -230
  2213. package/examples/extensions/subagent/schemas.ts +39 -46
  2214. package/examples/extensions/subagent/types.ts +22 -22
  2215. package/examples/extensions/summarize.ts +4 -1
  2216. package/examples/extensions/tic-tac-toe.ts +4 -4
  2217. package/examples/extensions/todo.ts +1 -1
  2218. package/examples/extensions/tool-override.ts +1 -1
  2219. package/examples/extensions/trigger-compact.ts +4 -1
  2220. package/examples/extensions/working-indicator.ts +3 -2
  2221. package/examples/rpc-extension-ui-components.ts +1 -2
  2222. package/examples/sdk/02-custom-model.ts +8 -10
  2223. package/examples/sdk/03-custom-prompt.ts +1 -6
  2224. package/examples/sdk/06-extensions.ts +1 -6
  2225. package/examples/sdk/07-context-files.ts +1 -6
  2226. package/examples/sdk/09-api-keys-and-oauth.ts +17 -23
  2227. package/examples/sdk/12-full-control.ts +10 -12
  2228. package/examples/sdk/README.md +17 -21
  2229. package/npm-shrinkwrap.json +336 -313
  2230. package/package.json +15 -13
  2231. package/dist/builtin/cursor/CHANGELOG.md +0 -281
  2232. package/dist/builtin/cursor/LICENSE +0 -26
  2233. package/dist/builtin/cursor/README.md +0 -24
  2234. package/dist/builtin/cursor/index.ts +0 -9
  2235. package/dist/builtin/cursor/package.json +0 -47
  2236. package/dist/builtin/cursor/src/auth.ts +0 -352
  2237. package/dist/builtin/cursor/src/catalog-cache.ts +0 -155
  2238. package/dist/builtin/cursor/src/config.ts +0 -123
  2239. package/dist/builtin/cursor/src/conversation-state.ts +0 -135
  2240. package/dist/builtin/cursor/src/cursor-models-raw.json +0 -412
  2241. package/dist/builtin/cursor/src/model-mapper.ts +0 -369
  2242. package/dist/builtin/cursor/src/model-reference.ts +0 -282
  2243. package/dist/builtin/cursor/src/models.ts +0 -54
  2244. package/dist/builtin/cursor/src/native-loader.ts +0 -71
  2245. package/dist/builtin/cursor/src/proto/README.md +0 -34
  2246. package/dist/builtin/cursor/src/proto/agent_pb.ts +0 -15294
  2247. package/dist/builtin/cursor/src/proto/protobuf-codec-base64.ts +0 -22
  2248. package/dist/builtin/cursor/src/proto/protobuf-codec-json.ts +0 -44
  2249. package/dist/builtin/cursor/src/proto/protobuf-codec-request.ts +0 -311
  2250. package/dist/builtin/cursor/src/proto/protobuf-codec-wire.ts +0 -248
  2251. package/dist/builtin/cursor/src/proto/protobuf-codec.ts +0 -200
  2252. package/dist/builtin/cursor/src/provider.ts +0 -301
  2253. package/dist/builtin/cursor/src/stream.ts +0 -494
  2254. package/dist/builtin/cursor/src/transport-errors.ts +0 -74
  2255. package/dist/builtin/cursor/src/transport-frame.ts +0 -56
  2256. package/dist/builtin/cursor/src/transport-http2.ts +0 -122
  2257. package/dist/builtin/cursor/src/transport-native-client.ts +0 -161
  2258. package/dist/builtin/cursor/src/transport-run-stream.ts +0 -188
  2259. package/dist/builtin/cursor/src/transport-timeouts.ts +0 -87
  2260. package/dist/builtin/cursor/src/transport-types.ts +0 -143
  2261. package/dist/builtin/cursor/src/transport.ts +0 -26
  2262. package/dist/builtin/workflows/builtin/deep-research-codebase-runner.ts +0 -492
  2263. package/dist/builtin/workflows/builtin/deep-research-codebase-utils.ts +0 -383
  2264. package/dist/builtin/workflows/builtin/deep-research-codebase.d.ts +0 -35
  2265. package/dist/builtin/workflows/builtin/deep-research-codebase.ts +0 -47
  2266. package/dist/builtin/workflows/skills/impeccable/reference/brand.md +0 -108
  2267. package/dist/builtin/workflows/skills/impeccable/reference/codex.md +0 -105
  2268. package/dist/builtin/workflows/skills/impeccable/reference/interaction-design.md +0 -189
  2269. package/dist/builtin/workflows/skills/impeccable/scripts/hook-before-edit.mjs +0 -516
  2270. package/dist/builtin/workflows/src/tui/toast.ts +0 -106
  2271. package/dist/core/context-window.d.ts +0 -54
  2272. package/dist/core/context-window.d.ts.map +0 -1
  2273. package/dist/core/context-window.js +0 -110
  2274. package/dist/core/context-window.js.map +0 -1
  2275. package/dist/core/copilot-anthropic-sse-repair.d.ts +0 -23
  2276. package/dist/core/copilot-anthropic-sse-repair.d.ts.map +0 -1
  2277. package/dist/core/copilot-anthropic-sse-repair.js +0 -340
  2278. package/dist/core/copilot-anthropic-sse-repair.js.map +0 -1
  2279. package/dist/core/copilot-errors.d.ts +0 -9
  2280. package/dist/core/copilot-errors.d.ts.map +0 -1
  2281. package/dist/core/copilot-errors.js +0 -32
  2282. package/dist/core/copilot-errors.js.map +0 -1
  2283. package/dist/core/copilot-gemini-payload-sanitizer.d.ts +0 -72
  2284. package/dist/core/copilot-gemini-payload-sanitizer.d.ts.map +0 -1
  2285. package/dist/core/copilot-gemini-payload-sanitizer.js +0 -296
  2286. package/dist/core/copilot-gemini-payload-sanitizer.js.map +0 -1
  2287. package/dist/core/copilot-gemini-reasoning.d.ts +0 -126
  2288. package/dist/core/copilot-gemini-reasoning.d.ts.map +0 -1
  2289. package/dist/core/copilot-gemini-reasoning.js +0 -265
  2290. package/dist/core/copilot-gemini-reasoning.js.map +0 -1
  2291. package/dist/core/copilot-gemini-tool-arguments.d.ts +0 -42
  2292. package/dist/core/copilot-gemini-tool-arguments.d.ts.map +0 -1
  2293. package/dist/core/copilot-gemini-tool-arguments.js +0 -159
  2294. package/dist/core/copilot-gemini-tool-arguments.js.map +0 -1
  2295. package/dist/core/copilot-hosts.d.ts +0 -12
  2296. package/dist/core/copilot-hosts.d.ts.map +0 -1
  2297. package/dist/core/copilot-hosts.js +0 -33
  2298. package/dist/core/copilot-hosts.js.map +0 -1
  2299. package/dist/core/copilot-model-catalog.d.ts +0 -114
  2300. package/dist/core/copilot-model-catalog.d.ts.map +0 -1
  2301. package/dist/core/copilot-model-catalog.js +0 -392
  2302. package/dist/core/copilot-model-catalog.js.map +0 -1
  2303. package/dist/core/copilot-model-static-fallbacks.d.ts +0 -43
  2304. package/dist/core/copilot-model-static-fallbacks.d.ts.map +0 -1
  2305. package/dist/core/copilot-model-static-fallbacks.js +0 -50
  2306. package/dist/core/copilot-model-static-fallbacks.js.map +0 -1
  2307. package/dist/core/copilot-model-synthesis.d.ts +0 -10
  2308. package/dist/core/copilot-model-synthesis.d.ts.map +0 -1
  2309. package/dist/core/copilot-model-synthesis.js +0 -91
  2310. package/dist/core/copilot-model-synthesis.js.map +0 -1
  2311. package/dist/core/model-registry-auth.d.ts +0 -8
  2312. package/dist/core/model-registry-auth.d.ts.map +0 -1
  2313. package/dist/core/model-registry-auth.js +0 -83
  2314. package/dist/core/model-registry-auth.js.map +0 -1
  2315. package/dist/core/model-registry-builtins.d.ts +0 -10
  2316. package/dist/core/model-registry-builtins.d.ts.map +0 -1
  2317. package/dist/core/model-registry-builtins.js +0 -171
  2318. package/dist/core/model-registry-builtins.js.map +0 -1
  2319. package/dist/core/model-registry-custom-loader.d.ts +0 -3
  2320. package/dist/core/model-registry-custom-loader.d.ts.map +0 -1
  2321. package/dist/core/model-registry-custom-loader.js +0 -254
  2322. package/dist/core/model-registry-custom-loader.js.map +0 -1
  2323. package/dist/core/model-registry-dynamic.d.ts +0 -7
  2324. package/dist/core/model-registry-dynamic.d.ts.map +0 -1
  2325. package/dist/core/model-registry-dynamic.js +0 -201
  2326. package/dist/core/model-registry-dynamic.js.map +0 -1
  2327. package/dist/core/model-registry-loader.d.ts +0 -5
  2328. package/dist/core/model-registry-loader.d.ts.map +0 -1
  2329. package/dist/core/model-registry-loader.js +0 -28
  2330. package/dist/core/model-registry-loader.js.map +0 -1
  2331. package/dist/core/model-registry-schemas.d.ts +0 -1273
  2332. package/dist/core/model-registry-schemas.d.ts.map +0 -1
  2333. package/dist/core/model-registry-schemas.js.map +0 -1
  2334. package/dist/core/model-registry-types.d.ts +0 -82
  2335. package/dist/core/model-registry-types.d.ts.map +0 -1
  2336. package/dist/core/model-registry-types.js +0 -2
  2337. package/dist/core/model-registry-types.js.map +0 -1
  2338. package/dist/core/oauth-compat.d.ts +0 -17
  2339. package/dist/core/oauth-compat.d.ts.map +0 -1
  2340. package/dist/core/oauth-compat.js +0 -2
  2341. package/dist/core/oauth-compat.js.map +0 -1
  2342. package/dist/core/oauth-provider-bridge.d.ts +0 -40
  2343. package/dist/core/oauth-provider-bridge.d.ts.map +0 -1
  2344. package/dist/core/oauth-provider-bridge.js +0 -169
  2345. package/dist/core/oauth-provider-bridge.js.map +0 -1
  2346. package/dist/modes/interactive/components/context-window-selector.d.ts +0 -53
  2347. package/dist/modes/interactive/components/context-window-selector.d.ts.map +0 -1
  2348. package/dist/modes/interactive/components/context-window-selector.js +0 -136
  2349. package/dist/modes/interactive/components/context-window-selector.js.map +0 -1
  2350. package/dist/modes/rpc/bounded-writer.d.ts +0 -27
  2351. package/dist/modes/rpc/bounded-writer.d.ts.map +0 -1
  2352. package/dist/modes/rpc/bounded-writer.js +0 -103
  2353. package/dist/modes/rpc/bounded-writer.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"grep.js","sourceRoot":"","sources":["../../../src/core/tools/grep.ts"],"names":[],"mappings":"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","sourcesContent":["import { readFile as fsReadFile, stat as fsStat } from \"node:fs/promises\";\nimport { createInterface } from \"node:readline\";\nimport type { AgentTool } from \"@earendil-works/pi-agent-core\";\nimport { Text } from \"@earendil-works/pi-tui\";\nimport { spawn } from \"child_process\";\nimport path from \"path\";\nimport { type Static, Type } from \"typebox\";\nimport { parenthesizedKeyHint } from \"../../modes/interactive/components/keybinding-hints.ts\";\nimport { ensureTool } from \"../../utils/tools-manager.ts\";\nimport type { ToolDefinition, ToolRenderResultOptions } from \"../extensions/types.ts\";\nimport { resolveToCwd } from \"./path-utils.ts\";\nimport { loadNativeSearchBinding, type NativeGrepMatch } from \"./search-native.ts\";\nimport { getTextOutput, invalidArgText, shortenPath, str } from \"./render-utils.ts\";\nimport { wrapToolDefinition } from \"./tool-definition-wrapper.ts\";\nimport {\n\tDEFAULT_MAX_BYTES,\n\tformatSize,\n\tGREP_MAX_LINE_LENGTH,\n\ttype TruncationResult,\n\ttruncateHead,\n\ttruncateLine,\n} from \"./truncate.ts\";\n\nconst grepSchema = Type.Object({\n\tpattern: Type.String({ description: \"Search pattern (regex or literal string)\" }),\n\tpath: Type.Optional(Type.String({ description: \"Directory or file to search (default: current directory)\" })),\n\tglob: Type.Optional(Type.String({ description: \"Filter files by glob pattern, e.g. '*.ts' or '**/*.spec.ts'\" })),\n\tignoreCase: Type.Optional(Type.Boolean({ description: \"Case-insensitive search (default: false)\" })),\n\ttype: Type.Optional(Type.String({ description: \"File type filter for native grep.\" })),\n\tliteral: Type.Optional(\n\t\tType.Boolean({ description: \"Treat pattern as literal string instead of regex (default: false)\" }),\n\t),\n\tcontext: Type.Optional(\n\t\tType.Number({ description: \"Number of lines to show before and after each match (default: 0)\" }),\n\t),\n\tcontextBefore: Type.Optional(Type.Number({ description: \"Lines to show before each match.\" })),\n\tcontextAfter: Type.Optional(Type.Number({ description: \"Lines to show after each match.\" })),\n\tlimit: Type.Optional(Type.Number({ description: \"Maximum number of matches to return (default: 100)\" })),\n\toffset: Type.Optional(Type.Number({ description: \"Skip first N matches.\" })),\n\tmode: Type.Optional(Type.Union([Type.Literal(\"content\"), Type.Literal(\"count\"), Type.Literal(\"filesWithMatches\")])),\n\tmaxCountPerFile: Type.Optional(Type.Number({ description: \"Maximum matches per file.\" })),\n\thidden: Type.Optional(Type.Boolean({ description: \"Search hidden files (default true).\" })),\n\tcache: Type.Optional(Type.Boolean({ description: \"Use native cache.\" })),\n\ttimeoutMs: Type.Optional(Type.Number({ description: \"Native grep timeout in milliseconds.\" })),\n\tgitignore: Type.Optional(Type.Boolean({ description: \"Respect .gitignore files (default: true)\" })),\n}, { additionalProperties: false });\n\nexport type GrepToolInput = Static<typeof grepSchema>;\nconst DEFAULT_LIMIT = 100;\n\nexport interface GrepToolDetails {\n\ttruncation?: TruncationResult;\n\tmatchLimitReached?: number;\n\tlinesTruncated?: boolean;\n}\n\ntype RipgrepMatchEvent = {\n\ttype: \"match\";\n\tdata?: {\n\t\tpath?: { text?: unknown };\n\t\tline_number?: unknown;\n\t\tlines?: { text?: unknown };\n\t};\n};\n\nfunction isRipgrepMatchEvent(event: unknown): event is RipgrepMatchEvent {\n\treturn typeof event === \"object\" && event !== null && \"type\" in event && event.type === \"match\";\n}\n\n/**\n * Pluggable operations for the grep tool.\n * Override these to delegate search to remote systems (for example SSH).\n */\nexport interface GrepOperations {\n\t/** Check if path is a directory. Throws if path does not exist. */\n\tisDirectory: (absolutePath: string) => Promise<boolean> | boolean;\n\t/** Read file contents for context lines */\n\treadFile: (absolutePath: string) => Promise<string> | string;\n}\n\nconst defaultGrepOperations: GrepOperations = {\n\tisDirectory: async (p) => (await fsStat(p)).isDirectory(),\n\treadFile: (p) => fsReadFile(p, \"utf-8\"),\n};\n\nexport interface GrepToolOptions {\n\t/** Custom operations for grep. Default: local filesystem plus ripgrep */\n\toperations?: GrepOperations;\n\t/** Enable shared native filesystem scan cache. Defaults to false; search callers also disable it to stay fresh across out-of-band filesystem mutations. */\n\tnativeCache?: boolean;\n}\n\nfunction formatGrepCall(\n\targs: { pattern: string; path?: string; glob?: string; limit?: number } | undefined,\n\ttheme: typeof import(\"../../modes/interactive/theme/theme.ts\").theme,\n): string {\n\tconst pattern = str(args?.pattern);\n\tconst rawPath = str(args?.path);\n\tconst path = rawPath !== null ? shortenPath(rawPath || \".\") : null;\n\tconst glob = str(args?.glob);\n\tconst limit = args?.limit;\n\tconst invalidArg = invalidArgText(theme);\n\tlet text =\n\t\ttheme.fg(\"toolTitle\", theme.bold(\"grep\")) +\n\t\t\" \" +\n\t\t(pattern === null ? invalidArg : theme.fg(\"accent\", `/${pattern || \"\"}/`)) +\n\t\ttheme.fg(\"toolOutput\", ` in ${path === null ? invalidArg : path}`);\n\tif (glob) text += theme.fg(\"toolOutput\", ` (${glob})`);\n\tif (limit !== undefined) text += theme.fg(\"toolOutput\", ` limit ${limit}`);\n\treturn text;\n}\n\nfunction formatGrepResult(\n\tresult: {\n\t\tcontent: Array<{ type: string; text?: string; data?: string; mimeType?: string }>;\n\t\tdetails?: GrepToolDetails;\n\t},\n\toptions: ToolRenderResultOptions,\n\ttheme: typeof import(\"../../modes/interactive/theme/theme.ts\").theme,\n\tshowImages: boolean,\n): string {\n\tconst output = getTextOutput(result, showImages).trim();\n\tlet text = \"\";\n\tif (output) {\n\t\tconst lines = output.split(\"\\n\");\n\t\tconst maxLines = options.expanded ? lines.length : 15;\n\t\tconst displayLines = lines.slice(0, maxLines);\n\t\tconst remaining = lines.length - maxLines;\n\t\ttext += `\\n${displayLines.map((line) => theme.fg(\"toolOutput\", line)).join(\"\\n\")}`;\n\t\tif (remaining > 0) {\n\t\t\ttext += theme.fg(\"muted\", \"\\n... \") + parenthesizedKeyHint(\"app.tools.expand\", \"Expand\", `${remaining} more lines`);\n\t\t}\n\t}\n\n\tconst matchLimit = result.details?.matchLimitReached;\n\tconst truncation = result.details?.truncation;\n\tconst linesTruncated = result.details?.linesTruncated;\n\tif (matchLimit || truncation?.truncated || linesTruncated) {\n\t\tconst warnings: string[] = [];\n\t\tif (matchLimit) warnings.push(`${matchLimit} matches limit`);\n\t\tif (truncation?.truncated) warnings.push(`${formatSize(truncation.maxBytes ?? DEFAULT_MAX_BYTES)} limit`);\n\t\tif (linesTruncated) warnings.push(\"some lines truncated\");\n\t\ttext += `\\n${theme.fg(\"warning\", `[Truncated: ${warnings.join(\", \")}]`)}`;\n\t}\n\treturn text;\n}\n\nfunction formatNativeGrepMatch(match: NativeGrepMatch, displayPath: string): string[] {\n\tconst lines: string[] = [];\n\tfor (const contextLine of match.contextBefore ?? []) {\n\t\tlines.push(`${displayPath}-${contextLine.lineNumber}- ${contextLine.line}`);\n\t}\n\tlines.push(`${displayPath}:${match.lineNumber}: ${match.line}`);\n\tfor (const contextLine of match.contextAfter ?? []) {\n\t\tlines.push(`${displayPath}-${contextLine.lineNumber}- ${contextLine.line}`);\n\t}\n\treturn lines;\n}\n\nexport function createGrepToolDefinition(\n\tcwd: string,\n\toptions?: GrepToolOptions,\n): ToolDefinition<typeof grepSchema, GrepToolDetails | undefined> {\n\tconst customOps = options?.operations;\n\treturn {\n\t\tname: \"grep\",\n\t\tlabel: \"grep\",\n\t\tdescription: `Search file contents for a pattern. Returns matching lines with file paths and line numbers. Respects .gitignore. Output is truncated to ${DEFAULT_LIMIT} matches or ${DEFAULT_MAX_BYTES / 1024}KB (whichever is hit first). Long lines are truncated to ${GREP_MAX_LINE_LENGTH} chars.`,\n\t\tpromptSnippet: \"Search file contents for patterns (respects .gitignore)\",\n\t\tparameters: grepSchema,\n\t\tasync execute(\n\t\t\t_toolCallId,\n\t\t\t{\n\t\t\t\tpattern,\n\t\t\t\tpath: searchDir,\n\t\t\t\tglob,\n\t\t\t\tignoreCase,\n\t\t\t\tliteral,\n\t\t\t\tcontext,\n\t\t\t\tlimit,\n\t\t\t\tgitignore,\n\t\t\t\ttype,\n\t\t\t\tcontextBefore,\n\t\t\t\tcontextAfter,\n\t\t\t\toffset,\n\t\t\t\tmode,\n\t\t\t\tmaxCountPerFile,\n\t\t\t\thidden,\n\t\t\t\tcache,\n\t\t\t\ttimeoutMs,\n\t\t\t}: GrepToolInput,\n\t\t\tsignal?: AbortSignal,\n\t\t\t_onUpdate?,\n\t\t\t_ctx?,\n\t\t) {\n\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\tif (signal?.aborted) {\n\t\t\t\t\treject(new Error(\"Operation aborted\"));\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tlet settled = false;\n\t\t\t\tconst settle = (fn: () => void) => {\n\t\t\t\t\tif (!settled) {\n\t\t\t\t\t\tsettled = true;\n\t\t\t\t\t\tfn();\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\t(async () => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst searchPath = resolveToCwd(searchDir || \".\", cwd);\n\t\t\t\t\t\tconst ops = customOps ?? defaultGrepOperations;\n\t\t\t\t\t\tlet isDirectory: boolean;\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tisDirectory = await ops.isDirectory(searchPath);\n\t\t\t\t\t\t} catch {\n\t\t\t\t\t\t\tsettle(() => reject(new Error(`Path not found: ${searchPath}`)));\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst contextValue = context && context > 0 ? context : 0;\n\t\t\t\t\t\tconst contextBeforeValue = contextBefore ?? contextValue;\n\t\t\t\t\t\tconst contextAfterValue = contextAfter ?? contextValue;\n\t\t\t\t\t\tconst nativeCache = options?.nativeCache === true;\n\t\t\t\t\t\tconst effectiveLimit = Math.max(1, limit ?? DEFAULT_LIMIT);\n\t\t\t\t\t\tconst formatPath = (filePath: string): string => {\n\t\t\t\t\t\t\tif (isDirectory) {\n\t\t\t\t\t\t\t\tif (!path.isAbsolute(filePath)) return filePath.replace(/\\\\/g, \"/\");\n\t\t\t\t\t\t\t\tconst relative = path.relative(searchPath, filePath);\n\t\t\t\t\t\t\t\tif (relative && !relative.startsWith(\"..\")) return relative.replace(/\\\\/g, \"/\");\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn path.basename(filePath);\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif (!customOps && !literal) {\n\t\t\t\t\t\t\tconst nativeBinding = loadNativeSearchBinding();\n\t\t\t\t\t\t\tif (nativeBinding) {\n\t\t\t\t\t\t\t\tconst nativeResult = await nativeBinding.grep({\n\t\t\t\t\t\t\t\t\tpattern,\n\t\t\t\t\t\t\t\t\tpath: searchPath,\n\t\t\t\t\t\t\t\t\tcwd,\n\t\t\t\t\t\t\t\t\tglob,\n\t\t\t\t\t\t\t\t\tignoreCase,\n\t\t\t\t\t\t\t\thidden: hidden ?? true,\n\t\t\t\t\t\t\t\tgitignore: gitignore !== false,\n\t\t\t\t\t\t\t\tcache: cache ?? nativeCache,\n\t\t\t\t\t\t\t\tmaxCount: mode === \"count\" ? undefined : effectiveLimit + 1,\n\t\t\t\t\t\t\t\toffset,\n\t\t\t\t\t\t\t\tcontext: contextBefore === undefined && contextAfter === undefined ? contextValue : undefined,\n\t\t\t\t\t\t\t\tcontextBefore,\n\t\t\t\t\t\t\t\tcontextAfter,\n\t\t\t\t\t\t\t\ttype,\n\t\t\t\t\t\t\t\tmode,\n\t\t\t\t\t\t\t\tmaxCountPerFile,\n\t\t\t\t\t\t\t\tmaxColumns: GREP_MAX_LINE_LENGTH,\n\t\t\t\t\t\t\t\tmultiline: pattern.includes(\"\\n\") || pattern.includes(\"\\\\n\"),\n\t\t\t\t\t\t\t\tsignal,\n\t\t\t\t\t\t\t\ttimeoutMs: timeoutMs ?? 30_000,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tif (nativeResult.error) throw new Error(nativeResult.error);\n\t\t\t\t\t\t\t\tif (nativeResult.matches.length === 0) {\n\t\t\t\t\t\t\t\t\tsettle(() => resolve({ content: [{ type: \"text\", text: mode === \"count\" ? \"0\" : \"No matches found\" }], details: undefined }));\n\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst visibleMatches = nativeResult.matches.slice(0, effectiveLimit);\n\t\t\t\t\t\t\t\tconst filesOutput = mode === \"filesWithMatches\" && !isDirectory && (offset ?? 0) > 0 ? \"\" : visibleMatches.map((match) => formatPath(match.path)).join(\"\\n\");\n\t\t\t\t\t\t\t\tconst countOutput = String(Math.max(0, nativeResult.totalMatches - (offset ?? 0)));\n\t\t\t\t\t\t\t\tconst rawOutput = mode === \"count\" ? countOutput : mode === \"filesWithMatches\" ? (filesOutput || \"No matches found\") : visibleMatches.flatMap((match) => formatNativeGrepMatch(match, formatPath(match.path))).join(\"\\n\");\n\t\t\t\t\t\t\t\tconst truncation = truncateHead(rawOutput, { maxLines: Number.MAX_SAFE_INTEGER });\n\t\t\t\t\t\t\t\tlet output = truncation.content;\n\t\t\t\t\t\t\t\tconst details: GrepToolDetails = {};\n\t\t\t\t\t\t\t\tconst notices: string[] = [];\n\t\t\t\t\t\t\t\tif (nativeResult.matches.length > effectiveLimit || nativeResult.limitReached) {\n\t\t\t\t\t\t\t\t\tnotices.push(`${effectiveLimit} matches limit reached. Use limit=${effectiveLimit * 2} for more, or refine pattern`);\n\t\t\t\t\t\t\t\t\tdetails.matchLimitReached = effectiveLimit;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (truncation.truncated) {\n\t\t\t\t\t\t\t\t\tnotices.push(`${formatSize(DEFAULT_MAX_BYTES)} limit reached`);\n\t\t\t\t\t\t\t\t\tdetails.truncation = truncation;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (visibleMatches.some((match) => match.truncated)) {\n\t\t\t\t\t\t\t\t\tnotices.push(`Some lines truncated to ${GREP_MAX_LINE_LENGTH} chars. Use read tool to see full lines`);\n\t\t\t\t\t\t\t\t\tdetails.linesTruncated = true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (notices.length > 0) output += `\\n\\n[${notices.join(\". \")}]`;\n\t\t\t\t\t\t\t\tsettle(() => resolve({ content: [{ type: \"text\", text: output }], details: Object.keys(details).length > 0 ? details : undefined }));\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\n\n\t\t\t\t\t\tconst fileCache = new Map<string, string[]>();\n\t\t\t\t\t\tconst getFileLines = async (filePath: string): Promise<string[]> => {\n\t\t\t\t\t\t\tlet lines = fileCache.get(filePath);\n\t\t\t\t\t\t\tif (!lines) {\n\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\tconst content = await ops.readFile(filePath);\n\t\t\t\t\t\t\t\t\tlines = content.replace(/\\r\\n/g, \"\\n\").replace(/\\r/g, \"\\n\").split(\"\\n\");\n\t\t\t\t\t\t\t\t} catch {\n\t\t\t\t\t\t\t\t\tlines = [];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tfileCache.set(filePath, lines);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn lines;\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tconst rgPath = await ensureTool(\"rg\", true);\n\t\t\t\t\t\tif (!rgPath) {\n\t\t\t\t\t\t\tsettle(() => reject(new Error(\"ripgrep (rg) is not available and could not be downloaded\")));\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst args: string[] = [\"--json\", \"--line-number\", \"--color=never\"];\n\t\t\t\t\t\tif (hidden !== false) args.push(\"--hidden\");\n\t\t\t\t\t\tif (gitignore === false) args.push(\"--no-ignore\");\n\t\t\t\t\t\tif (ignoreCase) args.push(\"--ignore-case\");\n\t\t\t\t\t\tif (literal) args.push(\"--fixed-strings\");\n\t\t\t\t\t\tif (pattern.includes(\"\\n\") || pattern.includes(\"\\\\n\")) args.push(\"--multiline\");\n\t\t\t\t\t\tif (type) args.push(\"--type\", type);\n\t\t\t\t\t\tif (maxCountPerFile !== undefined) args.push(\"--max-count\", String(maxCountPerFile));\n\t\t\t\t\t\tif (glob) args.push(\"--glob\", glob);\n\t\t\t\t\t\targs.push(\"--\", pattern, searchPath);\n\n\t\t\t\t\t\tconst child = spawn(rgPath, args, { stdio: [\"ignore\", \"pipe\", \"pipe\"] });\n\t\t\t\t\t\tconst timeoutTimer = timeoutMs !== undefined ? setTimeout(() => stopChild(), timeoutMs) : undefined;\n\t\t\t\t\t\tconst rl = createInterface({ input: child.stdout });\n\t\t\t\t\t\tlet stderr = \"\";\n\t\t\t\t\t\tlet matchCount = 0;\n\t\t\t\t\t\tlet matchLimitReached = false;\n\t\t\t\t\t\tlet linesTruncated = false;\n\t\t\t\t\t\tlet aborted = false;\n\t\t\t\t\t\tlet killedDueToLimit = false;\n\t\t\t\t\t\tconst outputLines: string[] = [];\n\n\t\t\t\t\t\tconst cleanup = () => {\n\t\t\t\t\t\t\tif (timeoutTimer) clearTimeout(timeoutTimer);\n\t\t\t\t\t\t\trl.close();\n\t\t\t\t\t\t\tsignal?.removeEventListener(\"abort\", onAbort);\n\t\t\t\t\t\t};\n\t\t\t\t\t\tconst stopChild = (dueToLimit = false) => {\n\t\t\t\t\t\t\tif (!child.killed) {\n\t\t\t\t\t\t\t\tkilledDueToLimit = dueToLimit;\n\t\t\t\t\t\t\t\tchild.kill();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t\tconst onAbort = () => {\n\t\t\t\t\t\t\taborted = true;\n\t\t\t\t\t\t\tstopChild();\n\t\t\t\t\t\t};\n\t\t\t\t\t\tsignal?.addEventListener(\"abort\", onAbort, { once: true });\n\t\t\t\t\t\tchild.stderr?.on(\"data\", (chunk) => {\n\t\t\t\t\t\t\tstderr += chunk.toString();\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tconst formatBlock = async (filePath: string, lineNumber: number): Promise<string[]> => {\n\t\t\t\t\t\t\tconst relativePath = formatPath(filePath);\n\t\t\t\t\t\t\tconst lines = await getFileLines(filePath);\n\t\t\t\t\t\t\tif (!lines.length) return [`${relativePath}:${lineNumber}: (unable to read file)`];\n\t\t\t\t\t\t\tconst block: string[] = [];\n\t\t\t\t\t\t\tconst start = contextBeforeValue > 0 ? Math.max(1, lineNumber - contextBeforeValue) : lineNumber;\n\t\t\t\t\t\t\tconst end = contextAfterValue > 0 ? Math.min(lines.length, lineNumber + contextAfterValue) : lineNumber;\n\t\t\t\t\t\t\tfor (let current = start; current <= end; current++) {\n\t\t\t\t\t\t\t\tconst lineText = lines[current - 1] ?? \"\";\n\t\t\t\t\t\t\t\tconst sanitized = lineText.replace(/\\r/g, \"\");\n\t\t\t\t\t\t\t\tconst isMatchLine = current === lineNumber;\n\t\t\t\t\t\t\t\t// Truncate long lines so grep output stays compact.\n\t\t\t\t\t\t\t\tconst { text: truncatedText, wasTruncated } = truncateLine(sanitized);\n\t\t\t\t\t\t\t\tif (wasTruncated) linesTruncated = true;\n\t\t\t\t\t\t\t\tif (isMatchLine) block.push(`${relativePath}:${current}: ${truncatedText}`);\n\t\t\t\t\t\t\t\telse block.push(`${relativePath}-${current}- ${truncatedText}`);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn block;\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\t// Collect matches during streaming, then format them after rg exits.\n\t\t\t\t\t\tconst matches: Array<{ filePath: string; lineNumber: number; lineText?: string }> = [];\n\t\t\t\t\t\tlet seenMatches = 0, seenFiles = 0; const seenFilePaths = new Set<string>(), filesWithMatches = new Set<string>();\n\t\t\t\t\t\trl.on(\"line\", (line) => {\n\t\t\t\t\t\t\tif (!line.trim() || (mode !== \"count\" && mode !== \"filesWithMatches\" && matchCount >= effectiveLimit)) return;\n\t\t\t\t\t\t\tlet event: unknown;\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tevent = JSON.parse(line) as unknown;\n\t\t\t\t\t\t\t} catch { return; }\n\t\t\t\t\t\t\tif (isRipgrepMatchEvent(event)) {\n\t\t\t\t\t\t\t\tconst filePath = event.data?.path?.text;\n\t\t\t\t\t\t\t\tif (mode === \"filesWithMatches\") { if (typeof filePath === \"string\") { const formatted = formatPath(filePath); if (!seenFilePaths.has(formatted)) { seenFilePaths.add(formatted); seenFiles++; if (offset === undefined || seenFiles > offset) filesWithMatches.add(formatted); } } matchCount = filesWithMatches.size; if (matchCount >= effectiveLimit) { matchLimitReached = true; stopChild(true); } return; }\n\t\t\t\t\t\t\t\tseenMatches++;\n\t\t\t\t\t\t\t\tif (mode !== \"count\" && offset !== undefined && seenMatches <= offset) return;\n\t\t\t\t\t\t\t\tmatchCount++;\n\t\t\t\t\t\t\t\tconst lineNumber = event.data?.line_number;\n\t\t\t\t\t\t\t\tconst lineText = event.data?.lines?.text;\n\t\t\t\t\t\t\t\tif (typeof filePath === \"string\") filesWithMatches.add(formatPath(filePath));\n\t\t\t\t\t\t\t\tif (typeof filePath === \"string\" && typeof lineNumber === \"number\")\n\t\t\t\t\t\t\t\t\tmatches.push({ filePath, lineNumber, lineText: typeof lineText === \"string\" ? lineText : undefined });\n\t\t\t\t\t\t\t\tif (mode !== \"count\" && matchCount >= effectiveLimit) { matchLimitReached = true; stopChild(true); }\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tchild.on(\"error\", (error) => {\n\t\t\t\t\t\t\tcleanup();\n\t\t\t\t\t\t\tsettle(() => reject(new Error(`Failed to run ripgrep: ${error.message}`)));\n\t\t\t\t\t\t});\n\t\t\t\t\t\tchild.on(\"close\", async (code) => {\n\t\t\t\t\t\t\tcleanup();\n\t\t\t\t\t\t\tif (aborted) {\n\t\t\t\t\t\t\t\tsettle(() => reject(new Error(\"Operation aborted\")));\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (!killedDueToLimit && code !== 0 && code !== 1) {\n\t\t\t\t\t\t\t\tconst errorMsg = stderr.trim() || `ripgrep exited with code ${code}`;\n\t\t\t\t\t\t\t\tsettle(() => reject(new Error(errorMsg)));\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (matchCount === 0) {\n\t\t\t\t\t\t\t\tsettle(() => resolve({ content: [{ type: \"text\", text: mode === \"count\" ? \"0\" : \"No matches found\" }], details: undefined }));\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (mode === \"count\" || mode === \"filesWithMatches\") {\n\t\t\t\t\t\t\t\tsettle(() => resolve({ content: [{ type: \"text\", text: mode === \"count\" ? String(Math.max(0, matchCount - (offset ?? 0))) : ([...filesWithMatches].join(\"\\n\") || \"No matches found\") }], details: matchLimitReached ? { matchLimitReached: effectiveLimit } : undefined }));\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// Format matches after streaming finishes so custom readFile() backends can be async.\n\t\t\t\t\t\t\tfor (const match of matches) {\n\t\t\t\t\t\t\t\tif (contextBeforeValue === 0 && contextAfterValue === 0 && match.lineText !== undefined) {\n\t\t\t\t\t\t\t\t\tconst relativePath = formatPath(match.filePath);\n\t\t\t\t\t\t\t\t\tconst sanitized = match.lineText\n\t\t\t\t\t\t\t\t\t\t.replace(/\\r\\n/g, \"\\n\")\n\t\t\t\t\t\t\t\t\t\t.replace(/\\r/g, \"\")\n\t\t\t\t\t\t\t\t\t\t.replace(/\\n$/, \"\");\n\t\t\t\t\t\t\t\t\tconst { text: truncatedText, wasTruncated } = truncateLine(sanitized);\n\t\t\t\t\t\t\t\t\tif (wasTruncated) linesTruncated = true;\n\t\t\t\t\t\t\t\t\toutputLines.push(`${relativePath}:${match.lineNumber}: ${truncatedText}`);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tconst block = await formatBlock(match.filePath, match.lineNumber);\n\t\t\t\t\t\t\t\t\toutputLines.push(...block);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tconst rawOutput = outputLines.join(\"\\n\");\n\t\t\t\t\t\t\t// Apply byte truncation. There is no line limit here because the match limit already capped rows.\n\t\t\t\t\t\t\tconst truncation = truncateHead(rawOutput, { maxLines: Number.MAX_SAFE_INTEGER });\n\t\t\t\t\t\t\tlet output = truncation.content;\n\t\t\t\t\t\t\tconst details: GrepToolDetails = {};\n\t\t\t\t\t\t\t// Build actionable notices for truncation and match limits.\n\t\t\t\t\t\t\tconst notices: string[] = [];\n\t\t\t\t\t\t\tif (matchLimitReached) {\n\t\t\t\t\t\t\t\tnotices.push(\n\t\t\t\t\t\t\t\t\t`${effectiveLimit} matches limit reached. Use limit=${effectiveLimit * 2} for more, or refine pattern`,\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tdetails.matchLimitReached = effectiveLimit;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (truncation.truncated) {\n\t\t\t\t\t\t\t\tnotices.push(`${formatSize(DEFAULT_MAX_BYTES)} limit reached`);\n\t\t\t\t\t\t\t\tdetails.truncation = truncation;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (linesTruncated) {\n\t\t\t\t\t\t\t\tnotices.push(\n\t\t\t\t\t\t\t\t\t`Some lines truncated to ${GREP_MAX_LINE_LENGTH} chars. Use read tool to see full lines`,\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tdetails.linesTruncated = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (notices.length > 0) output += `\\n\\n[${notices.join(\". \")}]`;\n\t\t\t\t\t\t\tsettle(() =>\n\t\t\t\t\t\t\t\tresolve({\n\t\t\t\t\t\t\t\t\tcontent: [{ type: \"text\", text: output }],\n\t\t\t\t\t\t\t\t\tdetails: Object.keys(details).length > 0 ? details : undefined,\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t});\n\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\tsettle(() => reject(err as Error));\n\t\t\t\t\t}\n\t\t\t\t})();\n\t\t\t});\n\t\t},\n\t\trenderCall(args, theme, context) {\n\t\t\tconst text = (context.lastComponent as Text | undefined) ?? new Text(\"\", 0, 0);\n\t\t\ttext.setText(formatGrepCall(args, theme));\n\t\t\treturn text;\n\t\t},\n\t\trenderResult(result, options, theme, context) {\n\t\t\tconst text = (context.lastComponent as Text | undefined) ?? new Text(\"\", 0, 0);\n\t\t\ttext.setText(formatGrepResult(result, options, theme, context.showImages));\n\t\t\treturn text;\n\t\t},\n\t};\n}\n\nexport function createGrepTool(cwd: string, options?: GrepToolOptions): AgentTool<typeof grepSchema> {\n\treturn wrapToolDefinition(createGrepToolDefinition(cwd, options));\n}\n"]}
1
+ {"version":3,"file":"grep.js","sourceRoot":"","sources":["../../../src/core/tools/grep.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,IAAI,IAAI,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC9C,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAe,IAAI,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,wDAAwD,CAAC;AAC9F,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAE1D,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AACpF,OAAO,EAAE,uBAAuB,EAAwB,MAAM,oBAAoB,CAAC;AACnF,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,EACN,iBAAiB,EACjB,UAAU,EACV,oBAAoB,EAEpB,YAAY,EACZ,YAAY,GACZ,MAAM,eAAe,CAAC;AAEvB,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAC7B;IACC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,0CAA0C,EAAE,CAAC;IACjF,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,0DAA0D,EAAE,CAAC,CAAC;IAC7G,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,6DAA6D,EAAE,CAAC,CAAC;IAChH,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,0CAA0C,EAAE,CAAC,CAAC;IACpG,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,mCAAmC,EAAE,CAAC,CAAC;IACtF,OAAO,EAAE,IAAI,CAAC,QAAQ,CACrB,IAAI,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,mEAAmE,EAAE,CAAC,CAClG;IACD,OAAO,EAAE,IAAI,CAAC,QAAQ,CACrB,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,kEAAkE,EAAE,CAAC,CAChG;IACD,aAAa,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,kCAAkC,EAAE,CAAC,CAAC;IAC9F,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,iCAAiC,EAAE,CAAC,CAAC;IAC5F,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,oDAAoD,EAAE,CAAC,CAAC;IACxG,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,uBAAuB,EAAE,CAAC,CAAC;IAC5E,IAAI,EAAE,IAAI,CAAC,QAAQ,CAClB,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAC9F;IACD,eAAe,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,2BAA2B,EAAE,CAAC,CAAC;IACzF,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,qCAAqC,EAAE,CAAC,CAAC;IAC3F,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,mBAAmB,EAAE,CAAC,CAAC;IACxE,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,sCAAsC,EAAE,CAAC,CAAC;IAC9F,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,0CAA0C,EAAE,CAAC,CAAC;CACnG,EACD,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAC/B,CAAC;AAGF,MAAM,aAAa,GAAG,GAAG,CAAC;AAiB1B,SAAS,mBAAmB,CAAC,KAAc;IAC1C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC;AACjG,CAAC;AAaD,MAAM,qBAAqB,GAAmB;IAC7C,WAAW,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;IACzD,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,OAAO,CAAC;CACvC,CAAC;AASF,SAAS,cAAc,CACtB,IAAmF,EACnF,KAAoE;IAEpE,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACnC,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAChC,MAAM,IAAI,GAAG,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACnE,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC7B,MAAM,KAAK,GAAG,IAAI,EAAE,KAAK,CAAC;IAC1B,MAAM,UAAU,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IACzC,IAAI,IAAI,GACP,KAAK,CAAC,EAAE,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACzC,GAAG;QACH,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,OAAO,IAAI,EAAE,GAAG,CAAC,CAAC;QAC1E,KAAK,CAAC,EAAE,CAAC,YAAY,EAAE,OAAO,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IACpE,IAAI,IAAI;QAAE,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC,YAAY,EAAE,KAAK,IAAI,GAAG,CAAC,CAAC;IACvD,IAAI,KAAK,KAAK,SAAS;QAAE,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC,YAAY,EAAE,UAAU,KAAK,EAAE,CAAC,CAAC;IAC3E,OAAO,IAAI,CAAC;AACb,CAAC;AAED,SAAS,gBAAgB,CACxB,MAGC,EACD,OAAgC,EAChC,KAAoE,EACpE,UAAmB;IAEnB,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC;IACxD,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,IAAI,MAAM,EAAE,CAAC;QACZ,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACjC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;QACtD,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;QAC9C,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC;QAC1C,IAAI,IAAI,KAAK,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACnF,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;YACnB,IAAI;gBACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,oBAAoB,CAAC,kBAAkB,EAAE,QAAQ,EAAE,GAAG,SAAS,aAAa,CAAC,CAAC;QAC9G,CAAC;IACF,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,EAAE,iBAAiB,CAAC;IACrD,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC;IAC9C,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,EAAE,cAAc,CAAC;IACtD,IAAI,UAAU,IAAI,UAAU,EAAE,SAAS,IAAI,cAAc,EAAE,CAAC;QAC3D,MAAM,QAAQ,GAAa,EAAE,CAAC;QAC9B,IAAI,UAAU;YAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,UAAU,gBAAgB,CAAC,CAAC;QAC7D,IAAI,UAAU,EAAE,SAAS;YAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,UAAU,CAAC,QAAQ,IAAI,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QAC1G,IAAI,cAAc;YAAE,QAAQ,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QAC1D,IAAI,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,eAAe,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IAC3E,CAAC;IACD,OAAO,IAAI,CAAC;AACb,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAsB,EAAE,WAAmB;IACzE,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,WAAW,IAAI,KAAK,CAAC,aAAa,IAAI,EAAE,EAAE,CAAC;QACrD,KAAK,CAAC,IAAI,CAAC,GAAG,WAAW,IAAI,WAAW,CAAC,UAAU,KAAK,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;IAC7E,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,GAAG,WAAW,IAAI,KAAK,CAAC,UAAU,KAAK,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IAChE,KAAK,MAAM,WAAW,IAAI,KAAK,CAAC,YAAY,IAAI,EAAE,EAAE,CAAC;QACpD,KAAK,CAAC,IAAI,CAAC,GAAG,WAAW,IAAI,WAAW,CAAC,UAAU,KAAK,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;IAC7E,CAAC;IACD,OAAO,KAAK,CAAC;AACd,CAAC;AAED,MAAM,UAAU,wBAAwB,CACvC,GAAW,EACX,OAAyB;IAEzB,MAAM,SAAS,GAAG,OAAO,EAAE,UAAU,CAAC;IACtC,OAAO;QACN,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,MAAM;QACb,WAAW,EAAE,4IAA4I,aAAa,eAAe,iBAAiB,GAAG,IAAI,4DAA4D,oBAAoB,SAAS;QACtS,aAAa,EAAE,yDAAyD;QACxE,UAAU,EAAE,UAAU;QACtB,KAAK,CAAC,OAAO,CACZ,WAAW,EACX,EACC,OAAO,EACP,IAAI,EAAE,SAAS,EACf,IAAI,EACJ,UAAU,EACV,OAAO,EACP,OAAO,EACP,KAAK,EACL,SAAS,EACT,IAAI,EACJ,aAAa,EACb,YAAY,EACZ,MAAM,EACN,IAAI,EACJ,eAAe,EACf,MAAM,EACN,KAAK,EACL,SAAS,GACM,EAChB,MAAoB,EACpB,SAAU,EACV,IAAK;YAEL,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACtC,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;oBACrB,MAAM,CAAC,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC;oBACvC,OAAO;gBACR,CAAC;gBACD,IAAI,OAAO,GAAG,KAAK,CAAC;gBACpB,MAAM,MAAM,GAAG,CAAC,EAAc,EAAE,EAAE;oBACjC,IAAI,CAAC,OAAO,EAAE,CAAC;wBACd,OAAO,GAAG,IAAI,CAAC;wBACf,EAAE,EAAE,CAAC;oBACN,CAAC;gBACF,CAAC,CAAC;gBAEF,CAAC,KAAK,IAAI,EAAE;oBACX,IAAI,CAAC;wBACJ,MAAM,UAAU,GAAG,YAAY,CAAC,SAAS,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC;wBACvD,MAAM,GAAG,GAAG,SAAS,IAAI,qBAAqB,CAAC;wBAC/C,IAAI,WAAoB,CAAC;wBACzB,IAAI,CAAC;4BACJ,WAAW,GAAG,MAAM,GAAG,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;wBACjD,CAAC;wBAAC,MAAM,CAAC;4BACR,MAAM,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,mBAAmB,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;4BACjE,OAAO;wBACR,CAAC;wBAED,MAAM,YAAY,GAAG,OAAO,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;wBAC1D,MAAM,kBAAkB,GAAG,aAAa,IAAI,YAAY,CAAC;wBACzD,MAAM,iBAAiB,GAAG,YAAY,IAAI,YAAY,CAAC;wBACvD,MAAM,WAAW,GAAG,OAAO,EAAE,WAAW,KAAK,IAAI,CAAC;wBAClD,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,IAAI,aAAa,CAAC,CAAC;wBAC3D,MAAM,UAAU,GAAG,CAAC,QAAgB,EAAU,EAAE;4BAC/C,IAAI,WAAW,EAAE,CAAC;gCACjB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;oCAAE,OAAO,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gCACpE,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;gCACrD,IAAI,QAAQ,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC;oCAAE,OAAO,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;4BACjF,CAAC;4BACD,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;wBAChC,CAAC,CAAC;wBAEF,IAAI,CAAC,SAAS,IAAI,CAAC,OAAO,EAAE,CAAC;4BAC5B,MAAM,aAAa,GAAG,uBAAuB,EAAE,CAAC;4BAChD,IAAI,aAAa,EAAE,CAAC;gCACnB,MAAM,YAAY,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC;oCAC7C,OAAO;oCACP,IAAI,EAAE,UAAU;oCAChB,GAAG;oCACH,IAAI;oCACJ,UAAU;oCACV,MAAM,EAAE,MAAM,IAAI,IAAI;oCACtB,SAAS,EAAE,SAAS,KAAK,KAAK;oCAC9B,KAAK,EAAE,KAAK,IAAI,WAAW;oCAC3B,QAAQ,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,GAAG,CAAC;oCAC3D,MAAM;oCACN,OAAO,EACN,aAAa,KAAK,SAAS,IAAI,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS;oCACrF,aAAa;oCACb,YAAY;oCACZ,IAAI;oCACJ,IAAI;oCACJ,eAAe;oCACf,UAAU,EAAE,oBAAoB;oCAChC,SAAS,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;oCAC5D,MAAM;oCACN,SAAS,EAAE,SAAS,IAAI,MAAM;iCAC9B,CAAC,CAAC;gCACH,IAAI,YAAY,CAAC,KAAK;oCAAE,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;gCAC5D,IAAI,YAAY,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oCACvC,MAAM,CAAC,GAAG,EAAE,CACX,OAAO,CAAC;wCACP,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,kBAAkB,EAAE,CAAC;wCAC9E,OAAO,EAAE,SAAS;qCAClB,CAAC,CACF,CAAC;oCACF,OAAO;gCACR,CAAC;gCACD,MAAM,cAAc,GAAG,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;gCACrE,MAAM,WAAW,GAChB,IAAI,KAAK,kBAAkB,IAAI,CAAC,WAAW,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC;oCAC/D,CAAC,CAAC,EAAE;oCACJ,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gCACrE,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC,YAAY,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gCACnF,MAAM,SAAS,GACd,IAAI,KAAK,OAAO;oCACf,CAAC,CAAC,WAAW;oCACb,CAAC,CAAC,IAAI,KAAK,kBAAkB;wCAC5B,CAAC,CAAC,WAAW,IAAI,kBAAkB;wCACnC,CAAC,CAAC,cAAc;6CACb,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,qBAAqB,CAAC,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;6CACxE,IAAI,CAAC,IAAI,CAAC,CAAC;gCACjB,MAAM,UAAU,GAAG,YAAY,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC;gCAClF,IAAI,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC;gCAChC,MAAM,OAAO,GAAoB,EAAE,CAAC;gCACpC,MAAM,OAAO,GAAa,EAAE,CAAC;gCAC7B,IAAI,YAAY,CAAC,OAAO,CAAC,MAAM,GAAG,cAAc,IAAI,YAAY,CAAC,YAAY,EAAE,CAAC;oCAC/E,OAAO,CAAC,IAAI,CACX,GAAG,cAAc,qCAAqC,cAAc,GAAG,CAAC,8BAA8B,CACtG,CAAC;oCACF,OAAO,CAAC,iBAAiB,GAAG,cAAc,CAAC;gCAC5C,CAAC;gCACD,IAAI,UAAU,CAAC,SAAS,EAAE,CAAC;oCAC1B,OAAO,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;oCAC/D,OAAO,CAAC,UAAU,GAAG,UAAU,CAAC;gCACjC,CAAC;gCACD,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;oCACrD,OAAO,CAAC,IAAI,CACX,2BAA2B,oBAAoB,yCAAyC,CACxF,CAAC;oCACF,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;gCAC/B,CAAC;gCACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;oCAAE,MAAM,IAAI,QAAQ,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;gCAChE,MAAM,CAAC,GAAG,EAAE,CACX,OAAO,CAAC;oCACP,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;oCACzC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;iCAC9D,CAAC,CACF,CAAC;gCACF,OAAO;4BACR,CAAC;wBACF,CAAC;wBAED,MAAM,SAAS,GAAG,IAAI,GAAG,EAAoB,CAAC;wBAC9C,MAAM,YAAY,GAAG,KAAK,EAAE,QAAgB,EAAqB,EAAE;4BAClE,IAAI,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;4BACpC,IAAI,CAAC,KAAK,EAAE,CAAC;gCACZ,IAAI,CAAC;oCACJ,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;oCAC7C,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gCACzE,CAAC;gCAAC,MAAM,CAAC;oCACR,KAAK,GAAG,EAAE,CAAC;gCACZ,CAAC;gCACD,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;4BAChC,CAAC;4BACD,OAAO,KAAK,CAAC;wBACd,CAAC,CAAC;wBAEF,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;wBAC5C,IAAI,CAAC,MAAM,EAAE,CAAC;4BACb,MAAM,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC,CAAC,CAAC;4BAC7F,OAAO;wBACR,CAAC;wBAED,MAAM,IAAI,GAAa,CAAC,QAAQ,EAAE,eAAe,EAAE,eAAe,CAAC,CAAC;wBACpE,IAAI,MAAM,KAAK,KAAK;4BAAE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;wBAC5C,IAAI,SAAS,KAAK,KAAK;4BAAE,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;wBAClD,IAAI,UAAU;4BAAE,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;wBAC3C,IAAI,OAAO;4BAAE,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;wBAC1C,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;4BAAE,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;wBAChF,IAAI,IAAI;4BAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;wBACpC,IAAI,eAAe,KAAK,SAAS;4BAAE,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC;wBACrF,IAAI,IAAI;4BAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;wBACpC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;wBAErC,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;wBACzE,MAAM,YAAY,GAAG,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;wBACpG,MAAM,EAAE,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;wBACpD,IAAI,MAAM,GAAG,EAAE,CAAC;wBAChB,IAAI,UAAU,GAAG,CAAC,CAAC;wBACnB,IAAI,iBAAiB,GAAG,KAAK,CAAC;wBAC9B,IAAI,cAAc,GAAG,KAAK,CAAC;wBAC3B,IAAI,OAAO,GAAG,KAAK,CAAC;wBACpB,IAAI,gBAAgB,GAAG,KAAK,CAAC;wBAC7B,MAAM,WAAW,GAAa,EAAE,CAAC;wBAEjC,MAAM,OAAO,GAAG,GAAG,EAAE;4BACpB,IAAI,YAAY;gCAAE,YAAY,CAAC,YAAY,CAAC,CAAC;4BAC7C,EAAE,CAAC,KAAK,EAAE,CAAC;4BACX,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;wBAC/C,CAAC,CAAC;wBACF,MAAM,SAAS,GAAG,CAAC,UAAU,GAAG,KAAK,EAAE,EAAE;4BACxC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;gCACnB,gBAAgB,GAAG,UAAU,CAAC;gCAC9B,KAAK,CAAC,IAAI,EAAE,CAAC;4BACd,CAAC;wBACF,CAAC,CAAC;wBACF,MAAM,OAAO,GAAG,GAAG,EAAE;4BACpB,OAAO,GAAG,IAAI,CAAC;4BACf,SAAS,EAAE,CAAC;wBACb,CAAC,CAAC;wBACF,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;wBAC3D,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;4BAClC,MAAM,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;wBAC5B,CAAC,CAAC,CAAC;wBAEH,MAAM,WAAW,GAAG,KAAK,EAAE,QAAgB,EAAE,UAAkB,EAAqB,EAAE;4BACrF,MAAM,YAAY,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;4BAC1C,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,QAAQ,CAAC,CAAC;4BAC3C,IAAI,CAAC,KAAK,CAAC,MAAM;gCAAE,OAAO,CAAC,GAAG,YAAY,IAAI,UAAU,yBAAyB,CAAC,CAAC;4BACnF,MAAM,KAAK,GAAa,EAAE,CAAC;4BAC3B,MAAM,KAAK,GAAG,kBAAkB,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;4BACjG,MAAM,GAAG,GACR,iBAAiB,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,UAAU,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;4BAC7F,KAAK,IAAI,OAAO,GAAG,KAAK,EAAE,OAAO,IAAI,GAAG,EAAE,OAAO,EAAE,EAAE,CAAC;gCACrD,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;gCAC1C,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;gCAC9C,MAAM,WAAW,GAAG,OAAO,KAAK,UAAU,CAAC;gCAC3C,oDAAoD;gCACpD,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,YAAY,EAAE,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;gCACtE,IAAI,YAAY;oCAAE,cAAc,GAAG,IAAI,CAAC;gCACxC,IAAI,WAAW;oCAAE,KAAK,CAAC,IAAI,CAAC,GAAG,YAAY,IAAI,OAAO,KAAK,aAAa,EAAE,CAAC,CAAC;;oCACvE,KAAK,CAAC,IAAI,CAAC,GAAG,YAAY,IAAI,OAAO,KAAK,aAAa,EAAE,CAAC,CAAC;4BACjE,CAAC;4BACD,OAAO,KAAK,CAAC;wBACd,CAAC,CAAC;wBAEF,qEAAqE;wBACrE,MAAM,OAAO,GAAuE,EAAE,CAAC;wBACvF,IAAI,WAAW,GAAG,CAAC,EAClB,SAAS,GAAG,CAAC,CAAC;wBACf,MAAM,aAAa,GAAG,IAAI,GAAG,EAAU,EACtC,gBAAgB,GAAG,IAAI,GAAG,EAAU,CAAC;wBACtC,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;4BACtB,IACC,CAAC,IAAI,CAAC,IAAI,EAAE;gCACZ,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,kBAAkB,IAAI,UAAU,IAAI,cAAc,CAAC;gCAEjF,OAAO;4BACR,IAAI,KAAc,CAAC;4BACnB,IAAI,CAAC;gCACJ,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAY,CAAC;4BACrC,CAAC;4BAAC,MAAM,CAAC;gCACR,OAAO;4BACR,CAAC;4BACD,IAAI,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC;gCAChC,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;gCACxC,IAAI,IAAI,KAAK,kBAAkB,EAAE,CAAC;oCACjC,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;wCAClC,MAAM,SAAS,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;wCACvC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;4CACnC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;4CAC7B,SAAS,EAAE,CAAC;4CACZ,IAAI,MAAM,KAAK,SAAS,IAAI,SAAS,GAAG,MAAM;gDAAE,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;wCACjF,CAAC;oCACF,CAAC;oCACD,UAAU,GAAG,gBAAgB,CAAC,IAAI,CAAC;oCACnC,IAAI,UAAU,IAAI,cAAc,EAAE,CAAC;wCAClC,iBAAiB,GAAG,IAAI,CAAC;wCACzB,SAAS,CAAC,IAAI,CAAC,CAAC;oCACjB,CAAC;oCACD,OAAO;gCACR,CAAC;gCACD,WAAW,EAAE,CAAC;gCACd,IAAI,IAAI,KAAK,OAAO,IAAI,MAAM,KAAK,SAAS,IAAI,WAAW,IAAI,MAAM;oCAAE,OAAO;gCAC9E,UAAU,EAAE,CAAC;gCACb,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,WAAW,CAAC;gCAC3C,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC;gCACzC,IAAI,OAAO,QAAQ,KAAK,QAAQ;oCAAE,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;gCAC7E,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,OAAO,UAAU,KAAK,QAAQ;oCACjE,OAAO,CAAC,IAAI,CAAC;wCACZ,QAAQ;wCACR,UAAU;wCACV,QAAQ,EAAE,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;qCAC7D,CAAC,CAAC;gCACJ,IAAI,IAAI,KAAK,OAAO,IAAI,UAAU,IAAI,cAAc,EAAE,CAAC;oCACtD,iBAAiB,GAAG,IAAI,CAAC;oCACzB,SAAS,CAAC,IAAI,CAAC,CAAC;gCACjB,CAAC;4BACF,CAAC;wBACF,CAAC,CAAC,CAAC;wBAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;4BAC3B,OAAO,EAAE,CAAC;4BACV,MAAM,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,0BAA0B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;wBAC5E,CAAC,CAAC,CAAC;wBACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;4BAChC,OAAO,EAAE,CAAC;4BACV,IAAI,OAAO,EAAE,CAAC;gCACb,MAAM,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;gCACrD,OAAO;4BACR,CAAC;4BACD,IAAI,CAAC,gBAAgB,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gCACnD,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,EAAE,IAAI,4BAA4B,IAAI,EAAE,CAAC;gCACrE,MAAM,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;gCAC1C,OAAO;4BACR,CAAC;4BACD,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;gCACtB,MAAM,CAAC,GAAG,EAAE,CACX,OAAO,CAAC;oCACP,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,kBAAkB,EAAE,CAAC;oCAC9E,OAAO,EAAE,SAAS;iCAClB,CAAC,CACF,CAAC;gCACF,OAAO;4BACR,CAAC;4BACD,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,kBAAkB,EAAE,CAAC;gCACrD,MAAM,CAAC,GAAG,EAAE,CACX,OAAO,CAAC;oCACP,OAAO,EAAE;wCACR;4CACC,IAAI,EAAE,MAAM;4CACZ,IAAI,EACH,IAAI,KAAK,OAAO;gDACf,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC;gDACjD,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,kBAAkB;yCAC1D;qCACD;oCACD,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,SAAS;iCAC9E,CAAC,CACF,CAAC;gCACF,OAAO;4BACR,CAAC;4BAED,sFAAsF;4BACtF,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gCAC7B,IAAI,kBAAkB,KAAK,CAAC,IAAI,iBAAiB,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;oCACzF,MAAM,YAAY,GAAG,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;oCAChD,MAAM,SAAS,GAAG,KAAK,CAAC,QAAQ;yCAC9B,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC;yCACtB,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;yCAClB,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;oCACrB,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,YAAY,EAAE,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;oCACtE,IAAI,YAAY;wCAAE,cAAc,GAAG,IAAI,CAAC;oCACxC,WAAW,CAAC,IAAI,CAAC,GAAG,YAAY,IAAI,KAAK,CAAC,UAAU,KAAK,aAAa,EAAE,CAAC,CAAC;gCAC3E,CAAC;qCAAM,CAAC;oCACP,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;oCAClE,WAAW,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;gCAC5B,CAAC;4BACF,CAAC;4BAED,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;4BACzC,kGAAkG;4BAClG,MAAM,UAAU,GAAG,YAAY,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC;4BAClF,IAAI,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC;4BAChC,MAAM,OAAO,GAAoB,EAAE,CAAC;4BACpC,4DAA4D;4BAC5D,MAAM,OAAO,GAAa,EAAE,CAAC;4BAC7B,IAAI,iBAAiB,EAAE,CAAC;gCACvB,OAAO,CAAC,IAAI,CACX,GAAG,cAAc,qCAAqC,cAAc,GAAG,CAAC,8BAA8B,CACtG,CAAC;gCACF,OAAO,CAAC,iBAAiB,GAAG,cAAc,CAAC;4BAC5C,CAAC;4BACD,IAAI,UAAU,CAAC,SAAS,EAAE,CAAC;gCAC1B,OAAO,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;gCAC/D,OAAO,CAAC,UAAU,GAAG,UAAU,CAAC;4BACjC,CAAC;4BACD,IAAI,cAAc,EAAE,CAAC;gCACpB,OAAO,CAAC,IAAI,CACX,2BAA2B,oBAAoB,yCAAyC,CACxF,CAAC;gCACF,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;4BAC/B,CAAC;4BACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;gCAAE,MAAM,IAAI,QAAQ,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;4BAChE,MAAM,CAAC,GAAG,EAAE,CACX,OAAO,CAAC;gCACP,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;gCACzC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;6BAC9D,CAAC,CACF,CAAC;wBACH,CAAC,CAAC,CAAC;oBACJ,CAAC;oBAAC,OAAO,GAAG,EAAE,CAAC;wBACd,MAAM,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,GAAY,CAAC,CAAC,CAAC;oBACpC,CAAC;gBACF,CAAC,CAAC,EAAE,CAAC;YACN,CAAC,CAAC,CAAC;QACJ,CAAC;QACD,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO;YAC9B,MAAM,IAAI,GAAI,OAAO,CAAC,aAAkC,IAAI,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAC/E,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;YAC1C,OAAO,IAAI,CAAC;QACb,CAAC;QACD,YAAY,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO;YAC3C,MAAM,IAAI,GAAI,OAAO,CAAC,aAAkC,IAAI,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAC/E,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;YAC3E,OAAO,IAAI,CAAC;QACb,CAAC;KACD,CAAC;AACH,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,GAAW,EAAE,OAAyB;IACpE,OAAO,kBAAkB,CAAC,wBAAwB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;AACnE,CAAC","sourcesContent":["import { readFile as fsReadFile, stat as fsStat } from \"node:fs/promises\";\nimport { createInterface } from \"node:readline\";\nimport type { AgentTool } from \"@earendil-works/pi-agent-core\";\nimport { Text } from \"@earendil-works/pi-tui\";\nimport { spawn } from \"child_process\";\nimport path from \"path\";\nimport { type Static, Type } from \"typebox\";\nimport { parenthesizedKeyHint } from \"../../modes/interactive/components/keybinding-hints.ts\";\nimport { ensureTool } from \"../../utils/tools-manager.ts\";\nimport type { ToolDefinition, ToolRenderResultOptions } from \"../extensions/types.ts\";\nimport { resolveToCwd } from \"./path-utils.ts\";\nimport { getTextOutput, invalidArgText, shortenPath, str } from \"./render-utils.ts\";\nimport { loadNativeSearchBinding, type NativeGrepMatch } from \"./search-native.ts\";\nimport { wrapToolDefinition } from \"./tool-definition-wrapper.ts\";\nimport {\n\tDEFAULT_MAX_BYTES,\n\tformatSize,\n\tGREP_MAX_LINE_LENGTH,\n\ttype TruncationResult,\n\ttruncateHead,\n\ttruncateLine,\n} from \"./truncate.ts\";\n\nconst grepSchema = Type.Object(\n\t{\n\t\tpattern: Type.String({ description: \"Search pattern (regex or literal string)\" }),\n\t\tpath: Type.Optional(Type.String({ description: \"Directory or file to search (default: current directory)\" })),\n\t\tglob: Type.Optional(Type.String({ description: \"Filter files by glob pattern, e.g. '*.ts' or '**/*.spec.ts'\" })),\n\t\tignoreCase: Type.Optional(Type.Boolean({ description: \"Case-insensitive search (default: false)\" })),\n\t\ttype: Type.Optional(Type.String({ description: \"File type filter for native grep.\" })),\n\t\tliteral: Type.Optional(\n\t\t\tType.Boolean({ description: \"Treat pattern as literal string instead of regex (default: false)\" }),\n\t\t),\n\t\tcontext: Type.Optional(\n\t\t\tType.Number({ description: \"Number of lines to show before and after each match (default: 0)\" }),\n\t\t),\n\t\tcontextBefore: Type.Optional(Type.Number({ description: \"Lines to show before each match.\" })),\n\t\tcontextAfter: Type.Optional(Type.Number({ description: \"Lines to show after each match.\" })),\n\t\tlimit: Type.Optional(Type.Number({ description: \"Maximum number of matches to return (default: 100)\" })),\n\t\toffset: Type.Optional(Type.Number({ description: \"Skip first N matches.\" })),\n\t\tmode: Type.Optional(\n\t\t\tType.Union([Type.Literal(\"content\"), Type.Literal(\"count\"), Type.Literal(\"filesWithMatches\")]),\n\t\t),\n\t\tmaxCountPerFile: Type.Optional(Type.Number({ description: \"Maximum matches per file.\" })),\n\t\thidden: Type.Optional(Type.Boolean({ description: \"Search hidden files (default true).\" })),\n\t\tcache: Type.Optional(Type.Boolean({ description: \"Use native cache.\" })),\n\t\ttimeoutMs: Type.Optional(Type.Number({ description: \"Native grep timeout in milliseconds.\" })),\n\t\tgitignore: Type.Optional(Type.Boolean({ description: \"Respect .gitignore files (default: true)\" })),\n\t},\n\t{ additionalProperties: false },\n);\n\nexport type GrepToolInput = Static<typeof grepSchema>;\nconst DEFAULT_LIMIT = 100;\n\nexport interface GrepToolDetails {\n\ttruncation?: TruncationResult;\n\tmatchLimitReached?: number;\n\tlinesTruncated?: boolean;\n}\n\ntype RipgrepMatchEvent = {\n\ttype: \"match\";\n\tdata?: {\n\t\tpath?: { text?: unknown };\n\t\tline_number?: unknown;\n\t\tlines?: { text?: unknown };\n\t};\n};\n\nfunction isRipgrepMatchEvent(event: unknown): event is RipgrepMatchEvent {\n\treturn typeof event === \"object\" && event !== null && \"type\" in event && event.type === \"match\";\n}\n\n/**\n * Pluggable operations for the grep tool.\n * Override these to delegate search to remote systems (for example SSH).\n */\nexport interface GrepOperations {\n\t/** Check if path is a directory. Throws if path does not exist. */\n\tisDirectory: (absolutePath: string) => Promise<boolean> | boolean;\n\t/** Read file contents for context lines */\n\treadFile: (absolutePath: string) => Promise<string> | string;\n}\n\nconst defaultGrepOperations: GrepOperations = {\n\tisDirectory: async (p) => (await fsStat(p)).isDirectory(),\n\treadFile: (p) => fsReadFile(p, \"utf-8\"),\n};\n\nexport interface GrepToolOptions {\n\t/** Custom operations for grep. Default: local filesystem plus ripgrep */\n\toperations?: GrepOperations;\n\t/** Enable shared native filesystem scan cache. Defaults to false; search callers also disable it to stay fresh across out-of-band filesystem mutations. */\n\tnativeCache?: boolean;\n}\n\nfunction formatGrepCall(\n\targs: { pattern: string; path?: string; glob?: string; limit?: number } | undefined,\n\ttheme: typeof import(\"../../modes/interactive/theme/theme.ts\").theme,\n): string {\n\tconst pattern = str(args?.pattern);\n\tconst rawPath = str(args?.path);\n\tconst path = rawPath !== null ? shortenPath(rawPath || \".\") : null;\n\tconst glob = str(args?.glob);\n\tconst limit = args?.limit;\n\tconst invalidArg = invalidArgText(theme);\n\tlet text =\n\t\ttheme.fg(\"toolTitle\", theme.bold(\"grep\")) +\n\t\t\" \" +\n\t\t(pattern === null ? invalidArg : theme.fg(\"accent\", `/${pattern || \"\"}/`)) +\n\t\ttheme.fg(\"toolOutput\", ` in ${path === null ? invalidArg : path}`);\n\tif (glob) text += theme.fg(\"toolOutput\", ` (${glob})`);\n\tif (limit !== undefined) text += theme.fg(\"toolOutput\", ` limit ${limit}`);\n\treturn text;\n}\n\nfunction formatGrepResult(\n\tresult: {\n\t\tcontent: Array<{ type: string; text?: string; data?: string; mimeType?: string }>;\n\t\tdetails?: GrepToolDetails;\n\t},\n\toptions: ToolRenderResultOptions,\n\ttheme: typeof import(\"../../modes/interactive/theme/theme.ts\").theme,\n\tshowImages: boolean,\n): string {\n\tconst output = getTextOutput(result, showImages).trim();\n\tlet text = \"\";\n\tif (output) {\n\t\tconst lines = output.split(\"\\n\");\n\t\tconst maxLines = options.expanded ? lines.length : 15;\n\t\tconst displayLines = lines.slice(0, maxLines);\n\t\tconst remaining = lines.length - maxLines;\n\t\ttext += `\\n${displayLines.map((line) => theme.fg(\"toolOutput\", line)).join(\"\\n\")}`;\n\t\tif (remaining > 0) {\n\t\t\ttext +=\n\t\t\t\ttheme.fg(\"muted\", \"\\n... \") + parenthesizedKeyHint(\"app.tools.expand\", \"Expand\", `${remaining} more lines`);\n\t\t}\n\t}\n\n\tconst matchLimit = result.details?.matchLimitReached;\n\tconst truncation = result.details?.truncation;\n\tconst linesTruncated = result.details?.linesTruncated;\n\tif (matchLimit || truncation?.truncated || linesTruncated) {\n\t\tconst warnings: string[] = [];\n\t\tif (matchLimit) warnings.push(`${matchLimit} matches limit`);\n\t\tif (truncation?.truncated) warnings.push(`${formatSize(truncation.maxBytes ?? DEFAULT_MAX_BYTES)} limit`);\n\t\tif (linesTruncated) warnings.push(\"some lines truncated\");\n\t\ttext += `\\n${theme.fg(\"warning\", `[Truncated: ${warnings.join(\", \")}]`)}`;\n\t}\n\treturn text;\n}\n\nfunction formatNativeGrepMatch(match: NativeGrepMatch, displayPath: string): string[] {\n\tconst lines: string[] = [];\n\tfor (const contextLine of match.contextBefore ?? []) {\n\t\tlines.push(`${displayPath}-${contextLine.lineNumber}- ${contextLine.line}`);\n\t}\n\tlines.push(`${displayPath}:${match.lineNumber}: ${match.line}`);\n\tfor (const contextLine of match.contextAfter ?? []) {\n\t\tlines.push(`${displayPath}-${contextLine.lineNumber}- ${contextLine.line}`);\n\t}\n\treturn lines;\n}\n\nexport function createGrepToolDefinition(\n\tcwd: string,\n\toptions?: GrepToolOptions,\n): ToolDefinition<typeof grepSchema, GrepToolDetails | undefined> {\n\tconst customOps = options?.operations;\n\treturn {\n\t\tname: \"grep\",\n\t\tlabel: \"grep\",\n\t\tdescription: `Search file contents for a pattern. Returns matching lines with file paths and line numbers. Respects .gitignore. Output is truncated to ${DEFAULT_LIMIT} matches or ${DEFAULT_MAX_BYTES / 1024}KB (whichever is hit first). Long lines are truncated to ${GREP_MAX_LINE_LENGTH} chars.`,\n\t\tpromptSnippet: \"Search file contents for patterns (respects .gitignore)\",\n\t\tparameters: grepSchema,\n\t\tasync execute(\n\t\t\t_toolCallId,\n\t\t\t{\n\t\t\t\tpattern,\n\t\t\t\tpath: searchDir,\n\t\t\t\tglob,\n\t\t\t\tignoreCase,\n\t\t\t\tliteral,\n\t\t\t\tcontext,\n\t\t\t\tlimit,\n\t\t\t\tgitignore,\n\t\t\t\ttype,\n\t\t\t\tcontextBefore,\n\t\t\t\tcontextAfter,\n\t\t\t\toffset,\n\t\t\t\tmode,\n\t\t\t\tmaxCountPerFile,\n\t\t\t\thidden,\n\t\t\t\tcache,\n\t\t\t\ttimeoutMs,\n\t\t\t}: GrepToolInput,\n\t\t\tsignal?: AbortSignal,\n\t\t\t_onUpdate?,\n\t\t\t_ctx?,\n\t\t) {\n\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\tif (signal?.aborted) {\n\t\t\t\t\treject(new Error(\"Operation aborted\"));\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tlet settled = false;\n\t\t\t\tconst settle = (fn: () => void) => {\n\t\t\t\t\tif (!settled) {\n\t\t\t\t\t\tsettled = true;\n\t\t\t\t\t\tfn();\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\t(async () => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst searchPath = resolveToCwd(searchDir || \".\", cwd);\n\t\t\t\t\t\tconst ops = customOps ?? defaultGrepOperations;\n\t\t\t\t\t\tlet isDirectory: boolean;\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tisDirectory = await ops.isDirectory(searchPath);\n\t\t\t\t\t\t} catch {\n\t\t\t\t\t\t\tsettle(() => reject(new Error(`Path not found: ${searchPath}`)));\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst contextValue = context && context > 0 ? context : 0;\n\t\t\t\t\t\tconst contextBeforeValue = contextBefore ?? contextValue;\n\t\t\t\t\t\tconst contextAfterValue = contextAfter ?? contextValue;\n\t\t\t\t\t\tconst nativeCache = options?.nativeCache === true;\n\t\t\t\t\t\tconst effectiveLimit = Math.max(1, limit ?? DEFAULT_LIMIT);\n\t\t\t\t\t\tconst formatPath = (filePath: string): string => {\n\t\t\t\t\t\t\tif (isDirectory) {\n\t\t\t\t\t\t\t\tif (!path.isAbsolute(filePath)) return filePath.replace(/\\\\/g, \"/\");\n\t\t\t\t\t\t\t\tconst relative = path.relative(searchPath, filePath);\n\t\t\t\t\t\t\t\tif (relative && !relative.startsWith(\"..\")) return relative.replace(/\\\\/g, \"/\");\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn path.basename(filePath);\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif (!customOps && !literal) {\n\t\t\t\t\t\t\tconst nativeBinding = loadNativeSearchBinding();\n\t\t\t\t\t\t\tif (nativeBinding) {\n\t\t\t\t\t\t\t\tconst nativeResult = await nativeBinding.grep({\n\t\t\t\t\t\t\t\t\tpattern,\n\t\t\t\t\t\t\t\t\tpath: searchPath,\n\t\t\t\t\t\t\t\t\tcwd,\n\t\t\t\t\t\t\t\t\tglob,\n\t\t\t\t\t\t\t\t\tignoreCase,\n\t\t\t\t\t\t\t\t\thidden: hidden ?? true,\n\t\t\t\t\t\t\t\t\tgitignore: gitignore !== false,\n\t\t\t\t\t\t\t\t\tcache: cache ?? nativeCache,\n\t\t\t\t\t\t\t\t\tmaxCount: mode === \"count\" ? undefined : effectiveLimit + 1,\n\t\t\t\t\t\t\t\t\toffset,\n\t\t\t\t\t\t\t\t\tcontext:\n\t\t\t\t\t\t\t\t\t\tcontextBefore === undefined && contextAfter === undefined ? contextValue : undefined,\n\t\t\t\t\t\t\t\t\tcontextBefore,\n\t\t\t\t\t\t\t\t\tcontextAfter,\n\t\t\t\t\t\t\t\t\ttype,\n\t\t\t\t\t\t\t\t\tmode,\n\t\t\t\t\t\t\t\t\tmaxCountPerFile,\n\t\t\t\t\t\t\t\t\tmaxColumns: GREP_MAX_LINE_LENGTH,\n\t\t\t\t\t\t\t\t\tmultiline: pattern.includes(\"\\n\") || pattern.includes(\"\\\\n\"),\n\t\t\t\t\t\t\t\t\tsignal,\n\t\t\t\t\t\t\t\t\ttimeoutMs: timeoutMs ?? 30_000,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tif (nativeResult.error) throw new Error(nativeResult.error);\n\t\t\t\t\t\t\t\tif (nativeResult.matches.length === 0) {\n\t\t\t\t\t\t\t\t\tsettle(() =>\n\t\t\t\t\t\t\t\t\t\tresolve({\n\t\t\t\t\t\t\t\t\t\t\tcontent: [{ type: \"text\", text: mode === \"count\" ? \"0\" : \"No matches found\" }],\n\t\t\t\t\t\t\t\t\t\t\tdetails: undefined,\n\t\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst visibleMatches = nativeResult.matches.slice(0, effectiveLimit);\n\t\t\t\t\t\t\t\tconst filesOutput =\n\t\t\t\t\t\t\t\t\tmode === \"filesWithMatches\" && !isDirectory && (offset ?? 0) > 0\n\t\t\t\t\t\t\t\t\t\t? \"\"\n\t\t\t\t\t\t\t\t\t\t: visibleMatches.map((match) => formatPath(match.path)).join(\"\\n\");\n\t\t\t\t\t\t\t\tconst countOutput = String(Math.max(0, nativeResult.totalMatches - (offset ?? 0)));\n\t\t\t\t\t\t\t\tconst rawOutput =\n\t\t\t\t\t\t\t\t\tmode === \"count\"\n\t\t\t\t\t\t\t\t\t\t? countOutput\n\t\t\t\t\t\t\t\t\t\t: mode === \"filesWithMatches\"\n\t\t\t\t\t\t\t\t\t\t\t? filesOutput || \"No matches found\"\n\t\t\t\t\t\t\t\t\t\t\t: visibleMatches\n\t\t\t\t\t\t\t\t\t\t\t\t\t.flatMap((match) => formatNativeGrepMatch(match, formatPath(match.path)))\n\t\t\t\t\t\t\t\t\t\t\t\t\t.join(\"\\n\");\n\t\t\t\t\t\t\t\tconst truncation = truncateHead(rawOutput, { maxLines: Number.MAX_SAFE_INTEGER });\n\t\t\t\t\t\t\t\tlet output = truncation.content;\n\t\t\t\t\t\t\t\tconst details: GrepToolDetails = {};\n\t\t\t\t\t\t\t\tconst notices: string[] = [];\n\t\t\t\t\t\t\t\tif (nativeResult.matches.length > effectiveLimit || nativeResult.limitReached) {\n\t\t\t\t\t\t\t\t\tnotices.push(\n\t\t\t\t\t\t\t\t\t\t`${effectiveLimit} matches limit reached. Use limit=${effectiveLimit * 2} for more, or refine pattern`,\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\tdetails.matchLimitReached = effectiveLimit;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (truncation.truncated) {\n\t\t\t\t\t\t\t\t\tnotices.push(`${formatSize(DEFAULT_MAX_BYTES)} limit reached`);\n\t\t\t\t\t\t\t\t\tdetails.truncation = truncation;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (visibleMatches.some((match) => match.truncated)) {\n\t\t\t\t\t\t\t\t\tnotices.push(\n\t\t\t\t\t\t\t\t\t\t`Some lines truncated to ${GREP_MAX_LINE_LENGTH} chars. Use read tool to see full lines`,\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\tdetails.linesTruncated = true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (notices.length > 0) output += `\\n\\n[${notices.join(\". \")}]`;\n\t\t\t\t\t\t\t\tsettle(() =>\n\t\t\t\t\t\t\t\t\tresolve({\n\t\t\t\t\t\t\t\t\t\tcontent: [{ type: \"text\", text: output }],\n\t\t\t\t\t\t\t\t\t\tdetails: Object.keys(details).length > 0 ? details : undefined,\n\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst fileCache = new Map<string, string[]>();\n\t\t\t\t\t\tconst getFileLines = async (filePath: string): Promise<string[]> => {\n\t\t\t\t\t\t\tlet lines = fileCache.get(filePath);\n\t\t\t\t\t\t\tif (!lines) {\n\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\tconst content = await ops.readFile(filePath);\n\t\t\t\t\t\t\t\t\tlines = content.replace(/\\r\\n/g, \"\\n\").replace(/\\r/g, \"\\n\").split(\"\\n\");\n\t\t\t\t\t\t\t\t} catch {\n\t\t\t\t\t\t\t\t\tlines = [];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tfileCache.set(filePath, lines);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn lines;\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tconst rgPath = await ensureTool(\"rg\", true);\n\t\t\t\t\t\tif (!rgPath) {\n\t\t\t\t\t\t\tsettle(() => reject(new Error(\"ripgrep (rg) is not available and could not be downloaded\")));\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst args: string[] = [\"--json\", \"--line-number\", \"--color=never\"];\n\t\t\t\t\t\tif (hidden !== false) args.push(\"--hidden\");\n\t\t\t\t\t\tif (gitignore === false) args.push(\"--no-ignore\");\n\t\t\t\t\t\tif (ignoreCase) args.push(\"--ignore-case\");\n\t\t\t\t\t\tif (literal) args.push(\"--fixed-strings\");\n\t\t\t\t\t\tif (pattern.includes(\"\\n\") || pattern.includes(\"\\\\n\")) args.push(\"--multiline\");\n\t\t\t\t\t\tif (type) args.push(\"--type\", type);\n\t\t\t\t\t\tif (maxCountPerFile !== undefined) args.push(\"--max-count\", String(maxCountPerFile));\n\t\t\t\t\t\tif (glob) args.push(\"--glob\", glob);\n\t\t\t\t\t\targs.push(\"--\", pattern, searchPath);\n\n\t\t\t\t\t\tconst child = spawn(rgPath, args, { stdio: [\"ignore\", \"pipe\", \"pipe\"] });\n\t\t\t\t\t\tconst timeoutTimer = timeoutMs !== undefined ? setTimeout(() => stopChild(), timeoutMs) : undefined;\n\t\t\t\t\t\tconst rl = createInterface({ input: child.stdout });\n\t\t\t\t\t\tlet stderr = \"\";\n\t\t\t\t\t\tlet matchCount = 0;\n\t\t\t\t\t\tlet matchLimitReached = false;\n\t\t\t\t\t\tlet linesTruncated = false;\n\t\t\t\t\t\tlet aborted = false;\n\t\t\t\t\t\tlet killedDueToLimit = false;\n\t\t\t\t\t\tconst outputLines: string[] = [];\n\n\t\t\t\t\t\tconst cleanup = () => {\n\t\t\t\t\t\t\tif (timeoutTimer) clearTimeout(timeoutTimer);\n\t\t\t\t\t\t\trl.close();\n\t\t\t\t\t\t\tsignal?.removeEventListener(\"abort\", onAbort);\n\t\t\t\t\t\t};\n\t\t\t\t\t\tconst stopChild = (dueToLimit = false) => {\n\t\t\t\t\t\t\tif (!child.killed) {\n\t\t\t\t\t\t\t\tkilledDueToLimit = dueToLimit;\n\t\t\t\t\t\t\t\tchild.kill();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t\tconst onAbort = () => {\n\t\t\t\t\t\t\taborted = true;\n\t\t\t\t\t\t\tstopChild();\n\t\t\t\t\t\t};\n\t\t\t\t\t\tsignal?.addEventListener(\"abort\", onAbort, { once: true });\n\t\t\t\t\t\tchild.stderr?.on(\"data\", (chunk) => {\n\t\t\t\t\t\t\tstderr += chunk.toString();\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tconst formatBlock = async (filePath: string, lineNumber: number): Promise<string[]> => {\n\t\t\t\t\t\t\tconst relativePath = formatPath(filePath);\n\t\t\t\t\t\t\tconst lines = await getFileLines(filePath);\n\t\t\t\t\t\t\tif (!lines.length) return [`${relativePath}:${lineNumber}: (unable to read file)`];\n\t\t\t\t\t\t\tconst block: string[] = [];\n\t\t\t\t\t\t\tconst start = contextBeforeValue > 0 ? Math.max(1, lineNumber - contextBeforeValue) : lineNumber;\n\t\t\t\t\t\t\tconst end =\n\t\t\t\t\t\t\t\tcontextAfterValue > 0 ? Math.min(lines.length, lineNumber + contextAfterValue) : lineNumber;\n\t\t\t\t\t\t\tfor (let current = start; current <= end; current++) {\n\t\t\t\t\t\t\t\tconst lineText = lines[current - 1] ?? \"\";\n\t\t\t\t\t\t\t\tconst sanitized = lineText.replace(/\\r/g, \"\");\n\t\t\t\t\t\t\t\tconst isMatchLine = current === lineNumber;\n\t\t\t\t\t\t\t\t// Truncate long lines so grep output stays compact.\n\t\t\t\t\t\t\t\tconst { text: truncatedText, wasTruncated } = truncateLine(sanitized);\n\t\t\t\t\t\t\t\tif (wasTruncated) linesTruncated = true;\n\t\t\t\t\t\t\t\tif (isMatchLine) block.push(`${relativePath}:${current}: ${truncatedText}`);\n\t\t\t\t\t\t\t\telse block.push(`${relativePath}-${current}- ${truncatedText}`);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn block;\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\t// Collect matches during streaming, then format them after rg exits.\n\t\t\t\t\t\tconst matches: Array<{ filePath: string; lineNumber: number; lineText?: string }> = [];\n\t\t\t\t\t\tlet seenMatches = 0,\n\t\t\t\t\t\t\tseenFiles = 0;\n\t\t\t\t\t\tconst seenFilePaths = new Set<string>(),\n\t\t\t\t\t\t\tfilesWithMatches = new Set<string>();\n\t\t\t\t\t\trl.on(\"line\", (line) => {\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t!line.trim() ||\n\t\t\t\t\t\t\t\t(mode !== \"count\" && mode !== \"filesWithMatches\" && matchCount >= effectiveLimit)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\tlet event: unknown;\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tevent = JSON.parse(line) as unknown;\n\t\t\t\t\t\t\t} catch {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (isRipgrepMatchEvent(event)) {\n\t\t\t\t\t\t\t\tconst filePath = event.data?.path?.text;\n\t\t\t\t\t\t\t\tif (mode === \"filesWithMatches\") {\n\t\t\t\t\t\t\t\t\tif (typeof filePath === \"string\") {\n\t\t\t\t\t\t\t\t\t\tconst formatted = formatPath(filePath);\n\t\t\t\t\t\t\t\t\t\tif (!seenFilePaths.has(formatted)) {\n\t\t\t\t\t\t\t\t\t\t\tseenFilePaths.add(formatted);\n\t\t\t\t\t\t\t\t\t\t\tseenFiles++;\n\t\t\t\t\t\t\t\t\t\t\tif (offset === undefined || seenFiles > offset) filesWithMatches.add(formatted);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tmatchCount = filesWithMatches.size;\n\t\t\t\t\t\t\t\t\tif (matchCount >= effectiveLimit) {\n\t\t\t\t\t\t\t\t\t\tmatchLimitReached = true;\n\t\t\t\t\t\t\t\t\t\tstopChild(true);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tseenMatches++;\n\t\t\t\t\t\t\t\tif (mode !== \"count\" && offset !== undefined && seenMatches <= offset) return;\n\t\t\t\t\t\t\t\tmatchCount++;\n\t\t\t\t\t\t\t\tconst lineNumber = event.data?.line_number;\n\t\t\t\t\t\t\t\tconst lineText = event.data?.lines?.text;\n\t\t\t\t\t\t\t\tif (typeof filePath === \"string\") filesWithMatches.add(formatPath(filePath));\n\t\t\t\t\t\t\t\tif (typeof filePath === \"string\" && typeof lineNumber === \"number\")\n\t\t\t\t\t\t\t\t\tmatches.push({\n\t\t\t\t\t\t\t\t\t\tfilePath,\n\t\t\t\t\t\t\t\t\t\tlineNumber,\n\t\t\t\t\t\t\t\t\t\tlineText: typeof lineText === \"string\" ? lineText : undefined,\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tif (mode !== \"count\" && matchCount >= effectiveLimit) {\n\t\t\t\t\t\t\t\t\tmatchLimitReached = true;\n\t\t\t\t\t\t\t\t\tstopChild(true);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tchild.on(\"error\", (error) => {\n\t\t\t\t\t\t\tcleanup();\n\t\t\t\t\t\t\tsettle(() => reject(new Error(`Failed to run ripgrep: ${error.message}`)));\n\t\t\t\t\t\t});\n\t\t\t\t\t\tchild.on(\"close\", async (code) => {\n\t\t\t\t\t\t\tcleanup();\n\t\t\t\t\t\t\tif (aborted) {\n\t\t\t\t\t\t\t\tsettle(() => reject(new Error(\"Operation aborted\")));\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (!killedDueToLimit && code !== 0 && code !== 1) {\n\t\t\t\t\t\t\t\tconst errorMsg = stderr.trim() || `ripgrep exited with code ${code}`;\n\t\t\t\t\t\t\t\tsettle(() => reject(new Error(errorMsg)));\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (matchCount === 0) {\n\t\t\t\t\t\t\t\tsettle(() =>\n\t\t\t\t\t\t\t\t\tresolve({\n\t\t\t\t\t\t\t\t\t\tcontent: [{ type: \"text\", text: mode === \"count\" ? \"0\" : \"No matches found\" }],\n\t\t\t\t\t\t\t\t\t\tdetails: undefined,\n\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (mode === \"count\" || mode === \"filesWithMatches\") {\n\t\t\t\t\t\t\t\tsettle(() =>\n\t\t\t\t\t\t\t\t\tresolve({\n\t\t\t\t\t\t\t\t\t\tcontent: [\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\ttype: \"text\",\n\t\t\t\t\t\t\t\t\t\t\t\ttext:\n\t\t\t\t\t\t\t\t\t\t\t\t\tmode === \"count\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t? String(Math.max(0, matchCount - (offset ?? 0)))\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: [...filesWithMatches].join(\"\\n\") || \"No matches found\",\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\tdetails: matchLimitReached ? { matchLimitReached: effectiveLimit } : undefined,\n\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// Format matches after streaming finishes so custom readFile() backends can be async.\n\t\t\t\t\t\t\tfor (const match of matches) {\n\t\t\t\t\t\t\t\tif (contextBeforeValue === 0 && contextAfterValue === 0 && match.lineText !== undefined) {\n\t\t\t\t\t\t\t\t\tconst relativePath = formatPath(match.filePath);\n\t\t\t\t\t\t\t\t\tconst sanitized = match.lineText\n\t\t\t\t\t\t\t\t\t\t.replace(/\\r\\n/g, \"\\n\")\n\t\t\t\t\t\t\t\t\t\t.replace(/\\r/g, \"\")\n\t\t\t\t\t\t\t\t\t\t.replace(/\\n$/, \"\");\n\t\t\t\t\t\t\t\t\tconst { text: truncatedText, wasTruncated } = truncateLine(sanitized);\n\t\t\t\t\t\t\t\t\tif (wasTruncated) linesTruncated = true;\n\t\t\t\t\t\t\t\t\toutputLines.push(`${relativePath}:${match.lineNumber}: ${truncatedText}`);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tconst block = await formatBlock(match.filePath, match.lineNumber);\n\t\t\t\t\t\t\t\t\toutputLines.push(...block);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tconst rawOutput = outputLines.join(\"\\n\");\n\t\t\t\t\t\t\t// Apply byte truncation. There is no line limit here because the match limit already capped rows.\n\t\t\t\t\t\t\tconst truncation = truncateHead(rawOutput, { maxLines: Number.MAX_SAFE_INTEGER });\n\t\t\t\t\t\t\tlet output = truncation.content;\n\t\t\t\t\t\t\tconst details: GrepToolDetails = {};\n\t\t\t\t\t\t\t// Build actionable notices for truncation and match limits.\n\t\t\t\t\t\t\tconst notices: string[] = [];\n\t\t\t\t\t\t\tif (matchLimitReached) {\n\t\t\t\t\t\t\t\tnotices.push(\n\t\t\t\t\t\t\t\t\t`${effectiveLimit} matches limit reached. Use limit=${effectiveLimit * 2} for more, or refine pattern`,\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tdetails.matchLimitReached = effectiveLimit;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (truncation.truncated) {\n\t\t\t\t\t\t\t\tnotices.push(`${formatSize(DEFAULT_MAX_BYTES)} limit reached`);\n\t\t\t\t\t\t\t\tdetails.truncation = truncation;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (linesTruncated) {\n\t\t\t\t\t\t\t\tnotices.push(\n\t\t\t\t\t\t\t\t\t`Some lines truncated to ${GREP_MAX_LINE_LENGTH} chars. Use read tool to see full lines`,\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tdetails.linesTruncated = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (notices.length > 0) output += `\\n\\n[${notices.join(\". \")}]`;\n\t\t\t\t\t\t\tsettle(() =>\n\t\t\t\t\t\t\t\tresolve({\n\t\t\t\t\t\t\t\t\tcontent: [{ type: \"text\", text: output }],\n\t\t\t\t\t\t\t\t\tdetails: Object.keys(details).length > 0 ? details : undefined,\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t});\n\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\tsettle(() => reject(err as Error));\n\t\t\t\t\t}\n\t\t\t\t})();\n\t\t\t});\n\t\t},\n\t\trenderCall(args, theme, context) {\n\t\t\tconst text = (context.lastComponent as Text | undefined) ?? new Text(\"\", 0, 0);\n\t\t\ttext.setText(formatGrepCall(args, theme));\n\t\t\treturn text;\n\t\t},\n\t\trenderResult(result, options, theme, context) {\n\t\t\tconst text = (context.lastComponent as Text | undefined) ?? new Text(\"\", 0, 0);\n\t\t\ttext.setText(formatGrepResult(result, options, theme, context.showImages));\n\t\t\treturn text;\n\t\t},\n\t};\n}\n\nexport function createGrepTool(cwd: string, options?: GrepToolOptions): AgentTool<typeof grepSchema> {\n\treturn wrapToolDefinition(createGrepToolDefinition(cwd, options));\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"apply.d.ts","sourceRoot":"","sources":["../../../../src/core/tools/hashline-engine/apply.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAU,WAAW,EAAU,IAAI,EAAE,MAAM,YAAY,CAAC;AAsHpE,iFAAiF;AACjF,eAAO,MAAM,oBAAoB,QAAyB,CAAC;AAklB3D;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,IAAI,EAAE,GAAG,WAAW,CAqG5E"}
1
+ {"version":3,"file":"apply.d.ts","sourceRoot":"","sources":["../../../../src/core/tools/hashline-engine/apply.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAU,WAAW,EAAU,IAAI,EAAE,MAAM,YAAY,CAAC;AAsHpE,iFAAiF;AACjF,eAAO,MAAM,oBAAoB,QAAyB,CAAC;AAklB3D;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,IAAI,EAAE,GAAG,WAAW,CAqG5E"}
@@ -9,7 +9,7 @@
9
9
  * which absorbs common model mistakes where a payload restates unchanged range
10
10
  * boundaries or duplicates/drops structural closers.
11
11
  */
12
- import { afterInsertLandingShiftWarning, blockInsertLandingShiftWarning, UNRESOLVED_BLOCK_INTERNAL } from "./messages.js";
12
+ import { afterInsertLandingShiftWarning, blockInsertLandingShiftWarning, UNRESOLVED_BLOCK_INTERNAL, } from "./messages.js";
13
13
  import { cloneCursor } from "./tokenizer.js";
14
14
  function isReplacementInsert(edit) {
15
15
  return edit.kind === "insert" && edit.mode === "replacement";
@@ -34,7 +34,7 @@ function dropTrailingPhantomDeletes(edits, fileLines) {
34
34
  const phantomLine = trailingPhantomLine(fileLines);
35
35
  if (phantomLine === 0)
36
36
  return edits;
37
- return edits.filter(edit => edit.kind !== "delete" || edit.anchor.line !== phantomLine);
37
+ return edits.filter((edit) => edit.kind !== "delete" || edit.anchor.line !== phantomLine);
38
38
  }
39
39
  /**
40
40
  * Verify every anchored edit points at an existing line. File-version binding is
@@ -404,8 +404,8 @@ function repairReplacementBoundaries(edits, fileLines) {
404
404
  i++;
405
405
  continue;
406
406
  }
407
- const inserts = group.insertIndices.map(idx => edits[idx]);
408
- const deletes = group.deleteIndices.map(idx => edits[idx]);
407
+ const inserts = group.insertIndices.map((idx) => edits[idx]);
408
+ const deletes = group.deleteIndices.map((idx) => edits[idx]);
409
409
  i = group.deleteIndices[group.deleteIndices.length - 1] + 1;
410
410
  const boundaryEcho = findBoundaryEcho(group, fileLines);
411
411
  if (boundaryEcho) {
@@ -497,7 +497,7 @@ function bodyTargetIndent(rows) {
497
497
  if (nonBlank.length === 0)
498
498
  return undefined;
499
499
  // A body of pure closers re-balances delimiters; it claims no depth.
500
- if (nonBlank.every(row => STRUCTURAL_CLOSER_RE.test(row)))
500
+ if (nonBlank.every((row) => STRUCTURAL_CLOSER_RE.test(row)))
501
501
  return undefined;
502
502
  let target = leadingIndent(nonBlank[0] ?? "");
503
503
  for (const row of nonBlank) {
@@ -625,7 +625,7 @@ function repairAfterInsertLandings(edits, fileLines) {
625
625
  }
626
626
  };
627
627
  for (const group of groups.values()) {
628
- const target = bodyTargetIndent(group.members.map(idx => edits[idx].text));
628
+ const target = bodyTargetIndent(group.members.map((idx) => edits[idx].text));
629
629
  if (target === undefined)
630
630
  continue;
631
631
  const outward = resolveShiftedLanding(group, target, fileLines, targetedLines);
@@ -1 +1 @@
1
- {"version":3,"file":"apply.js","sourceRoot":"","sources":["../../../../src/core/tools/hashline-engine/apply.ts"],"names":[],"mappings":"AAAA,6FAA6F;AAC7F,iLAAiL;AACjL;;;;;;;;GAQG;AACH,OAAO,EAAE,8BAA8B,EAAE,8BAA8B,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAC1H,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAc7C,SAAS,mBAAmB,CAAC,IAAU;IACtC,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,CAAC;AAC9D,CAAC;AAED,SAAS,gBAAgB,CAAC,MAAc;IACvC,OAAO,MAAM,CAAC,IAAI,KAAK,eAAe,IAAI,MAAM,CAAC,IAAI,KAAK,cAAc,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACjG,CAAC;AAED,SAAS,cAAc,CAAC,IAAiB;IACxC,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACjD,OAAO,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,mBAAmB,CAAC,SAA4B;IACxD,4EAA4E;IAC5E,sEAAsE;IACtE,8EAA8E;IAC9E,6EAA6E;IAC7E,mDAAmD;IACnD,OAAO,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9F,CAAC;AAED,SAAS,0BAA0B,CAAC,KAAoB,EAAE,SAA4B;IACrF,MAAM,WAAW,GAAG,mBAAmB,CAAC,SAAS,CAAC,CAAC;IACnD,IAAI,WAAW,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACpC,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;AACzF,CAAC;AAED;;;GAGG;AACH,SAAS,kBAAkB,CAAC,KAA6B,EAAE,SAA4B;IACtF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QAC1B,KAAK,MAAM,MAAM,IAAI,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3C,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC,IAAI,MAAM,CAAC,IAAI,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC;gBACvD,MAAM,IAAI,KAAK,CAAC,QAAQ,MAAM,CAAC,IAAI,6BAA6B,SAAS,CAAC,MAAM,SAAS,CAAC,CAAC;YAC5F,CAAC;QACF,CAAC;IACF,CAAC;AACF,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAiB,EAAE,KAAa;IACzD,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC;IAClF,OAAO,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC;AAC7D,CAAC;AAED,SAAS,aAAa,CAAC,SAAmB,EAAE,WAAyB,EAAE,KAAe;IACrF,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAC/B,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,GAAe,EAAE,CAAC,QAAQ,CAAC,CAAC;IACtD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;QACnD,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC;QACjC,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC;QACrC,OAAO;IACR,CAAC;IACD,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC;IACjC,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,WAAW,CAAC,SAAmB,EAAE,WAAyB,EAAE,KAAe;IACnF,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IACzC,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,GAAe,EAAE,CAAC,QAAQ,CAAC,CAAC;IACtD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;QACnD,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC;QACjC,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC;QACrC,OAAO,CAAC,CAAC;IACV,CAAC;IACD,MAAM,kBAAkB,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IAC1F,MAAM,WAAW,GAAG,kBAAkB,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC;IACjF,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC;IAC3C,WAAW,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC;IAC/C,OAAO,WAAW,GAAG,CAAC,CAAC;AACxB,CAAC;AAED,SAAS,uBAAuB,CAAC,KAAoB;IACpD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAyB,CAAC;IAChD,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;QAC3B,MAAM,IAAI,GACT,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ;YAC3B,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI;YACxB,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,eAAe,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,cAAc;gBACxF,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI;gBAC/B,CAAC,CAAC,CAAC,CAAC;QACP,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,MAAM;YAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;;YAC1B,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAChC,CAAC;IACD,OAAO,MAAM,CAAC;AACf,CAAC;AAED,8EAA8E;AAC9E,8BAA8B;AAC9B,EAAE;AACF,+EAA+E;AAC/E,uEAAuE;AACvE,yEAAyE;AACzE,iFAAiF;AACjF,EAAE;AACF,8EAA8E;AAC9E,6EAA6E;AAC7E,iFAAiF;AACjF,4EAA4E;AAC5E,+EAA+E;AAC/E,oBAAoB;AAEpB,iFAAiF;AACjF,MAAM,CAAC,MAAM,oBAAoB,GAAG,sBAAsB,CAAC;AAQ3D;;;;;;;GAOG;AACH,SAAS,uBAAuB,CAAC,KAAwB;IACxD,MAAM,OAAO,GAAqB,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;IACrE,IAAI,cAAc,GAAG,KAAK,CAAC;IAC3B,IAAI,KAAK,GAAG,EAAE,CAAC;IACf,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACnB,IAAI,cAAc,EAAE,CAAC;gBACpB,IAAI,EAAE,KAAK,GAAG,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;oBACvC,cAAc,GAAG,KAAK,CAAC;oBACvB,CAAC,EAAE,CAAC;gBACL,CAAC;gBACD,SAAS;YACV,CAAC;YACD,IAAI,KAAK,EAAE,CAAC;gBACX,IAAI,EAAE,KAAK,IAAI;oBAAE,CAAC,EAAE,CAAC;qBAChB,IAAI,EAAE,KAAK,KAAK;oBAAE,KAAK,GAAG,EAAE,CAAC;gBAClC,SAAS;YACV,CAAC;YACD,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;gBAC5C,KAAK,GAAG,EAAE,CAAC;gBACX,SAAS;YACV,CAAC;YACD,IAAI,EAAE,KAAK,GAAG,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG;gBAAE,MAAM;YAC7C,IAAI,EAAE,KAAK,GAAG,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;gBACvC,cAAc,GAAG,IAAI,CAAC;gBACtB,CAAC,EAAE,CAAC;gBACJ,SAAS;YACV,CAAC;YACD,QAAQ,EAAE,EAAE,CAAC;gBACZ,KAAK,GAAG;oBACP,OAAO,CAAC,KAAK,EAAE,CAAC;oBAChB,MAAM;gBACP,KAAK,GAAG;oBACP,OAAO,CAAC,KAAK,EAAE,CAAC;oBAChB,MAAM;gBACP,KAAK,GAAG;oBACP,OAAO,CAAC,OAAO,EAAE,CAAC;oBAClB,MAAM;gBACP,KAAK,GAAG;oBACP,OAAO,CAAC,OAAO,EAAE,CAAC;oBAClB,MAAM;gBACP,KAAK,GAAG;oBACP,OAAO,CAAC,KAAK,EAAE,CAAC;oBAChB,MAAM;gBACP,KAAK,GAAG;oBACP,OAAO,CAAC,KAAK,EAAE,CAAC;oBAChB,MAAM;YACR,CAAC;QACF,CAAC;QACD,8EAA8E;QAC9E,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,GAAG;YAAE,KAAK,GAAG,EAAE,CAAC;IAChD,CAAC;IACD,OAAO,OAAO,CAAC;AAChB,CAAC;AAED,SAAS,YAAY,CAAC,CAAmB,EAAE,CAAmB;IAC7D,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;AAC/F,CAAC;AAED,SAAS,aAAa,CAAC,CAAmB;IACzC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;AAClE,CAAC;AAED,SAAS,YAAY,CAAC,CAAmB,EAAE,CAAmB;IAC7D,OAAO,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,CAAC;AAC9E,CAAC;AAED,SAAS,aAAa,CAAC,CAAmB;IACzC,OAAO,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC;AAC1D,CAAC;AAcD;;;;;GAKG;AACH,SAAS,oBAAoB,CAAC,KAA6B,EAAE,KAAa;IACzE,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;IAC3B,IAAI,KAAK,EAAE,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;QACvG,OAAO,SAAS,CAAC;IAClB,CAAC;IACD,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;IAC1B,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;IAC5C,MAAM,aAAa,GAAa,EAAE,CAAC;IACnC,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,CAAC,GAAG,KAAK,CAAC;IACd,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9B,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,IAAI,IAAI,CAAC,OAAO,KAAK,OAAO;YAAE,MAAM;QAC7F,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,eAAe,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU;YAAE,MAAM;QAC1F,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACtB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IACD,MAAM,aAAa,GAAa,EAAE,CAAC;IACnC,IAAI,YAAY,GAAG,UAAU,CAAC;IAC9B,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9B,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,OAAO,KAAK,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,YAAY;YAAE,MAAM;QACnG,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACtB,YAAY,EAAE,CAAC;IAChB,CAAC;IACD,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IACjD,OAAO;QACN,aAAa;QACb,aAAa;QACb,OAAO;QACP,SAAS,EAAE,UAAU;QACrB,OAAO,EAAE,UAAU,GAAG,aAAa,CAAC,MAAM,GAAG,CAAC;KAC9C,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,mBAAmB,CAAC,KAAuB,EAAE,SAA4B,EAAE,KAAuB;IAC1G,IAAI,aAAa,CAAC,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IACnC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;IACnC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC;IAClE,KAAK,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAChC,IAAI,OAAO,GAAG,IAAI,CAAC;QACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5B,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,SAAS,CAAC,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC;gBAChE,OAAO,GAAG,KAAK,CAAC;gBAChB,MAAM;YACP,CAAC;QACF,CAAC;QACD,IAAI,CAAC,OAAO;YAAE,SAAS;QACvB,IAAI,YAAY,CAAC,uBAAuB,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;YAAE,OAAO,CAAC,CAAC;IAC/F,CAAC;IACD,OAAO,CAAC,CAAC;AACV,CAAC;AAED;;;;GAIG;AACH,SAAS,mBAAmB,CAAC,KAAuB,EAAE,SAA4B,EAAE,KAAuB;IAC1G,IAAI,aAAa,CAAC,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IACnC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;IACrC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,GAAG,CAAC,CAAC,CAAC;IACrD,KAAK,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAChC,IAAI,OAAO,GAAG,IAAI,CAAC;QACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5B,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,SAAS,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACrD,OAAO,GAAG,KAAK,CAAC;gBAChB,MAAM;YACP,CAAC;QACF,CAAC;QACD,IAAI,CAAC,OAAO;YAAE,SAAS;QACvB,IAAI,YAAY,CAAC,uBAAuB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;YAAE,OAAO,CAAC,CAAC;IACjF,CAAC;IACD,OAAO,CAAC,CAAC;AACV,CAAC;AAED;;;;;GAKG;AACH,SAAS,wBAAwB,CAChC,KAAuB,EACvB,SAA4B,EAC5B,KAAuB;IAEvB,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IACpC,MAAM,IAAI,GAAG,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC;IACxC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;QAChC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;YAAE,MAAM;QAC1E,IAAI,YAAY,CAAC,uBAAuB,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC;YAAE,OAAO,CAAC,CAAC;IAChH,CAAC;IACD,OAAO,CAAC,CAAC;AACV,CAAC;AAOD,SAAS,gBAAgB,CAAC,IAAY;IACrC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAChC,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,EAAE;YAAE,OAAO,IAAI,CAAC;IACxG,CAAC;IACD,OAAO,KAAK,CAAC;AACd,CAAC;AAED,SAAS,kCAAkC,CAAC,KAAuB,EAAE,SAA4B;IAChG,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;IACrC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,GAAG,CAAC,CAAC,CAAC;IACpD,KAAK,IAAI,KAAK,GAAG,GAAG,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;QAC3C,IAAI,OAAO,GAAG,IAAI,CAAC;QACnB,IAAI,UAAU,GAAG,KAAK,CAAC;QACvB,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC;YAC/C,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;YAC7B,IAAI,IAAI,KAAK,SAAS,CAAC,SAAS,GAAG,CAAC,GAAG,KAAK,GAAG,MAAM,CAAC,EAAE,CAAC;gBACxD,OAAO,GAAG,KAAK,CAAC;gBAChB,MAAM;YACP,CAAC;YACD,UAAU,KAAK,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACvC,CAAC;QACD,IAAI,OAAO,IAAI,UAAU;YAAE,OAAO,KAAK,CAAC;IACzC,CAAC;IACD,OAAO,CAAC,CAAC;AACV,CAAC;AAED,SAAS,mCAAmC,CAAC,KAAuB,EAAE,SAA4B;IACjG,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;IACnC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC;IACjE,KAAK,IAAI,KAAK,GAAG,GAAG,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;QAC3C,IAAI,OAAO,GAAG,IAAI,CAAC;QACnB,IAAI,UAAU,GAAG,KAAK,CAAC;QACvB,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC;YAC/C,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC,CAAC;YACtD,IAAI,IAAI,KAAK,SAAS,CAAC,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC;gBAC1C,OAAO,GAAG,KAAK,CAAC;gBAChB,MAAM;YACP,CAAC;YACD,UAAU,KAAK,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACvC,CAAC;QACD,IAAI,OAAO,IAAI,UAAU;YAAE,OAAO,KAAK,CAAC;IACzC,CAAC;IACD,OAAO,CAAC,CAAC;AACV,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAuB,EAAE,SAA4B;IAC9E,MAAM,UAAU,GAAG,kCAAkC,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IACxE,IAAI,UAAU,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IACvC,MAAM,WAAW,GAAG,mCAAmC,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAC1E,IAAI,WAAW,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IACxC,wEAAwE;IACxE,0EAA0E;IAC1E,gEAAgE;IAChE,IAAI,UAAU,GAAG,WAAW,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IACvE,6EAA6E;IAC7E,+EAA+E;IAC/E,wEAAwE;IACxE,yEAAyE;IACzE,gEAAgE;IAChE,MAAM,cAAc,GAAG,uBAAuB,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;IACnF,MAAM,eAAe,GAAG,uBAAuB,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC;IACzG,MAAM,cAAc,GAAG,YAAY,CAAC,cAAc,EAAE,aAAa,CAAC,eAAe,CAAC,CAAC,CAAC;IACpF,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,CAAC;QACpC,MAAM,KAAK,GAAG,YAAY,CACzB,uBAAuB,CAAC,KAAK,CAAC,OAAO,CAAC,EACtC,uBAAuB,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAC5E,CAAC;QACF,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,KAAK,CAAC;YAAE,OAAO,SAAS,CAAC;IAC5D,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;AACvD,CAAC;AAED,SAAS,0BAA0B,CAAC,KAAuB,EAAE,IAAkB;IAC9E,OAAO,CACN,qDAAqD,KAAK,CAAC,SAAS,IAAI;QACxE,WAAW,IAAI,CAAC,OAAO,gBAAgB,IAAI,CAAC,QAAQ,+DAA+D;QACnH,iIAAiI,CACjI,CAAC;AACH,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAuB,EAAE,MAAc;IACtE,OAAO,CACN,yEAAyE,KAAK,CAAC,SAAS,KAAK,MAAM,IAAI;QACvG,oHAAoH,CACpH,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,2BAA2B,CACnC,KAA6B,EAC7B,SAA4B;IAK5B,MAAM,GAAG,GAAkB,EAAE,CAAC;IAC9B,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,oBAAoB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAC7C,IAAI,CAAC,KAAK,EAAE,CAAC;YACZ,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACnB,CAAC,EAAE,CAAC;YACJ,SAAS;QACV,CAAC;QACD,MAAM,OAAO,GAAG,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QAC3D,MAAM,OAAO,GAAG,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QAC3D,CAAC,GAAG,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QAE5D,MAAM,YAAY,GAAG,gBAAgB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QACxD,IAAI,YAAY,EAAE,CAAC;YAClB,QAAQ,CAAC,IAAI,CAAC,0BAA0B,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC;YAC/D,GAAG,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,GAAG,YAAY,CAAC,QAAQ,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC;YACrG,SAAS;QACV,CAAC;QAED,MAAM,KAAK,GAAG,YAAY,CACzB,uBAAuB,CAAC,KAAK,CAAC,OAAO,CAAC,EACtC,uBAAuB,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAC5E,CAAC;QACF,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1B,GAAG,CAAC,IAAI,CAAC,GAAG,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC;YACjC,SAAS;QACV,CAAC;QAED,MAAM,SAAS,GAAG,mBAAmB,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QAC/D,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;YACnB,QAAQ,CAAC,IAAI,CACZ,sBAAsB,CACrB,KAAK,EACL,WAAW,SAAS,sEAAsE,CAC1F,CACD,CAAC;YACF,GAAG,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC;YACtE,SAAS;QACV,CAAC;QACD,MAAM,SAAS,GAAG,mBAAmB,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QAC/D,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;YACnB,QAAQ,CAAC,IAAI,CACZ,sBAAsB,CACrB,KAAK,EACL,WAAW,SAAS,qEAAqE,CACzF,CACD,CAAC;YACF,GAAG,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC;YAClD,SAAS;QACV,CAAC;QACD,MAAM,cAAc,GAAG,wBAAwB,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QACzE,IAAI,cAAc,GAAG,CAAC,EAAE,CAAC;YACxB,QAAQ,CAAC,IAAI,CACZ,sBAAsB,CACrB,KAAK,EACL,QAAQ,cAAc,iEAAiE,CACvF,CACD,CAAC;YACF,GAAG,CAAC,IAAI,CAAC,GAAG,OAAO,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC;YAC3E,SAAS;QACV,CAAC;QACD,GAAG,CAAC,IAAI,CAAC,GAAG,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC;IAClC,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;AACjC,CAAC;AAED,8EAA8E;AAC9E,kCAAkC;AAClC,EAAE;AACF,4EAA4E;AAC5E,2EAA2E;AAC3E,oEAAoE;AACpE,EAAE;AACF,8EAA8E;AAC9E,6EAA6E;AAC7E,6EAA6E;AAC7E,wEAAwE;AACxE,6EAA6E;AAC7E,oEAAoE;AACpE,qBAAqB;AACrB,EAAE;AACF,8EAA8E;AAC9E,6EAA6E;AAC7E,uEAAuE;AACvE,4EAA4E;AAC5E,0EAA0E;AAC1E,0EAA0E;AAC1E,4EAA4E;AAC5E,0EAA0E;AAC1E,uCAAuC;AACvC,EAAE;AACF,0EAA0E;AAC1E,wEAAwE;AACxE,6EAA6E;AAC7E,6EAA6E;AAC7E,uEAAuE;AACvE,mDAAmD;AAEnD,sCAAsC;AACtC,SAAS,aAAa,CAAC,IAAY;IAClC,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,OAAO,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,EAAE;YAAE,MAAM;QACrC,GAAG,EAAE,CAAC;IACP,CAAC;IACD,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAC3B,CAAC;AAED,6EAA6E;AAC7E,SAAS,cAAc,CAAC,MAAc,EAAE,SAAiB;IACxD,OAAO,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,IAAI,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AACzE,CAAC;AAWD;;;;;GAKG;AACH,SAAS,gBAAgB,CAAC,IAAuB;IAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAC/C,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAC5C,qEAAqE;IACrE,IAAI,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IAC5E,IAAI,MAAM,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAC9C,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC;YAAE,SAAS;QACxC,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC;YAAE,MAAM,GAAG,MAAM,CAAC;;YAC1C,OAAO,SAAS,CAAC;IACvB,CAAC;IACD,OAAO,MAAM,CAAC;AACf,CAAC;AAED;;;;;GAKG;AACH,SAAS,qBAAqB,CAC7B,KAAuB,EACvB,MAAc,EACd,SAA4B,EAC5B,aAAkC;IAElC,MAAM,UAAU,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC/C,IAAI,UAAU,KAAK,SAAS,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC;QAAE,OAAO,SAAS,CAAC;IAChF,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;QAAE,OAAO,SAAS,CAAC;IAEzE,IAAI,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC;IAC3B,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,KAAK,IAAI,IAAI,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,IAAI,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC;QACpE,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QACvC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;YAAE,SAAS,CAAC,uCAAuC;QAC9E,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,MAAM,CAAC,2BAA2B;QACxE,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC;YAAE,MAAM,CAAC,uDAAuD;QAC9F,IAAI,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,OAAO,SAAS,CAAC,CAAC,gCAAgC;QAC/E,OAAO,GAAG,IAAI,CAAC;QACf,OAAO,EAAE,CAAC;QACV,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM;YAAE,MAAM,CAAC,qCAAqC;IAClF,CAAC;IACD,OAAO,OAAO,KAAK,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AAC1E,CAAC;AAED;;;;;;GAMG;AACH,SAAS,oBAAoB,CAC5B,KAAuB,EACvB,MAAc,EACd,UAAkB,EAClB,SAA4B,EAC5B,aAAkC;IAElC,MAAM,UAAU,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC/C,IAAI,UAAU,KAAK,SAAS,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC;QAAE,OAAO,SAAS,CAAC;IAChF,wEAAwE;IACxE,yEAAyE;IACzE,8CAA8C;IAC9C,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,UAAU,CAAC;QAAE,OAAO,SAAS,CAAC;IAC7D,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IAEzE,IAAI,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC;IAC3B,KAAK,IAAI,IAAI,GAAG,KAAK,CAAC,MAAM,EAAE,IAAI,GAAG,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC;QACzD,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QACvC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7B,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,kDAAkD;YACtE,SAAS;QACV,CAAC;QACD,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,MAAM,CAAC,wCAAwC;QACrF,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC;YAAE,MAAM,CAAC,6CAA6C;QACzF,qEAAqE;QACrE,yDAAyD;QACzD,IAAI,IAAI,KAAK,KAAK,CAAC,MAAM,IAAI,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,OAAO,SAAS,CAAC;QACvE,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC;IACpB,CAAC;IACD,OAAO,OAAO,KAAK,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC;AACvD,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,yBAAyB,CACjC,KAA6B,EAC7B,SAA4B;IAE5B,wEAAwE;IACxE,oEAAoE;IACpE,MAAM,MAAM,GAAG,IAAI,GAAG,EAA4B,CAAC;IACnD,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;QAC3B,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa;YAAE,OAAO;QAClE,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,cAAc;YAAE,OAAO;QAChD,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACzD,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,KAAK,KAAK,SAAS;YACtB,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;;YAC9F,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;IACH,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IAEtD,qEAAqE;IACrE,MAAM,aAAa,GAAG,IAAI,GAAG,EAAU,CAAC;IACxC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QAC1B,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ;YAAE,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;aAC3D,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,eAAe,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,cAAc;YACnF,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC;IAED,IAAI,GAA8B,CAAC;IACnC,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,QAAQ,GAAG,CAAC,KAAuB,EAAE,IAAY,EAAQ,EAAE;QAChE,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;QACnB,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YACjC,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAe,CAAC;YACpC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;QAC5E,CAAC;IACF,CAAC,CAAC;IACF,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;QACrC,MAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAE,KAAK,CAAC,GAAG,CAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3F,IAAI,MAAM,KAAK,SAAS;YAAE,SAAS;QACnC,MAAM,OAAO,GAAG,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;QAC/E,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC3B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;YAC9B,QAAQ,CAAC,IAAI,CAAC,8BAA8B,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;YAC3F,SAAS;QACV,CAAC;QACD,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS;YAAE,SAAS;QAC7C,MAAM,MAAM,GAAG,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,UAAU,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;QAC/F,IAAI,MAAM,KAAK,SAAS;YAAE,SAAS;QACnC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACxB,QAAQ,CAAC,IAAI,CAAC,8BAA8B,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACvF,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,GAAG,IAAI,KAAK,EAAE,QAAQ,EAAE,CAAC;AAC1C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,IAAY,EAAE,KAAsB;IAC9D,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,SAAS,EAAE,CAAC;IAErE,uEAAuE;IACvE,0EAA0E;IAC1E,uDAAuD;IACvD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QAC1B,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IACvE,CAAC;IACD,MAAM,YAAY,GAAG,KAA+B,CAAC;IAErD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,WAAW,GAAiB,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC;IAElE,IAAI,gBAAoC,CAAC;IACzC,MAAM,iBAAiB,GAAG,CAAC,IAAY,EAAE,EAAE;QAC1C,IAAI,gBAAgB,KAAK,SAAS,IAAI,IAAI,GAAG,gBAAgB;YAAE,gBAAgB,GAAG,IAAI,CAAC;IACxF,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,0BAA0B,CAC7C,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAChE,SAAS,CACT,CAAC;IACF,kBAAkB,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IAC3C,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,gBAAgB,EAAE,GAAG,2BAA2B,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IAC5G,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,GAAG,yBAAyB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IACpG,MAAM,QAAQ,GAAG,CAAC,GAAG,gBAAgB,EAAE,GAAG,eAAe,CAAC,CAAC;IAE3D,8DAA8D;IAC9D,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,WAAW,GAAkB,EAAE,CAAC;IACtC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;QAC5B,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YAC1D,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;aAAM,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YACjE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;aAAM,CAAC;YACP,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;QACjC,CAAC;IACF,CAAC,CAAC,CAAC;IAEH,kEAAkE;IAClE,MAAM,MAAM,GAAG,uBAAuB,CAAC,WAAW,CAAC,CAAC;IACpD,KAAK,MAAM,IAAI,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QAC7D,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,CAAC,MAAM;YAAE,SAAS;QACtB,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QAErC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,CAAC;QACrB,MAAM,WAAW,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QACzC,MAAM,iBAAiB,GAAa,EAAE,CAAC;QACvC,MAAM,gBAAgB,GAAa,EAAE,CAAC;QACtC,MAAM,gBAAgB,GAAa,EAAE,CAAC;QACtC,IAAI,UAAU,GAAG,KAAK,CAAC;QAEvB,KAAK,MAAM,EAAE,IAAI,EAAE,IAAI,MAAM,EAAE,CAAC;YAC/B,IAAI,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC/B,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClC,CAAC;iBAAM,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;gBAC1E,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClC,CAAC;iBAAM,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACnC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnC,CAAC;iBAAM,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACnC,UAAU,GAAG,IAAI,CAAC;YACnB,CAAC;QACF,CAAC;QACD,IACC,iBAAiB,CAAC,MAAM,KAAK,CAAC;YAC9B,gBAAgB,CAAC,MAAM,KAAK,CAAC;YAC7B,gBAAgB,CAAC,MAAM,KAAK,CAAC;YAC7B,CAAC,UAAU;YAEX,SAAS;QAEV,MAAM,WAAW,GAAG,UAAU;YAC7B,CAAC,CAAC,CAAC,GAAG,iBAAiB,EAAE,GAAG,gBAAgB,EAAE,GAAG,gBAAgB,CAAC;YAClE,CAAC,CAAC,CAAC,GAAG,iBAAiB,EAAE,GAAG,gBAAgB,EAAE,WAAW,EAAE,GAAG,gBAAgB,CAAC,CAAC;QACjF,MAAM,OAAO,GAAiB,EAAE,CAAC;QACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,iBAAiB,CAAC,MAAM,EAAE,CAAC,EAAE;YAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE;YAAE,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QACtG,IAAI,CAAC,UAAU;YAAE,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,CAAC;QAC9D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE;YAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEzE,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,WAAW,CAAC,CAAC;QACzC,WAAW,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC;QACvC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,aAAa,CAAC,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;QAChD,iBAAiB,CAAC,CAAC,CAAC,CAAC;IACtB,CAAC;IACD,MAAM,cAAc,GAAG,WAAW,CAAC,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;IACrE,IAAI,cAAc,KAAK,SAAS;QAAE,iBAAiB,CAAC,cAAc,CAAC,CAAC;IAEpE,OAAO;QACN,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;QAC1B,gBAAgB;QAChB,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC5C,CAAC;AACH,CAAC","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 * Apply a parsed list of {@link Edit}s to a text body and return the\n * post-edit lines plus any diagnostic warnings. Pure function: no FS, no\n * mutation of the input.\n *\n * Replacement groups are first normalized by {@link repairReplacementBoundaries},\n * which absorbs common model mistakes where a payload restates unchanged range\n * boundaries or duplicates/drops structural closers.\n */\nimport { afterInsertLandingShiftWarning, blockInsertLandingShiftWarning, UNRESOLVED_BLOCK_INTERNAL } from \"./messages.js\";\nimport { cloneCursor } from \"./tokenizer.js\";\nimport type { Anchor, ApplyResult, Cursor, Edit } from \"./types.js\";\n\ntype LineOrigin = \"original\" | \"insert\" | \"replacement\";\n\ntype InsertEdit = Extract<Edit, { kind: \"insert\" }>;\ntype DeleteEdit = Extract<Edit, { kind: \"delete\" }>;\ntype AppliedEdit = InsertEdit | DeleteEdit;\n\ninterface IndexedEdit {\n\tedit: AppliedEdit;\n\tidx: number;\n}\n\nfunction isReplacementInsert(edit: Edit): edit is InsertEdit & { mode: \"replacement\" } {\n\treturn edit.kind === \"insert\" && edit.mode === \"replacement\";\n}\n\nfunction getCursorAnchors(cursor: Cursor): Anchor[] {\n\treturn cursor.kind === \"before_anchor\" || cursor.kind === \"after_anchor\" ? [cursor.anchor] : [];\n}\n\nfunction getEditAnchors(edit: AppliedEdit): Anchor[] {\n\tif (edit.kind === \"delete\") return [edit.anchor];\n\treturn getCursorAnchors(edit.cursor);\n}\n\nfunction trailingPhantomLine(fileLines: readonly string[]): number {\n\t// `split(\"\\n\")` on a newline-terminated file yields a trailing \"\" sentinel.\n\t// It is addressable for inserts (append-past-end), but it is not real\n\t// content. Deleting it only strips the file's final newline, so ignore delete\n\t// edits that land there; inclusive ranges ending at EOF then do the intended\n\t// thing and delete through the last concrete line.\n\treturn fileLines.length > 1 && fileLines[fileLines.length - 1] === \"\" ? fileLines.length : 0;\n}\n\nfunction dropTrailingPhantomDeletes(edits: AppliedEdit[], fileLines: readonly string[]): AppliedEdit[] {\n\tconst phantomLine = trailingPhantomLine(fileLines);\n\tif (phantomLine === 0) return edits;\n\treturn edits.filter(edit => edit.kind !== \"delete\" || edit.anchor.line !== phantomLine);\n}\n\n/**\n * Verify every anchored edit points at an existing line. File-version binding is\n * checked once per section via the header hash before this function runs.\n */\nfunction validateLineBounds(edits: readonly AppliedEdit[], fileLines: readonly string[]): void {\n\tfor (const edit of edits) {\n\t\tfor (const anchor of getEditAnchors(edit)) {\n\t\t\tif (anchor.line < 1 || anchor.line > fileLines.length) {\n\t\t\t\tthrow new Error(`Line ${anchor.line} does not exist (file has ${fileLines.length} lines)`);\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction cloneAppliedEdit(edit: AppliedEdit, index: number): AppliedEdit {\n\tif (edit.kind === \"delete\") return { ...edit, anchor: { ...edit.anchor }, index };\n\treturn { ...edit, cursor: cloneCursor(edit.cursor), index };\n}\n\nfunction insertAtStart(fileLines: string[], lineOrigins: LineOrigin[], lines: string[]): void {\n\tif (lines.length === 0) return;\n\tconst origins = lines.map((): LineOrigin => \"insert\");\n\tif (fileLines.length === 1 && fileLines[0] === \"\") {\n\t\tfileLines.splice(0, 1, ...lines);\n\t\tlineOrigins.splice(0, 1, ...origins);\n\t\treturn;\n\t}\n\tfileLines.splice(0, 0, ...lines);\n\tlineOrigins.splice(0, 0, ...origins);\n}\n\nfunction insertAtEnd(fileLines: string[], lineOrigins: LineOrigin[], lines: string[]): number | undefined {\n\tif (lines.length === 0) return undefined;\n\tconst origins = lines.map((): LineOrigin => \"insert\");\n\tif (fileLines.length === 1 && fileLines[0] === \"\") {\n\t\tfileLines.splice(0, 1, ...lines);\n\t\tlineOrigins.splice(0, 1, ...origins);\n\t\treturn 1;\n\t}\n\tconst hasTrailingNewline = fileLines.length > 0 && fileLines[fileLines.length - 1] === \"\";\n\tconst insertIndex = hasTrailingNewline ? fileLines.length - 1 : fileLines.length;\n\tfileLines.splice(insertIndex, 0, ...lines);\n\tlineOrigins.splice(insertIndex, 0, ...origins);\n\treturn insertIndex + 1;\n}\n\nfunction bucketAnchorEditsByLine(edits: IndexedEdit[]): Map<number, IndexedEdit[]> {\n\tconst byLine = new Map<number, IndexedEdit[]>();\n\tfor (const entry of edits) {\n\t\tconst line =\n\t\t\tentry.edit.kind === \"delete\"\n\t\t\t\t? entry.edit.anchor.line\n\t\t\t\t: entry.edit.cursor.kind === \"before_anchor\" || entry.edit.cursor.kind === \"after_anchor\"\n\t\t\t\t\t? entry.edit.cursor.anchor.line\n\t\t\t\t\t: 0;\n\t\tconst bucket = byLine.get(line);\n\t\tif (bucket) bucket.push(entry);\n\t\telse byLine.set(line, [entry]);\n\t}\n\treturn byLine;\n}\n\n// ═══════════════════════════════════════════════════════════════════════════\n// Replacement-boundary repair\n//\n// Models routinely miscount a replacement range's edges. Sometimes the payload\n// re-states unchanged lines that still live on both sides of the range\n// (duplicating a function header and final statement); sometimes it only\n// re-states or omits a structural closer, which leaves delimiter balance broken.\n//\n// A balance-neutral boundary-echo repair fires only when both the leading and\n// trailing payload edges are exact copies of the surviving lines outside the\n// range. One-sided content echoes are left alone unless delimiter-balance repair\n// proves they are duplicated structural boundaries. This preserves intended\n// duplicate statements while absorbing the common \"body includes the unchanged\n// wrapper\" mistake.\n\n/** A line that is nothing but closing delimiters: `}`, `)`, `];`, `})`, `},`. */\nexport const STRUCTURAL_CLOSER_RE = /^\\s*[)\\]}]+[;,]?\\s*$/;\n\ninterface DelimiterBalance {\n\tparen: number;\n\tbracket: number;\n\tbrace: number;\n}\n\n/**\n * Net `()` / `[]` / `{}` delta across `lines`, skipping delimiters inside line\n * comments (`//`), block comments, and string/template literals. Block-comment\n * and backtick-template state carry across lines; `\"` / `'` reset at EOL since\n * they cannot span lines. Deliberately language-light: constructs it cannot\n * classify (e.g. regex literals) are counted naively, which can only suppress a\n * repair (the safe direction), never force one.\n */\nfunction computeDelimiterBalance(lines: readonly string[]): DelimiterBalance {\n\tconst balance: DelimiterBalance = { paren: 0, bracket: 0, brace: 0 };\n\tlet inBlockComment = false;\n\tlet quote = \"\";\n\tfor (const line of lines) {\n\t\tfor (let i = 0; i < line.length; i++) {\n\t\t\tconst ch = line[i];\n\t\t\tif (inBlockComment) {\n\t\t\t\tif (ch === \"*\" && line[i + 1] === \"/\") {\n\t\t\t\t\tinBlockComment = false;\n\t\t\t\t\ti++;\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (quote) {\n\t\t\t\tif (ch === \"\\\\\") i++;\n\t\t\t\telse if (ch === quote) quote = \"\";\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (ch === '\"' || ch === \"'\" || ch === \"`\") {\n\t\t\t\tquote = ch;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (ch === \"/\" && line[i + 1] === \"/\") break;\n\t\t\tif (ch === \"/\" && line[i + 1] === \"*\") {\n\t\t\t\tinBlockComment = true;\n\t\t\t\ti++;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tswitch (ch) {\n\t\t\t\tcase \"(\":\n\t\t\t\t\tbalance.paren++;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \")\":\n\t\t\t\t\tbalance.paren--;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"[\":\n\t\t\t\t\tbalance.bracket++;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"]\":\n\t\t\t\t\tbalance.bracket--;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"{\":\n\t\t\t\t\tbalance.brace++;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"}\":\n\t\t\t\t\tbalance.brace--;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\t// `\"` / `'` cannot span lines; only backtick templates and block comments do.\n\t\tif (quote === '\"' || quote === \"'\") quote = \"\";\n\t}\n\treturn balance;\n}\n\nfunction balanceDelta(a: DelimiterBalance, b: DelimiterBalance): DelimiterBalance {\n\treturn { paren: a.paren - b.paren, bracket: a.bracket - b.bracket, brace: a.brace - b.brace };\n}\n\nfunction balanceNegate(a: DelimiterBalance): DelimiterBalance {\n\treturn { paren: -a.paren, bracket: -a.bracket, brace: -a.brace };\n}\n\nfunction balanceEqual(a: DelimiterBalance, b: DelimiterBalance): boolean {\n\treturn a.paren === b.paren && a.bracket === b.bracket && a.brace === b.brace;\n}\n\nfunction balanceIsZero(a: DelimiterBalance): boolean {\n\treturn a.paren === 0 && a.bracket === 0 && a.brace === 0;\n}\n\ninterface ReplacementGroup {\n\t/** Positions in the edit array of the payload inserts, in payload order. */\n\tinsertIndices: number[];\n\t/** Positions in the edit array of the range deletes, ascending by line. */\n\tdeleteIndices: number[];\n\tpayload: string[];\n\t/** First deleted line (1-indexed). */\n\tstartLine: number;\n\t/** Last deleted line (1-indexed). */\n\tendLine: number;\n}\n\n/**\n * Detect a replacement group starting at `start`: a run of `before_anchor`\n * replacement inserts sharing one source op line, immediately followed by the\n * contiguous range deletes for that same op. Mirrors how the parser lowers an\n * `replace N..M:` hunk with a body.\n */\nfunction findReplacementGroup(edits: readonly AppliedEdit[], start: number): ReplacementGroup | undefined {\n\tconst first = edits[start];\n\tif (first?.kind !== \"insert\" || first.mode !== \"replacement\" || first.cursor.kind !== \"before_anchor\") {\n\t\treturn undefined;\n\t}\n\tconst { lineNum } = first;\n\tconst anchorLine = first.cursor.anchor.line;\n\tconst insertIndices: number[] = [];\n\tconst payload: string[] = [];\n\tlet i = start;\n\tfor (; i < edits.length; i++) {\n\t\tconst edit = edits[i];\n\t\tif (edit.kind !== \"insert\" || edit.mode !== \"replacement\" || edit.lineNum !== lineNum) break;\n\t\tif (edit.cursor.kind !== \"before_anchor\" || edit.cursor.anchor.line !== anchorLine) break;\n\t\tinsertIndices.push(i);\n\t\tpayload.push(edit.text);\n\t}\n\tconst deleteIndices: number[] = [];\n\tlet expectedLine = anchorLine;\n\tfor (; i < edits.length; i++) {\n\t\tconst edit = edits[i];\n\t\tif (edit.kind !== \"delete\" || edit.lineNum !== lineNum || edit.anchor.line !== expectedLine) break;\n\t\tdeleteIndices.push(i);\n\t\texpectedLine++;\n\t}\n\tif (deleteIndices.length === 0) return undefined;\n\treturn {\n\t\tinsertIndices,\n\t\tdeleteIndices,\n\t\tpayload,\n\t\tstartLine: anchorLine,\n\t\tendLine: anchorLine + deleteIndices.length - 1,\n\t};\n}\n\n/**\n * Largest `k` such that the payload's last `k` lines exactly equal the `k`\n * surviving file lines just below the range AND dropping them zeroes `delta`.\n * Requires a non-zero `delta`: a zero-balance candidate can never account for\n * the imbalance, so intentional duplicates of ordinary statements stay intact,\n * while duplicated structural lines (closers like `});`, openers like `foo(`)\n * are dropped when they exactly explain the imbalance.\n */\nfunction findDuplicateSuffix(group: ReplacementGroup, fileLines: readonly string[], delta: DelimiterBalance): number {\n\tif (balanceIsZero(delta)) return 0;\n\tconst { payload, endLine } = group;\n\tconst maxK = Math.min(payload.length, fileLines.length - endLine);\n\tfor (let k = maxK; k >= 1; k--) {\n\t\tlet matches = true;\n\t\tfor (let t = 0; t < k; t++) {\n\t\t\tif (payload[payload.length - k + t] !== fileLines[endLine + t]) {\n\t\t\t\tmatches = false;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (!matches) continue;\n\t\tif (balanceEqual(computeDelimiterBalance(payload.slice(payload.length - k)), delta)) return k;\n\t}\n\treturn 0;\n}\n\n/**\n * Largest `j` such that the payload's first `j` lines exactly equal the `j`\n * surviving file lines just above the range AND dropping them zeroes `delta`.\n * Requires a non-zero `delta`; see {@link findDuplicateSuffix}.\n */\nfunction findDuplicatePrefix(group: ReplacementGroup, fileLines: readonly string[], delta: DelimiterBalance): number {\n\tif (balanceIsZero(delta)) return 0;\n\tconst { payload, startLine } = group;\n\tconst maxJ = Math.min(payload.length, startLine - 1);\n\tfor (let j = maxJ; j >= 1; j--) {\n\t\tlet matches = true;\n\t\tfor (let t = 0; t < j; t++) {\n\t\t\tif (payload[t] !== fileLines[startLine - 1 - j + t]) {\n\t\t\t\tmatches = false;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (!matches) continue;\n\t\tif (balanceEqual(computeDelimiterBalance(payload.slice(0, j)), delta)) return j;\n\t}\n\treturn 0;\n}\n\n/**\n * Smallest `m` such that the range's last `m` deleted lines are all pure\n * structural closers and sparing them (keeping instead of deleting) zeroes\n * `delta`. The mirror mistake: a range that swallows a closing delimiter the\n * payload never restates.\n */\nfunction findDroppedSuffixClosers(\n\tgroup: ReplacementGroup,\n\tfileLines: readonly string[],\n\tdelta: DelimiterBalance,\n): number {\n\tconst wanted = balanceNegate(delta);\n\tconst maxM = group.deleteIndices.length;\n\tfor (let m = 1; m <= maxM; m++) {\n\t\tif (!STRUCTURAL_CLOSER_RE.test(fileLines[group.endLine - m] ?? \"\")) break;\n\t\tif (balanceEqual(computeDelimiterBalance(fileLines.slice(group.endLine - m, group.endLine)), wanted)) return m;\n\t}\n\treturn 0;\n}\n\ninterface BoundaryEcho {\n\tleading: number;\n\ttrailing: number;\n}\n\nfunction hasNonWhitespace(text: string): boolean {\n\tfor (let i = 0; i < text.length; i++) {\n\t\tconst code = text.charCodeAt(i);\n\t\tif (code !== 9 && code !== 10 && code !== 11 && code !== 12 && code !== 13 && code !== 32) return true;\n\t}\n\treturn false;\n}\n\nfunction countDuplicateLeadingBoundaryLines(group: ReplacementGroup, fileLines: readonly string[]): number {\n\tconst { payload, startLine } = group;\n\tconst max = Math.min(payload.length, startLine - 1);\n\tfor (let count = max; count >= 1; count--) {\n\t\tlet matches = true;\n\t\tlet hasContent = false;\n\t\tfor (let offset = 0; offset < count; offset++) {\n\t\t\tconst line = payload[offset];\n\t\t\tif (line !== fileLines[startLine - 1 - count + offset]) {\n\t\t\t\tmatches = false;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\thasContent ||= hasNonWhitespace(line);\n\t\t}\n\t\tif (matches && hasContent) return count;\n\t}\n\treturn 0;\n}\n\nfunction countDuplicateTrailingBoundaryLines(group: ReplacementGroup, fileLines: readonly string[]): number {\n\tconst { payload, endLine } = group;\n\tconst max = Math.min(payload.length, fileLines.length - endLine);\n\tfor (let count = max; count >= 1; count--) {\n\t\tlet matches = true;\n\t\tlet hasContent = false;\n\t\tfor (let offset = 0; offset < count; offset++) {\n\t\t\tconst line = payload[payload.length - count + offset];\n\t\t\tif (line !== fileLines[endLine + offset]) {\n\t\t\t\tmatches = false;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\thasContent ||= hasNonWhitespace(line);\n\t\t}\n\t\tif (matches && hasContent) return count;\n\t}\n\treturn 0;\n}\n\nfunction findBoundaryEcho(group: ReplacementGroup, fileLines: readonly string[]): BoundaryEcho | undefined {\n\tconst leadingMax = countDuplicateLeadingBoundaryLines(group, fileLines);\n\tif (leadingMax === 0) return undefined;\n\tconst trailingMax = countDuplicateTrailingBoundaryLines(group, fileLines);\n\tif (trailingMax === 0) return undefined;\n\t// Bail when every payload line could be claimed by a boundary echo: any\n\t// repair would strip explicit replacement content with no signal that the\n\t// payload was a mistake rather than an intentional duplication.\n\tif (leadingMax + trailingMax >= group.payload.length) return undefined;\n\t// Balance-neutrality guard (see header comment): the dropped echo lines must\n\t// either be delimiter-neutral on their own or exactly cancel the payload/range\n\t// balance delta. In brace-heavy code where bare closer lines repeat, an\n\t// \"echo\" that shifts delimiter balance is structural content the payload\n\t// placed intentionally — stripping it would corrupt the result.\n\tconst leadingBalance = computeDelimiterBalance(group.payload.slice(0, leadingMax));\n\tconst trailingBalance = computeDelimiterBalance(group.payload.slice(group.payload.length - trailingMax));\n\tconst droppedBalance = balanceDelta(leadingBalance, balanceNegate(trailingBalance));\n\tif (!balanceIsZero(droppedBalance)) {\n\t\tconst delta = balanceDelta(\n\t\t\tcomputeDelimiterBalance(group.payload),\n\t\t\tcomputeDelimiterBalance(fileLines.slice(group.startLine - 1, group.endLine)),\n\t\t);\n\t\tif (!balanceEqual(droppedBalance, delta)) return undefined;\n\t}\n\treturn { leading: leadingMax, trailing: trailingMax };\n}\n\nfunction describeBoundaryEchoRepair(group: ReplacementGroup, echo: BoundaryEcho): string {\n\treturn (\n\t\t`Auto-repaired a replacement boundary echo at line ${group.startLine}: ` +\n\t\t`dropped ${echo.leading} leading and ${echo.trailing} trailing payload line(s) already present outside the range. ` +\n\t\t`Issue the payload as the final desired content for the selected range only — never restate unchanged lines bordering the range.`\n\t);\n}\n\nfunction describeBoundaryRepair(group: ReplacementGroup, action: string): string {\n\treturn (\n\t\t`Auto-repaired a delimiter-balance mismatch in the replacement at line ${group.startLine}: ${action}. ` +\n\t\t`Issue the payload as the final desired content only — never restate or omit a closing bracket bordering the range.`\n\t);\n}\n\n/**\n * Normalize replacement groups so common off-by-one boundaries do not duplicate\n * unchanged surrounding lines or structural closers. Returns the repaired edit\n * list plus one warning per repaired group.\n */\nfunction repairReplacementBoundaries(\n\tedits: readonly AppliedEdit[],\n\tfileLines: readonly string[],\n): {\n\tedits: AppliedEdit[];\n\twarnings: string[];\n} {\n\tconst out: AppliedEdit[] = [];\n\tconst warnings: string[] = [];\n\tlet i = 0;\n\twhile (i < edits.length) {\n\t\tconst group = findReplacementGroup(edits, i);\n\t\tif (!group) {\n\t\t\tout.push(edits[i]);\n\t\t\ti++;\n\t\t\tcontinue;\n\t\t}\n\t\tconst inserts = group.insertIndices.map(idx => edits[idx]);\n\t\tconst deletes = group.deleteIndices.map(idx => edits[idx]);\n\t\ti = group.deleteIndices[group.deleteIndices.length - 1] + 1;\n\n\t\tconst boundaryEcho = findBoundaryEcho(group, fileLines);\n\t\tif (boundaryEcho) {\n\t\t\twarnings.push(describeBoundaryEchoRepair(group, boundaryEcho));\n\t\t\tout.push(...inserts.slice(boundaryEcho.leading, inserts.length - boundaryEcho.trailing), ...deletes);\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst delta = balanceDelta(\n\t\t\tcomputeDelimiterBalance(group.payload),\n\t\t\tcomputeDelimiterBalance(fileLines.slice(group.startLine - 1, group.endLine)),\n\t\t);\n\t\tif (balanceIsZero(delta)) {\n\t\t\tout.push(...inserts, ...deletes);\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst dupSuffix = findDuplicateSuffix(group, fileLines, delta);\n\t\tif (dupSuffix > 0) {\n\t\t\twarnings.push(\n\t\t\t\tdescribeBoundaryRepair(\n\t\t\t\t\tgroup,\n\t\t\t\t\t`dropped ${dupSuffix} duplicated trailing payload line(s) already present below the range`,\n\t\t\t\t),\n\t\t\t);\n\t\t\tout.push(...inserts.slice(0, inserts.length - dupSuffix), ...deletes);\n\t\t\tcontinue;\n\t\t}\n\t\tconst dupPrefix = findDuplicatePrefix(group, fileLines, delta);\n\t\tif (dupPrefix > 0) {\n\t\t\twarnings.push(\n\t\t\t\tdescribeBoundaryRepair(\n\t\t\t\t\tgroup,\n\t\t\t\t\t`dropped ${dupPrefix} duplicated leading payload line(s) already present above the range`,\n\t\t\t\t),\n\t\t\t);\n\t\t\tout.push(...inserts.slice(dupPrefix), ...deletes);\n\t\t\tcontinue;\n\t\t}\n\t\tconst droppedClosers = findDroppedSuffixClosers(group, fileLines, delta);\n\t\tif (droppedClosers > 0) {\n\t\t\twarnings.push(\n\t\t\t\tdescribeBoundaryRepair(\n\t\t\t\t\tgroup,\n\t\t\t\t\t`kept ${droppedClosers} structural closing line(s) the range deleted without restating`,\n\t\t\t\t),\n\t\t\t);\n\t\t\tout.push(...inserts, ...deletes.slice(0, deletes.length - droppedClosers));\n\t\t\tcontinue;\n\t\t}\n\t\tout.push(...inserts, ...deletes);\n\t}\n\treturn { edits: out, warnings };\n}\n\n// ═══════════════════════════════════════════════════════════════════════════\n// After-insert landing correction\n//\n// The body rows of an `insert after N:` hunk carry an implicit depth claim:\n// their leading indentation says how deep the author expects the new lines\n// to sit. Two corrections share that claim, in opposite directions:\n//\n// Outward (any after-insert): when the depth is shallower than line N itself,\n// the hunk is inserting a sibling of some enclosing construct while anchored\n// inside it — the common shape is anchoring on the last statement of a block\n// and writing the body at the parent's depth. Sliding the landing point\n// forward across the structural closer lines that follow (and nothing else —\n// content lines are never crossed) places the body at the depth its\n// indentation names.\n//\n// Inward (block-lowered inserts only): `insert after block N:` anchors on the\n// resolved block's closing line, but a body indented deeper than that closer\n// claims a depth inside the block — the common misreading of the op as\n// \"append at the end of block N's body\". Sliding the landing point backward\n// across the block's trailing closer lines places the body inside, at its\n// claimed depth. Scoped to block-lowered inserts because there the author\n// named the opener and never saw the closer; a plain `insert after M:` on a\n// closer line stays literal (the escape hatch for genuinely-after content\n// such as method-chain continuations).\n//\n// Both shifts are deliberately conservative: they fire only when the body\n// and anchor indentation are comparable (one is a prefix of the other),\n// cross only pure closing-delimiter lines, stop as soon as depth matches the\n// body's claim, and are abandoned when any other edit in the patch targets a\n// crossed line. Every shift is reported as a warning so the author can\n// re-issue when the original landing was intended.\n\n/** Leading run of tabs and spaces. */\nfunction leadingIndent(line: string): string {\n\tlet end = 0;\n\twhile (end < line.length) {\n\t\tconst code = line.charCodeAt(end);\n\t\tif (code !== 9 && code !== 32) break;\n\t\tend++;\n\t}\n\treturn line.slice(0, end);\n}\n\n/** `deeper` strictly extends `shallower` (same indent style, more depth). */\nfunction isIndentDeeper(deeper: string, shallower: string): boolean {\n\treturn deeper.length > shallower.length && deeper.startsWith(shallower);\n}\n\ninterface AfterInsertGroup {\n\t/** Anchor line shared by every insert row of the hunk. */\n\tanchor: number;\n\t/** Indices into the edit list, in patch order. */\n\tmembers: number[];\n\t/** First line of the resolved block when lowered from `insert after block N:`. */\n\tblockStart?: number;\n}\n\n/**\n * Depth of an after-insert hunk's body: the shallowest indentation across its\n * non-blank rows. Returns `undefined` when no depth claim can be made — an\n * all-blank or all-closer body, or rows whose indentation styles are not\n * mutually comparable (tabs vs spaces).\n */\nfunction bodyTargetIndent(rows: readonly string[]): string | undefined {\n\tconst nonBlank = rows.filter(hasNonWhitespace);\n\tif (nonBlank.length === 0) return undefined;\n\t// A body of pure closers re-balances delimiters; it claims no depth.\n\tif (nonBlank.every(row => STRUCTURAL_CLOSER_RE.test(row))) return undefined;\n\tlet target = leadingIndent(nonBlank[0] ?? \"\");\n\tfor (const row of nonBlank) {\n\t\tconst indent = leadingIndent(row);\n\t\tif (indent.startsWith(target)) continue;\n\t\tif (target.startsWith(indent)) target = indent;\n\t\telse return undefined;\n\t}\n\treturn target;\n}\n\n/**\n * Resolve where an after-insert hunk anchored on `group.anchor` should land\n * given its body depth `target`: the last structural closer line in the run\n * directly below the anchor whose indentation still covers `target`. Returns\n * `undefined` when the landing stays put.\n */\nfunction resolveShiftedLanding(\n\tgroup: AfterInsertGroup,\n\ttarget: string,\n\tfileLines: readonly string[],\n\ttargetedLines: ReadonlySet<number>,\n): { line: number; crossed: number } | undefined {\n\tconst anchorText = fileLines[group.anchor - 1];\n\tif (anchorText === undefined || !hasNonWhitespace(anchorText)) return undefined;\n\tif (!isIndentDeeper(leadingIndent(anchorText), target)) return undefined;\n\n\tlet landing = group.anchor;\n\tlet crossed = 0;\n\tfor (let line = group.anchor + 1; line <= fileLines.length; line++) {\n\t\tconst text = fileLines[line - 1] ?? \"\";\n\t\tif (!hasNonWhitespace(text)) continue; // look past blanks, never land on them\n\t\tif (!STRUCTURAL_CLOSER_RE.test(text)) break; // content is never crossed\n\t\tconst indent = leadingIndent(text);\n\t\tif (!indent.startsWith(target)) break; // shallower than the body — crossing would over-escape\n\t\tif (targetedLines.has(line)) return undefined; // another hunk owns this closer\n\t\tlanding = line;\n\t\tcrossed++;\n\t\tif (indent.length === target.length) break; // depth returned to the body's level\n\t}\n\treturn landing === group.anchor ? undefined : { line: landing, crossed };\n}\n\n/**\n * Resolve where a block-lowered after-insert anchored on the block's closing\n * line should land given a body depth `target` deeper than that closer: just\n * above the block's trailing run of closer lines, bounded below by\n * `blockStart` (an empty block lands the body right after its opener).\n * Returns `undefined` when the landing stays put.\n */\nfunction resolveInwardLanding(\n\tgroup: AfterInsertGroup,\n\ttarget: string,\n\tblockStart: number,\n\tfileLines: readonly string[],\n\ttargetedLines: ReadonlySet<number>,\n): number | undefined {\n\tconst anchorText = fileLines[group.anchor - 1];\n\tif (anchorText === undefined || !hasNonWhitespace(anchorText)) return undefined;\n\t// Fires only when the block ends in a pure closer the body out-indents.\n\t// Blocks ending in content (indentation-only languages) already land the\n\t// body inside the block — nothing to correct.\n\tif (!STRUCTURAL_CLOSER_RE.test(anchorText)) return undefined;\n\tif (!isIndentDeeper(target, leadingIndent(anchorText))) return undefined;\n\n\tlet landing = group.anchor;\n\tfor (let line = group.anchor; line > blockStart; line--) {\n\t\tconst text = fileLines[line - 1] ?? \"\";\n\t\tif (!hasNonWhitespace(text)) {\n\t\t\tlanding = line - 1; // look past trailing blanks, never land after one\n\t\t\tcontinue;\n\t\t}\n\t\tif (!STRUCTURAL_CLOSER_RE.test(text)) break; // content reached — land right after it\n\t\tconst indent = leadingIndent(text);\n\t\tif (!isIndentDeeper(target, indent)) break; // closer at the body's depth — land after it\n\t\t// Another hunk owns this closer (the group's own rows put the anchor\n\t\t// itself in `targetedLines`; that one is ours to cross).\n\t\tif (line !== group.anchor && targetedLines.has(line)) return undefined;\n\t\tlanding = line - 1;\n\t}\n\treturn landing === group.anchor ? undefined : landing;\n}\n\n/**\n * Slide mis-anchored after-insert hunks to the depth their body indentation\n * claims: outward past the structural closer lines that follow the anchor\n * when the body is shallower, or — for `insert after block N:` lowerings —\n * inward across the block's trailing closers when the body is deeper than\n * the block's closing line. Returns the corrected edit list plus one warning\n * per shifted hunk.\n */\nfunction repairAfterInsertLandings(\n\tedits: readonly AppliedEdit[],\n\tfileLines: readonly string[],\n): { edits: readonly AppliedEdit[]; warnings: string[] } {\n\t// Group plain (non-replacement) after-anchor inserts per authored hunk:\n\t// rows of one hunk share the anchor line and the patch header line.\n\tconst groups = new Map<string, AfterInsertGroup>();\n\tedits.forEach((edit, idx) => {\n\t\tif (edit.kind !== \"insert\" || edit.mode === \"replacement\") return;\n\t\tif (edit.cursor.kind !== \"after_anchor\") return;\n\t\tconst key = `${edit.cursor.anchor.line}:${edit.lineNum}`;\n\t\tconst group = groups.get(key);\n\t\tif (group === undefined)\n\t\t\tgroups.set(key, { anchor: edit.cursor.anchor.line, members: [idx], blockStart: edit.blockStart });\n\t\telse group.members.push(idx);\n\t});\n\tif (groups.size === 0) return { edits, warnings: [] };\n\n\t// Lines explicitly targeted by any edit; a shift never crosses them.\n\tconst targetedLines = new Set<number>();\n\tfor (const edit of edits) {\n\t\tif (edit.kind === \"delete\") targetedLines.add(edit.anchor.line);\n\t\telse if (edit.cursor.kind === \"before_anchor\" || edit.cursor.kind === \"after_anchor\")\n\t\t\ttargetedLines.add(edit.cursor.anchor.line);\n\t}\n\n\tlet out: AppliedEdit[] | undefined;\n\tconst warnings: string[] = [];\n\tconst retarget = (group: AfterInsertGroup, line: number): void => {\n\t\tout ??= [...edits];\n\t\tfor (const idx of group.members) {\n\t\t\tconst edit = out[idx] as InsertEdit;\n\t\t\tout[idx] = { ...edit, cursor: { kind: \"after_anchor\", anchor: { line } } };\n\t\t}\n\t};\n\tfor (const group of groups.values()) {\n\t\tconst target = bodyTargetIndent(group.members.map(idx => (edits[idx] as InsertEdit).text));\n\t\tif (target === undefined) continue;\n\t\tconst outward = resolveShiftedLanding(group, target, fileLines, targetedLines);\n\t\tif (outward !== undefined) {\n\t\t\tretarget(group, outward.line);\n\t\t\twarnings.push(afterInsertLandingShiftWarning(group.anchor, outward.line, outward.crossed));\n\t\t\tcontinue;\n\t\t}\n\t\tif (group.blockStart === undefined) continue;\n\t\tconst inward = resolveInwardLanding(group, target, group.blockStart, fileLines, targetedLines);\n\t\tif (inward === undefined) continue;\n\t\tretarget(group, inward);\n\t\twarnings.push(blockInsertLandingShiftWarning(group.blockStart, group.anchor, inward));\n\t}\n\treturn { edits: out ?? edits, warnings };\n}\n\n/**\n * Apply a parsed list of edits to a text body. Pure function — no I/O.\n *\n * Returns the post-edit text and the first changed line number (1-indexed).\n * Throws if an anchor is out of bounds.\n */\nexport function applyEdits(text: string, edits: readonly Edit[]): ApplyResult {\n\tif (edits.length === 0) return { text, firstChangedLine: undefined };\n\n\t// Block edits are deferred until `resolveBlockEdits` expands them into\n\t// concrete inserts + deletes. Reaching the applier with one still present\n\t// is an internal wiring bug, not authored-input error.\n\tfor (const edit of edits) {\n\t\tif (edit.kind === \"block\") throw new Error(UNRESOLVED_BLOCK_INTERNAL);\n\t}\n\tconst appliedEdits = edits as readonly AppliedEdit[];\n\n\tconst fileLines = text.split(\"\\n\");\n\tconst lineOrigins: LineOrigin[] = fileLines.map(() => \"original\");\n\n\tlet firstChangedLine: number | undefined;\n\tconst trackFirstChanged = (line: number) => {\n\t\tif (firstChangedLine === undefined || line < firstChangedLine) firstChangedLine = line;\n\t};\n\n\tconst targetEdits = dropTrailingPhantomDeletes(\n\t\tappliedEdits.map((edit, index) => cloneAppliedEdit(edit, index)),\n\t\tfileLines,\n\t);\n\tvalidateLineBounds(targetEdits, fileLines);\n\tconst { edits: repaired, warnings: boundaryWarnings } = repairReplacementBoundaries(targetEdits, fileLines);\n\tconst { edits: landed, warnings: landingWarnings } = repairAfterInsertLandings(repaired, fileLines);\n\tconst warnings = [...boundaryWarnings, ...landingWarnings];\n\n\t// Partition edits into bof, eof, and anchor-targeted buckets.\n\tconst bofLines: string[] = [];\n\tconst eofLines: string[] = [];\n\tconst anchorEdits: IndexedEdit[] = [];\n\tlanded.forEach((edit, idx) => {\n\t\tif (edit.kind === \"insert\" && edit.cursor.kind === \"bof\") {\n\t\t\tbofLines.push(edit.text);\n\t\t} else if (edit.kind === \"insert\" && edit.cursor.kind === \"eof\") {\n\t\t\teofLines.push(edit.text);\n\t\t} else {\n\t\t\tanchorEdits.push({ edit, idx });\n\t\t}\n\t});\n\n\t// Apply per-line buckets bottom-up so earlier indices stay valid.\n\tconst byLine = bucketAnchorEditsByLine(anchorEdits);\n\tfor (const line of [...byLine.keys()].sort((a, b) => b - a)) {\n\t\tconst bucket = byLine.get(line);\n\t\tif (!bucket) continue;\n\t\tbucket.sort((a, b) => a.idx - b.idx);\n\n\t\tconst idx = line - 1;\n\t\tconst currentLine = fileLines[idx] ?? \"\";\n\t\tconst beforeInsertLines: string[] = [];\n\t\tconst afterInsertLines: string[] = [];\n\t\tconst replacementLines: string[] = [];\n\t\tlet deleteLine = false;\n\n\t\tfor (const { edit } of bucket) {\n\t\t\tif (isReplacementInsert(edit)) {\n\t\t\t\treplacementLines.push(edit.text);\n\t\t\t} else if (edit.kind === \"insert\" && edit.cursor.kind === \"after_anchor\") {\n\t\t\t\tafterInsertLines.push(edit.text);\n\t\t\t} else if (edit.kind === \"insert\") {\n\t\t\t\tbeforeInsertLines.push(edit.text);\n\t\t\t} else if (edit.kind === \"delete\") {\n\t\t\t\tdeleteLine = true;\n\t\t\t}\n\t\t}\n\t\tif (\n\t\t\tbeforeInsertLines.length === 0 &&\n\t\t\treplacementLines.length === 0 &&\n\t\t\tafterInsertLines.length === 0 &&\n\t\t\t!deleteLine\n\t\t)\n\t\t\tcontinue;\n\n\t\tconst replacement = deleteLine\n\t\t\t? [...beforeInsertLines, ...replacementLines, ...afterInsertLines]\n\t\t\t: [...beforeInsertLines, ...replacementLines, currentLine, ...afterInsertLines];\n\t\tconst origins: LineOrigin[] = [];\n\t\tfor (let i = 0; i < beforeInsertLines.length; i++) origins.push(\"insert\");\n\t\tfor (let i = 0; i < replacementLines.length; i++) origins.push(deleteLine ? \"replacement\" : \"insert\");\n\t\tif (!deleteLine) origins.push(lineOrigins[idx] ?? \"original\");\n\t\tfor (let i = 0; i < afterInsertLines.length; i++) origins.push(\"insert\");\n\n\t\tfileLines.splice(idx, 1, ...replacement);\n\t\tlineOrigins.splice(idx, 1, ...origins);\n\t\ttrackFirstChanged(line);\n\t}\n\n\tif (bofLines.length > 0) {\n\t\tinsertAtStart(fileLines, lineOrigins, bofLines);\n\t\ttrackFirstChanged(1);\n\t}\n\tconst eofChangedLine = insertAtEnd(fileLines, lineOrigins, eofLines);\n\tif (eofChangedLine !== undefined) trackFirstChanged(eofChangedLine);\n\n\treturn {\n\t\ttext: fileLines.join(\"\\n\"),\n\t\tfirstChangedLine,\n\t\t...(warnings.length > 0 ? { warnings } : {}),\n\t};\n}\n"]}
1
+ {"version":3,"file":"apply.js","sourceRoot":"","sources":["../../../../src/core/tools/hashline-engine/apply.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 * Apply a parsed list of {@link Edit}s to a text body and return the\n * post-edit lines plus any diagnostic warnings. Pure function: no FS, no\n * mutation of the input.\n *\n * Replacement groups are first normalized by {@link repairReplacementBoundaries},\n * which absorbs common model mistakes where a payload restates unchanged range\n * boundaries or duplicates/drops structural closers.\n */\nimport {\n\tafterInsertLandingShiftWarning,\n\tblockInsertLandingShiftWarning,\n\tUNRESOLVED_BLOCK_INTERNAL,\n} from \"./messages.js\";\nimport { cloneCursor } from \"./tokenizer.js\";\nimport type { Anchor, ApplyResult, Cursor, Edit } from \"./types.js\";\n\ntype LineOrigin = \"original\" | \"insert\" | \"replacement\";\n\ntype InsertEdit = Extract<Edit, { kind: \"insert\" }>;\ntype DeleteEdit = Extract<Edit, { kind: \"delete\" }>;\ntype AppliedEdit = InsertEdit | DeleteEdit;\n\ninterface IndexedEdit {\n\tedit: AppliedEdit;\n\tidx: number;\n}\n\nfunction isReplacementInsert(edit: Edit): edit is InsertEdit & { mode: \"replacement\" } {\n\treturn edit.kind === \"insert\" && edit.mode === \"replacement\";\n}\n\nfunction getCursorAnchors(cursor: Cursor): Anchor[] {\n\treturn cursor.kind === \"before_anchor\" || cursor.kind === \"after_anchor\" ? [cursor.anchor] : [];\n}\n\nfunction getEditAnchors(edit: AppliedEdit): Anchor[] {\n\tif (edit.kind === \"delete\") return [edit.anchor];\n\treturn getCursorAnchors(edit.cursor);\n}\n\nfunction trailingPhantomLine(fileLines: readonly string[]): number {\n\t// `split(\"\\n\")` on a newline-terminated file yields a trailing \"\" sentinel.\n\t// It is addressable for inserts (append-past-end), but it is not real\n\t// content. Deleting it only strips the file's final newline, so ignore delete\n\t// edits that land there; inclusive ranges ending at EOF then do the intended\n\t// thing and delete through the last concrete line.\n\treturn fileLines.length > 1 && fileLines[fileLines.length - 1] === \"\" ? fileLines.length : 0;\n}\n\nfunction dropTrailingPhantomDeletes(edits: AppliedEdit[], fileLines: readonly string[]): AppliedEdit[] {\n\tconst phantomLine = trailingPhantomLine(fileLines);\n\tif (phantomLine === 0) return edits;\n\treturn edits.filter((edit) => edit.kind !== \"delete\" || edit.anchor.line !== phantomLine);\n}\n\n/**\n * Verify every anchored edit points at an existing line. File-version binding is\n * checked once per section via the header hash before this function runs.\n */\nfunction validateLineBounds(edits: readonly AppliedEdit[], fileLines: readonly string[]): void {\n\tfor (const edit of edits) {\n\t\tfor (const anchor of getEditAnchors(edit)) {\n\t\t\tif (anchor.line < 1 || anchor.line > fileLines.length) {\n\t\t\t\tthrow new Error(`Line ${anchor.line} does not exist (file has ${fileLines.length} lines)`);\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction cloneAppliedEdit(edit: AppliedEdit, index: number): AppliedEdit {\n\tif (edit.kind === \"delete\") return { ...edit, anchor: { ...edit.anchor }, index };\n\treturn { ...edit, cursor: cloneCursor(edit.cursor), index };\n}\n\nfunction insertAtStart(fileLines: string[], lineOrigins: LineOrigin[], lines: string[]): void {\n\tif (lines.length === 0) return;\n\tconst origins = lines.map((): LineOrigin => \"insert\");\n\tif (fileLines.length === 1 && fileLines[0] === \"\") {\n\t\tfileLines.splice(0, 1, ...lines);\n\t\tlineOrigins.splice(0, 1, ...origins);\n\t\treturn;\n\t}\n\tfileLines.splice(0, 0, ...lines);\n\tlineOrigins.splice(0, 0, ...origins);\n}\n\nfunction insertAtEnd(fileLines: string[], lineOrigins: LineOrigin[], lines: string[]): number | undefined {\n\tif (lines.length === 0) return undefined;\n\tconst origins = lines.map((): LineOrigin => \"insert\");\n\tif (fileLines.length === 1 && fileLines[0] === \"\") {\n\t\tfileLines.splice(0, 1, ...lines);\n\t\tlineOrigins.splice(0, 1, ...origins);\n\t\treturn 1;\n\t}\n\tconst hasTrailingNewline = fileLines.length > 0 && fileLines[fileLines.length - 1] === \"\";\n\tconst insertIndex = hasTrailingNewline ? fileLines.length - 1 : fileLines.length;\n\tfileLines.splice(insertIndex, 0, ...lines);\n\tlineOrigins.splice(insertIndex, 0, ...origins);\n\treturn insertIndex + 1;\n}\n\nfunction bucketAnchorEditsByLine(edits: IndexedEdit[]): Map<number, IndexedEdit[]> {\n\tconst byLine = new Map<number, IndexedEdit[]>();\n\tfor (const entry of edits) {\n\t\tconst line =\n\t\t\tentry.edit.kind === \"delete\"\n\t\t\t\t? entry.edit.anchor.line\n\t\t\t\t: entry.edit.cursor.kind === \"before_anchor\" || entry.edit.cursor.kind === \"after_anchor\"\n\t\t\t\t\t? entry.edit.cursor.anchor.line\n\t\t\t\t\t: 0;\n\t\tconst bucket = byLine.get(line);\n\t\tif (bucket) bucket.push(entry);\n\t\telse byLine.set(line, [entry]);\n\t}\n\treturn byLine;\n}\n\n// ═══════════════════════════════════════════════════════════════════════════\n// Replacement-boundary repair\n//\n// Models routinely miscount a replacement range's edges. Sometimes the payload\n// re-states unchanged lines that still live on both sides of the range\n// (duplicating a function header and final statement); sometimes it only\n// re-states or omits a structural closer, which leaves delimiter balance broken.\n//\n// A balance-neutral boundary-echo repair fires only when both the leading and\n// trailing payload edges are exact copies of the surviving lines outside the\n// range. One-sided content echoes are left alone unless delimiter-balance repair\n// proves they are duplicated structural boundaries. This preserves intended\n// duplicate statements while absorbing the common \"body includes the unchanged\n// wrapper\" mistake.\n\n/** A line that is nothing but closing delimiters: `}`, `)`, `];`, `})`, `},`. */\nexport const STRUCTURAL_CLOSER_RE = /^\\s*[)\\]}]+[;,]?\\s*$/;\n\ninterface DelimiterBalance {\n\tparen: number;\n\tbracket: number;\n\tbrace: number;\n}\n\n/**\n * Net `()` / `[]` / `{}` delta across `lines`, skipping delimiters inside line\n * comments (`//`), block comments, and string/template literals. Block-comment\n * and backtick-template state carry across lines; `\"` / `'` reset at EOL since\n * they cannot span lines. Deliberately language-light: constructs it cannot\n * classify (e.g. regex literals) are counted naively, which can only suppress a\n * repair (the safe direction), never force one.\n */\nfunction computeDelimiterBalance(lines: readonly string[]): DelimiterBalance {\n\tconst balance: DelimiterBalance = { paren: 0, bracket: 0, brace: 0 };\n\tlet inBlockComment = false;\n\tlet quote = \"\";\n\tfor (const line of lines) {\n\t\tfor (let i = 0; i < line.length; i++) {\n\t\t\tconst ch = line[i];\n\t\t\tif (inBlockComment) {\n\t\t\t\tif (ch === \"*\" && line[i + 1] === \"/\") {\n\t\t\t\t\tinBlockComment = false;\n\t\t\t\t\ti++;\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (quote) {\n\t\t\t\tif (ch === \"\\\\\") i++;\n\t\t\t\telse if (ch === quote) quote = \"\";\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (ch === '\"' || ch === \"'\" || ch === \"`\") {\n\t\t\t\tquote = ch;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (ch === \"/\" && line[i + 1] === \"/\") break;\n\t\t\tif (ch === \"/\" && line[i + 1] === \"*\") {\n\t\t\t\tinBlockComment = true;\n\t\t\t\ti++;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tswitch (ch) {\n\t\t\t\tcase \"(\":\n\t\t\t\t\tbalance.paren++;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \")\":\n\t\t\t\t\tbalance.paren--;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"[\":\n\t\t\t\t\tbalance.bracket++;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"]\":\n\t\t\t\t\tbalance.bracket--;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"{\":\n\t\t\t\t\tbalance.brace++;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"}\":\n\t\t\t\t\tbalance.brace--;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\t// `\"` / `'` cannot span lines; only backtick templates and block comments do.\n\t\tif (quote === '\"' || quote === \"'\") quote = \"\";\n\t}\n\treturn balance;\n}\n\nfunction balanceDelta(a: DelimiterBalance, b: DelimiterBalance): DelimiterBalance {\n\treturn { paren: a.paren - b.paren, bracket: a.bracket - b.bracket, brace: a.brace - b.brace };\n}\n\nfunction balanceNegate(a: DelimiterBalance): DelimiterBalance {\n\treturn { paren: -a.paren, bracket: -a.bracket, brace: -a.brace };\n}\n\nfunction balanceEqual(a: DelimiterBalance, b: DelimiterBalance): boolean {\n\treturn a.paren === b.paren && a.bracket === b.bracket && a.brace === b.brace;\n}\n\nfunction balanceIsZero(a: DelimiterBalance): boolean {\n\treturn a.paren === 0 && a.bracket === 0 && a.brace === 0;\n}\n\ninterface ReplacementGroup {\n\t/** Positions in the edit array of the payload inserts, in payload order. */\n\tinsertIndices: number[];\n\t/** Positions in the edit array of the range deletes, ascending by line. */\n\tdeleteIndices: number[];\n\tpayload: string[];\n\t/** First deleted line (1-indexed). */\n\tstartLine: number;\n\t/** Last deleted line (1-indexed). */\n\tendLine: number;\n}\n\n/**\n * Detect a replacement group starting at `start`: a run of `before_anchor`\n * replacement inserts sharing one source op line, immediately followed by the\n * contiguous range deletes for that same op. Mirrors how the parser lowers an\n * `replace N..M:` hunk with a body.\n */\nfunction findReplacementGroup(edits: readonly AppliedEdit[], start: number): ReplacementGroup | undefined {\n\tconst first = edits[start];\n\tif (first?.kind !== \"insert\" || first.mode !== \"replacement\" || first.cursor.kind !== \"before_anchor\") {\n\t\treturn undefined;\n\t}\n\tconst { lineNum } = first;\n\tconst anchorLine = first.cursor.anchor.line;\n\tconst insertIndices: number[] = [];\n\tconst payload: string[] = [];\n\tlet i = start;\n\tfor (; i < edits.length; i++) {\n\t\tconst edit = edits[i];\n\t\tif (edit.kind !== \"insert\" || edit.mode !== \"replacement\" || edit.lineNum !== lineNum) break;\n\t\tif (edit.cursor.kind !== \"before_anchor\" || edit.cursor.anchor.line !== anchorLine) break;\n\t\tinsertIndices.push(i);\n\t\tpayload.push(edit.text);\n\t}\n\tconst deleteIndices: number[] = [];\n\tlet expectedLine = anchorLine;\n\tfor (; i < edits.length; i++) {\n\t\tconst edit = edits[i];\n\t\tif (edit.kind !== \"delete\" || edit.lineNum !== lineNum || edit.anchor.line !== expectedLine) break;\n\t\tdeleteIndices.push(i);\n\t\texpectedLine++;\n\t}\n\tif (deleteIndices.length === 0) return undefined;\n\treturn {\n\t\tinsertIndices,\n\t\tdeleteIndices,\n\t\tpayload,\n\t\tstartLine: anchorLine,\n\t\tendLine: anchorLine + deleteIndices.length - 1,\n\t};\n}\n\n/**\n * Largest `k` such that the payload's last `k` lines exactly equal the `k`\n * surviving file lines just below the range AND dropping them zeroes `delta`.\n * Requires a non-zero `delta`: a zero-balance candidate can never account for\n * the imbalance, so intentional duplicates of ordinary statements stay intact,\n * while duplicated structural lines (closers like `});`, openers like `foo(`)\n * are dropped when they exactly explain the imbalance.\n */\nfunction findDuplicateSuffix(group: ReplacementGroup, fileLines: readonly string[], delta: DelimiterBalance): number {\n\tif (balanceIsZero(delta)) return 0;\n\tconst { payload, endLine } = group;\n\tconst maxK = Math.min(payload.length, fileLines.length - endLine);\n\tfor (let k = maxK; k >= 1; k--) {\n\t\tlet matches = true;\n\t\tfor (let t = 0; t < k; t++) {\n\t\t\tif (payload[payload.length - k + t] !== fileLines[endLine + t]) {\n\t\t\t\tmatches = false;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (!matches) continue;\n\t\tif (balanceEqual(computeDelimiterBalance(payload.slice(payload.length - k)), delta)) return k;\n\t}\n\treturn 0;\n}\n\n/**\n * Largest `j` such that the payload's first `j` lines exactly equal the `j`\n * surviving file lines just above the range AND dropping them zeroes `delta`.\n * Requires a non-zero `delta`; see {@link findDuplicateSuffix}.\n */\nfunction findDuplicatePrefix(group: ReplacementGroup, fileLines: readonly string[], delta: DelimiterBalance): number {\n\tif (balanceIsZero(delta)) return 0;\n\tconst { payload, startLine } = group;\n\tconst maxJ = Math.min(payload.length, startLine - 1);\n\tfor (let j = maxJ; j >= 1; j--) {\n\t\tlet matches = true;\n\t\tfor (let t = 0; t < j; t++) {\n\t\t\tif (payload[t] !== fileLines[startLine - 1 - j + t]) {\n\t\t\t\tmatches = false;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (!matches) continue;\n\t\tif (balanceEqual(computeDelimiterBalance(payload.slice(0, j)), delta)) return j;\n\t}\n\treturn 0;\n}\n\n/**\n * Smallest `m` such that the range's last `m` deleted lines are all pure\n * structural closers and sparing them (keeping instead of deleting) zeroes\n * `delta`. The mirror mistake: a range that swallows a closing delimiter the\n * payload never restates.\n */\nfunction findDroppedSuffixClosers(\n\tgroup: ReplacementGroup,\n\tfileLines: readonly string[],\n\tdelta: DelimiterBalance,\n): number {\n\tconst wanted = balanceNegate(delta);\n\tconst maxM = group.deleteIndices.length;\n\tfor (let m = 1; m <= maxM; m++) {\n\t\tif (!STRUCTURAL_CLOSER_RE.test(fileLines[group.endLine - m] ?? \"\")) break;\n\t\tif (balanceEqual(computeDelimiterBalance(fileLines.slice(group.endLine - m, group.endLine)), wanted)) return m;\n\t}\n\treturn 0;\n}\n\ninterface BoundaryEcho {\n\tleading: number;\n\ttrailing: number;\n}\n\nfunction hasNonWhitespace(text: string): boolean {\n\tfor (let i = 0; i < text.length; i++) {\n\t\tconst code = text.charCodeAt(i);\n\t\tif (code !== 9 && code !== 10 && code !== 11 && code !== 12 && code !== 13 && code !== 32) return true;\n\t}\n\treturn false;\n}\n\nfunction countDuplicateLeadingBoundaryLines(group: ReplacementGroup, fileLines: readonly string[]): number {\n\tconst { payload, startLine } = group;\n\tconst max = Math.min(payload.length, startLine - 1);\n\tfor (let count = max; count >= 1; count--) {\n\t\tlet matches = true;\n\t\tlet hasContent = false;\n\t\tfor (let offset = 0; offset < count; offset++) {\n\t\t\tconst line = payload[offset];\n\t\t\tif (line !== fileLines[startLine - 1 - count + offset]) {\n\t\t\t\tmatches = false;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\thasContent ||= hasNonWhitespace(line);\n\t\t}\n\t\tif (matches && hasContent) return count;\n\t}\n\treturn 0;\n}\n\nfunction countDuplicateTrailingBoundaryLines(group: ReplacementGroup, fileLines: readonly string[]): number {\n\tconst { payload, endLine } = group;\n\tconst max = Math.min(payload.length, fileLines.length - endLine);\n\tfor (let count = max; count >= 1; count--) {\n\t\tlet matches = true;\n\t\tlet hasContent = false;\n\t\tfor (let offset = 0; offset < count; offset++) {\n\t\t\tconst line = payload[payload.length - count + offset];\n\t\t\tif (line !== fileLines[endLine + offset]) {\n\t\t\t\tmatches = false;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\thasContent ||= hasNonWhitespace(line);\n\t\t}\n\t\tif (matches && hasContent) return count;\n\t}\n\treturn 0;\n}\n\nfunction findBoundaryEcho(group: ReplacementGroup, fileLines: readonly string[]): BoundaryEcho | undefined {\n\tconst leadingMax = countDuplicateLeadingBoundaryLines(group, fileLines);\n\tif (leadingMax === 0) return undefined;\n\tconst trailingMax = countDuplicateTrailingBoundaryLines(group, fileLines);\n\tif (trailingMax === 0) return undefined;\n\t// Bail when every payload line could be claimed by a boundary echo: any\n\t// repair would strip explicit replacement content with no signal that the\n\t// payload was a mistake rather than an intentional duplication.\n\tif (leadingMax + trailingMax >= group.payload.length) return undefined;\n\t// Balance-neutrality guard (see header comment): the dropped echo lines must\n\t// either be delimiter-neutral on their own or exactly cancel the payload/range\n\t// balance delta. In brace-heavy code where bare closer lines repeat, an\n\t// \"echo\" that shifts delimiter balance is structural content the payload\n\t// placed intentionally — stripping it would corrupt the result.\n\tconst leadingBalance = computeDelimiterBalance(group.payload.slice(0, leadingMax));\n\tconst trailingBalance = computeDelimiterBalance(group.payload.slice(group.payload.length - trailingMax));\n\tconst droppedBalance = balanceDelta(leadingBalance, balanceNegate(trailingBalance));\n\tif (!balanceIsZero(droppedBalance)) {\n\t\tconst delta = balanceDelta(\n\t\t\tcomputeDelimiterBalance(group.payload),\n\t\t\tcomputeDelimiterBalance(fileLines.slice(group.startLine - 1, group.endLine)),\n\t\t);\n\t\tif (!balanceEqual(droppedBalance, delta)) return undefined;\n\t}\n\treturn { leading: leadingMax, trailing: trailingMax };\n}\n\nfunction describeBoundaryEchoRepair(group: ReplacementGroup, echo: BoundaryEcho): string {\n\treturn (\n\t\t`Auto-repaired a replacement boundary echo at line ${group.startLine}: ` +\n\t\t`dropped ${echo.leading} leading and ${echo.trailing} trailing payload line(s) already present outside the range. ` +\n\t\t`Issue the payload as the final desired content for the selected range only — never restate unchanged lines bordering the range.`\n\t);\n}\n\nfunction describeBoundaryRepair(group: ReplacementGroup, action: string): string {\n\treturn (\n\t\t`Auto-repaired a delimiter-balance mismatch in the replacement at line ${group.startLine}: ${action}. ` +\n\t\t`Issue the payload as the final desired content only — never restate or omit a closing bracket bordering the range.`\n\t);\n}\n\n/**\n * Normalize replacement groups so common off-by-one boundaries do not duplicate\n * unchanged surrounding lines or structural closers. Returns the repaired edit\n * list plus one warning per repaired group.\n */\nfunction repairReplacementBoundaries(\n\tedits: readonly AppliedEdit[],\n\tfileLines: readonly string[],\n): {\n\tedits: AppliedEdit[];\n\twarnings: string[];\n} {\n\tconst out: AppliedEdit[] = [];\n\tconst warnings: string[] = [];\n\tlet i = 0;\n\twhile (i < edits.length) {\n\t\tconst group = findReplacementGroup(edits, i);\n\t\tif (!group) {\n\t\t\tout.push(edits[i]);\n\t\t\ti++;\n\t\t\tcontinue;\n\t\t}\n\t\tconst inserts = group.insertIndices.map((idx) => edits[idx]);\n\t\tconst deletes = group.deleteIndices.map((idx) => edits[idx]);\n\t\ti = group.deleteIndices[group.deleteIndices.length - 1] + 1;\n\n\t\tconst boundaryEcho = findBoundaryEcho(group, fileLines);\n\t\tif (boundaryEcho) {\n\t\t\twarnings.push(describeBoundaryEchoRepair(group, boundaryEcho));\n\t\t\tout.push(...inserts.slice(boundaryEcho.leading, inserts.length - boundaryEcho.trailing), ...deletes);\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst delta = balanceDelta(\n\t\t\tcomputeDelimiterBalance(group.payload),\n\t\t\tcomputeDelimiterBalance(fileLines.slice(group.startLine - 1, group.endLine)),\n\t\t);\n\t\tif (balanceIsZero(delta)) {\n\t\t\tout.push(...inserts, ...deletes);\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst dupSuffix = findDuplicateSuffix(group, fileLines, delta);\n\t\tif (dupSuffix > 0) {\n\t\t\twarnings.push(\n\t\t\t\tdescribeBoundaryRepair(\n\t\t\t\t\tgroup,\n\t\t\t\t\t`dropped ${dupSuffix} duplicated trailing payload line(s) already present below the range`,\n\t\t\t\t),\n\t\t\t);\n\t\t\tout.push(...inserts.slice(0, inserts.length - dupSuffix), ...deletes);\n\t\t\tcontinue;\n\t\t}\n\t\tconst dupPrefix = findDuplicatePrefix(group, fileLines, delta);\n\t\tif (dupPrefix > 0) {\n\t\t\twarnings.push(\n\t\t\t\tdescribeBoundaryRepair(\n\t\t\t\t\tgroup,\n\t\t\t\t\t`dropped ${dupPrefix} duplicated leading payload line(s) already present above the range`,\n\t\t\t\t),\n\t\t\t);\n\t\t\tout.push(...inserts.slice(dupPrefix), ...deletes);\n\t\t\tcontinue;\n\t\t}\n\t\tconst droppedClosers = findDroppedSuffixClosers(group, fileLines, delta);\n\t\tif (droppedClosers > 0) {\n\t\t\twarnings.push(\n\t\t\t\tdescribeBoundaryRepair(\n\t\t\t\t\tgroup,\n\t\t\t\t\t`kept ${droppedClosers} structural closing line(s) the range deleted without restating`,\n\t\t\t\t),\n\t\t\t);\n\t\t\tout.push(...inserts, ...deletes.slice(0, deletes.length - droppedClosers));\n\t\t\tcontinue;\n\t\t}\n\t\tout.push(...inserts, ...deletes);\n\t}\n\treturn { edits: out, warnings };\n}\n\n// ═══════════════════════════════════════════════════════════════════════════\n// After-insert landing correction\n//\n// The body rows of an `insert after N:` hunk carry an implicit depth claim:\n// their leading indentation says how deep the author expects the new lines\n// to sit. Two corrections share that claim, in opposite directions:\n//\n// Outward (any after-insert): when the depth is shallower than line N itself,\n// the hunk is inserting a sibling of some enclosing construct while anchored\n// inside it — the common shape is anchoring on the last statement of a block\n// and writing the body at the parent's depth. Sliding the landing point\n// forward across the structural closer lines that follow (and nothing else —\n// content lines are never crossed) places the body at the depth its\n// indentation names.\n//\n// Inward (block-lowered inserts only): `insert after block N:` anchors on the\n// resolved block's closing line, but a body indented deeper than that closer\n// claims a depth inside the block — the common misreading of the op as\n// \"append at the end of block N's body\". Sliding the landing point backward\n// across the block's trailing closer lines places the body inside, at its\n// claimed depth. Scoped to block-lowered inserts because there the author\n// named the opener and never saw the closer; a plain `insert after M:` on a\n// closer line stays literal (the escape hatch for genuinely-after content\n// such as method-chain continuations).\n//\n// Both shifts are deliberately conservative: they fire only when the body\n// and anchor indentation are comparable (one is a prefix of the other),\n// cross only pure closing-delimiter lines, stop as soon as depth matches the\n// body's claim, and are abandoned when any other edit in the patch targets a\n// crossed line. Every shift is reported as a warning so the author can\n// re-issue when the original landing was intended.\n\n/** Leading run of tabs and spaces. */\nfunction leadingIndent(line: string): string {\n\tlet end = 0;\n\twhile (end < line.length) {\n\t\tconst code = line.charCodeAt(end);\n\t\tif (code !== 9 && code !== 32) break;\n\t\tend++;\n\t}\n\treturn line.slice(0, end);\n}\n\n/** `deeper` strictly extends `shallower` (same indent style, more depth). */\nfunction isIndentDeeper(deeper: string, shallower: string): boolean {\n\treturn deeper.length > shallower.length && deeper.startsWith(shallower);\n}\n\ninterface AfterInsertGroup {\n\t/** Anchor line shared by every insert row of the hunk. */\n\tanchor: number;\n\t/** Indices into the edit list, in patch order. */\n\tmembers: number[];\n\t/** First line of the resolved block when lowered from `insert after block N:`. */\n\tblockStart?: number;\n}\n\n/**\n * Depth of an after-insert hunk's body: the shallowest indentation across its\n * non-blank rows. Returns `undefined` when no depth claim can be made — an\n * all-blank or all-closer body, or rows whose indentation styles are not\n * mutually comparable (tabs vs spaces).\n */\nfunction bodyTargetIndent(rows: readonly string[]): string | undefined {\n\tconst nonBlank = rows.filter(hasNonWhitespace);\n\tif (nonBlank.length === 0) return undefined;\n\t// A body of pure closers re-balances delimiters; it claims no depth.\n\tif (nonBlank.every((row) => STRUCTURAL_CLOSER_RE.test(row))) return undefined;\n\tlet target = leadingIndent(nonBlank[0] ?? \"\");\n\tfor (const row of nonBlank) {\n\t\tconst indent = leadingIndent(row);\n\t\tif (indent.startsWith(target)) continue;\n\t\tif (target.startsWith(indent)) target = indent;\n\t\telse return undefined;\n\t}\n\treturn target;\n}\n\n/**\n * Resolve where an after-insert hunk anchored on `group.anchor` should land\n * given its body depth `target`: the last structural closer line in the run\n * directly below the anchor whose indentation still covers `target`. Returns\n * `undefined` when the landing stays put.\n */\nfunction resolveShiftedLanding(\n\tgroup: AfterInsertGroup,\n\ttarget: string,\n\tfileLines: readonly string[],\n\ttargetedLines: ReadonlySet<number>,\n): { line: number; crossed: number } | undefined {\n\tconst anchorText = fileLines[group.anchor - 1];\n\tif (anchorText === undefined || !hasNonWhitespace(anchorText)) return undefined;\n\tif (!isIndentDeeper(leadingIndent(anchorText), target)) return undefined;\n\n\tlet landing = group.anchor;\n\tlet crossed = 0;\n\tfor (let line = group.anchor + 1; line <= fileLines.length; line++) {\n\t\tconst text = fileLines[line - 1] ?? \"\";\n\t\tif (!hasNonWhitespace(text)) continue; // look past blanks, never land on them\n\t\tif (!STRUCTURAL_CLOSER_RE.test(text)) break; // content is never crossed\n\t\tconst indent = leadingIndent(text);\n\t\tif (!indent.startsWith(target)) break; // shallower than the body — crossing would over-escape\n\t\tif (targetedLines.has(line)) return undefined; // another hunk owns this closer\n\t\tlanding = line;\n\t\tcrossed++;\n\t\tif (indent.length === target.length) break; // depth returned to the body's level\n\t}\n\treturn landing === group.anchor ? undefined : { line: landing, crossed };\n}\n\n/**\n * Resolve where a block-lowered after-insert anchored on the block's closing\n * line should land given a body depth `target` deeper than that closer: just\n * above the block's trailing run of closer lines, bounded below by\n * `blockStart` (an empty block lands the body right after its opener).\n * Returns `undefined` when the landing stays put.\n */\nfunction resolveInwardLanding(\n\tgroup: AfterInsertGroup,\n\ttarget: string,\n\tblockStart: number,\n\tfileLines: readonly string[],\n\ttargetedLines: ReadonlySet<number>,\n): number | undefined {\n\tconst anchorText = fileLines[group.anchor - 1];\n\tif (anchorText === undefined || !hasNonWhitespace(anchorText)) return undefined;\n\t// Fires only when the block ends in a pure closer the body out-indents.\n\t// Blocks ending in content (indentation-only languages) already land the\n\t// body inside the block — nothing to correct.\n\tif (!STRUCTURAL_CLOSER_RE.test(anchorText)) return undefined;\n\tif (!isIndentDeeper(target, leadingIndent(anchorText))) return undefined;\n\n\tlet landing = group.anchor;\n\tfor (let line = group.anchor; line > blockStart; line--) {\n\t\tconst text = fileLines[line - 1] ?? \"\";\n\t\tif (!hasNonWhitespace(text)) {\n\t\t\tlanding = line - 1; // look past trailing blanks, never land after one\n\t\t\tcontinue;\n\t\t}\n\t\tif (!STRUCTURAL_CLOSER_RE.test(text)) break; // content reached — land right after it\n\t\tconst indent = leadingIndent(text);\n\t\tif (!isIndentDeeper(target, indent)) break; // closer at the body's depth — land after it\n\t\t// Another hunk owns this closer (the group's own rows put the anchor\n\t\t// itself in `targetedLines`; that one is ours to cross).\n\t\tif (line !== group.anchor && targetedLines.has(line)) return undefined;\n\t\tlanding = line - 1;\n\t}\n\treturn landing === group.anchor ? undefined : landing;\n}\n\n/**\n * Slide mis-anchored after-insert hunks to the depth their body indentation\n * claims: outward past the structural closer lines that follow the anchor\n * when the body is shallower, or — for `insert after block N:` lowerings —\n * inward across the block's trailing closers when the body is deeper than\n * the block's closing line. Returns the corrected edit list plus one warning\n * per shifted hunk.\n */\nfunction repairAfterInsertLandings(\n\tedits: readonly AppliedEdit[],\n\tfileLines: readonly string[],\n): { edits: readonly AppliedEdit[]; warnings: string[] } {\n\t// Group plain (non-replacement) after-anchor inserts per authored hunk:\n\t// rows of one hunk share the anchor line and the patch header line.\n\tconst groups = new Map<string, AfterInsertGroup>();\n\tedits.forEach((edit, idx) => {\n\t\tif (edit.kind !== \"insert\" || edit.mode === \"replacement\") return;\n\t\tif (edit.cursor.kind !== \"after_anchor\") return;\n\t\tconst key = `${edit.cursor.anchor.line}:${edit.lineNum}`;\n\t\tconst group = groups.get(key);\n\t\tif (group === undefined)\n\t\t\tgroups.set(key, { anchor: edit.cursor.anchor.line, members: [idx], blockStart: edit.blockStart });\n\t\telse group.members.push(idx);\n\t});\n\tif (groups.size === 0) return { edits, warnings: [] };\n\n\t// Lines explicitly targeted by any edit; a shift never crosses them.\n\tconst targetedLines = new Set<number>();\n\tfor (const edit of edits) {\n\t\tif (edit.kind === \"delete\") targetedLines.add(edit.anchor.line);\n\t\telse if (edit.cursor.kind === \"before_anchor\" || edit.cursor.kind === \"after_anchor\")\n\t\t\ttargetedLines.add(edit.cursor.anchor.line);\n\t}\n\n\tlet out: AppliedEdit[] | undefined;\n\tconst warnings: string[] = [];\n\tconst retarget = (group: AfterInsertGroup, line: number): void => {\n\t\tout ??= [...edits];\n\t\tfor (const idx of group.members) {\n\t\t\tconst edit = out[idx] as InsertEdit;\n\t\t\tout[idx] = { ...edit, cursor: { kind: \"after_anchor\", anchor: { line } } };\n\t\t}\n\t};\n\tfor (const group of groups.values()) {\n\t\tconst target = bodyTargetIndent(group.members.map((idx) => (edits[idx] as InsertEdit).text));\n\t\tif (target === undefined) continue;\n\t\tconst outward = resolveShiftedLanding(group, target, fileLines, targetedLines);\n\t\tif (outward !== undefined) {\n\t\t\tretarget(group, outward.line);\n\t\t\twarnings.push(afterInsertLandingShiftWarning(group.anchor, outward.line, outward.crossed));\n\t\t\tcontinue;\n\t\t}\n\t\tif (group.blockStart === undefined) continue;\n\t\tconst inward = resolveInwardLanding(group, target, group.blockStart, fileLines, targetedLines);\n\t\tif (inward === undefined) continue;\n\t\tretarget(group, inward);\n\t\twarnings.push(blockInsertLandingShiftWarning(group.blockStart, group.anchor, inward));\n\t}\n\treturn { edits: out ?? edits, warnings };\n}\n\n/**\n * Apply a parsed list of edits to a text body. Pure function — no I/O.\n *\n * Returns the post-edit text and the first changed line number (1-indexed).\n * Throws if an anchor is out of bounds.\n */\nexport function applyEdits(text: string, edits: readonly Edit[]): ApplyResult {\n\tif (edits.length === 0) return { text, firstChangedLine: undefined };\n\n\t// Block edits are deferred until `resolveBlockEdits` expands them into\n\t// concrete inserts + deletes. Reaching the applier with one still present\n\t// is an internal wiring bug, not authored-input error.\n\tfor (const edit of edits) {\n\t\tif (edit.kind === \"block\") throw new Error(UNRESOLVED_BLOCK_INTERNAL);\n\t}\n\tconst appliedEdits = edits as readonly AppliedEdit[];\n\n\tconst fileLines = text.split(\"\\n\");\n\tconst lineOrigins: LineOrigin[] = fileLines.map(() => \"original\");\n\n\tlet firstChangedLine: number | undefined;\n\tconst trackFirstChanged = (line: number) => {\n\t\tif (firstChangedLine === undefined || line < firstChangedLine) firstChangedLine = line;\n\t};\n\n\tconst targetEdits = dropTrailingPhantomDeletes(\n\t\tappliedEdits.map((edit, index) => cloneAppliedEdit(edit, index)),\n\t\tfileLines,\n\t);\n\tvalidateLineBounds(targetEdits, fileLines);\n\tconst { edits: repaired, warnings: boundaryWarnings } = repairReplacementBoundaries(targetEdits, fileLines);\n\tconst { edits: landed, warnings: landingWarnings } = repairAfterInsertLandings(repaired, fileLines);\n\tconst warnings = [...boundaryWarnings, ...landingWarnings];\n\n\t// Partition edits into bof, eof, and anchor-targeted buckets.\n\tconst bofLines: string[] = [];\n\tconst eofLines: string[] = [];\n\tconst anchorEdits: IndexedEdit[] = [];\n\tlanded.forEach((edit, idx) => {\n\t\tif (edit.kind === \"insert\" && edit.cursor.kind === \"bof\") {\n\t\t\tbofLines.push(edit.text);\n\t\t} else if (edit.kind === \"insert\" && edit.cursor.kind === \"eof\") {\n\t\t\teofLines.push(edit.text);\n\t\t} else {\n\t\t\tanchorEdits.push({ edit, idx });\n\t\t}\n\t});\n\n\t// Apply per-line buckets bottom-up so earlier indices stay valid.\n\tconst byLine = bucketAnchorEditsByLine(anchorEdits);\n\tfor (const line of [...byLine.keys()].sort((a, b) => b - a)) {\n\t\tconst bucket = byLine.get(line);\n\t\tif (!bucket) continue;\n\t\tbucket.sort((a, b) => a.idx - b.idx);\n\n\t\tconst idx = line - 1;\n\t\tconst currentLine = fileLines[idx] ?? \"\";\n\t\tconst beforeInsertLines: string[] = [];\n\t\tconst afterInsertLines: string[] = [];\n\t\tconst replacementLines: string[] = [];\n\t\tlet deleteLine = false;\n\n\t\tfor (const { edit } of bucket) {\n\t\t\tif (isReplacementInsert(edit)) {\n\t\t\t\treplacementLines.push(edit.text);\n\t\t\t} else if (edit.kind === \"insert\" && edit.cursor.kind === \"after_anchor\") {\n\t\t\t\tafterInsertLines.push(edit.text);\n\t\t\t} else if (edit.kind === \"insert\") {\n\t\t\t\tbeforeInsertLines.push(edit.text);\n\t\t\t} else if (edit.kind === \"delete\") {\n\t\t\t\tdeleteLine = true;\n\t\t\t}\n\t\t}\n\t\tif (\n\t\t\tbeforeInsertLines.length === 0 &&\n\t\t\treplacementLines.length === 0 &&\n\t\t\tafterInsertLines.length === 0 &&\n\t\t\t!deleteLine\n\t\t)\n\t\t\tcontinue;\n\n\t\tconst replacement = deleteLine\n\t\t\t? [...beforeInsertLines, ...replacementLines, ...afterInsertLines]\n\t\t\t: [...beforeInsertLines, ...replacementLines, currentLine, ...afterInsertLines];\n\t\tconst origins: LineOrigin[] = [];\n\t\tfor (let i = 0; i < beforeInsertLines.length; i++) origins.push(\"insert\");\n\t\tfor (let i = 0; i < replacementLines.length; i++) origins.push(deleteLine ? \"replacement\" : \"insert\");\n\t\tif (!deleteLine) origins.push(lineOrigins[idx] ?? \"original\");\n\t\tfor (let i = 0; i < afterInsertLines.length; i++) origins.push(\"insert\");\n\n\t\tfileLines.splice(idx, 1, ...replacement);\n\t\tlineOrigins.splice(idx, 1, ...origins);\n\t\ttrackFirstChanged(line);\n\t}\n\n\tif (bofLines.length > 0) {\n\t\tinsertAtStart(fileLines, lineOrigins, bofLines);\n\t\ttrackFirstChanged(1);\n\t}\n\tconst eofChangedLine = insertAtEnd(fileLines, lineOrigins, eofLines);\n\tif (eofChangedLine !== undefined) trackFirstChanged(eofChangedLine);\n\n\treturn {\n\t\ttext: fileLines.join(\"\\n\"),\n\t\tfirstChangedLine,\n\t\t...(warnings.length > 0 ? { warnings } : {}),\n\t};\n}\n"]}
@@ -18,7 +18,7 @@ import { STRUCTURAL_CLOSER_RE } from "./apply.js";
18
18
  import { BLOCK_RESOLVER_UNAVAILABLE, blockUnresolvedMessage, insertAfterBlockCloserLoweredWarning, insertAfterBlockUnresolvedLoweredWarning, } from "./messages.js";
19
19
  /** True when at least one edit is an unresolved deferred block edit. */
20
20
  export function hasBlockEdit(edits) {
21
- return edits.some(edit => edit.kind === "block");
21
+ return edits.some((edit) => edit.kind === "block");
22
22
  }
23
23
  /**
24
24
  * Resolve every deferred block edit in `edits` against `text` (parsed as the