@bastani/atomic 0.9.10 → 0.9.11-alpha.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2339) hide show
  1. package/CHANGELOG.md +255 -0
  2. package/README.md +15 -10
  3. package/dist/builtin/intercom/CHANGELOG.md +6 -0
  4. package/dist/builtin/intercom/package.json +4 -4
  5. package/dist/builtin/mcp/CHANGELOG.md +18 -0
  6. package/dist/builtin/mcp/README.md +3 -3
  7. package/dist/builtin/mcp/cli.js +0 -1
  8. package/dist/builtin/mcp/commands.ts +7 -3
  9. package/dist/builtin/mcp/config.ts +0 -2
  10. package/dist/builtin/mcp/package.json +6 -6
  11. package/dist/builtin/mcp/sampling-handler.ts +1 -5
  12. package/dist/builtin/mcp/types.ts +0 -1
  13. package/dist/builtin/subagents/CHANGELOG.md +40 -0
  14. package/dist/builtin/subagents/README.md +10 -1
  15. package/dist/builtin/subagents/agents/code-simplifier.md +48 -103
  16. package/dist/builtin/subagents/agents/codebase-analyzer.md +28 -131
  17. package/dist/builtin/subagents/agents/codebase-locator.md +25 -84
  18. package/dist/builtin/subagents/agents/codebase-online-researcher.md +61 -260
  19. package/dist/builtin/subagents/agents/codebase-pattern-finder.md +30 -208
  20. package/dist/builtin/subagents/agents/codebase-research-analyzer.md +29 -151
  21. package/dist/builtin/subagents/agents/codebase-research-locator.md +22 -119
  22. package/dist/builtin/subagents/agents/debugger.md +29 -65
  23. package/dist/builtin/subagents/agents/worker.md +24 -31
  24. package/dist/builtin/subagents/package.json +5 -5
  25. package/dist/builtin/subagents/prompts/gather-context-and-clarify.md +18 -11
  26. package/dist/builtin/subagents/prompts/parallel-cleanup.md +34 -33
  27. package/dist/builtin/subagents/prompts/parallel-context-build.md +22 -36
  28. package/dist/builtin/subagents/prompts/parallel-handoff-plan.md +20 -52
  29. package/dist/builtin/subagents/prompts/parallel-research.md +17 -41
  30. package/dist/builtin/subagents/prompts/parallel-review.md +23 -28
  31. package/dist/builtin/subagents/prompts/review-loop.md +18 -27
  32. package/dist/builtin/subagents/skills/subagent/SKILL.md +6 -6
  33. package/dist/builtin/subagents/src/agents/agent-discovery.ts +26 -15
  34. package/dist/builtin/subagents/src/agents/agent-loaders.ts +48 -34
  35. package/dist/builtin/subagents/src/agents/agent-management-helpers.ts +80 -31
  36. package/dist/builtin/subagents/src/agents/agent-management.ts +194 -55
  37. package/dist/builtin/subagents/src/agents/agent-overrides.ts +85 -32
  38. package/dist/builtin/subagents/src/agents/agent-paths.ts +4 -1
  39. package/dist/builtin/subagents/src/agents/agent-selection.ts +1 -1
  40. package/dist/builtin/subagents/src/agents/agent-serializer.ts +1 -4
  41. package/dist/builtin/subagents/src/agents/agents.ts +9 -9
  42. package/dist/builtin/subagents/src/agents/chain-serializer.ts +9 -5
  43. package/dist/builtin/subagents/src/agents/identity.ts +12 -3
  44. package/dist/builtin/subagents/src/agents/skills-paths.ts +64 -24
  45. package/dist/builtin/subagents/src/agents/skills.ts +29 -26
  46. package/dist/builtin/subagents/src/extension/doctor.ts +31 -20
  47. package/dist/builtin/subagents/src/extension/fanout-child.ts +27 -12
  48. package/dist/builtin/subagents/src/extension/index.ts +119 -43
  49. package/dist/builtin/subagents/src/extension/prompt-guidance.ts +4 -2
  50. package/dist/builtin/subagents/src/extension/schemas.ts +304 -177
  51. package/dist/builtin/subagents/src/extension/startup-maintenance.ts +137 -73
  52. package/dist/builtin/subagents/src/intercom/intercom-bridge.ts +49 -21
  53. package/dist/builtin/subagents/src/intercom/result-intercom.ts +76 -38
  54. package/dist/builtin/subagents/src/runs/background/async-event-journal.ts +12 -6
  55. package/dist/builtin/subagents/src/runs/background/async-execution-chain.ts +183 -57
  56. package/dist/builtin/subagents/src/runs/background/async-execution-common.ts +15 -18
  57. package/dist/builtin/subagents/src/runs/background/async-execution-single.ts +67 -26
  58. package/dist/builtin/subagents/src/runs/background/async-execution-types.ts +8 -8
  59. package/dist/builtin/subagents/src/runs/background/async-execution.ts +1 -1
  60. package/dist/builtin/subagents/src/runs/background/async-job-tracker.ts +86 -32
  61. package/dist/builtin/subagents/src/runs/background/async-resume.ts +93 -36
  62. package/dist/builtin/subagents/src/runs/background/async-status.ts +82 -27
  63. package/dist/builtin/subagents/src/runs/background/completion-claims.ts +12 -5
  64. package/dist/builtin/subagents/src/runs/background/completion-dedupe.ts +3 -1
  65. package/dist/builtin/subagents/src/runs/background/completion-notification.ts +3 -1
  66. package/dist/builtin/subagents/src/runs/background/notify.ts +38 -18
  67. package/dist/builtin/subagents/src/runs/background/parallel-groups.ts +28 -14
  68. package/dist/builtin/subagents/src/runs/background/result-delivery-processor.ts +147 -79
  69. package/dist/builtin/subagents/src/runs/background/result-file-claims.ts +20 -5
  70. package/dist/builtin/subagents/src/runs/background/result-quarantine.ts +7 -2
  71. package/dist/builtin/subagents/src/runs/background/result-status.ts +11 -5
  72. package/dist/builtin/subagents/src/runs/background/result-watcher-data.ts +18 -5
  73. package/dist/builtin/subagents/src/runs/background/result-watcher.ts +104 -35
  74. package/dist/builtin/subagents/src/runs/background/run-id-resolver.ts +28 -7
  75. package/dist/builtin/subagents/src/runs/background/run-status.ts +120 -32
  76. package/dist/builtin/subagents/src/runs/background/stale-run-reconciler.ts +98 -39
  77. package/dist/builtin/subagents/src/runs/background/subagent-runner-dynamic.ts +185 -37
  78. package/dist/builtin/subagents/src/runs/background/subagent-runner-finalize.ts +23 -9
  79. package/dist/builtin/subagents/src/runs/background/subagent-runner-output.ts +6 -2
  80. package/dist/builtin/subagents/src/runs/background/subagent-runner-parallel-helpers.ts +34 -18
  81. package/dist/builtin/subagents/src/runs/background/subagent-runner-parallel.ts +175 -26
  82. package/dist/builtin/subagents/src/runs/background/subagent-runner-sequential.ts +68 -23
  83. package/dist/builtin/subagents/src/runs/background/subagent-runner-state.ts +200 -49
  84. package/dist/builtin/subagents/src/runs/background/subagent-runner-step.ts +82 -49
  85. package/dist/builtin/subagents/src/runs/background/subagent-runner-streaming.ts +33 -11
  86. package/dist/builtin/subagents/src/runs/background/subagent-runner-types.ts +16 -6
  87. package/dist/builtin/subagents/src/runs/background/subagent-runner-utils.ts +2 -3
  88. package/dist/builtin/subagents/src/runs/background/subagent-runner.ts +11 -8
  89. package/dist/builtin/subagents/src/runs/foreground/chain-execution-details.ts +5 -2
  90. package/dist/builtin/subagents/src/runs/foreground/chain-execution-dynamic-step.ts +115 -31
  91. package/dist/builtin/subagents/src/runs/foreground/chain-execution-parallel-runner.ts +71 -54
  92. package/dist/builtin/subagents/src/runs/foreground/chain-execution-parallel-step.ts +104 -37
  93. package/dist/builtin/subagents/src/runs/foreground/chain-execution-sequential-step.ts +102 -61
  94. package/dist/builtin/subagents/src/runs/foreground/chain-execution-types.ts +24 -10
  95. package/dist/builtin/subagents/src/runs/foreground/chain-execution.ts +9 -6
  96. package/dist/builtin/subagents/src/runs/foreground/detached-cleanup-barrier.ts +22 -22
  97. package/dist/builtin/subagents/src/runs/foreground/execution-attempt-control.ts +45 -40
  98. package/dist/builtin/subagents/src/runs/foreground/execution-attempt-finalize.ts +6 -5
  99. package/dist/builtin/subagents/src/runs/foreground/execution-attempt.ts +118 -43
  100. package/dist/builtin/subagents/src/runs/foreground/execution-detach-reservations.ts +17 -7
  101. package/dist/builtin/subagents/src/runs/foreground/execution-detach-route.ts +5 -3
  102. package/dist/builtin/subagents/src/runs/foreground/execution-intercom-detach.ts +39 -35
  103. package/dist/builtin/subagents/src/runs/foreground/execution-run-sync.ts +81 -42
  104. package/dist/builtin/subagents/src/runs/foreground/execution-structured-retries.ts +27 -21
  105. package/dist/builtin/subagents/src/runs/foreground/execution-updates.ts +2 -5
  106. package/dist/builtin/subagents/src/runs/foreground/execution-utils.ts +9 -4
  107. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-async.ts +69 -25
  108. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-chain.ts +36 -19
  109. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-context.ts +95 -62
  110. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-input.ts +30 -9
  111. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-parallel-task.ts +106 -96
  112. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-parallel.ts +68 -36
  113. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-resume.ts +262 -83
  114. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-runtime.ts +6 -1
  115. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-single.ts +67 -41
  116. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-status.ts +129 -44
  117. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-types.ts +20 -3
  118. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-worktree.ts +8 -6
  119. package/dist/builtin/subagents/src/runs/foreground/subagent-executor.ts +65 -47
  120. package/dist/builtin/subagents/src/runs/shared/chain-outputs.ts +37 -12
  121. package/dist/builtin/subagents/src/runs/shared/dynamic-fanout.ts +120 -34
  122. package/dist/builtin/subagents/src/runs/shared/final-drain.ts +12 -7
  123. package/dist/builtin/subagents/src/runs/shared/intercom-group.ts +3 -2
  124. package/dist/builtin/subagents/src/runs/shared/long-running-guard.ts +8 -3
  125. package/dist/builtin/subagents/src/runs/shared/mcp-direct-tool-allowlist.ts +42 -20
  126. package/dist/builtin/subagents/src/runs/shared/model-candidate-filter.ts +8 -4
  127. package/dist/builtin/subagents/src/runs/shared/model-fallback.ts +103 -38
  128. package/dist/builtin/subagents/src/runs/shared/nested-events-control.ts +30 -20
  129. package/dist/builtin/subagents/src/runs/shared/nested-events-core.ts +45 -20
  130. package/dist/builtin/subagents/src/runs/shared/nested-events-projection.ts +57 -23
  131. package/dist/builtin/subagents/src/runs/shared/nested-events-registry.ts +77 -29
  132. package/dist/builtin/subagents/src/runs/shared/nested-events-sanitize.ts +99 -42
  133. package/dist/builtin/subagents/src/runs/shared/nested-events.ts +32 -26
  134. package/dist/builtin/subagents/src/runs/shared/nested-path.ts +22 -17
  135. package/dist/builtin/subagents/src/runs/shared/nested-render.ts +31 -10
  136. package/dist/builtin/subagents/src/runs/shared/parallel-utils.ts +10 -8
  137. package/dist/builtin/subagents/src/runs/shared/pi-args.ts +59 -33
  138. package/dist/builtin/subagents/src/runs/shared/pi-spawn.ts +17 -13
  139. package/dist/builtin/subagents/src/runs/shared/run-history.ts +13 -6
  140. package/dist/builtin/subagents/src/runs/shared/single-output.ts +11 -6
  141. package/dist/builtin/subagents/src/runs/shared/spawn-env.ts +21 -0
  142. package/dist/builtin/subagents/src/runs/shared/structured-output.ts +33 -19
  143. package/dist/builtin/subagents/src/runs/shared/subagent-control.ts +59 -48
  144. package/dist/builtin/subagents/src/runs/shared/subagent-prompt-runtime.ts +18 -11
  145. package/dist/builtin/subagents/src/runs/shared/workflow-graph.ts +41 -11
  146. package/dist/builtin/subagents/src/runs/shared/worktree-post-create.ts +46 -10
  147. package/dist/builtin/subagents/src/runs/shared/worktree-root.ts +21 -5
  148. package/dist/builtin/subagents/src/runs/shared/worktree.ts +89 -34
  149. package/dist/builtin/subagents/src/shared/artifacts.ts +137 -7
  150. package/dist/builtin/subagents/src/shared/event-jsonl-writer.ts +49 -13
  151. package/dist/builtin/subagents/src/shared/fast-mode.ts +13 -6
  152. package/dist/builtin/subagents/src/shared/fork-context.ts +7 -4
  153. package/dist/builtin/subagents/src/shared/formatters.ts +14 -9
  154. package/dist/builtin/subagents/src/shared/jsonl-writer.ts +2 -1
  155. package/dist/builtin/subagents/src/shared/model-info.ts +10 -3
  156. package/dist/builtin/subagents/src/shared/post-exit-stdio-guard.ts +7 -6
  157. package/dist/builtin/subagents/src/shared/session-tokens.ts +2 -1
  158. package/dist/builtin/subagents/src/shared/settings.ts +43 -43
  159. package/dist/builtin/subagents/src/shared/status-format.ts +10 -2
  160. package/dist/builtin/subagents/src/shared/types-async.ts +22 -19
  161. package/dist/builtin/subagents/src/shared/types-config.ts +1 -1
  162. package/dist/builtin/subagents/src/shared/types-depth.ts +23 -11
  163. package/dist/builtin/subagents/src/shared/types-results.ts +49 -6
  164. package/dist/builtin/subagents/src/shared/types-runtime.ts +16 -17
  165. package/dist/builtin/subagents/src/shared/types.ts +2 -2
  166. package/dist/builtin/subagents/src/shared/utils.ts +34 -20
  167. package/dist/builtin/subagents/src/slash/prompt-template-bridge.ts +44 -47
  168. package/dist/builtin/subagents/src/slash/saved-chain-mapping.ts +5 -7
  169. package/dist/builtin/subagents/src/slash/slash-bridge.ts +3 -3
  170. package/dist/builtin/subagents/src/slash/slash-commands.ts +78 -52
  171. package/dist/builtin/subagents/src/slash/slash-live-state.ts +59 -32
  172. package/dist/builtin/subagents/src/tui/render-chain-graph.ts +120 -32
  173. package/dist/builtin/subagents/src/tui/render-event-formatting.ts +85 -22
  174. package/dist/builtin/subagents/src/tui/render-helpers.ts +16 -6
  175. package/dist/builtin/subagents/src/tui/render-layout.ts +8 -3
  176. package/dist/builtin/subagents/src/tui/render-result-compact.ts +125 -43
  177. package/dist/builtin/subagents/src/tui/render-result.ts +128 -85
  178. package/dist/builtin/subagents/src/tui/render-stable-output.ts +17 -13
  179. package/dist/builtin/subagents/src/tui/render-status-progress.ts +52 -20
  180. package/dist/builtin/subagents/src/tui/render-widget-graph.ts +130 -28
  181. package/dist/builtin/subagents/src/tui/render-widget.ts +54 -27
  182. package/dist/builtin/subagents/src/tui/render.ts +10 -3
  183. package/dist/builtin/web-access/CHANGELOG.md +6 -0
  184. package/dist/builtin/web-access/package.json +2 -2
  185. package/dist/builtin/workflows/CHANGELOG.md +127 -0
  186. package/dist/builtin/workflows/README.md +83 -70
  187. package/dist/builtin/workflows/ambient.d.ts +0 -5
  188. package/dist/builtin/workflows/builtin/adversarial-verification-prompts.ts +7 -4
  189. package/dist/builtin/workflows/builtin/adversarial-verification-runner.ts +1 -1
  190. package/dist/builtin/workflows/builtin/adversarial-verification.ts +2 -1
  191. package/dist/builtin/workflows/builtin/classify-and-act-prompts.ts +5 -2
  192. package/dist/builtin/workflows/builtin/classify-and-act-runner.ts +5 -7
  193. package/dist/builtin/workflows/builtin/classify-and-act.ts +3 -2
  194. package/dist/builtin/workflows/builtin/fan-out-and-synthesize-prompts.ts +6 -3
  195. package/dist/builtin/workflows/builtin/fan-out-and-synthesize-runner.ts +5 -5
  196. package/dist/builtin/workflows/builtin/fan-out-and-synthesize.ts +3 -2
  197. package/dist/builtin/workflows/builtin/generate-and-filter-prompts.ts +7 -4
  198. package/dist/builtin/workflows/builtin/generate-and-filter-runner.ts +6 -3
  199. package/dist/builtin/workflows/builtin/generate-and-filter.ts +3 -2
  200. package/dist/builtin/workflows/builtin/goal-artifacts.ts +1 -1
  201. package/dist/builtin/workflows/builtin/goal-models.ts +39 -39
  202. package/dist/builtin/workflows/builtin/goal-orchestrator-prompts.ts +94 -0
  203. package/dist/builtin/workflows/builtin/goal-prompts.ts +70 -285
  204. package/dist/builtin/workflows/builtin/goal-reducer.ts +1 -1
  205. package/dist/builtin/workflows/builtin/goal-runner.ts +72 -116
  206. package/dist/builtin/workflows/builtin/goal.ts +12 -11
  207. package/dist/builtin/workflows/builtin/index.d.ts +17 -112
  208. package/dist/builtin/workflows/builtin/index.ts +1 -2
  209. package/dist/builtin/workflows/builtin/loop-until-done-prompts.ts +20 -12
  210. package/dist/builtin/workflows/builtin/loop-until-done-runner.ts +3 -0
  211. package/dist/builtin/workflows/builtin/loop-until-done.ts +3 -2
  212. package/dist/builtin/workflows/builtin/open-claude-design-phases.ts +149 -88
  213. package/dist/builtin/workflows/builtin/open-claude-design-runner.ts +102 -78
  214. package/dist/builtin/workflows/builtin/open-claude-design-setup.ts +164 -56
  215. package/dist/builtin/workflows/builtin/open-claude-design-utils.ts +16 -21
  216. package/dist/builtin/workflows/builtin/open-claude-design.ts +2 -1
  217. package/dist/builtin/workflows/builtin/ralph-core.ts +61 -57
  218. package/dist/builtin/workflows/builtin/ralph-forked-prompts.ts +41 -45
  219. package/dist/builtin/workflows/builtin/ralph-models.ts +37 -47
  220. package/dist/builtin/workflows/builtin/ralph-reviewer-prompt.ts +37 -117
  221. package/dist/builtin/workflows/builtin/ralph-runner.ts +83 -108
  222. package/dist/builtin/workflows/builtin/ralph.ts +6 -5
  223. package/dist/builtin/workflows/builtin/shared-prompts.ts +117 -70
  224. package/dist/builtin/workflows/builtin/steering-context.ts +51 -0
  225. package/dist/builtin/workflows/builtin/tournament-prompts.ts +21 -12
  226. package/dist/builtin/workflows/builtin/tournament-runner.ts +3 -0
  227. package/dist/builtin/workflows/builtin/tournament.ts +3 -2
  228. package/dist/builtin/workflows/package.json +4 -4
  229. package/dist/builtin/workflows/skills/create-spec/SKILL.md +1 -1
  230. package/dist/builtin/workflows/skills/impeccable/SKILL.md +33 -129
  231. package/dist/builtin/workflows/skills/impeccable/agents/impeccable_asset_producer.toml +11 -3
  232. package/dist/builtin/workflows/skills/impeccable/agents/impeccable_documenter.toml +26 -0
  233. package/dist/builtin/workflows/skills/impeccable/agents/impeccable_finish_reviewer.toml +35 -0
  234. package/dist/builtin/workflows/skills/impeccable/reference/android.md +1 -1
  235. package/dist/builtin/workflows/skills/impeccable/reference/animate.md +72 -189
  236. package/dist/builtin/workflows/skills/impeccable/reference/audit.md +10 -9
  237. package/dist/builtin/workflows/skills/impeccable/reference/audit.native.md +2 -2
  238. package/dist/builtin/workflows/skills/impeccable/reference/bolder.md +19 -108
  239. package/dist/builtin/workflows/skills/impeccable/reference/clarify.md +59 -253
  240. package/dist/builtin/workflows/skills/impeccable/reference/colorize.md +51 -222
  241. package/dist/builtin/workflows/skills/impeccable/reference/craft-floor.md +45 -0
  242. package/dist/builtin/workflows/skills/impeccable/reference/craft.md +3 -121
  243. package/dist/builtin/workflows/skills/impeccable/reference/critique.md +28 -20
  244. package/dist/builtin/workflows/skills/impeccable/reference/degraded/asset-producer.md +97 -0
  245. package/dist/builtin/workflows/skills/impeccable/reference/degraded/documenter.md +23 -0
  246. package/dist/builtin/workflows/skills/impeccable/reference/degraded/finish-reviewer.md +32 -0
  247. package/dist/builtin/workflows/skills/impeccable/reference/degraded/manual-edit-applier.md +92 -0
  248. package/dist/builtin/workflows/skills/impeccable/reference/delight.md +47 -279
  249. package/dist/builtin/workflows/skills/impeccable/reference/distill.md +2 -2
  250. package/dist/builtin/workflows/skills/impeccable/reference/doctor.md +53 -0
  251. package/dist/builtin/workflows/skills/impeccable/reference/document.md +60 -73
  252. package/dist/builtin/workflows/skills/impeccable/reference/harden.md +1 -12
  253. package/dist/builtin/workflows/skills/impeccable/reference/hooks.md +23 -12
  254. package/dist/builtin/workflows/skills/impeccable/reference/init.md +64 -163
  255. package/dist/builtin/workflows/skills/impeccable/reference/ios.md +1 -1
  256. package/dist/builtin/workflows/skills/impeccable/reference/layout.md +52 -153
  257. package/dist/builtin/workflows/skills/impeccable/reference/live.md +47 -36
  258. package/dist/builtin/workflows/skills/impeccable/reference/new-work.md +105 -0
  259. package/dist/builtin/workflows/skills/impeccable/reference/{product.md → operate.md} +6 -5
  260. package/dist/builtin/workflows/skills/impeccable/reference/optimize.md +4 -4
  261. package/dist/builtin/workflows/skills/impeccable/reference/overdrive.md +1 -4
  262. package/dist/builtin/workflows/skills/impeccable/reference/polish.md +68 -212
  263. package/dist/builtin/workflows/skills/impeccable/reference/quieter.md +3 -3
  264. package/dist/builtin/workflows/skills/impeccable/reference/routing.md +18 -0
  265. package/dist/builtin/workflows/skills/impeccable/reference/shape.md +38 -144
  266. package/dist/builtin/workflows/skills/impeccable/reference/typeset.md +48 -269
  267. package/dist/builtin/workflows/skills/impeccable/reference/visualize.md +38 -0
  268. package/dist/builtin/workflows/skills/impeccable/scripts/command-metadata.json +1 -1
  269. package/dist/builtin/workflows/skills/impeccable/scripts/concept-seed.mjs +584 -0
  270. package/dist/builtin/workflows/skills/impeccable/scripts/context-signals.mjs +117 -9
  271. package/dist/builtin/workflows/skills/impeccable/scripts/context.mjs +486 -59
  272. package/dist/builtin/workflows/skills/impeccable/scripts/critique-storage.mjs +16 -45
  273. package/dist/builtin/workflows/skills/impeccable/scripts/detector/browser/injected/index.mjs +96 -10
  274. package/dist/builtin/workflows/skills/impeccable/scripts/detector/cli/main.mjs +143 -26
  275. package/dist/builtin/workflows/skills/impeccable/scripts/detector/design-system.mjs +181 -12
  276. package/dist/builtin/workflows/skills/impeccable/scripts/detector/detect-antipatterns-browser.js +3187 -182
  277. package/dist/builtin/workflows/skills/impeccable/scripts/detector/engines/browser/detect-url.mjs +102 -7
  278. package/dist/builtin/workflows/skills/impeccable/scripts/detector/engines/regex/detect-text.mjs +282 -70
  279. package/dist/builtin/workflows/skills/impeccable/scripts/detector/engines/static-html/css-cascade.mjs +183 -15
  280. package/dist/builtin/workflows/skills/impeccable/scripts/detector/engines/static-html/detect-html.mjs +22 -7
  281. package/dist/builtin/workflows/skills/impeccable/scripts/detector/findings.mjs +7 -1
  282. package/dist/builtin/workflows/skills/impeccable/scripts/detector/node/file-system.mjs +16 -2
  283. package/dist/builtin/workflows/skills/impeccable/scripts/detector/registry/antipatterns.mjs +155 -42
  284. package/dist/builtin/workflows/skills/impeccable/scripts/detector/rules/checks.mjs +2988 -155
  285. package/dist/builtin/workflows/skills/impeccable/scripts/detector/shared/constants.mjs +11 -0
  286. package/dist/builtin/workflows/skills/impeccable/scripts/doctor.mjs +336 -0
  287. package/dist/builtin/workflows/skills/impeccable/scripts/generate-image.mjs +232 -0
  288. package/dist/builtin/workflows/skills/impeccable/scripts/hook-admin.mjs +92 -30
  289. package/dist/builtin/workflows/skills/impeccable/scripts/hook-lib.mjs +414 -120
  290. package/dist/builtin/workflows/skills/impeccable/scripts/hook.mjs +25 -8
  291. package/dist/builtin/workflows/skills/impeccable/scripts/lib/artifact-schema.mjs +93 -0
  292. package/dist/builtin/workflows/skills/impeccable/scripts/lib/composition-catalog.mjs +165 -0
  293. package/dist/builtin/workflows/skills/impeccable/scripts/lib/concept-catalog.mjs +329 -0
  294. package/dist/builtin/workflows/skills/impeccable/scripts/lib/impeccable-config.mjs +20 -5
  295. package/dist/builtin/workflows/skills/impeccable/scripts/lib/impeccable-paths.mjs +16 -8
  296. package/dist/builtin/workflows/skills/impeccable/scripts/lib/provider.mjs +1 -0
  297. package/dist/builtin/workflows/skills/impeccable/scripts/lib/staleness-deep.mjs +455 -0
  298. package/dist/builtin/workflows/skills/impeccable/scripts/lib/staleness-notice.mjs +169 -0
  299. package/dist/builtin/workflows/skills/impeccable/scripts/lib/staleness.mjs +457 -0
  300. package/dist/builtin/workflows/skills/impeccable/scripts/lib/surface-briefs.mjs +151 -0
  301. package/dist/builtin/workflows/skills/impeccable/scripts/lib/target-slug.mjs +33 -0
  302. package/dist/builtin/workflows/skills/impeccable/scripts/lib/template-extensions.mjs +146 -0
  303. package/dist/builtin/workflows/skills/impeccable/scripts/live/completion.mjs +10 -1
  304. package/dist/builtin/workflows/skills/impeccable/scripts/live/event-validation.mjs +15 -0
  305. package/dist/builtin/workflows/skills/impeccable/scripts/live/generation-preflight.mjs +149 -0
  306. package/dist/builtin/workflows/skills/impeccable/scripts/live/poll-lanes.mjs +14 -0
  307. package/dist/builtin/workflows/skills/impeccable/scripts/live/session-store.mjs +109 -32
  308. package/dist/builtin/workflows/skills/impeccable/scripts/live/source-lock.mjs +105 -0
  309. package/dist/builtin/workflows/skills/impeccable/scripts/live/source-search.mjs +105 -0
  310. package/dist/builtin/workflows/skills/impeccable/scripts/live/sveltekit-adapter.mjs +8 -6
  311. package/dist/builtin/workflows/skills/impeccable/scripts/live/tanstack-adapter.mjs +280 -0
  312. package/dist/builtin/workflows/skills/impeccable/scripts/live-accept.mjs +212 -69
  313. package/dist/builtin/workflows/skills/impeccable/scripts/live-browser-dom.js +5 -1
  314. package/dist/builtin/workflows/skills/impeccable/scripts/live-browser-session.js +7 -1
  315. package/dist/builtin/workflows/skills/impeccable/scripts/live-browser.js +565 -115
  316. package/dist/builtin/workflows/skills/impeccable/scripts/live-commit-manual-edits.mjs +3 -0
  317. package/dist/builtin/workflows/skills/impeccable/scripts/live-inject.mjs +198 -14
  318. package/dist/builtin/workflows/skills/impeccable/scripts/live-insert.mjs +24 -6
  319. package/dist/builtin/workflows/skills/impeccable/scripts/live-manual-edit-evidence.mjs +11 -3
  320. package/dist/builtin/workflows/skills/impeccable/scripts/live-poll.mjs +44 -14
  321. package/dist/builtin/workflows/skills/impeccable/scripts/live-server.mjs +405 -34
  322. package/dist/builtin/workflows/skills/impeccable/scripts/live-status.mjs +9 -5
  323. package/dist/builtin/workflows/skills/impeccable/scripts/live-wrap.mjs +81 -67
  324. package/dist/builtin/workflows/skills/impeccable/scripts/live.mjs +7 -2
  325. package/dist/builtin/workflows/skills/impeccable/scripts/palette.mjs +76 -81
  326. package/dist/builtin/workflows/skills/impeccable/scripts/pin.mjs +4 -4
  327. package/dist/builtin/workflows/skills/impeccable/scripts/serve-question.mjs +890 -0
  328. package/dist/builtin/workflows/skills/impeccable/scripts/surface-brief.mjs +74 -0
  329. package/dist/builtin/workflows/skills/prompt-engineer/SKILL.md +57 -252
  330. package/dist/builtin/workflows/skills/prompt-engineer/references/advanced_patterns.md +70 -226
  331. package/dist/builtin/workflows/skills/prompt-engineer/references/core_prompting.md +64 -103
  332. package/dist/builtin/workflows/skills/prompt-engineer/references/quality_improvement.md +81 -155
  333. package/dist/builtin/workflows/src/authoring/typebox-defaults.d.ts +5 -5
  334. package/dist/builtin/workflows/src/authoring/typebox-defaults.ts +160 -197
  335. package/dist/builtin/workflows/src/authoring/workflow.ts +137 -132
  336. package/dist/builtin/workflows/src/authoring.d.ts +7 -3
  337. package/dist/builtin/workflows/src/durable/backend.ts +512 -385
  338. package/dist/builtin/workflows/src/durable/boundary-lifecycle.ts +172 -0
  339. package/dist/builtin/workflows/src/durable/boundary-topology.ts +475 -0
  340. package/dist/builtin/workflows/src/durable/child-invocation.ts +14 -0
  341. package/dist/builtin/workflows/src/durable/child-primitive.ts +115 -74
  342. package/dist/builtin/workflows/src/durable/completed-catalog-stage-groups.ts +290 -0
  343. package/dist/builtin/workflows/src/durable/completed-catalog.ts +419 -189
  344. package/dist/builtin/workflows/src/durable/completed-inspection.ts +118 -105
  345. package/dist/builtin/workflows/src/durable/completed-subtree.ts +35 -0
  346. package/dist/builtin/workflows/src/durable/dbos-backend.ts +484 -414
  347. package/dist/builtin/workflows/src/durable/dbos-embedded-postgres-root.ts +172 -0
  348. package/dist/builtin/workflows/src/durable/dbos-embedded-postgres.ts +183 -137
  349. package/dist/builtin/workflows/src/durable/dbos-envelope.ts +415 -189
  350. package/dist/builtin/workflows/src/durable/dbos-lifecycle.ts +128 -100
  351. package/dist/builtin/workflows/src/durable/dbos-local-postgres.ts +75 -68
  352. package/dist/builtin/workflows/src/durable/dbos-metadata.ts +138 -101
  353. package/dist/builtin/workflows/src/durable/dbos-prompt-reservations.ts +316 -259
  354. package/dist/builtin/workflows/src/durable/dbos-sdk-handle.ts +138 -117
  355. package/dist/builtin/workflows/src/durable/dbos-status-transition.ts +48 -43
  356. package/dist/builtin/workflows/src/durable/dbos-tombstone.ts +14 -14
  357. package/dist/builtin/workflows/src/durable/durable-hash.ts +9 -11
  358. package/dist/builtin/workflows/src/durable/factory.ts +70 -16
  359. package/dist/builtin/workflows/src/durable/format-version.ts +1 -1
  360. package/dist/builtin/workflows/src/durable/index.ts +69 -68
  361. package/dist/builtin/workflows/src/durable/local-command.ts +50 -37
  362. package/dist/builtin/workflows/src/durable/prompt-reservation-state.ts +156 -149
  363. package/dist/builtin/workflows/src/durable/prompt-reservations.ts +16 -16
  364. package/dist/builtin/workflows/src/durable/resume-catalog.ts +11 -11
  365. package/dist/builtin/workflows/src/durable/resume-eligibility.ts +27 -25
  366. package/dist/builtin/workflows/src/durable/resume-runtime.ts +261 -222
  367. package/dist/builtin/workflows/src/durable/retention-policy.ts +31 -30
  368. package/dist/builtin/workflows/src/durable/run-timing.ts +42 -41
  369. package/dist/builtin/workflows/src/durable/scoped-backend.ts +261 -193
  370. package/dist/builtin/workflows/src/durable/stage-primitive.ts +466 -370
  371. package/dist/builtin/workflows/src/durable/stage-topology-validation.ts +247 -0
  372. package/dist/builtin/workflows/src/durable/stage-topology.ts +53 -0
  373. package/dist/builtin/workflows/src/durable/tool-failure-checkpoint.ts +49 -0
  374. package/dist/builtin/workflows/src/durable/tool-outcome.ts +130 -0
  375. package/dist/builtin/workflows/src/durable/tool-primitive.ts +642 -137
  376. package/dist/builtin/workflows/src/durable/types.ts +243 -132
  377. package/dist/builtin/workflows/src/durable/ui-primitive.ts +243 -164
  378. package/dist/builtin/workflows/src/durable/workflow-child-result.ts +61 -0
  379. package/dist/builtin/workflows/src/durable/workflow-status-transition.ts +16 -15
  380. package/dist/builtin/workflows/src/engine/graph-inference.ts +76 -76
  381. package/dist/builtin/workflows/src/engine/options.ts +35 -35
  382. package/dist/builtin/workflows/src/engine/primitives/chain.ts +27 -22
  383. package/dist/builtin/workflows/src/engine/primitives/exit.ts +1 -1
  384. package/dist/builtin/workflows/src/engine/primitives/parallel.ts +64 -52
  385. package/dist/builtin/workflows/src/engine/primitives/task.ts +110 -95
  386. package/dist/builtin/workflows/src/engine/primitives/ui.ts +46 -50
  387. package/dist/builtin/workflows/src/engine/primitives/workflow.ts +194 -151
  388. package/dist/builtin/workflows/src/engine/replay.ts +6 -6
  389. package/dist/builtin/workflows/src/engine/run-durable-admission.ts +50 -0
  390. package/dist/builtin/workflows/src/engine/run-durable-finalize.ts +64 -37
  391. package/dist/builtin/workflows/src/engine/run-durable-stage-session.ts +30 -24
  392. package/dist/builtin/workflows/src/engine/run-durable-topology.ts +288 -0
  393. package/dist/builtin/workflows/src/engine/run-returned-status.ts +60 -57
  394. package/dist/builtin/workflows/src/engine/run-terminal-event.ts +39 -0
  395. package/dist/builtin/workflows/src/engine/run-terminal-failure.ts +53 -0
  396. package/dist/builtin/workflows/src/engine/run-tool-admission-boundary.ts +99 -0
  397. package/dist/builtin/workflows/src/engine/run-tool-control-registry.ts +179 -0
  398. package/dist/builtin/workflows/src/engine/run-tool-execution-tracker.ts +164 -0
  399. package/dist/builtin/workflows/src/engine/run-tool-node-lifecycle.ts +152 -0
  400. package/dist/builtin/workflows/src/engine/run.ts +680 -477
  401. package/dist/builtin/workflows/src/engine/runtime.ts +160 -140
  402. package/dist/builtin/workflows/src/engine/workflow-activity.ts +7 -3
  403. package/dist/builtin/workflows/src/engine/workflow-tool-abort.ts +92 -0
  404. package/dist/builtin/workflows/src/extension/atomic-stage-session.ts +123 -120
  405. package/dist/builtin/workflows/src/extension/background-ui-adapter.ts +108 -112
  406. package/dist/builtin/workflows/src/extension/companions.ts +116 -116
  407. package/dist/builtin/workflows/src/extension/completed-stage-intercom-ask.ts +123 -111
  408. package/dist/builtin/workflows/src/extension/config-file-loader.ts +153 -148
  409. package/dist/builtin/workflows/src/extension/config-loader.ts +264 -283
  410. package/dist/builtin/workflows/src/extension/discovery-loaders.ts +81 -84
  411. package/dist/builtin/workflows/src/extension/discovery.ts +267 -272
  412. package/dist/builtin/workflows/src/extension/dispatcher.ts +214 -217
  413. package/dist/builtin/workflows/src/extension/extension-factory.ts +103 -93
  414. package/dist/builtin/workflows/src/extension/extension-lifecycle.ts +135 -107
  415. package/dist/builtin/workflows/src/extension/extension-runtime-state.ts +414 -409
  416. package/dist/builtin/workflows/src/extension/hil-answer-notifications.ts +270 -261
  417. package/dist/builtin/workflows/src/extension/index.bundle.mjs +74625 -0
  418. package/dist/builtin/workflows/src/extension/index.ts +37 -37
  419. package/dist/builtin/workflows/src/extension/lifecycle-notification-delivery.ts +64 -64
  420. package/dist/builtin/workflows/src/extension/lifecycle-notifications.ts +386 -369
  421. package/dist/builtin/workflows/src/extension/mcp.ts +35 -35
  422. package/dist/builtin/workflows/src/extension/postmortem-deps.ts +31 -35
  423. package/dist/builtin/workflows/src/extension/public-types.ts +162 -185
  424. package/dist/builtin/workflows/src/extension/render-call.ts +85 -84
  425. package/dist/builtin/workflows/src/extension/render-component.ts +9 -11
  426. package/dist/builtin/workflows/src/extension/render-result.ts +453 -348
  427. package/dist/builtin/workflows/src/extension/renderers.ts +35 -35
  428. package/dist/builtin/workflows/src/extension/runtime-active-block-claim.ts +37 -37
  429. package/dist/builtin/workflows/src/extension/runtime-durable-resume.ts +146 -138
  430. package/dist/builtin/workflows/src/extension/runtime.ts +346 -258
  431. package/dist/builtin/workflows/src/extension/status-writer.ts +95 -95
  432. package/dist/builtin/workflows/src/extension/ui-surface.ts +224 -218
  433. package/dist/builtin/workflows/src/extension/wiring.ts +307 -281
  434. package/dist/builtin/workflows/src/extension/workflow-command-completions.ts +109 -108
  435. package/dist/builtin/workflows/src/extension/workflow-command-registration.ts +257 -224
  436. package/dist/builtin/workflows/src/extension/workflow-command-surfaces.ts +84 -83
  437. package/dist/builtin/workflows/src/extension/workflow-command-utils.ts +126 -132
  438. package/dist/builtin/workflows/src/extension/workflow-durable-resume-command.ts +213 -199
  439. package/dist/builtin/workflows/src/extension/workflow-model-catalog.ts +24 -0
  440. package/dist/builtin/workflows/src/extension/workflow-module-loader.ts +110 -95
  441. package/dist/builtin/workflows/src/extension/workflow-policy.ts +7 -9
  442. package/dist/builtin/workflows/src/extension/workflow-ports.ts +30 -34
  443. package/dist/builtin/workflows/src/extension/workflow-prompts.ts +41 -17
  444. package/dist/builtin/workflows/src/extension/workflow-reload-coordinator.ts +46 -46
  445. package/dist/builtin/workflows/src/extension/workflow-reload-report.ts +28 -25
  446. package/dist/builtin/workflows/src/extension/workflow-resume-picker-rows.ts +48 -45
  447. package/dist/builtin/workflows/src/extension/workflow-resume-shadow.ts +28 -31
  448. package/dist/builtin/workflows/src/extension/workflow-run-control-command.ts +539 -453
  449. package/dist/builtin/workflows/src/extension/workflow-schema.ts +149 -91
  450. package/dist/builtin/workflows/src/extension/workflow-stage-results.ts +182 -194
  451. package/dist/builtin/workflows/src/extension/workflow-status-summary.ts +154 -116
  452. package/dist/builtin/workflows/src/extension/workflow-targets.ts +159 -125
  453. package/dist/builtin/workflows/src/extension/workflow-tool-content.ts +204 -216
  454. package/dist/builtin/workflows/src/extension/workflow-tool-control.ts +520 -294
  455. package/dist/builtin/workflows/src/extension/workflow-tool-inspection.ts +146 -150
  456. package/dist/builtin/workflows/src/extension/workflow-tool-registration.ts +43 -46
  457. package/dist/builtin/workflows/src/extension/workflow-tool-send.ts +354 -206
  458. package/dist/builtin/workflows/src/extension/workflow-tool.ts +123 -117
  459. package/dist/builtin/workflows/src/intercom/intercom-bridge.ts +17 -20
  460. package/dist/builtin/workflows/src/intercom/intercom-routing.ts +62 -62
  461. package/dist/builtin/workflows/src/intercom/result-intercom.ts +123 -123
  462. package/dist/builtin/workflows/src/runs/background/cancellation-registry.ts +72 -59
  463. package/dist/builtin/workflows/src/runs/background/durable-resume-transition.ts +45 -45
  464. package/dist/builtin/workflows/src/runs/background/job-tracker.ts +69 -34
  465. package/dist/builtin/workflows/src/runs/background/quit-tool-node.ts +71 -0
  466. package/dist/builtin/workflows/src/runs/background/quit.ts +359 -138
  467. package/dist/builtin/workflows/src/runs/background/resume-acknowledgements.ts +70 -69
  468. package/dist/builtin/workflows/src/runs/background/run-inspect.ts +85 -74
  469. package/dist/builtin/workflows/src/runs/background/runner.ts +122 -121
  470. package/dist/builtin/workflows/src/runs/background/startup-admission.ts +56 -60
  471. package/dist/builtin/workflows/src/runs/background/status.ts +324 -284
  472. package/dist/builtin/workflows/src/runs/background/workflow-lifecycle-aggregate.ts +24 -26
  473. package/dist/builtin/workflows/src/runs/foreground/executor-abort.ts +311 -309
  474. package/dist/builtin/workflows/src/runs/foreground/executor-child-boundary.ts +229 -199
  475. package/dist/builtin/workflows/src/runs/foreground/executor-child-helpers.ts +56 -51
  476. package/dist/builtin/workflows/src/runs/foreground/executor-continuation.ts +168 -152
  477. package/dist/builtin/workflows/src/runs/foreground/executor-direct-helpers.ts +255 -217
  478. package/dist/builtin/workflows/src/runs/foreground/executor-exit-manager.ts +178 -173
  479. package/dist/builtin/workflows/src/runs/foreground/executor-hil.ts +273 -269
  480. package/dist/builtin/workflows/src/runs/foreground/executor-inputs.ts +59 -56
  481. package/dist/builtin/workflows/src/runs/foreground/executor-lifecycle.ts +375 -351
  482. package/dist/builtin/workflows/src/runs/foreground/executor-outputs.ts +123 -127
  483. package/dist/builtin/workflows/src/runs/foreground/executor-prompt-nodes.ts +360 -295
  484. package/dist/builtin/workflows/src/runs/foreground/executor-queued-user-message.ts +47 -47
  485. package/dist/builtin/workflows/src/runs/foreground/executor-run-finalizers.ts +125 -104
  486. package/dist/builtin/workflows/src/runs/foreground/executor-scheduler.ts +189 -189
  487. package/dist/builtin/workflows/src/runs/foreground/executor-stage-call.ts +294 -242
  488. package/dist/builtin/workflows/src/runs/foreground/executor-stage-context.ts +141 -127
  489. package/dist/builtin/workflows/src/runs/foreground/executor-stage-control.ts +219 -179
  490. package/dist/builtin/workflows/src/runs/foreground/executor-stage-factory.ts +406 -354
  491. package/dist/builtin/workflows/src/runs/foreground/executor-stage-replay.ts +143 -126
  492. package/dist/builtin/workflows/src/runs/foreground/executor-stage-types.ts +50 -47
  493. package/dist/builtin/workflows/src/runs/foreground/executor-task-context.ts +1 -1
  494. package/dist/builtin/workflows/src/runs/foreground/executor-task-prompts.ts +148 -153
  495. package/dist/builtin/workflows/src/runs/foreground/executor-types.ts +157 -110
  496. package/dist/builtin/workflows/src/runs/foreground/executor.ts +10 -10
  497. package/dist/builtin/workflows/src/runs/foreground/postmortem-stage-chat.ts +176 -100
  498. package/dist/builtin/workflows/src/runs/foreground/stage-control-registry.ts +363 -257
  499. package/dist/builtin/workflows/src/runs/foreground/stage-delivery-activity.ts +86 -0
  500. package/dist/builtin/workflows/src/runs/foreground/stage-queued-user-messages.ts +95 -0
  501. package/dist/builtin/workflows/src/runs/foreground/stage-runner-candidate.ts +8 -8
  502. package/dist/builtin/workflows/src/runs/foreground/stage-runner-context.ts +233 -221
  503. package/dist/builtin/workflows/src/runs/foreground/stage-runner-controller.ts +630 -494
  504. package/dist/builtin/workflows/src/runs/foreground/stage-runner-message-admission.ts +182 -181
  505. package/dist/builtin/workflows/src/runs/foreground/stage-runner-messages.ts +80 -80
  506. package/dist/builtin/workflows/src/runs/foreground/stage-runner-options.ts +78 -74
  507. package/dist/builtin/workflows/src/runs/foreground/stage-runner-output.ts +102 -104
  508. package/dist/builtin/workflows/src/runs/foreground/stage-runner-pause.ts +200 -0
  509. package/dist/builtin/workflows/src/runs/foreground/stage-runner-replacement.ts +31 -32
  510. package/dist/builtin/workflows/src/runs/foreground/stage-runner-send-user-message.ts +115 -98
  511. package/dist/builtin/workflows/src/runs/foreground/stage-runner-session-options.ts +29 -42
  512. package/dist/builtin/workflows/src/runs/foreground/stage-runner-session.ts +44 -52
  513. package/dist/builtin/workflows/src/runs/foreground/stage-runner-structured-output.ts +63 -58
  514. package/dist/builtin/workflows/src/runs/foreground/stage-runner-types.ts +161 -124
  515. package/dist/builtin/workflows/src/runs/foreground/stage-runner-unresolved-overflow.ts +27 -23
  516. package/dist/builtin/workflows/src/runs/foreground/stage-runner.ts +10 -10
  517. package/dist/builtin/workflows/src/runs/foreground/stage-tool-execution-buffer.ts +33 -31
  518. package/dist/builtin/workflows/src/runs/shared/concurrency.ts +53 -53
  519. package/dist/builtin/workflows/src/runs/shared/graph-inference.ts +1 -1
  520. package/dist/builtin/workflows/src/runs/shared/model-fallback-candidates.ts +257 -385
  521. package/dist/builtin/workflows/src/runs/shared/model-fallback-failures.ts +378 -363
  522. package/dist/builtin/workflows/src/runs/shared/prompt-callsite.ts +55 -55
  523. package/dist/builtin/workflows/src/runs/shared/validate-inputs.ts +75 -84
  524. package/dist/builtin/workflows/src/runs/shared/worktree-cache-lifecycle.ts +1 -3
  525. package/dist/builtin/workflows/src/runs/shared/worktree-cwd.ts +96 -83
  526. package/dist/builtin/workflows/src/runs/shared/worktree-diff.ts +9 -2
  527. package/dist/builtin/workflows/src/runs/shared/worktree-git-runner.ts +21 -6
  528. package/dist/builtin/workflows/src/runs/shared/worktree-git.ts +60 -30
  529. package/dist/builtin/workflows/src/runs/shared/worktree-post-create.ts +12 -5
  530. package/dist/builtin/workflows/src/runs/shared/worktree-setup.ts +51 -30
  531. package/dist/builtin/workflows/src/runs/shared/worktree.ts +4 -4
  532. package/dist/builtin/workflows/src/sdk-surface.ts +38 -19
  533. package/dist/builtin/workflows/src/shared/authoring-contract-stage.d.ts +17 -16
  534. package/dist/builtin/workflows/src/shared/authoring-contract-stage.ts +299 -280
  535. package/dist/builtin/workflows/src/shared/authoring-contract-ui.d.ts +76 -10
  536. package/dist/builtin/workflows/src/shared/authoring-contract-ui.ts +311 -219
  537. package/dist/builtin/workflows/src/shared/expanded-workflow-graph.ts +255 -156
  538. package/dist/builtin/workflows/src/shared/intercom-group.ts +33 -26
  539. package/dist/builtin/workflows/src/shared/persistence-compaction-policy.ts +30 -30
  540. package/dist/builtin/workflows/src/shared/persistence-restore-helpers.ts +435 -379
  541. package/dist/builtin/workflows/src/shared/persistence-restore.ts +187 -181
  542. package/dist/builtin/workflows/src/shared/persistence-session-entries.ts +211 -207
  543. package/dist/builtin/workflows/src/shared/prompt-callsite-context.ts +3 -3
  544. package/dist/builtin/workflows/src/shared/render-inputs-schema.ts +87 -94
  545. package/dist/builtin/workflows/src/shared/resume-continuation.ts +1 -1
  546. package/dist/builtin/workflows/src/shared/returned-run-status.ts +91 -77
  547. package/dist/builtin/workflows/src/shared/run-visibility.ts +2 -2
  548. package/dist/builtin/workflows/src/shared/schema-introspection.ts +50 -60
  549. package/dist/builtin/workflows/src/shared/serializable.ts +72 -86
  550. package/dist/builtin/workflows/src/shared/session-transcript.ts +44 -39
  551. package/dist/builtin/workflows/src/shared/stage-prompt.ts +183 -202
  552. package/dist/builtin/workflows/src/shared/stage-ui-broker.ts +270 -274
  553. package/dist/builtin/workflows/src/shared/store-factory.ts +9 -7
  554. package/dist/builtin/workflows/src/shared/store-internal.ts +172 -168
  555. package/dist/builtin/workflows/src/shared/store-prompt-methods.ts +196 -200
  556. package/dist/builtin/workflows/src/shared/store-public-types.ts +208 -196
  557. package/dist/builtin/workflows/src/shared/store-run-methods.ts +238 -222
  558. package/dist/builtin/workflows/src/shared/store-stage-methods.ts +284 -283
  559. package/dist/builtin/workflows/src/shared/store-tool-node-methods.ts +53 -0
  560. package/dist/builtin/workflows/src/shared/store-types.ts +269 -235
  561. package/dist/builtin/workflows/src/shared/store.ts +7 -7
  562. package/dist/builtin/workflows/src/shared/timing.ts +36 -34
  563. package/dist/builtin/workflows/src/shared/types.ts +257 -217
  564. package/dist/builtin/workflows/src/shared/workflow-authoring-types.d.ts +11 -4
  565. package/dist/builtin/workflows/src/shared/workflow-authoring-types.ts +81 -58
  566. package/dist/builtin/workflows/src/shared/workflow-failures-classifier.ts +247 -221
  567. package/dist/builtin/workflows/src/shared/workflow-failures-contract.ts +45 -46
  568. package/dist/builtin/workflows/src/shared/workflow-failures-decisions.ts +330 -351
  569. package/dist/builtin/workflows/src/shared/workflow-failures-signals.ts +212 -157
  570. package/dist/builtin/workflows/src/shared/workflow-failures.ts +10 -10
  571. package/dist/builtin/workflows/src/shared/workflow-run-ownership.ts +49 -0
  572. package/dist/builtin/workflows/src/tui/chat-surface-message.ts +157 -184
  573. package/dist/builtin/workflows/src/tui/chat-surface.ts +332 -355
  574. package/dist/builtin/workflows/src/tui/color-utils.ts +21 -30
  575. package/dist/builtin/workflows/src/tui/connectors.ts +57 -61
  576. package/dist/builtin/workflows/src/tui/dispatch-confirm.ts +168 -192
  577. package/dist/builtin/workflows/src/tui/edge.ts +10 -9
  578. package/dist/builtin/workflows/src/tui/graph-canvas.ts +131 -134
  579. package/dist/builtin/workflows/src/tui/graph-theme.ts +139 -148
  580. package/dist/builtin/workflows/src/tui/graph-view-constants.ts +6 -6
  581. package/dist/builtin/workflows/src/tui/graph-view-graph-render.ts +146 -179
  582. package/dist/builtin/workflows/src/tui/graph-view-input.ts +295 -329
  583. package/dist/builtin/workflows/src/tui/graph-view-render-helpers.ts +291 -320
  584. package/dist/builtin/workflows/src/tui/graph-view-render.ts +171 -190
  585. package/dist/builtin/workflows/src/tui/graph-view-state.ts +319 -287
  586. package/dist/builtin/workflows/src/tui/graph-view-types.ts +65 -58
  587. package/dist/builtin/workflows/src/tui/header.ts +140 -156
  588. package/dist/builtin/workflows/src/tui/host-input-form.ts +47 -45
  589. package/dist/builtin/workflows/src/tui/inline-form-card.ts +277 -266
  590. package/dist/builtin/workflows/src/tui/inline-form-editor-text.ts +61 -62
  591. package/dist/builtin/workflows/src/tui/inline-form-editor.ts +407 -412
  592. package/dist/builtin/workflows/src/tui/inline-form-overlay.ts +203 -214
  593. package/dist/builtin/workflows/src/tui/inline-form-store.ts +24 -24
  594. package/dist/builtin/workflows/src/tui/inputs-overlay.ts +116 -129
  595. package/dist/builtin/workflows/src/tui/inputs-picker-editing.ts +111 -115
  596. package/dist/builtin/workflows/src/tui/inputs-picker-input.ts +255 -269
  597. package/dist/builtin/workflows/src/tui/inputs-picker-render.ts +248 -236
  598. package/dist/builtin/workflows/src/tui/inputs-picker-types.ts +111 -140
  599. package/dist/builtin/workflows/src/tui/inputs-picker.ts +12 -12
  600. package/dist/builtin/workflows/src/tui/keybindings-adapter.ts +49 -57
  601. package/dist/builtin/workflows/src/tui/layout.ts +124 -133
  602. package/dist/builtin/workflows/src/tui/mouse-input.ts +45 -47
  603. package/dist/builtin/workflows/src/tui/node-card.ts +230 -218
  604. package/dist/builtin/workflows/src/tui/overlay-adapter.ts +381 -398
  605. package/dist/builtin/workflows/src/tui/overlay-terminal-modes.ts +20 -19
  606. package/dist/builtin/workflows/src/tui/prompt-card-input.ts +183 -194
  607. package/dist/builtin/workflows/src/tui/prompt-card-render.ts +243 -302
  608. package/dist/builtin/workflows/src/tui/prompt-card-select.ts +76 -98
  609. package/dist/builtin/workflows/src/tui/prompt-card-state.ts +40 -40
  610. package/dist/builtin/workflows/src/tui/prompt-card-text.ts +76 -83
  611. package/dist/builtin/workflows/src/tui/prompt-card.ts +3 -3
  612. package/dist/builtin/workflows/src/tui/renderers.ts +6 -6
  613. package/dist/builtin/workflows/src/tui/run-detail.ts +300 -256
  614. package/dist/builtin/workflows/src/tui/session-list.ts +19 -18
  615. package/dist/builtin/workflows/src/tui/session-overlays.ts +82 -87
  616. package/dist/builtin/workflows/src/tui/session-picker.ts +258 -275
  617. package/dist/builtin/workflows/src/tui/stage-chat-composer-drafts.ts +11 -11
  618. package/dist/builtin/workflows/src/tui/stage-chat-layout.ts +55 -62
  619. package/dist/builtin/workflows/src/tui/stage-chat-view-archive-history.ts +220 -263
  620. package/dist/builtin/workflows/src/tui/stage-chat-view-custom-ui.ts +91 -102
  621. package/dist/builtin/workflows/src/tui/stage-chat-view-delivery-activity.ts +113 -0
  622. package/dist/builtin/workflows/src/tui/stage-chat-view-footer-status.ts +154 -208
  623. package/dist/builtin/workflows/src/tui/stage-chat-view-input.ts +174 -208
  624. package/dist/builtin/workflows/src/tui/stage-chat-view-live-events.ts +53 -23
  625. package/dist/builtin/workflows/src/tui/stage-chat-view-pending-tools.ts +2 -4
  626. package/dist/builtin/workflows/src/tui/stage-chat-view-render-helpers.ts +85 -88
  627. package/dist/builtin/workflows/src/tui/stage-chat-view-render-settings.ts +39 -17
  628. package/dist/builtin/workflows/src/tui/stage-chat-view-state.ts +435 -409
  629. package/dist/builtin/workflows/src/tui/stage-chat-view-status.ts +24 -25
  630. package/dist/builtin/workflows/src/tui/stage-chat-view-transcript.ts +181 -197
  631. package/dist/builtin/workflows/src/tui/stage-chat-view-types.ts +125 -128
  632. package/dist/builtin/workflows/src/tui/stage-chat-view.ts +210 -205
  633. package/dist/builtin/workflows/src/tui/status-helpers.ts +65 -69
  634. package/dist/builtin/workflows/src/tui/status-list.ts +316 -294
  635. package/dist/builtin/workflows/src/tui/store-widget-installer.ts +213 -214
  636. package/dist/builtin/workflows/src/tui/submit-pane.ts +114 -130
  637. package/dist/builtin/workflows/src/tui/switcher.ts +120 -128
  638. package/dist/builtin/workflows/src/tui/text-helpers.ts +136 -145
  639. package/dist/builtin/workflows/src/tui/toast.ts +68 -67
  640. package/dist/builtin/workflows/src/tui/widget.ts +265 -285
  641. package/dist/builtin/workflows/src/tui/workflow-attach-pane-handle.ts +12 -17
  642. package/dist/builtin/workflows/src/tui/workflow-attach-pane-types.ts +81 -91
  643. package/dist/builtin/workflows/src/tui/workflow-attach-pane.ts +468 -479
  644. package/dist/builtin/workflows/src/tui/workflow-list.ts +130 -145
  645. package/dist/builtin/workflows/src/tui/workflow-notice-card.ts +127 -144
  646. package/dist/builtin/workflows/src/tui/workflow-resume-selector.ts +217 -217
  647. package/dist/builtin/workflows/src/tui/workflow-status.ts +7 -0
  648. package/dist/builtin/workflows/src/workflows/identity.ts +12 -12
  649. package/dist/builtin/workflows/src/workflows/registry.ts +66 -68
  650. package/dist/bun/cli.js.map +1 -1
  651. package/dist/bun/internal-intercom-broker.d.ts.map +1 -1
  652. package/dist/bun/internal-intercom-broker.js +1 -1
  653. package/dist/bun/internal-intercom-broker.js.map +1 -1
  654. package/dist/bun/register-bedrock.js +1 -1
  655. package/dist/bun/register-bedrock.js.map +1 -1
  656. package/dist/cli/args.d.ts +8 -1
  657. package/dist/cli/args.d.ts.map +1 -1
  658. package/dist/cli/args.js +28 -22
  659. package/dist/cli/args.js.map +1 -1
  660. package/dist/cli/config-selector.d.ts +4 -2
  661. package/dist/cli/config-selector.d.ts.map +1 -1
  662. package/dist/cli/config-selector.js +2 -2
  663. package/dist/cli/config-selector.js.map +1 -1
  664. package/dist/cli/credential-print.d.ts +170 -0
  665. package/dist/cli/credential-print.d.ts.map +1 -0
  666. package/dist/cli/credential-print.js +513 -0
  667. package/dist/cli/credential-print.js.map +1 -0
  668. package/dist/cli/list-models.d.ts +2 -2
  669. package/dist/cli/list-models.d.ts.map +1 -1
  670. package/dist/cli/list-models.js +6 -7
  671. package/dist/cli/list-models.js.map +1 -1
  672. package/dist/cli/project-trust.d.ts +1 -1
  673. package/dist/cli/project-trust.d.ts.map +1 -1
  674. package/dist/cli/project-trust.js.map +1 -1
  675. package/dist/cli/session-picker.d.ts.map +1 -1
  676. package/dist/cli/session-picker.js +2 -1
  677. package/dist/cli/session-picker.js.map +1 -1
  678. package/dist/cli/startup-ui.d.ts +3 -0
  679. package/dist/cli/startup-ui.d.ts.map +1 -1
  680. package/dist/cli/startup-ui.js +58 -2
  681. package/dist/cli/startup-ui.js.map +1 -1
  682. package/dist/cli.js +2 -0
  683. package/dist/cli.js.map +1 -1
  684. package/dist/config-command-parser.d.ts +9 -0
  685. package/dist/config-command-parser.d.ts.map +1 -0
  686. package/dist/config-command-parser.js +22 -0
  687. package/dist/config-command-parser.js.map +1 -0
  688. package/dist/config-self-update.d.ts +6 -2
  689. package/dist/config-self-update.d.ts.map +1 -1
  690. package/dist/config-self-update.js +23 -13
  691. package/dist/config-self-update.js.map +1 -1
  692. package/dist/config.d.ts +5 -3
  693. package/dist/config.d.ts.map +1 -1
  694. package/dist/config.js +36 -14
  695. package/dist/config.js.map +1 -1
  696. package/dist/core/agent-session-accessors.d.ts.map +1 -1
  697. package/dist/core/agent-session-accessors.js +125 -24
  698. package/dist/core/agent-session-accessors.js.map +1 -1
  699. package/dist/core/agent-session-auto-compaction.d.ts +4 -3
  700. package/dist/core/agent-session-auto-compaction.d.ts.map +1 -1
  701. package/dist/core/agent-session-auto-compaction.js +59 -64
  702. package/dist/core/agent-session-auto-compaction.js.map +1 -1
  703. package/dist/core/agent-session-bash.d.ts +10 -7
  704. package/dist/core/agent-session-bash.d.ts.map +1 -1
  705. package/dist/core/agent-session-bash.js +34 -13
  706. package/dist/core/agent-session-bash.js.map +1 -1
  707. package/dist/core/agent-session-compaction.d.ts +11 -1
  708. package/dist/core/agent-session-compaction.d.ts.map +1 -1
  709. package/dist/core/agent-session-compaction.js +138 -27
  710. package/dist/core/agent-session-compaction.js.map +1 -1
  711. package/dist/core/agent-session-custom-message-commit.d.ts +14 -0
  712. package/dist/core/agent-session-custom-message-commit.d.ts.map +1 -0
  713. package/dist/core/agent-session-custom-message-commit.js +145 -0
  714. package/dist/core/agent-session-custom-message-commit.js.map +1 -0
  715. package/dist/core/agent-session-delivery-forwarding.d.ts +9 -0
  716. package/dist/core/agent-session-delivery-forwarding.d.ts.map +1 -0
  717. package/dist/core/agent-session-delivery-forwarding.js +36 -0
  718. package/dist/core/agent-session-delivery-forwarding.js.map +1 -0
  719. package/dist/core/agent-session-events.d.ts +1 -1
  720. package/dist/core/agent-session-events.d.ts.map +1 -1
  721. package/dist/core/agent-session-events.js +58 -19
  722. package/dist/core/agent-session-events.js.map +1 -1
  723. package/dist/core/agent-session-export.d.ts +1 -1
  724. package/dist/core/agent-session-export.d.ts.map +1 -1
  725. package/dist/core/agent-session-export.js +32 -25
  726. package/dist/core/agent-session-export.js.map +1 -1
  727. package/dist/core/agent-session-extension-bindings.d.ts +2 -6
  728. package/dist/core/agent-session-extension-bindings.d.ts.map +1 -1
  729. package/dist/core/agent-session-extension-bindings.js +38 -18
  730. package/dist/core/agent-session-extension-bindings.js.map +1 -1
  731. package/dist/core/agent-session-message-queue.d.ts +7 -4
  732. package/dist/core/agent-session-message-queue.d.ts.map +1 -1
  733. package/dist/core/agent-session-message-queue.js +101 -98
  734. package/dist/core/agent-session-message-queue.js.map +1 -1
  735. package/dist/core/agent-session-methods.d.ts +52 -45
  736. package/dist/core/agent-session-methods.d.ts.map +1 -1
  737. package/dist/core/agent-session-methods.js.map +1 -1
  738. package/dist/core/agent-session-models.d.ts +3 -39
  739. package/dist/core/agent-session-models.d.ts.map +1 -1
  740. package/dist/core/agent-session-models.js +22 -160
  741. package/dist/core/agent-session-models.js.map +1 -1
  742. package/dist/core/agent-session-persistent-custom-messages.d.ts +47 -0
  743. package/dist/core/agent-session-persistent-custom-messages.d.ts.map +1 -0
  744. package/dist/core/agent-session-persistent-custom-messages.js +269 -0
  745. package/dist/core/agent-session-persistent-custom-messages.js.map +1 -0
  746. package/dist/core/agent-session-post-tool-compaction.d.ts +1 -1
  747. package/dist/core/agent-session-post-tool-compaction.d.ts.map +1 -1
  748. package/dist/core/agent-session-post-tool-compaction.js +34 -11
  749. package/dist/core/agent-session-post-tool-compaction.js.map +1 -1
  750. package/dist/core/agent-session-prompt.d.ts +2 -0
  751. package/dist/core/agent-session-prompt.d.ts.map +1 -1
  752. package/dist/core/agent-session-prompt.js +52 -25
  753. package/dist/core/agent-session-prompt.js.map +1 -1
  754. package/dist/core/agent-session-queue-pause.d.ts +10 -0
  755. package/dist/core/agent-session-queue-pause.d.ts.map +1 -0
  756. package/dist/core/agent-session-queue-pause.js +87 -0
  757. package/dist/core/agent-session-queue-pause.js.map +1 -0
  758. package/dist/core/agent-session-retry.d.ts +0 -11
  759. package/dist/core/agent-session-retry.d.ts.map +1 -1
  760. package/dist/core/agent-session-retry.js +44 -63
  761. package/dist/core/agent-session-retry.js.map +1 -1
  762. package/dist/core/agent-session-runtime-auth.d.ts +6 -0
  763. package/dist/core/agent-session-runtime-auth.d.ts.map +1 -0
  764. package/dist/core/agent-session-runtime-auth.js +18 -0
  765. package/dist/core/agent-session-runtime-auth.js.map +1 -0
  766. package/dist/core/agent-session-runtime.d.ts +36 -1
  767. package/dist/core/agent-session-runtime.d.ts.map +1 -1
  768. package/dist/core/agent-session-runtime.js +62 -6
  769. package/dist/core/agent-session-runtime.js.map +1 -1
  770. package/dist/core/agent-session-services.d.ts +4 -9
  771. package/dist/core/agent-session-services.d.ts.map +1 -1
  772. package/dist/core/agent-session-services.js +25 -25
  773. package/dist/core/agent-session-services.js.map +1 -1
  774. package/dist/core/agent-session-state.d.ts +1 -1
  775. package/dist/core/agent-session-state.d.ts.map +1 -1
  776. package/dist/core/agent-session-state.js +3 -0
  777. package/dist/core/agent-session-state.js.map +1 -1
  778. package/dist/core/agent-session-tool-hooks.d.ts.map +1 -1
  779. package/dist/core/agent-session-tool-hooks.js +8 -7
  780. package/dist/core/agent-session-tool-hooks.js.map +1 -1
  781. package/dist/core/agent-session-tool-registry.d.ts.map +1 -1
  782. package/dist/core/agent-session-tool-registry.js +6 -20
  783. package/dist/core/agent-session-tool-registry.js.map +1 -1
  784. package/dist/core/agent-session-transfer.d.ts +4 -0
  785. package/dist/core/agent-session-transfer.d.ts.map +1 -0
  786. package/dist/core/agent-session-transfer.js +67 -0
  787. package/dist/core/agent-session-transfer.js.map +1 -0
  788. package/dist/core/agent-session-tree.d.ts +1 -1
  789. package/dist/core/agent-session-tree.d.ts.map +1 -1
  790. package/dist/core/agent-session-tree.js +13 -3
  791. package/dist/core/agent-session-tree.js.map +1 -1
  792. package/dist/core/agent-session-types.d.ts +28 -14
  793. package/dist/core/agent-session-types.d.ts.map +1 -1
  794. package/dist/core/agent-session-types.js +4 -4
  795. package/dist/core/agent-session-types.js.map +1 -1
  796. package/dist/core/agent-session.d.ts +27 -13
  797. package/dist/core/agent-session.d.ts.map +1 -1
  798. package/dist/core/agent-session.js +17 -12
  799. package/dist/core/agent-session.js.map +1 -1
  800. package/dist/core/anthropic-thinking-guard.d.ts.map +1 -1
  801. package/dist/core/anthropic-thinking-guard.js +4 -2
  802. package/dist/core/anthropic-thinking-guard.js.map +1 -1
  803. package/dist/core/async/format.d.ts +1 -1
  804. package/dist/core/async/format.d.ts.map +1 -1
  805. package/dist/core/async/format.js +3 -1
  806. package/dist/core/async/format.js.map +1 -1
  807. package/dist/core/async/job-manager.d.ts.map +1 -1
  808. package/dist/core/async/job-manager.js +20 -5
  809. package/dist/core/async/job-manager.js.map +1 -1
  810. package/dist/core/async/session-manager.d.ts.map +1 -1
  811. package/dist/core/async/session-manager.js.map +1 -1
  812. package/dist/core/atomic-guide-command.d.ts.map +1 -1
  813. package/dist/core/atomic-guide-command.js +34 -35
  814. package/dist/core/atomic-guide-command.js.map +1 -1
  815. package/dist/core/auth-guidance.d.ts.map +1 -1
  816. package/dist/core/auth-guidance.js.map +1 -1
  817. package/dist/core/auth-storage-backends.d.ts +5 -0
  818. package/dist/core/auth-storage-backends.d.ts.map +1 -1
  819. package/dist/core/auth-storage-backends.js +77 -7
  820. package/dist/core/auth-storage-backends.js.map +1 -1
  821. package/dist/core/auth-storage.d.ts +13 -136
  822. package/dist/core/auth-storage.d.ts.map +1 -1
  823. package/dist/core/auth-storage.js +68 -358
  824. package/dist/core/auth-storage.js.map +1 -1
  825. package/dist/core/bash-executor.d.ts +5 -3
  826. package/dist/core/bash-executor.d.ts.map +1 -1
  827. package/dist/core/bash-executor.js +5 -4
  828. package/dist/core/bash-executor.js.map +1 -1
  829. package/dist/core/builtin-packages.d.ts.map +1 -1
  830. package/dist/core/builtin-packages.js +1 -10
  831. package/dist/core/builtin-packages.js.map +1 -1
  832. package/dist/core/cache-stats.d.ts +25 -0
  833. package/dist/core/cache-stats.d.ts.map +1 -0
  834. package/dist/core/cache-stats.js +70 -0
  835. package/dist/core/cache-stats.js.map +1 -0
  836. package/dist/core/callback-activity.d.ts.map +1 -1
  837. package/dist/core/callback-activity.js.map +1 -1
  838. package/dist/core/codex-errors.d.ts +3 -0
  839. package/dist/core/codex-errors.d.ts.map +1 -0
  840. package/dist/core/codex-errors.js +12 -0
  841. package/dist/core/codex-errors.js.map +1 -0
  842. package/dist/core/codex-fast-mode.d.ts.map +1 -1
  843. package/dist/core/codex-fast-mode.js.map +1 -1
  844. package/dist/core/compaction/branch-summarization.d.ts +15 -5
  845. package/dist/core/compaction/branch-summarization.d.ts.map +1 -1
  846. package/dist/core/compaction/branch-summarization.js +23 -12
  847. package/dist/core/compaction/branch-summarization.js.map +1 -1
  848. package/dist/core/compaction/compaction-boundary.d.ts +18 -1
  849. package/dist/core/compaction/compaction-boundary.d.ts.map +1 -1
  850. package/dist/core/compaction/compaction-boundary.js +12 -8
  851. package/dist/core/compaction/compaction-boundary.js.map +1 -1
  852. package/dist/core/compaction/compaction-runner.d.ts +63 -6
  853. package/dist/core/compaction/compaction-runner.d.ts.map +1 -1
  854. package/dist/core/compaction/compaction-runner.js +244 -17
  855. package/dist/core/compaction/compaction-runner.js.map +1 -1
  856. package/dist/core/compaction/compaction-types.d.ts +53 -2
  857. package/dist/core/compaction/compaction-types.d.ts.map +1 -1
  858. package/dist/core/compaction/compaction-types.js.map +1 -1
  859. package/dist/core/compaction/compaction.d.ts.map +1 -1
  860. package/dist/core/compaction/compaction.js +5 -1
  861. package/dist/core/compaction/compaction.js.map +1 -1
  862. package/dist/core/compaction/deleted-ranges.d.ts.map +1 -1
  863. package/dist/core/compaction/deleted-ranges.js.map +1 -1
  864. package/dist/core/compaction/fallback-planner.d.ts +64 -0
  865. package/dist/core/compaction/fallback-planner.d.ts.map +1 -0
  866. package/dist/core/compaction/fallback-planner.js +75 -0
  867. package/dist/core/compaction/fallback-planner.js.map +1 -0
  868. package/dist/core/compaction/index.d.ts +7 -4
  869. package/dist/core/compaction/index.d.ts.map +1 -1
  870. package/dist/core/compaction/index.js +7 -4
  871. package/dist/core/compaction/index.js.map +1 -1
  872. package/dist/core/compaction/planner-outcome.d.ts +86 -0
  873. package/dist/core/compaction/planner-outcome.d.ts.map +1 -0
  874. package/dist/core/compaction/planner-outcome.js +122 -0
  875. package/dist/core/compaction/planner-outcome.js.map +1 -0
  876. package/dist/core/compaction/range-planner-diagnostics.d.ts +58 -6
  877. package/dist/core/compaction/range-planner-diagnostics.d.ts.map +1 -1
  878. package/dist/core/compaction/range-planner-diagnostics.js +71 -31
  879. package/dist/core/compaction/range-planner-diagnostics.js.map +1 -1
  880. package/dist/core/compaction/range-planner.d.ts +39 -8
  881. package/dist/core/compaction/range-planner.d.ts.map +1 -1
  882. package/dist/core/compaction/range-planner.js +140 -51
  883. package/dist/core/compaction/range-planner.js.map +1 -1
  884. package/dist/core/compaction/region-trimming.d.ts +34 -0
  885. package/dist/core/compaction/region-trimming.d.ts.map +1 -0
  886. package/dist/core/compaction/region-trimming.js +73 -0
  887. package/dist/core/compaction/region-trimming.js.map +1 -0
  888. package/dist/core/compaction/transcript-serialization.d.ts +8 -1
  889. package/dist/core/compaction/transcript-serialization.d.ts.map +1 -1
  890. package/dist/core/compaction/transcript-serialization.js +78 -27
  891. package/dist/core/compaction/transcript-serialization.js.map +1 -1
  892. package/dist/core/context-tool-pairing.d.ts +19 -0
  893. package/dist/core/context-tool-pairing.d.ts.map +1 -0
  894. package/dist/core/context-tool-pairing.js +50 -0
  895. package/dist/core/context-tool-pairing.js.map +1 -0
  896. package/dist/core/copilot-env-routing.d.ts +36 -0
  897. package/dist/core/copilot-env-routing.d.ts.map +1 -0
  898. package/dist/core/copilot-env-routing.js +94 -0
  899. package/dist/core/copilot-env-routing.js.map +1 -0
  900. package/dist/core/diagnostics.d.ts +8 -0
  901. package/dist/core/diagnostics.d.ts.map +1 -1
  902. package/dist/core/diagnostics.js.map +1 -1
  903. package/dist/core/exec.d.ts.map +1 -1
  904. package/dist/core/exec.js +5 -0
  905. package/dist/core/exec.js.map +1 -1
  906. package/dist/core/experimental.d.ts.map +1 -1
  907. package/dist/core/experimental.js +2 -1
  908. package/dist/core/experimental.js.map +1 -1
  909. package/dist/core/extensions/agent-events.d.ts +10 -0
  910. package/dist/core/extensions/agent-events.d.ts.map +1 -1
  911. package/dist/core/extensions/agent-events.js.map +1 -1
  912. package/dist/core/extensions/api-types.d.ts +9 -3
  913. package/dist/core/extensions/api-types.d.ts.map +1 -1
  914. package/dist/core/extensions/api-types.js.map +1 -1
  915. package/dist/core/extensions/context-types.d.ts +10 -1
  916. package/dist/core/extensions/context-types.d.ts.map +1 -1
  917. package/dist/core/extensions/context-types.js.map +1 -1
  918. package/dist/core/extensions/event-types.d.ts +2 -2
  919. package/dist/core/extensions/event-types.d.ts.map +1 -1
  920. package/dist/core/extensions/event-types.js.map +1 -1
  921. package/dist/core/extensions/index.d.ts +7 -5
  922. package/dist/core/extensions/index.d.ts.map +1 -1
  923. package/dist/core/extensions/index.js +2 -2
  924. package/dist/core/extensions/index.js.map +1 -1
  925. package/dist/core/extensions/loader-api.d.ts +1 -1
  926. package/dist/core/extensions/loader-api.d.ts.map +1 -1
  927. package/dist/core/extensions/loader-api.js +63 -29
  928. package/dist/core/extensions/loader-api.js.map +1 -1
  929. package/dist/core/extensions/loader-core.d.ts.map +1 -1
  930. package/dist/core/extensions/loader-core.js +3 -2
  931. package/dist/core/extensions/loader-core.js.map +1 -1
  932. package/dist/core/extensions/loader-discovery.d.ts.map +1 -1
  933. package/dist/core/extensions/loader-discovery.js.map +1 -1
  934. package/dist/core/extensions/loader-resources.d.ts.map +1 -1
  935. package/dist/core/extensions/loader-resources.js.map +1 -1
  936. package/dist/core/extensions/loader-runtime.d.ts +2 -4
  937. package/dist/core/extensions/loader-runtime.d.ts.map +1 -1
  938. package/dist/core/extensions/loader-runtime.js +214 -13
  939. package/dist/core/extensions/loader-runtime.js.map +1 -1
  940. package/dist/core/extensions/loader-virtual-modules.d.ts +17 -0
  941. package/dist/core/extensions/loader-virtual-modules.d.ts.map +1 -1
  942. package/dist/core/extensions/loader-virtual-modules.js +288 -19
  943. package/dist/core/extensions/loader-virtual-modules.js.map +1 -1
  944. package/dist/core/extensions/loader.d.ts.map +1 -1
  945. package/dist/core/extensions/loader.js.map +1 -1
  946. package/dist/core/extensions/message-types.d.ts +12 -4
  947. package/dist/core/extensions/message-types.d.ts.map +1 -1
  948. package/dist/core/extensions/message-types.js.map +1 -1
  949. package/dist/core/extensions/provider-types.d.ts +16 -5
  950. package/dist/core/extensions/provider-types.d.ts.map +1 -1
  951. package/dist/core/extensions/provider-types.js.map +1 -1
  952. package/dist/core/extensions/reactive-widget.d.ts.map +1 -1
  953. package/dist/core/extensions/reactive-widget.js.map +1 -1
  954. package/dist/core/extensions/runner-context.d.ts +29 -1
  955. package/dist/core/extensions/runner-context.d.ts.map +1 -1
  956. package/dist/core/extensions/runner-context.js +56 -0
  957. package/dist/core/extensions/runner-context.js.map +1 -1
  958. package/dist/core/extensions/runner-events.d.ts.map +1 -1
  959. package/dist/core/extensions/runner-events.js.map +1 -1
  960. package/dist/core/extensions/runner-registries.d.ts +2 -1
  961. package/dist/core/extensions/runner-registries.d.ts.map +1 -1
  962. package/dist/core/extensions/runner-registries.js +8 -0
  963. package/dist/core/extensions/runner-registries.js.map +1 -1
  964. package/dist/core/extensions/runner.d.ts +7 -2
  965. package/dist/core/extensions/runner.d.ts.map +1 -1
  966. package/dist/core/extensions/runner.js +65 -23
  967. package/dist/core/extensions/runner.js.map +1 -1
  968. package/dist/core/extensions/runtime-types.d.ts +35 -2
  969. package/dist/core/extensions/runtime-types.d.ts.map +1 -1
  970. package/dist/core/extensions/runtime-types.js.map +1 -1
  971. package/dist/core/extensions/session-events.d.ts.map +1 -1
  972. package/dist/core/extensions/session-events.js.map +1 -1
  973. package/dist/core/extensions/tool-types.d.ts +7 -3
  974. package/dist/core/extensions/tool-types.d.ts.map +1 -1
  975. package/dist/core/extensions/tool-types.js.map +1 -1
  976. package/dist/core/extensions/types.d.ts +15 -2
  977. package/dist/core/extensions/types.d.ts.map +1 -1
  978. package/dist/core/extensions/types.js +1 -1
  979. package/dist/core/extensions/types.js.map +1 -1
  980. package/dist/core/extensions/ui-types.d.ts +34 -6
  981. package/dist/core/extensions/ui-types.d.ts.map +1 -1
  982. package/dist/core/extensions/ui-types.js.map +1 -1
  983. package/dist/core/fallback-models.d.ts +37 -0
  984. package/dist/core/fallback-models.d.ts.map +1 -0
  985. package/dist/core/fallback-models.js +57 -0
  986. package/dist/core/fallback-models.js.map +1 -0
  987. package/dist/core/flattened-tool-arguments.d.ts +4 -7
  988. package/dist/core/flattened-tool-arguments.d.ts.map +1 -1
  989. package/dist/core/flattened-tool-arguments.js +4 -7
  990. package/dist/core/flattened-tool-arguments.js.map +1 -1
  991. package/dist/core/footer-data-provider.d.ts +10 -0
  992. package/dist/core/footer-data-provider.d.ts.map +1 -1
  993. package/dist/core/footer-data-provider.js +5 -3
  994. package/dist/core/footer-data-provider.js.map +1 -1
  995. package/dist/core/http-dispatcher.d.ts +1 -0
  996. package/dist/core/http-dispatcher.d.ts.map +1 -1
  997. package/dist/core/http-dispatcher.js +42 -8
  998. package/dist/core/http-dispatcher.js.map +1 -1
  999. package/dist/core/keybindings.d.ts +7 -2
  1000. package/dist/core/keybindings.d.ts.map +1 -1
  1001. package/dist/core/keybindings.js +3 -1
  1002. package/dist/core/keybindings.js.map +1 -1
  1003. package/dist/core/messages.d.ts +24 -4
  1004. package/dist/core/messages.d.ts.map +1 -1
  1005. package/dist/core/messages.js +64 -13
  1006. package/dist/core/messages.js.map +1 -1
  1007. package/dist/core/model-capabilities.d.ts +18 -0
  1008. package/dist/core/model-capabilities.d.ts.map +1 -0
  1009. package/dist/core/model-capabilities.js +22 -0
  1010. package/dist/core/model-capabilities.js.map +1 -0
  1011. package/dist/core/model-config.d.ts +542 -0
  1012. package/dist/core/model-config.d.ts.map +1 -0
  1013. package/dist/core/{model-registry-schemas.js → model-config.js} +92 -32
  1014. package/dist/core/model-config.js.map +1 -0
  1015. package/dist/core/model-refresh-timeout.d.ts +9 -0
  1016. package/dist/core/model-refresh-timeout.d.ts.map +1 -0
  1017. package/dist/core/model-refresh-timeout.js +9 -0
  1018. package/dist/core/model-refresh-timeout.js.map +1 -0
  1019. package/dist/core/model-registry.d.ts +26 -94
  1020. package/dist/core/model-registry.d.ts.map +1 -1
  1021. package/dist/core/model-registry.js +65 -382
  1022. package/dist/core/model-registry.js.map +1 -1
  1023. package/dist/core/model-resolver-cli.d.ts +2 -2
  1024. package/dist/core/model-resolver-cli.d.ts.map +1 -1
  1025. package/dist/core/model-resolver-cli.js +2 -2
  1026. package/dist/core/model-resolver-cli.js.map +1 -1
  1027. package/dist/core/model-resolver-defaults.d.ts.map +1 -1
  1028. package/dist/core/model-resolver-defaults.js +5 -1
  1029. package/dist/core/model-resolver-defaults.js.map +1 -1
  1030. package/dist/core/model-resolver-initial.d.ts +4 -4
  1031. package/dist/core/model-resolver-initial.d.ts.map +1 -1
  1032. package/dist/core/model-resolver-initial.js +26 -17
  1033. package/dist/core/model-resolver-initial.js.map +1 -1
  1034. package/dist/core/model-resolver-patterns.d.ts.map +1 -1
  1035. package/dist/core/model-resolver-patterns.js +0 -2
  1036. package/dist/core/model-resolver-patterns.js.map +1 -1
  1037. package/dist/core/model-resolver-scope.d.ts +5 -3
  1038. package/dist/core/model-resolver-scope.d.ts.map +1 -1
  1039. package/dist/core/model-resolver-scope.js +32 -8
  1040. package/dist/core/model-resolver-scope.js.map +1 -1
  1041. package/dist/core/model-resolver-types.d.ts +2 -0
  1042. package/dist/core/model-resolver-types.d.ts.map +1 -1
  1043. package/dist/core/model-resolver-types.js.map +1 -1
  1044. package/dist/core/model-resolver.d.ts +3 -3
  1045. package/dist/core/model-resolver.d.ts.map +1 -1
  1046. package/dist/core/model-resolver.js +1 -1
  1047. package/dist/core/model-resolver.js.map +1 -1
  1048. package/dist/core/model-runtime-auth.d.ts +7 -0
  1049. package/dist/core/model-runtime-auth.d.ts.map +1 -0
  1050. package/dist/core/model-runtime-auth.js +17 -0
  1051. package/dist/core/model-runtime-auth.js.map +1 -0
  1052. package/dist/core/model-runtime-providers.d.ts +6 -0
  1053. package/dist/core/model-runtime-providers.d.ts.map +1 -0
  1054. package/dist/core/model-runtime-providers.js +22 -0
  1055. package/dist/core/model-runtime-providers.js.map +1 -0
  1056. package/dist/core/model-runtime-restoration.d.ts +6 -0
  1057. package/dist/core/model-runtime-restoration.d.ts.map +1 -0
  1058. package/dist/core/model-runtime-restoration.js +21 -0
  1059. package/dist/core/model-runtime-restoration.js.map +1 -0
  1060. package/dist/core/model-runtime-snapshot.d.ts +19 -0
  1061. package/dist/core/model-runtime-snapshot.d.ts.map +1 -0
  1062. package/dist/core/model-runtime-snapshot.js +111 -0
  1063. package/dist/core/model-runtime-snapshot.js.map +1 -0
  1064. package/dist/core/model-runtime-streaming.d.ts +17 -0
  1065. package/dist/core/model-runtime-streaming.d.ts.map +1 -0
  1066. package/dist/core/model-runtime-streaming.js +66 -0
  1067. package/dist/core/model-runtime-streaming.js.map +1 -0
  1068. package/dist/core/model-runtime-types.d.ts +21 -0
  1069. package/dist/core/model-runtime-types.d.ts.map +1 -0
  1070. package/dist/core/model-runtime-types.js +2 -0
  1071. package/dist/core/model-runtime-types.js.map +1 -0
  1072. package/dist/core/model-runtime.d.ts +79 -0
  1073. package/dist/core/model-runtime.d.ts.map +1 -0
  1074. package/dist/core/model-runtime.js +417 -0
  1075. package/dist/core/model-runtime.js.map +1 -0
  1076. package/dist/core/models-store.d.ts +2 -10
  1077. package/dist/core/models-store.d.ts.map +1 -1
  1078. package/dist/core/models-store.js +2 -29
  1079. package/dist/core/models-store.js.map +1 -1
  1080. package/dist/core/oauth-login.d.ts +24 -0
  1081. package/dist/core/oauth-login.d.ts.map +1 -0
  1082. package/dist/core/oauth-login.js +92 -0
  1083. package/dist/core/oauth-login.js.map +1 -0
  1084. package/dist/core/oauth-provider-metadata.d.ts +5 -0
  1085. package/dist/core/oauth-provider-metadata.d.ts.map +1 -0
  1086. package/dist/core/oauth-provider-metadata.js +33 -0
  1087. package/dist/core/oauth-provider-metadata.js.map +1 -0
  1088. package/dist/core/openai-responses-payload-sanitizer.js.map +1 -1
  1089. package/dist/core/output-guard.d.ts +44 -0
  1090. package/dist/core/output-guard.d.ts.map +1 -1
  1091. package/dist/core/output-guard.js +63 -0
  1092. package/dist/core/output-guard.js.map +1 -1
  1093. package/dist/core/package-manager-auto-resources.d.ts.map +1 -1
  1094. package/dist/core/package-manager-auto-resources.js +18 -5
  1095. package/dist/core/package-manager-auto-resources.js.map +1 -1
  1096. package/dist/core/package-manager-git.d.ts.map +1 -1
  1097. package/dist/core/package-manager-git.js +27 -11
  1098. package/dist/core/package-manager-git.js.map +1 -1
  1099. package/dist/core/package-manager-npm.d.ts.map +1 -1
  1100. package/dist/core/package-manager-npm.js +4 -2
  1101. package/dist/core/package-manager-npm.js.map +1 -1
  1102. package/dist/core/package-manager-operations.d.ts.map +1 -1
  1103. package/dist/core/package-manager-operations.js +2 -2
  1104. package/dist/core/package-manager-operations.js.map +1 -1
  1105. package/dist/core/package-manager-paths.d.ts.map +1 -1
  1106. package/dist/core/package-manager-paths.js.map +1 -1
  1107. package/dist/core/package-manager-resolver.d.ts.map +1 -1
  1108. package/dist/core/package-manager-resolver.js +71 -26
  1109. package/dist/core/package-manager-resolver.js.map +1 -1
  1110. package/dist/core/package-manager-resource-collector.d.ts.map +1 -1
  1111. package/dist/core/package-manager-resource-collector.js +13 -7
  1112. package/dist/core/package-manager-resource-collector.js.map +1 -1
  1113. package/dist/core/package-manager-resource-files.d.ts.map +1 -1
  1114. package/dist/core/package-manager-resource-files.js +4 -3
  1115. package/dist/core/package-manager-resource-files.js.map +1 -1
  1116. package/dist/core/package-manager-resource-patterns.d.ts +1 -0
  1117. package/dist/core/package-manager-resource-patterns.d.ts.map +1 -1
  1118. package/dist/core/package-manager-resource-patterns.js +15 -0
  1119. package/dist/core/package-manager-resource-patterns.js.map +1 -1
  1120. package/dist/core/package-manager-settings.d.ts.map +1 -1
  1121. package/dist/core/package-manager-settings.js +3 -2
  1122. package/dist/core/package-manager-settings.js.map +1 -1
  1123. package/dist/core/package-manager-source.d.ts.map +1 -1
  1124. package/dist/core/package-manager-source.js +16 -9
  1125. package/dist/core/package-manager-source.js.map +1 -1
  1126. package/dist/core/package-manager-types.d.ts +3 -0
  1127. package/dist/core/package-manager-types.d.ts.map +1 -1
  1128. package/dist/core/package-manager-types.js.map +1 -1
  1129. package/dist/core/package-manager.d.ts +1 -1
  1130. package/dist/core/package-manager.d.ts.map +1 -1
  1131. package/dist/core/package-manager.js +2 -3
  1132. package/dist/core/package-manager.js.map +1 -1
  1133. package/dist/core/prompt-templates-async.d.ts.map +1 -1
  1134. package/dist/core/prompt-templates-async.js +15 -7
  1135. package/dist/core/prompt-templates-async.js.map +1 -1
  1136. package/dist/core/prompt-templates.d.ts +1 -0
  1137. package/dist/core/prompt-templates.d.ts.map +1 -1
  1138. package/dist/core/prompt-templates.js +4 -4
  1139. package/dist/core/prompt-templates.js.map +1 -1
  1140. package/dist/core/provider-composer-internal.d.ts +53 -0
  1141. package/dist/core/provider-composer-internal.d.ts.map +1 -0
  1142. package/dist/core/provider-composer-internal.js +273 -0
  1143. package/dist/core/provider-composer-internal.js.map +1 -0
  1144. package/dist/core/provider-composer.d.ts +16 -0
  1145. package/dist/core/provider-composer.d.ts.map +1 -0
  1146. package/dist/core/provider-composer.js +108 -0
  1147. package/dist/core/provider-composer.js.map +1 -0
  1148. package/dist/core/provider-context-usage.d.ts.map +1 -1
  1149. package/dist/core/provider-context-usage.js +2 -1
  1150. package/dist/core/provider-context-usage.js.map +1 -1
  1151. package/dist/core/provider-display-names.d.ts.map +1 -1
  1152. package/dist/core/provider-display-names.js +4 -0
  1153. package/dist/core/provider-display-names.js.map +1 -1
  1154. package/dist/core/remote-catalog-provider.d.ts +1 -1
  1155. package/dist/core/remote-catalog-provider.d.ts.map +1 -1
  1156. package/dist/core/remote-catalog-provider.js +82 -105
  1157. package/dist/core/remote-catalog-provider.js.map +1 -1
  1158. package/dist/core/resolve-config-value.d.ts +8 -7
  1159. package/dist/core/resolve-config-value.d.ts.map +1 -1
  1160. package/dist/core/resolve-config-value.js +26 -23
  1161. package/dist/core/resolve-config-value.js.map +1 -1
  1162. package/dist/core/resource-loader-assets.d.ts.map +1 -1
  1163. package/dist/core/resource-loader-assets.js +58 -8
  1164. package/dist/core/resource-loader-assets.js.map +1 -1
  1165. package/dist/core/resource-loader-context-files.d.ts +6 -0
  1166. package/dist/core/resource-loader-context-files.d.ts.map +1 -1
  1167. package/dist/core/resource-loader-context-files.js +85 -4
  1168. package/dist/core/resource-loader-context-files.js.map +1 -1
  1169. package/dist/core/resource-loader-core.d.ts +13 -3
  1170. package/dist/core/resource-loader-core.d.ts.map +1 -1
  1171. package/dist/core/resource-loader-core.js +39 -19
  1172. package/dist/core/resource-loader-core.js.map +1 -1
  1173. package/dist/core/resource-loader-discovery.d.ts.map +1 -1
  1174. package/dist/core/resource-loader-discovery.js.map +1 -1
  1175. package/dist/core/resource-loader-extensions.d.ts +1 -0
  1176. package/dist/core/resource-loader-extensions.d.ts.map +1 -1
  1177. package/dist/core/resource-loader-extensions.js +140 -12
  1178. package/dist/core/resource-loader-extensions.js.map +1 -1
  1179. package/dist/core/resource-loader-helpers.d.ts.map +1 -1
  1180. package/dist/core/resource-loader-helpers.js +1 -0
  1181. package/dist/core/resource-loader-helpers.js.map +1 -1
  1182. package/dist/core/resource-loader-internals.d.ts +14 -7
  1183. package/dist/core/resource-loader-internals.d.ts.map +1 -1
  1184. package/dist/core/resource-loader-internals.js.map +1 -1
  1185. package/dist/core/resource-loader-package-resources.d.ts.map +1 -1
  1186. package/dist/core/resource-loader-package-resources.js +15 -2
  1187. package/dist/core/resource-loader-package-resources.js.map +1 -1
  1188. package/dist/core/resource-loader-paths.js.map +1 -1
  1189. package/dist/core/resource-loader-reload.d.ts.map +1 -1
  1190. package/dist/core/resource-loader-reload.js +29 -13
  1191. package/dist/core/resource-loader-reload.js.map +1 -1
  1192. package/dist/core/resource-loader-source-info.d.ts +1 -1
  1193. package/dist/core/resource-loader-source-info.d.ts.map +1 -1
  1194. package/dist/core/resource-loader-source-info.js +7 -4
  1195. package/dist/core/resource-loader-source-info.js.map +1 -1
  1196. package/dist/core/resource-loader-types.d.ts +12 -6
  1197. package/dist/core/resource-loader-types.d.ts.map +1 -1
  1198. package/dist/core/resource-loader-types.js.map +1 -1
  1199. package/dist/core/resource-loader.d.ts +1 -1
  1200. package/dist/core/resource-loader.d.ts.map +1 -1
  1201. package/dist/core/resource-loader.js +1 -1
  1202. package/dist/core/resource-loader.js.map +1 -1
  1203. package/dist/core/runtime-credentials.d.ts +16 -0
  1204. package/dist/core/runtime-credentials.d.ts.map +1 -0
  1205. package/dist/core/runtime-credentials.js +42 -0
  1206. package/dist/core/runtime-credentials.js.map +1 -0
  1207. package/dist/core/sdk-exports.d.ts +2 -2
  1208. package/dist/core/sdk-exports.d.ts.map +1 -1
  1209. package/dist/core/sdk-exports.js +2 -2
  1210. package/dist/core/sdk-exports.js.map +1 -1
  1211. package/dist/core/sdk-types.d.ts +16 -18
  1212. package/dist/core/sdk-types.d.ts.map +1 -1
  1213. package/dist/core/sdk-types.js.map +1 -1
  1214. package/dist/core/sdk.d.ts +2 -1
  1215. package/dist/core/sdk.d.ts.map +1 -1
  1216. package/dist/core/sdk.js +61 -132
  1217. package/dist/core/sdk.js.map +1 -1
  1218. package/dist/core/session-manager-archive.d.ts.map +1 -1
  1219. package/dist/core/session-manager-archive.js +5 -2
  1220. package/dist/core/session-manager-archive.js.map +1 -1
  1221. package/dist/core/session-manager-classification.js +3 -3
  1222. package/dist/core/session-manager-classification.js.map +1 -1
  1223. package/dist/core/session-manager-core.d.ts +5 -4
  1224. package/dist/core/session-manager-core.d.ts.map +1 -1
  1225. package/dist/core/session-manager-core.js +29 -33
  1226. package/dist/core/session-manager-core.js.map +1 -1
  1227. package/dist/core/session-manager-entries.d.ts +5 -8
  1228. package/dist/core/session-manager-entries.d.ts.map +1 -1
  1229. package/dist/core/session-manager-entries.js +4 -9
  1230. package/dist/core/session-manager-entries.js.map +1 -1
  1231. package/dist/core/session-manager-history.d.ts +8 -3
  1232. package/dist/core/session-manager-history.d.ts.map +1 -1
  1233. package/dist/core/session-manager-history.js +90 -27
  1234. package/dist/core/session-manager-history.js.map +1 -1
  1235. package/dist/core/session-manager-list.d.ts.map +1 -1
  1236. package/dist/core/session-manager-list.js +1 -1
  1237. package/dist/core/session-manager-list.js.map +1 -1
  1238. package/dist/core/session-manager-migrations.js.map +1 -1
  1239. package/dist/core/session-manager-storage.d.ts +6 -0
  1240. package/dist/core/session-manager-storage.d.ts.map +1 -1
  1241. package/dist/core/session-manager-storage.js +38 -5
  1242. package/dist/core/session-manager-storage.js.map +1 -1
  1243. package/dist/core/session-manager-types.d.ts +10 -8
  1244. package/dist/core/session-manager-types.d.ts.map +1 -1
  1245. package/dist/core/session-manager-types.js.map +1 -1
  1246. package/dist/core/session-manager-validation.d.ts.map +1 -1
  1247. package/dist/core/session-manager-validation.js +3 -16
  1248. package/dist/core/session-manager-validation.js.map +1 -1
  1249. package/dist/core/session-manager.d.ts +4 -4
  1250. package/dist/core/session-manager.d.ts.map +1 -1
  1251. package/dist/core/session-manager.js +2 -2
  1252. package/dist/core/session-manager.js.map +1 -1
  1253. package/dist/core/settings-manager-basic-accessors.d.ts +7 -4
  1254. package/dist/core/settings-manager-basic-accessors.d.ts.map +1 -1
  1255. package/dist/core/settings-manager-basic-accessors.js +35 -50
  1256. package/dist/core/settings-manager-basic-accessors.js.map +1 -1
  1257. package/dist/core/settings-manager-core.d.ts +2 -4
  1258. package/dist/core/settings-manager-core.d.ts.map +1 -1
  1259. package/dist/core/settings-manager-core.js +5 -51
  1260. package/dist/core/settings-manager-core.js.map +1 -1
  1261. package/dist/core/settings-manager-resource-accessors.d.ts +3 -0
  1262. package/dist/core/settings-manager-resource-accessors.d.ts.map +1 -1
  1263. package/dist/core/settings-manager-resource-accessors.js +16 -0
  1264. package/dist/core/settings-manager-resource-accessors.js.map +1 -1
  1265. package/dist/core/settings-manager-ui-accessors.js +2 -1
  1266. package/dist/core/settings-manager-ui-accessors.js.map +1 -1
  1267. package/dist/core/settings-manager.d.ts +1 -1
  1268. package/dist/core/settings-manager.d.ts.map +1 -1
  1269. package/dist/core/settings-manager.js.map +1 -1
  1270. package/dist/core/settings-storage.d.ts +3 -1
  1271. package/dist/core/settings-storage.d.ts.map +1 -1
  1272. package/dist/core/settings-storage.js +23 -1
  1273. package/dist/core/settings-storage.js.map +1 -1
  1274. package/dist/core/settings-types.d.ts +10 -6
  1275. package/dist/core/settings-types.d.ts.map +1 -1
  1276. package/dist/core/settings-types.js.map +1 -1
  1277. package/dist/core/skills-async.d.ts.map +1 -1
  1278. package/dist/core/skills-async.js +18 -8
  1279. package/dist/core/skills-async.js.map +1 -1
  1280. package/dist/core/slash-commands.d.ts +1 -0
  1281. package/dist/core/slash-commands.d.ts.map +1 -1
  1282. package/dist/core/slash-commands.js +127 -24
  1283. package/dist/core/slash-commands.js.map +1 -1
  1284. package/dist/core/source-info.d.ts +3 -1
  1285. package/dist/core/source-info.d.ts.map +1 -1
  1286. package/dist/core/source-info.js +2 -0
  1287. package/dist/core/source-info.js.map +1 -1
  1288. package/dist/core/summarization-retry.d.ts +11 -0
  1289. package/dist/core/summarization-retry.d.ts.map +1 -0
  1290. package/dist/core/summarization-retry.js +21 -0
  1291. package/dist/core/summarization-retry.js.map +1 -0
  1292. package/dist/core/system-prompt.d.ts.map +1 -1
  1293. package/dist/core/system-prompt.js +15 -18
  1294. package/dist/core/system-prompt.js.map +1 -1
  1295. package/dist/core/thinking-blocks.d.ts.map +1 -1
  1296. package/dist/core/thinking-blocks.js +2 -2
  1297. package/dist/core/thinking-blocks.js.map +1 -1
  1298. package/dist/core/tools/artifact-protocol.d.ts.map +1 -1
  1299. package/dist/core/tools/artifact-protocol.js.map +1 -1
  1300. package/dist/core/tools/artifacts.d.ts.map +1 -1
  1301. package/dist/core/tools/artifacts.js.map +1 -1
  1302. package/dist/core/tools/ask-user-question/ask-user-question.d.ts.map +1 -1
  1303. package/dist/core/tools/ask-user-question/ask-user-question.js +1 -1
  1304. package/dist/core/tools/ask-user-question/ask-user-question.js.map +1 -1
  1305. package/dist/core/tools/ask-user-question/state/build-questionnaire.d.ts +1 -1
  1306. package/dist/core/tools/ask-user-question/state/build-questionnaire.d.ts.map +1 -1
  1307. package/dist/core/tools/ask-user-question/state/build-questionnaire.js +1 -1
  1308. package/dist/core/tools/ask-user-question/state/build-questionnaire.js.map +1 -1
  1309. package/dist/core/tools/ask-user-question/state/questionnaire-session.d.ts.map +1 -1
  1310. package/dist/core/tools/ask-user-question/state/questionnaire-session.js +2 -4
  1311. package/dist/core/tools/ask-user-question/state/questionnaire-session.js.map +1 -1
  1312. package/dist/core/tools/ask-user-question/state/state-reducer.d.ts.map +1 -1
  1313. package/dist/core/tools/ask-user-question/state/state-reducer.js.map +1 -1
  1314. package/dist/core/tools/ask-user-question/view/body-residual-spacer.d.ts.map +1 -1
  1315. package/dist/core/tools/ask-user-question/view/body-residual-spacer.js.map +1 -1
  1316. package/dist/core/tools/ask-user-question/view/components/multi-select-view.d.ts.map +1 -1
  1317. package/dist/core/tools/ask-user-question/view/components/multi-select-view.js.map +1 -1
  1318. package/dist/core/tools/ask-user-question/view/components/preview/markdown-content-cache.d.ts +1 -1
  1319. package/dist/core/tools/ask-user-question/view/components/preview/markdown-content-cache.d.ts.map +1 -1
  1320. package/dist/core/tools/ask-user-question/view/components/preview/markdown-content-cache.js.map +1 -1
  1321. package/dist/core/tools/ask-user-question/view/components/preview/preview-block-renderer.d.ts +1 -1
  1322. package/dist/core/tools/ask-user-question/view/components/preview/preview-block-renderer.d.ts.map +1 -1
  1323. package/dist/core/tools/ask-user-question/view/components/preview/preview-block-renderer.js +1 -3
  1324. package/dist/core/tools/ask-user-question/view/components/preview/preview-block-renderer.js.map +1 -1
  1325. package/dist/core/tools/ask-user-question/view/components/submit-picker.d.ts.map +1 -1
  1326. package/dist/core/tools/ask-user-question/view/components/submit-picker.js.map +1 -1
  1327. package/dist/core/tools/ask-user-question/view/components/tab-bar.d.ts.map +1 -1
  1328. package/dist/core/tools/ask-user-question/view/components/tab-bar.js.map +1 -1
  1329. package/dist/core/tools/ask-user-question/view/dialog-builder.d.ts +1 -1
  1330. package/dist/core/tools/ask-user-question/view/dialog-builder.d.ts.map +1 -1
  1331. package/dist/core/tools/ask-user-question/view/dialog-builder.js +1 -1
  1332. package/dist/core/tools/ask-user-question/view/dialog-builder.js.map +1 -1
  1333. package/dist/core/tools/ask-user-question/view/props-adapter.d.ts.map +1 -1
  1334. package/dist/core/tools/ask-user-question/view/props-adapter.js +2 -4
  1335. package/dist/core/tools/ask-user-question/view/props-adapter.js.map +1 -1
  1336. package/dist/core/tools/ask-user-question/view/tab-content-strategy.d.ts +1 -1
  1337. package/dist/core/tools/ask-user-question/view/tab-content-strategy.d.ts.map +1 -1
  1338. package/dist/core/tools/ask-user-question/view/tab-content-strategy.js +2 -9
  1339. package/dist/core/tools/ask-user-question/view/tab-content-strategy.js.map +1 -1
  1340. package/dist/core/tools/bash-async-execution.d.ts.map +1 -1
  1341. package/dist/core/tools/bash-async-execution.js +11 -4
  1342. package/dist/core/tools/bash-async-execution.js.map +1 -1
  1343. package/dist/core/tools/bash-async-jobs.d.ts.map +1 -1
  1344. package/dist/core/tools/bash-async-jobs.js +14 -2
  1345. package/dist/core/tools/bash-async-jobs.js.map +1 -1
  1346. package/dist/core/tools/bash-async-output.d.ts.map +1 -1
  1347. package/dist/core/tools/bash-async-output.js +6 -2
  1348. package/dist/core/tools/bash-async-output.js.map +1 -1
  1349. package/dist/core/tools/bash-interceptor.d.ts.map +1 -1
  1350. package/dist/core/tools/bash-interceptor.js +20 -4
  1351. package/dist/core/tools/bash-interceptor.js.map +1 -1
  1352. package/dist/core/tools/bash-leading-cd.d.ts.map +1 -1
  1353. package/dist/core/tools/bash-leading-cd.js +9 -3
  1354. package/dist/core/tools/bash-leading-cd.js.map +1 -1
  1355. package/dist/core/tools/bash-pty-native.d.ts.map +1 -1
  1356. package/dist/core/tools/bash-pty-native.js.map +1 -1
  1357. package/dist/core/tools/bash-session-environment.d.ts +13 -0
  1358. package/dist/core/tools/bash-session-environment.d.ts.map +1 -0
  1359. package/dist/core/tools/bash-session-environment.js +47 -0
  1360. package/dist/core/tools/bash-session-environment.js.map +1 -0
  1361. package/dist/core/tools/bash.d.ts +4 -1
  1362. package/dist/core/tools/bash.d.ts.map +1 -1
  1363. package/dist/core/tools/bash.js +134 -30
  1364. package/dist/core/tools/bash.js.map +1 -1
  1365. package/dist/core/tools/block-resolver.d.ts.map +1 -1
  1366. package/dist/core/tools/block-resolver.js.map +1 -1
  1367. package/dist/core/tools/conflict-registry.d.ts.map +1 -1
  1368. package/dist/core/tools/conflict-registry.js.map +1 -1
  1369. package/dist/core/tools/directory-tree.d.ts.map +1 -1
  1370. package/dist/core/tools/directory-tree.js +20 -4
  1371. package/dist/core/tools/directory-tree.js.map +1 -1
  1372. package/dist/core/tools/edit.d.ts.map +1 -1
  1373. package/dist/core/tools/edit.js +37 -13
  1374. package/dist/core/tools/edit.js.map +1 -1
  1375. package/dist/core/tools/fetch-url.d.ts.map +1 -1
  1376. package/dist/core/tools/fetch-url.js +127 -41
  1377. package/dist/core/tools/fetch-url.js.map +1 -1
  1378. package/dist/core/tools/find.d.ts.map +1 -1
  1379. package/dist/core/tools/find.js +176 -46
  1380. package/dist/core/tools/find.js.map +1 -1
  1381. package/dist/core/tools/grep.d.ts.map +1 -1
  1382. package/dist/core/tools/grep.js +43 -10
  1383. package/dist/core/tools/grep.js.map +1 -1
  1384. package/dist/core/tools/hashline-engine/apply.d.ts.map +1 -1
  1385. package/dist/core/tools/hashline-engine/apply.js +6 -6
  1386. package/dist/core/tools/hashline-engine/apply.js.map +1 -1
  1387. package/dist/core/tools/hashline-engine/block.js +1 -1
  1388. package/dist/core/tools/hashline-engine/block.js.map +1 -1
  1389. package/dist/core/tools/hashline-engine/format.d.ts.map +1 -1
  1390. package/dist/core/tools/hashline-engine/format.js +1 -1
  1391. package/dist/core/tools/hashline-engine/format.js.map +1 -1
  1392. package/dist/core/tools/hashline-engine/input.d.ts.map +1 -1
  1393. package/dist/core/tools/hashline-engine/input.js +7 -7
  1394. package/dist/core/tools/hashline-engine/input.js.map +1 -1
  1395. package/dist/core/tools/hashline-engine/parser.js +1 -1
  1396. package/dist/core/tools/hashline-engine/parser.js.map +1 -1
  1397. package/dist/core/tools/hashline-engine/patcher.js +5 -5
  1398. package/dist/core/tools/hashline-engine/patcher.js.map +1 -1
  1399. package/dist/core/tools/hashline-engine/prefixes.js +4 -4
  1400. package/dist/core/tools/hashline-engine/prefixes.js.map +1 -1
  1401. package/dist/core/tools/hashline-engine/recovery.d.ts.map +1 -1
  1402. package/dist/core/tools/hashline-engine/recovery.js +4 -2
  1403. package/dist/core/tools/hashline-engine/recovery.js.map +1 -1
  1404. package/dist/core/tools/hashline-engine/snapshots.js +5 -5
  1405. package/dist/core/tools/hashline-engine/snapshots.js.map +1 -1
  1406. package/dist/core/tools/hashline.d.ts.map +1 -1
  1407. package/dist/core/tools/hashline.js +24 -13
  1408. package/dist/core/tools/hashline.js.map +1 -1
  1409. package/dist/core/tools/index.d.ts +6 -6
  1410. package/dist/core/tools/index.d.ts.map +1 -1
  1411. package/dist/core/tools/index.js +6 -6
  1412. package/dist/core/tools/index.js.map +1 -1
  1413. package/dist/core/tools/ls.d.ts.map +1 -1
  1414. package/dist/core/tools/ls.js +2 -1
  1415. package/dist/core/tools/ls.js.map +1 -1
  1416. package/dist/core/tools/notebook.d.ts.map +1 -1
  1417. package/dist/core/tools/notebook.js +13 -3
  1418. package/dist/core/tools/notebook.js.map +1 -1
  1419. package/dist/core/tools/read-document-extract.d.ts.map +1 -1
  1420. package/dist/core/tools/read-document-extract.js +30 -10
  1421. package/dist/core/tools/read-document-extract.js.map +1 -1
  1422. package/dist/core/tools/read-selectors.d.ts.map +1 -1
  1423. package/dist/core/tools/read-selectors.js +59 -15
  1424. package/dist/core/tools/read-selectors.js.map +1 -1
  1425. package/dist/core/tools/read-url.d.ts.map +1 -1
  1426. package/dist/core/tools/read-url.js +41 -7
  1427. package/dist/core/tools/read-url.js.map +1 -1
  1428. package/dist/core/tools/read.d.ts.map +1 -1
  1429. package/dist/core/tools/read.js +307 -72
  1430. package/dist/core/tools/read.js.map +1 -1
  1431. package/dist/core/tools/resource-selectors.d.ts +4 -0
  1432. package/dist/core/tools/resource-selectors.d.ts.map +1 -1
  1433. package/dist/core/tools/resource-selectors.js +324 -84
  1434. package/dist/core/tools/resource-selectors.js.map +1 -1
  1435. package/dist/core/tools/search-details.d.ts.map +1 -1
  1436. package/dist/core/tools/search-details.js +13 -1
  1437. package/dist/core/tools/search-details.js.map +1 -1
  1438. package/dist/core/tools/search-line-ranges.d.ts.map +1 -1
  1439. package/dist/core/tools/search-line-ranges.js +5 -2
  1440. package/dist/core/tools/search-line-ranges.js.map +1 -1
  1441. package/dist/core/tools/search-native.d.ts.map +1 -1
  1442. package/dist/core/tools/search-native.js.map +1 -1
  1443. package/dist/core/tools/search.d.ts.map +1 -1
  1444. package/dist/core/tools/search.js +244 -90
  1445. package/dist/core/tools/search.js.map +1 -1
  1446. package/dist/core/tools/structured-output.d.ts +1 -1
  1447. package/dist/core/tools/structured-output.d.ts.map +1 -1
  1448. package/dist/core/tools/structured-output.js.map +1 -1
  1449. package/dist/core/tools/todos-execute.d.ts.map +1 -1
  1450. package/dist/core/tools/todos-execute.js +4 -4
  1451. package/dist/core/tools/todos-execute.js.map +1 -1
  1452. package/dist/core/tools/todos-locks.d.ts.map +1 -1
  1453. package/dist/core/tools/todos-locks.js.map +1 -1
  1454. package/dist/core/tools/todos-mutations.js +1 -1
  1455. package/dist/core/tools/todos-mutations.js.map +1 -1
  1456. package/dist/core/tools/todos-paths.js +2 -2
  1457. package/dist/core/tools/todos-paths.js.map +1 -1
  1458. package/dist/core/tools/todos-render.d.ts.map +1 -1
  1459. package/dist/core/tools/todos-render.js +2 -2
  1460. package/dist/core/tools/todos-render.js.map +1 -1
  1461. package/dist/core/tools/todos-storage.d.ts.map +1 -1
  1462. package/dist/core/tools/todos-storage.js +1 -2
  1463. package/dist/core/tools/todos-storage.js.map +1 -1
  1464. package/dist/core/tools/todos-types.d.ts.map +1 -1
  1465. package/dist/core/tools/todos-types.js +1 -11
  1466. package/dist/core/tools/todos-types.js.map +1 -1
  1467. package/dist/core/tools/tool-definition-wrapper.d.ts +3 -0
  1468. package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -1
  1469. package/dist/core/tools/tool-definition-wrapper.js +9 -5
  1470. package/dist/core/tools/tool-definition-wrapper.js.map +1 -1
  1471. package/dist/core/tools/url-ip-guards.d.ts.map +1 -1
  1472. package/dist/core/tools/url-ip-guards.js +27 -17
  1473. package/dist/core/tools/url-ip-guards.js.map +1 -1
  1474. package/dist/core/tools/write.d.ts.map +1 -1
  1475. package/dist/core/tools/write.js +88 -29
  1476. package/dist/core/tools/write.js.map +1 -1
  1477. package/dist/core/usage-totals.d.ts +18 -0
  1478. package/dist/core/usage-totals.d.ts.map +1 -0
  1479. package/dist/core/usage-totals.js +43 -0
  1480. package/dist/core/usage-totals.js.map +1 -0
  1481. package/dist/core/workflow-stage-admission.d.ts.map +1 -1
  1482. package/dist/core/workflow-stage-admission.js +8 -2
  1483. package/dist/core/workflow-stage-admission.js.map +1 -1
  1484. package/dist/extensions/index.d.ts +3 -0
  1485. package/dist/extensions/index.d.ts.map +1 -0
  1486. package/dist/extensions/index.js +5 -0
  1487. package/dist/extensions/index.js.map +1 -0
  1488. package/dist/extensions/llama/client.d.ts +61 -0
  1489. package/dist/extensions/llama/client.d.ts.map +1 -0
  1490. package/dist/extensions/llama/client.js +300 -0
  1491. package/dist/extensions/llama/client.js.map +1 -0
  1492. package/dist/extensions/llama/huggingface-ui.d.ts +33 -0
  1493. package/dist/extensions/llama/huggingface-ui.d.ts.map +1 -0
  1494. package/dist/extensions/llama/huggingface-ui.js +166 -0
  1495. package/dist/extensions/llama/huggingface-ui.js.map +1 -0
  1496. package/dist/extensions/llama/huggingface.d.ts +23 -0
  1497. package/dist/extensions/llama/huggingface.d.ts.map +1 -0
  1498. package/dist/extensions/llama/huggingface.js +139 -0
  1499. package/dist/extensions/llama/huggingface.js.map +1 -0
  1500. package/dist/extensions/llama/index.d.ts +3 -0
  1501. package/dist/extensions/llama/index.d.ts.map +1 -0
  1502. package/dist/extensions/llama/index.js +208 -0
  1503. package/dist/extensions/llama/index.js.map +1 -0
  1504. package/dist/extensions/llama/provider.d.ts +10 -0
  1505. package/dist/extensions/llama/provider.d.ts.map +1 -0
  1506. package/dist/extensions/llama/provider.js +107 -0
  1507. package/dist/extensions/llama/provider.js.map +1 -0
  1508. package/dist/extensions/llama/ui.d.ts +42 -0
  1509. package/dist/extensions/llama/ui.d.ts.map +1 -0
  1510. package/dist/extensions/llama/ui.js +237 -0
  1511. package/dist/extensions/llama/ui.js.map +1 -0
  1512. package/dist/index-extensions.d.ts +2 -2
  1513. package/dist/index-extensions.d.ts.map +1 -1
  1514. package/dist/index-extensions.js +1 -1
  1515. package/dist/index-extensions.js.map +1 -1
  1516. package/dist/index.d.ts +22 -23
  1517. package/dist/index.d.ts.map +1 -1
  1518. package/dist/index.js +26 -27
  1519. package/dist/index.js.map +1 -1
  1520. package/dist/main-app-mode.d.ts +1 -0
  1521. package/dist/main-app-mode.d.ts.map +1 -1
  1522. package/dist/main-app-mode.js +3 -0
  1523. package/dist/main-app-mode.js.map +1 -1
  1524. package/dist/main-deferred-startup.d.ts +1 -1
  1525. package/dist/main-deferred-startup.d.ts.map +1 -1
  1526. package/dist/main-deferred-startup.js +16 -15
  1527. package/dist/main-deferred-startup.js.map +1 -1
  1528. package/dist/main-early-input.js.map +1 -1
  1529. package/dist/main-first-time-setup.d.ts +6 -0
  1530. package/dist/main-first-time-setup.d.ts.map +1 -0
  1531. package/dist/main-first-time-setup.js +10 -0
  1532. package/dist/main-first-time-setup.js.map +1 -0
  1533. package/dist/main-runtime-api-key.d.ts +6 -0
  1534. package/dist/main-runtime-api-key.d.ts.map +1 -0
  1535. package/dist/main-runtime-api-key.js +6 -0
  1536. package/dist/main-runtime-api-key.js.map +1 -0
  1537. package/dist/main-session-options.d.ts +2 -2
  1538. package/dist/main-session-options.d.ts.map +1 -1
  1539. package/dist/main-session-options.js +3 -7
  1540. package/dist/main-session-options.js.map +1 -1
  1541. package/dist/main-session.d.ts.map +1 -1
  1542. package/dist/main-session.js +5 -4
  1543. package/dist/main-session.js.map +1 -1
  1544. package/dist/main-types.d.ts +2 -2
  1545. package/dist/main-types.d.ts.map +1 -1
  1546. package/dist/main-types.js.map +1 -1
  1547. package/dist/main.d.ts +1 -1
  1548. package/dist/main.d.ts.map +1 -1
  1549. package/dist/main.js +173 -69
  1550. package/dist/main.js.map +1 -1
  1551. package/dist/migrations-config-values.d.ts.map +1 -1
  1552. package/dist/migrations-config-values.js +3 -1
  1553. package/dist/migrations-config-values.js.map +1 -1
  1554. package/dist/migrations.d.ts.map +1 -1
  1555. package/dist/migrations.js.map +1 -1
  1556. package/dist/modes/index.d.ts +1 -1
  1557. package/dist/modes/index.d.ts.map +1 -1
  1558. package/dist/modes/index.js.map +1 -1
  1559. package/dist/modes/interactive/chat-input-actions.d.ts +1 -1
  1560. package/dist/modes/interactive/chat-input-actions.d.ts.map +1 -1
  1561. package/dist/modes/interactive/chat-input-actions.js +30 -103
  1562. package/dist/modes/interactive/chat-input-actions.js.map +1 -1
  1563. package/dist/modes/interactive/components/atomic-banner.d.ts +9 -8
  1564. package/dist/modes/interactive/components/atomic-banner.d.ts.map +1 -1
  1565. package/dist/modes/interactive/components/atomic-banner.js +68 -22
  1566. package/dist/modes/interactive/components/atomic-banner.js.map +1 -1
  1567. package/dist/modes/interactive/components/atomic-working-status.d.ts +52 -0
  1568. package/dist/modes/interactive/components/atomic-working-status.d.ts.map +1 -0
  1569. package/dist/modes/interactive/components/atomic-working-status.js +215 -0
  1570. package/dist/modes/interactive/components/atomic-working-status.js.map +1 -0
  1571. package/dist/modes/interactive/components/chat-message-renderer.d.ts +1 -1
  1572. package/dist/modes/interactive/components/chat-message-renderer.d.ts.map +1 -1
  1573. package/dist/modes/interactive/components/chat-message-renderer.js +7 -6
  1574. package/dist/modes/interactive/components/chat-message-renderer.js.map +1 -1
  1575. package/dist/modes/interactive/components/chat-session-host-actions.d.ts +3 -2
  1576. package/dist/modes/interactive/components/chat-session-host-actions.d.ts.map +1 -1
  1577. package/dist/modes/interactive/components/chat-session-host-actions.js +93 -17
  1578. package/dist/modes/interactive/components/chat-session-host-actions.js.map +1 -1
  1579. package/dist/modes/interactive/components/chat-session-host-editor.d.ts +4 -4
  1580. package/dist/modes/interactive/components/chat-session-host-editor.d.ts.map +1 -1
  1581. package/dist/modes/interactive/components/chat-session-host-editor.js +12 -7
  1582. package/dist/modes/interactive/components/chat-session-host-editor.js.map +1 -1
  1583. package/dist/modes/interactive/components/chat-session-host-events.d.ts.map +1 -1
  1584. package/dist/modes/interactive/components/chat-session-host-events.js +84 -15
  1585. package/dist/modes/interactive/components/chat-session-host-events.js.map +1 -1
  1586. package/dist/modes/interactive/components/chat-session-host-rendering.d.ts +1 -1
  1587. package/dist/modes/interactive/components/chat-session-host-rendering.d.ts.map +1 -1
  1588. package/dist/modes/interactive/components/chat-session-host-rendering.js +49 -14
  1589. package/dist/modes/interactive/components/chat-session-host-rendering.js.map +1 -1
  1590. package/dist/modes/interactive/components/chat-session-host-runtime.d.ts +36 -2
  1591. package/dist/modes/interactive/components/chat-session-host-runtime.d.ts.map +1 -1
  1592. package/dist/modes/interactive/components/chat-session-host-runtime.js +129 -25
  1593. package/dist/modes/interactive/components/chat-session-host-runtime.js.map +1 -1
  1594. package/dist/modes/interactive/components/chat-session-host-state.d.ts +11 -2
  1595. package/dist/modes/interactive/components/chat-session-host-state.d.ts.map +1 -1
  1596. package/dist/modes/interactive/components/chat-session-host-state.js +5 -0
  1597. package/dist/modes/interactive/components/chat-session-host-state.js.map +1 -1
  1598. package/dist/modes/interactive/components/chat-session-host-terminal-cleanup.d.ts.map +1 -1
  1599. package/dist/modes/interactive/components/chat-session-host-terminal-cleanup.js.map +1 -1
  1600. package/dist/modes/interactive/components/chat-session-host-types.d.ts +19 -2
  1601. package/dist/modes/interactive/components/chat-session-host-types.d.ts.map +1 -1
  1602. package/dist/modes/interactive/components/chat-session-host-types.js.map +1 -1
  1603. package/dist/modes/interactive/components/chat-session-host-utils.d.ts +1 -1
  1604. package/dist/modes/interactive/components/chat-session-host-utils.d.ts.map +1 -1
  1605. package/dist/modes/interactive/components/chat-session-host-utils.js +3 -8
  1606. package/dist/modes/interactive/components/chat-session-host-utils.js.map +1 -1
  1607. package/dist/modes/interactive/components/chat-session-host.d.ts +17 -4
  1608. package/dist/modes/interactive/components/chat-session-host.d.ts.map +1 -1
  1609. package/dist/modes/interactive/components/chat-session-host.js +26 -3
  1610. package/dist/modes/interactive/components/chat-session-host.js.map +1 -1
  1611. package/dist/modes/interactive/components/chat-transcript.d.ts +1 -1
  1612. package/dist/modes/interactive/components/chat-transcript.d.ts.map +1 -1
  1613. package/dist/modes/interactive/components/chat-transcript.js +5 -12
  1614. package/dist/modes/interactive/components/chat-transcript.js.map +1 -1
  1615. package/dist/modes/interactive/components/compaction-boundary-message.d.ts.map +1 -1
  1616. package/dist/modes/interactive/components/compaction-boundary-message.js +20 -8
  1617. package/dist/modes/interactive/components/compaction-boundary-message.js.map +1 -1
  1618. package/dist/modes/interactive/components/config-selector-list.d.ts +6 -6
  1619. package/dist/modes/interactive/components/config-selector-list.d.ts.map +1 -1
  1620. package/dist/modes/interactive/components/config-selector-list.js +66 -125
  1621. package/dist/modes/interactive/components/config-selector-list.js.map +1 -1
  1622. package/dist/modes/interactive/components/config-selector-project-scope.d.ts +4 -0
  1623. package/dist/modes/interactive/components/config-selector-project-scope.d.ts.map +1 -0
  1624. package/dist/modes/interactive/components/config-selector-project-scope.js +59 -0
  1625. package/dist/modes/interactive/components/config-selector-project-scope.js.map +1 -0
  1626. package/dist/modes/interactive/components/config-selector.d.ts +8 -5
  1627. package/dist/modes/interactive/components/config-selector.d.ts.map +1 -1
  1628. package/dist/modes/interactive/components/config-selector.js +46 -13
  1629. package/dist/modes/interactive/components/config-selector.js.map +1 -1
  1630. package/dist/modes/interactive/components/countdown-timer.d.ts.map +1 -1
  1631. package/dist/modes/interactive/components/countdown-timer.js.map +1 -1
  1632. package/dist/modes/interactive/components/custom-editor.d.ts +11 -0
  1633. package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -1
  1634. package/dist/modes/interactive/components/custom-editor.js +21 -5
  1635. package/dist/modes/interactive/components/custom-editor.js.map +1 -1
  1636. package/dist/modes/interactive/components/custom-entry.d.ts +16 -0
  1637. package/dist/modes/interactive/components/custom-entry.d.ts.map +1 -0
  1638. package/dist/modes/interactive/components/custom-entry.js +45 -0
  1639. package/dist/modes/interactive/components/custom-entry.js.map +1 -0
  1640. package/dist/modes/interactive/components/custom-message.d.ts +3 -1
  1641. package/dist/modes/interactive/components/custom-message.d.ts.map +1 -1
  1642. package/dist/modes/interactive/components/custom-message.js +10 -5
  1643. package/dist/modes/interactive/components/custom-message.js.map +1 -1
  1644. package/dist/modes/interactive/components/diff.js +2 -2
  1645. package/dist/modes/interactive/components/diff.js.map +1 -1
  1646. package/dist/modes/interactive/components/extension-editor.d.ts +3 -2
  1647. package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -1
  1648. package/dist/modes/interactive/components/extension-editor.js +14 -43
  1649. package/dist/modes/interactive/components/extension-editor.js.map +1 -1
  1650. package/dist/modes/interactive/components/first-time-setup.d.ts +24 -0
  1651. package/dist/modes/interactive/components/first-time-setup.d.ts.map +1 -0
  1652. package/dist/modes/interactive/components/first-time-setup.js +80 -0
  1653. package/dist/modes/interactive/components/first-time-setup.js.map +1 -0
  1654. package/dist/modes/interactive/components/footer.d.ts +7 -1
  1655. package/dist/modes/interactive/components/footer.d.ts.map +1 -1
  1656. package/dist/modes/interactive/components/footer.js +68 -39
  1657. package/dist/modes/interactive/components/footer.js.map +1 -1
  1658. package/dist/modes/interactive/components/host-input-form-mount.d.ts.map +1 -1
  1659. package/dist/modes/interactive/components/host-input-form-mount.js +4 -2
  1660. package/dist/modes/interactive/components/host-input-form-mount.js.map +1 -1
  1661. package/dist/modes/interactive/components/host-input-form.d.ts +2 -0
  1662. package/dist/modes/interactive/components/host-input-form.d.ts.map +1 -1
  1663. package/dist/modes/interactive/components/host-input-form.js +61 -24
  1664. package/dist/modes/interactive/components/host-input-form.js.map +1 -1
  1665. package/dist/modes/interactive/components/host-session-picker.d.ts.map +1 -1
  1666. package/dist/modes/interactive/components/host-session-picker.js +8 -3
  1667. package/dist/modes/interactive/components/host-session-picker.js.map +1 -1
  1668. package/dist/modes/interactive/components/idle-status.d.ts +8 -0
  1669. package/dist/modes/interactive/components/idle-status.d.ts.map +1 -0
  1670. package/dist/modes/interactive/components/idle-status.js +13 -0
  1671. package/dist/modes/interactive/components/idle-status.js.map +1 -0
  1672. package/dist/modes/interactive/components/index.d.ts +8 -5
  1673. package/dist/modes/interactive/components/index.d.ts.map +1 -1
  1674. package/dist/modes/interactive/components/index.js +5 -2
  1675. package/dist/modes/interactive/components/index.js.map +1 -1
  1676. package/dist/modes/interactive/components/keybinding-hints.d.ts.map +1 -1
  1677. package/dist/modes/interactive/components/keybinding-hints.js.map +1 -1
  1678. package/dist/modes/interactive/components/login-dialog.d.ts +5 -5
  1679. package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
  1680. package/dist/modes/interactive/components/login-dialog.js +15 -9
  1681. package/dist/modes/interactive/components/login-dialog.js.map +1 -1
  1682. package/dist/modes/interactive/components/model-selector.d.ts +4 -3
  1683. package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
  1684. package/dist/modes/interactive/components/model-selector.js +70 -72
  1685. package/dist/modes/interactive/components/model-selector.js.map +1 -1
  1686. package/dist/modes/interactive/components/oauth-selector.d.ts +4 -3
  1687. package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -1
  1688. package/dist/modes/interactive/components/oauth-selector.js +19 -18
  1689. package/dist/modes/interactive/components/oauth-selector.js.map +1 -1
  1690. package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -1
  1691. package/dist/modes/interactive/components/scoped-models-selector.js +22 -13
  1692. package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -1
  1693. package/dist/modes/interactive/components/session-selector-list.d.ts +1 -1
  1694. package/dist/modes/interactive/components/session-selector-list.d.ts.map +1 -1
  1695. package/dist/modes/interactive/components/session-selector-list.js.map +1 -1
  1696. package/dist/modes/interactive/components/session-selector.d.ts.map +1 -1
  1697. package/dist/modes/interactive/components/session-selector.js.map +1 -1
  1698. package/dist/modes/interactive/components/settings-selector-handlers.d.ts.map +1 -1
  1699. package/dist/modes/interactive/components/settings-selector-handlers.js +6 -0
  1700. package/dist/modes/interactive/components/settings-selector-handlers.js.map +1 -1
  1701. package/dist/modes/interactive/components/settings-selector-items.d.ts.map +1 -1
  1702. package/dist/modes/interactive/components/settings-selector-items.js +14 -0
  1703. package/dist/modes/interactive/components/settings-selector-items.js.map +1 -1
  1704. package/dist/modes/interactive/components/settings-selector-submenus.d.ts.map +1 -1
  1705. package/dist/modes/interactive/components/settings-selector-submenus.js.map +1 -1
  1706. package/dist/modes/interactive/components/settings-selector-types.d.ts +4 -0
  1707. package/dist/modes/interactive/components/settings-selector-types.d.ts.map +1 -1
  1708. package/dist/modes/interactive/components/settings-selector-types.js.map +1 -1
  1709. package/dist/modes/interactive/components/startup-identity.d.ts +22 -0
  1710. package/dist/modes/interactive/components/startup-identity.d.ts.map +1 -0
  1711. package/dist/modes/interactive/components/startup-identity.js +58 -0
  1712. package/dist/modes/interactive/components/startup-identity.js.map +1 -0
  1713. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  1714. package/dist/modes/interactive/components/tool-execution.js.map +1 -1
  1715. package/dist/modes/interactive/components/tree-selector-content.d.ts.map +1 -1
  1716. package/dist/modes/interactive/components/tree-selector-content.js +0 -6
  1717. package/dist/modes/interactive/components/tree-selector-content.js.map +1 -1
  1718. package/dist/modes/interactive/components/tree-selector-model.d.ts.map +1 -1
  1719. package/dist/modes/interactive/components/tree-selector-model.js +1 -10
  1720. package/dist/modes/interactive/components/tree-selector-model.js.map +1 -1
  1721. package/dist/modes/interactive/components/tree-selector-viewport.d.ts.map +1 -1
  1722. package/dist/modes/interactive/components/tree-selector-viewport.js.map +1 -1
  1723. package/dist/modes/interactive/components/working-status.d.ts +5 -11
  1724. package/dist/modes/interactive/components/working-status.d.ts.map +1 -1
  1725. package/dist/modes/interactive/components/working-status.js +14 -15
  1726. package/dist/modes/interactive/components/working-status.js.map +1 -1
  1727. package/dist/modes/interactive/external-editor.d.ts +23 -0
  1728. package/dist/modes/interactive/external-editor.d.ts.map +1 -0
  1729. package/dist/modes/interactive/external-editor.js +120 -0
  1730. package/dist/modes/interactive/external-editor.js.map +1 -0
  1731. package/dist/modes/interactive/interactive-agent-events.js +73 -28
  1732. package/dist/modes/interactive/interactive-agent-events.js.map +1 -1
  1733. package/dist/modes/interactive/interactive-auth-login.js +36 -28
  1734. package/dist/modes/interactive/interactive-auth-login.js.map +1 -1
  1735. package/dist/modes/interactive/interactive-auth-routing.d.ts +4 -1
  1736. package/dist/modes/interactive/interactive-auth-routing.d.ts.map +1 -1
  1737. package/dist/modes/interactive/interactive-auth-routing.js +92 -65
  1738. package/dist/modes/interactive/interactive-auth-routing.js.map +1 -1
  1739. package/dist/modes/interactive/interactive-autocomplete.js +24 -14
  1740. package/dist/modes/interactive/interactive-autocomplete.js.map +1 -1
  1741. package/dist/modes/interactive/interactive-bash-compact.d.ts +2 -1
  1742. package/dist/modes/interactive/interactive-bash-compact.d.ts.map +1 -1
  1743. package/dist/modes/interactive/interactive-bash-compact.js +26 -8
  1744. package/dist/modes/interactive/interactive-bash-compact.js.map +1 -1
  1745. package/dist/modes/interactive/interactive-deferred-startup.d.ts.map +1 -1
  1746. package/dist/modes/interactive/interactive-deferred-startup.js +61 -27
  1747. package/dist/modes/interactive/interactive-deferred-startup.js.map +1 -1
  1748. package/dist/modes/interactive/interactive-editor-actions.js +9 -13
  1749. package/dist/modes/interactive/interactive-editor-actions.js.map +1 -1
  1750. package/dist/modes/interactive/interactive-extension-context.js +4 -4
  1751. package/dist/modes/interactive/interactive-extension-context.js.map +1 -1
  1752. package/dist/modes/interactive/interactive-extension-custom-ui.js +15 -8
  1753. package/dist/modes/interactive/interactive-extension-custom-ui.js.map +1 -1
  1754. package/dist/modes/interactive/interactive-extension-dialogs.js +51 -25
  1755. package/dist/modes/interactive/interactive-extension-dialogs.js.map +1 -1
  1756. package/dist/modes/interactive/interactive-extension-runtime.js +15 -6
  1757. package/dist/modes/interactive/interactive-extension-runtime.js.map +1 -1
  1758. package/dist/modes/interactive/interactive-extension-widgets.js +1 -1
  1759. package/dist/modes/interactive/interactive-extension-widgets.js.map +1 -1
  1760. package/dist/modes/interactive/interactive-global-clear.d.ts +55 -3
  1761. package/dist/modes/interactive/interactive-global-clear.d.ts.map +1 -1
  1762. package/dist/modes/interactive/interactive-global-clear.js +61 -3
  1763. package/dist/modes/interactive/interactive-global-clear.js.map +1 -1
  1764. package/dist/modes/interactive/interactive-hotkeys-debug.js +2 -3
  1765. package/dist/modes/interactive/interactive-hotkeys-debug.js.map +1 -1
  1766. package/dist/modes/interactive/interactive-initial-session-binding.d.ts +4 -0
  1767. package/dist/modes/interactive/interactive-initial-session-binding.d.ts.map +1 -0
  1768. package/dist/modes/interactive/interactive-initial-session-binding.js +23 -0
  1769. package/dist/modes/interactive/interactive-initial-session-binding.js.map +1 -0
  1770. package/dist/modes/interactive/interactive-input-handling.d.ts +2 -1
  1771. package/dist/modes/interactive/interactive-input-handling.d.ts.map +1 -1
  1772. package/dist/modes/interactive/interactive-input-handling.js +82 -69
  1773. package/dist/modes/interactive/interactive-input-handling.js.map +1 -1
  1774. package/dist/modes/interactive/interactive-key-identity.d.ts +22 -0
  1775. package/dist/modes/interactive/interactive-key-identity.d.ts.map +1 -0
  1776. package/dist/modes/interactive/interactive-key-identity.js +29 -0
  1777. package/dist/modes/interactive/interactive-key-identity.js.map +1 -0
  1778. package/dist/modes/interactive/interactive-mode-base.d.ts +18 -13
  1779. package/dist/modes/interactive/interactive-mode-base.d.ts.map +1 -1
  1780. package/dist/modes/interactive/interactive-mode-base.js +26 -18
  1781. package/dist/modes/interactive/interactive-mode-base.js.map +1 -1
  1782. package/dist/modes/interactive/interactive-mode-deps.d.ts +20 -22
  1783. package/dist/modes/interactive/interactive-mode-deps.d.ts.map +1 -1
  1784. package/dist/modes/interactive/interactive-mode-deps.js +16 -18
  1785. package/dist/modes/interactive/interactive-mode-deps.js.map +1 -1
  1786. package/dist/modes/interactive/interactive-mode-helpers.d.ts +3 -2
  1787. package/dist/modes/interactive/interactive-mode-helpers.d.ts.map +1 -1
  1788. package/dist/modes/interactive/interactive-mode-helpers.js +8 -18
  1789. package/dist/modes/interactive/interactive-mode-helpers.js.map +1 -1
  1790. package/dist/modes/interactive/interactive-mode-surface.d.ts +28 -17
  1791. package/dist/modes/interactive/interactive-mode-surface.d.ts.map +1 -1
  1792. package/dist/modes/interactive/interactive-mode-surface.js +1 -0
  1793. package/dist/modes/interactive/interactive-mode-surface.js.map +1 -1
  1794. package/dist/modes/interactive/interactive-mode-types.d.ts +2 -2
  1795. package/dist/modes/interactive/interactive-mode-types.d.ts.map +1 -1
  1796. package/dist/modes/interactive/interactive-mode-types.js.map +1 -1
  1797. package/dist/modes/interactive/interactive-mode.d.ts +1 -0
  1798. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  1799. package/dist/modes/interactive/interactive-mode.js +1 -0
  1800. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  1801. package/dist/modes/interactive/interactive-model-catalog-startup.d.ts +12 -0
  1802. package/dist/modes/interactive/interactive-model-catalog-startup.d.ts.map +1 -0
  1803. package/dist/modes/interactive/interactive-model-catalog-startup.js +22 -0
  1804. package/dist/modes/interactive/interactive-model-catalog-startup.js.map +1 -0
  1805. package/dist/modes/interactive/interactive-model-routing.js +41 -111
  1806. package/dist/modes/interactive/interactive-model-routing.js.map +1 -1
  1807. package/dist/modes/interactive/interactive-onboarding.js +7 -7
  1808. package/dist/modes/interactive/interactive-onboarding.js.map +1 -1
  1809. package/dist/modes/interactive/interactive-pause.d.ts +4 -0
  1810. package/dist/modes/interactive/interactive-pause.d.ts.map +1 -0
  1811. package/dist/modes/interactive/interactive-pause.js +8 -0
  1812. package/dist/modes/interactive/interactive-pause.js.map +1 -0
  1813. package/dist/modes/interactive/interactive-process-lifecycle.js +43 -12
  1814. package/dist/modes/interactive/interactive-process-lifecycle.js.map +1 -1
  1815. package/dist/modes/interactive/interactive-prompt-restore.d.ts +58 -0
  1816. package/dist/modes/interactive/interactive-prompt-restore.d.ts.map +1 -0
  1817. package/dist/modes/interactive/interactive-prompt-restore.js +87 -0
  1818. package/dist/modes/interactive/interactive-prompt-restore.js.map +1 -0
  1819. package/dist/modes/interactive/interactive-prompt-turn.d.ts +2 -0
  1820. package/dist/modes/interactive/interactive-prompt-turn.d.ts.map +1 -0
  1821. package/dist/modes/interactive/interactive-prompt-turn.js +56 -0
  1822. package/dist/modes/interactive/interactive-prompt-turn.js.map +1 -0
  1823. package/dist/modes/interactive/interactive-queueing.js +6 -9
  1824. package/dist/modes/interactive/interactive-queueing.js.map +1 -1
  1825. package/dist/modes/interactive/interactive-render-chat.js +128 -48
  1826. package/dist/modes/interactive/interactive-render-chat.js.map +1 -1
  1827. package/dist/modes/interactive/interactive-resource-disclosure.js +1 -3
  1828. package/dist/modes/interactive/interactive-resource-disclosure.js.map +1 -1
  1829. package/dist/modes/interactive/interactive-resource-paths.js +17 -21
  1830. package/dist/modes/interactive/interactive-resource-paths.js.map +1 -1
  1831. package/dist/modes/interactive/interactive-resource-rendering.js +110 -12
  1832. package/dist/modes/interactive/interactive-resource-rendering.js.map +1 -1
  1833. package/dist/modes/interactive/interactive-selectors.js +13 -5
  1834. package/dist/modes/interactive/interactive-selectors.js.map +1 -1
  1835. package/dist/modes/interactive/interactive-session-routing.js +19 -4
  1836. package/dist/modes/interactive/interactive-session-routing.js.map +1 -1
  1837. package/dist/modes/interactive/interactive-session-runtime.js +12 -1
  1838. package/dist/modes/interactive/interactive-session-runtime.js.map +1 -1
  1839. package/dist/modes/interactive/interactive-slash-commands.js +23 -4
  1840. package/dist/modes/interactive/interactive-slash-commands.js.map +1 -1
  1841. package/dist/modes/interactive/interactive-startup-chat-container.d.ts +20 -0
  1842. package/dist/modes/interactive/interactive-startup-chat-container.d.ts.map +1 -0
  1843. package/dist/modes/interactive/interactive-startup-chat-container.js +26 -0
  1844. package/dist/modes/interactive/interactive-startup-chat-container.js.map +1 -0
  1845. package/dist/modes/interactive/interactive-startup.d.ts +1 -1
  1846. package/dist/modes/interactive/interactive-startup.d.ts.map +1 -1
  1847. package/dist/modes/interactive/interactive-startup.js +37 -37
  1848. package/dist/modes/interactive/interactive-startup.js.map +1 -1
  1849. package/dist/modes/interactive/interactive-submission.d.ts +24 -0
  1850. package/dist/modes/interactive/interactive-submission.d.ts.map +1 -0
  1851. package/dist/modes/interactive/interactive-submission.js +10 -0
  1852. package/dist/modes/interactive/interactive-submission.js.map +1 -0
  1853. package/dist/modes/interactive/interactive-summarization-retry-events.d.ts +8 -0
  1854. package/dist/modes/interactive/interactive-summarization-retry-events.d.ts.map +1 -0
  1855. package/dist/modes/interactive/interactive-summarization-retry-events.js +48 -0
  1856. package/dist/modes/interactive/interactive-summarization-retry-events.js.map +1 -0
  1857. package/dist/modes/interactive/login-provider-options.d.ts +21 -0
  1858. package/dist/modes/interactive/login-provider-options.d.ts.map +1 -0
  1859. package/dist/modes/interactive/login-provider-options.js +50 -0
  1860. package/dist/modes/interactive/login-provider-options.js.map +1 -0
  1861. package/dist/modes/interactive/theme/catppuccin-frappe.json +1 -1
  1862. package/dist/modes/interactive/theme/catppuccin-latte.json +1 -1
  1863. package/dist/modes/interactive/theme/catppuccin-macchiato.json +1 -1
  1864. package/dist/modes/interactive/theme/catppuccin-mocha.json +9 -1
  1865. package/dist/modes/interactive/theme/dark.json +1 -1
  1866. package/dist/modes/interactive/theme/global-theme.d.ts +1 -1
  1867. package/dist/modes/interactive/theme/global-theme.d.ts.map +1 -1
  1868. package/dist/modes/interactive/theme/global-theme.js.map +1 -1
  1869. package/dist/modes/interactive/theme/light.json +1 -1
  1870. package/dist/modes/interactive/theme/theme-class.d.ts +4 -0
  1871. package/dist/modes/interactive/theme/theme-class.d.ts.map +1 -1
  1872. package/dist/modes/interactive/theme/theme-class.js +7 -0
  1873. package/dist/modes/interactive/theme/theme-class.js.map +1 -1
  1874. package/dist/modes/interactive/theme/theme-loading.d.ts.map +1 -1
  1875. package/dist/modes/interactive/theme/theme-loading.js +5 -1
  1876. package/dist/modes/interactive/theme/theme-loading.js.map +1 -1
  1877. package/dist/modes/interactive/theme/theme-schema.d.ts +32 -0
  1878. package/dist/modes/interactive/theme/theme-schema.d.ts.map +1 -1
  1879. package/dist/modes/interactive/theme/theme-schema.js +8 -0
  1880. package/dist/modes/interactive/theme/theme-schema.js.map +1 -1
  1881. package/dist/modes/interactive/theme/theme-schema.json +15 -2
  1882. package/dist/modes/interactive/theme/theme.d.ts +2 -2
  1883. package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  1884. package/dist/modes/interactive/theme/theme.js +2 -2
  1885. package/dist/modes/interactive/theme/theme.js.map +1 -1
  1886. package/dist/modes/interactive/whimsical-messages.d.ts +1 -0
  1887. package/dist/modes/interactive/whimsical-messages.d.ts.map +1 -1
  1888. package/dist/modes/interactive/whimsical-messages.js +2 -2
  1889. package/dist/modes/interactive/whimsical-messages.js.map +1 -1
  1890. package/dist/modes/interactive-engine/activity-watchdog.d.ts +16 -6
  1891. package/dist/modes/interactive-engine/activity-watchdog.d.ts.map +1 -1
  1892. package/dist/modes/interactive-engine/activity-watchdog.js +12 -6
  1893. package/dist/modes/interactive-engine/activity-watchdog.js.map +1 -1
  1894. package/dist/modes/interactive-engine/create-isolated-runtime.d.ts.map +1 -1
  1895. package/dist/modes/interactive-engine/create-isolated-runtime.js +8 -5
  1896. package/dist/modes/interactive-engine/create-isolated-runtime.js.map +1 -1
  1897. package/dist/modes/interactive-engine/engine-args.d.ts.map +1 -1
  1898. package/dist/modes/interactive-engine/engine-args.js +0 -1
  1899. package/dist/modes/interactive-engine/engine-args.js.map +1 -1
  1900. package/dist/modes/interactive-engine/engine-child-liveness.d.ts.map +1 -1
  1901. package/dist/modes/interactive-engine/engine-child-liveness.js +6 -4
  1902. package/dist/modes/interactive-engine/engine-child-liveness.js.map +1 -1
  1903. package/dist/modes/interactive-engine/engine-custom-ui.d.ts +3 -2
  1904. package/dist/modes/interactive-engine/engine-custom-ui.d.ts.map +1 -1
  1905. package/dist/modes/interactive-engine/engine-custom-ui.js +37 -28
  1906. package/dist/modes/interactive-engine/engine-custom-ui.js.map +1 -1
  1907. package/dist/modes/interactive-engine/engine-diagnostic-view.d.ts +16 -0
  1908. package/dist/modes/interactive-engine/engine-diagnostic-view.d.ts.map +1 -0
  1909. package/dist/modes/interactive-engine/engine-diagnostic-view.js +19 -0
  1910. package/dist/modes/interactive-engine/engine-diagnostic-view.js.map +1 -0
  1911. package/dist/modes/interactive-engine/engine-dialog-host.d.ts +33 -0
  1912. package/dist/modes/interactive-engine/engine-dialog-host.d.ts.map +1 -0
  1913. package/dist/modes/interactive-engine/engine-dialog-host.js +129 -0
  1914. package/dist/modes/interactive-engine/engine-dialog-host.js.map +1 -0
  1915. package/dist/modes/interactive-engine/engine-generation.d.ts +29 -0
  1916. package/dist/modes/interactive-engine/engine-generation.d.ts.map +1 -0
  1917. package/dist/modes/interactive-engine/engine-generation.js +11 -0
  1918. package/dist/modes/interactive-engine/engine-generation.js.map +1 -0
  1919. package/dist/modes/interactive-engine/engine-health.d.ts +107 -0
  1920. package/dist/modes/interactive-engine/engine-health.d.ts.map +1 -0
  1921. package/dist/modes/interactive-engine/engine-health.js +250 -0
  1922. package/dist/modes/interactive-engine/engine-health.js.map +1 -0
  1923. package/dist/modes/interactive-engine/engine-input-form.d.ts +1 -1
  1924. package/dist/modes/interactive-engine/engine-input-form.d.ts.map +1 -1
  1925. package/dist/modes/interactive-engine/engine-input-form.js +21 -4
  1926. package/dist/modes/interactive-engine/engine-input-form.js.map +1 -1
  1927. package/dist/modes/interactive-engine/engine-monitor.d.ts +8 -1
  1928. package/dist/modes/interactive-engine/engine-monitor.d.ts.map +1 -1
  1929. package/dist/modes/interactive-engine/engine-monitor.js +19 -16
  1930. package/dist/modes/interactive-engine/engine-monitor.js.map +1 -1
  1931. package/dist/modes/interactive-engine/engine-render-service.d.ts.map +1 -1
  1932. package/dist/modes/interactive-engine/engine-render-service.js +19 -24
  1933. package/dist/modes/interactive-engine/engine-render-service.js.map +1 -1
  1934. package/dist/modes/interactive-engine/engine-session-picker.d.ts.map +1 -1
  1935. package/dist/modes/interactive-engine/engine-session-picker.js +4 -2
  1936. package/dist/modes/interactive-engine/engine-session-picker.js.map +1 -1
  1937. package/dist/modes/interactive-engine/extension-ui-bridge.d.ts +18 -3
  1938. package/dist/modes/interactive-engine/extension-ui-bridge.d.ts.map +1 -1
  1939. package/dist/modes/interactive-engine/extension-ui-bridge.js +41 -45
  1940. package/dist/modes/interactive-engine/extension-ui-bridge.js.map +1 -1
  1941. package/dist/modes/interactive-engine/input-form-host.d.ts +1 -0
  1942. package/dist/modes/interactive-engine/input-form-host.d.ts.map +1 -1
  1943. package/dist/modes/interactive-engine/input-form-host.js +18 -3
  1944. package/dist/modes/interactive-engine/input-form-host.js.map +1 -1
  1945. package/dist/modes/interactive-engine/isolated-auth.d.ts +10 -0
  1946. package/dist/modes/interactive-engine/isolated-auth.d.ts.map +1 -0
  1947. package/dist/modes/interactive-engine/isolated-auth.js +15 -0
  1948. package/dist/modes/interactive-engine/isolated-auth.js.map +1 -0
  1949. package/dist/modes/interactive-engine/isolated-runtime.d.ts +44 -11
  1950. package/dist/modes/interactive-engine/isolated-runtime.d.ts.map +1 -1
  1951. package/dist/modes/interactive-engine/isolated-runtime.js +173 -106
  1952. package/dist/modes/interactive-engine/isolated-runtime.js.map +1 -1
  1953. package/dist/modes/interactive-engine/protocol.d.ts +26 -2
  1954. package/dist/modes/interactive-engine/protocol.d.ts.map +1 -1
  1955. package/dist/modes/interactive-engine/protocol.js +192 -63
  1956. package/dist/modes/interactive-engine/protocol.js.map +1 -1
  1957. package/dist/modes/interactive-engine/remote-component.d.ts +38 -0
  1958. package/dist/modes/interactive-engine/remote-component.d.ts.map +1 -1
  1959. package/dist/modes/interactive-engine/remote-component.js +111 -22
  1960. package/dist/modes/interactive-engine/remote-component.js.map +1 -1
  1961. package/dist/modes/interactive-engine/remote-input-ownership.d.ts +48 -0
  1962. package/dist/modes/interactive-engine/remote-input-ownership.d.ts.map +1 -0
  1963. package/dist/modes/interactive-engine/remote-input-ownership.js +42 -0
  1964. package/dist/modes/interactive-engine/remote-input-ownership.js.map +1 -0
  1965. package/dist/modes/interactive-engine/remote-model-catalog.d.ts +17 -0
  1966. package/dist/modes/interactive-engine/remote-model-catalog.d.ts.map +1 -0
  1967. package/dist/modes/interactive-engine/remote-model-catalog.js +80 -0
  1968. package/dist/modes/interactive-engine/remote-model-catalog.js.map +1 -0
  1969. package/dist/modes/interactive-engine/remote-queue-pause.d.ts +13 -0
  1970. package/dist/modes/interactive-engine/remote-queue-pause.d.ts.map +1 -0
  1971. package/dist/modes/interactive-engine/remote-queue-pause.js +38 -0
  1972. package/dist/modes/interactive-engine/remote-queue-pause.js.map +1 -0
  1973. package/dist/modes/interactive-engine/remote-renderer.d.ts +3 -1
  1974. package/dist/modes/interactive-engine/remote-renderer.d.ts.map +1 -1
  1975. package/dist/modes/interactive-engine/remote-renderer.js +41 -10
  1976. package/dist/modes/interactive-engine/remote-renderer.js.map +1 -1
  1977. package/dist/modes/interactive-engine/session-picker-host.d.ts +1 -0
  1978. package/dist/modes/interactive-engine/session-picker-host.d.ts.map +1 -1
  1979. package/dist/modes/interactive-engine/session-picker-host.js +4 -0
  1980. package/dist/modes/interactive-engine/session-picker-host.js.map +1 -1
  1981. package/dist/modes/print-mode.d.ts.map +1 -1
  1982. package/dist/modes/print-mode.js +5 -0
  1983. package/dist/modes/print-mode.js.map +1 -1
  1984. package/dist/modes/rpc/jsonl.d.ts +9 -7
  1985. package/dist/modes/rpc/jsonl.d.ts.map +1 -1
  1986. package/dist/modes/rpc/jsonl.js +23 -24
  1987. package/dist/modes/rpc/jsonl.js.map +1 -1
  1988. package/dist/modes/rpc/queued-writer.d.ts +33 -0
  1989. package/dist/modes/rpc/queued-writer.d.ts.map +1 -0
  1990. package/dist/modes/rpc/queued-writer.js +104 -0
  1991. package/dist/modes/rpc/queued-writer.js.map +1 -0
  1992. package/dist/modes/rpc/rpc-bash-request-owners.d.ts +24 -0
  1993. package/dist/modes/rpc/rpc-bash-request-owners.d.ts.map +1 -0
  1994. package/dist/modes/rpc/rpc-bash-request-owners.js +45 -0
  1995. package/dist/modes/rpc/rpc-bash-request-owners.js.map +1 -0
  1996. package/dist/modes/rpc/rpc-client-api.d.ts +17 -4
  1997. package/dist/modes/rpc/rpc-client-api.d.ts.map +1 -1
  1998. package/dist/modes/rpc/rpc-client-api.js +92 -25
  1999. package/dist/modes/rpc/rpc-client-api.js.map +1 -1
  2000. package/dist/modes/rpc/rpc-client-process.d.ts +11 -4
  2001. package/dist/modes/rpc/rpc-client-process.d.ts.map +1 -1
  2002. package/dist/modes/rpc/rpc-client-process.js +77 -29
  2003. package/dist/modes/rpc/rpc-client-process.js.map +1 -1
  2004. package/dist/modes/rpc/rpc-client-waits.d.ts +17 -1
  2005. package/dist/modes/rpc/rpc-client-waits.d.ts.map +1 -1
  2006. package/dist/modes/rpc/rpc-client-waits.js +25 -0
  2007. package/dist/modes/rpc/rpc-client-waits.js.map +1 -1
  2008. package/dist/modes/rpc/rpc-client.d.ts +68 -9
  2009. package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
  2010. package/dist/modes/rpc/rpc-client.js +205 -158
  2011. package/dist/modes/rpc/rpc-client.js.map +1 -1
  2012. package/dist/modes/rpc/rpc-command-handler.d.ts +10 -3
  2013. package/dist/modes/rpc/rpc-command-handler.d.ts.map +1 -1
  2014. package/dist/modes/rpc/rpc-command-handler.js +165 -43
  2015. package/dist/modes/rpc/rpc-command-handler.js.map +1 -1
  2016. package/dist/modes/rpc/rpc-command-timeouts.d.ts +30 -0
  2017. package/dist/modes/rpc/rpc-command-timeouts.d.ts.map +1 -0
  2018. package/dist/modes/rpc/rpc-command-timeouts.js +52 -0
  2019. package/dist/modes/rpc/rpc-command-timeouts.js.map +1 -0
  2020. package/dist/modes/rpc/rpc-event-buffer.d.ts.map +1 -1
  2021. package/dist/modes/rpc/rpc-event-buffer.js +3 -1
  2022. package/dist/modes/rpc/rpc-event-buffer.js.map +1 -1
  2023. package/dist/modes/rpc/rpc-extension-ui.d.ts +4 -2
  2024. package/dist/modes/rpc/rpc-extension-ui.d.ts.map +1 -1
  2025. package/dist/modes/rpc/rpc-extension-ui.js +50 -17
  2026. package/dist/modes/rpc/rpc-extension-ui.js.map +1 -1
  2027. package/dist/modes/rpc/rpc-generation-buffer.d.ts +21 -0
  2028. package/dist/modes/rpc/rpc-generation-buffer.d.ts.map +1 -0
  2029. package/dist/modes/rpc/rpc-generation-buffer.js +35 -0
  2030. package/dist/modes/rpc/rpc-generation-buffer.js.map +1 -0
  2031. package/dist/modes/rpc/rpc-input-scheduler.d.ts +3 -3
  2032. package/dist/modes/rpc/rpc-input-scheduler.d.ts.map +1 -1
  2033. package/dist/modes/rpc/rpc-input-scheduler.js +19 -8
  2034. package/dist/modes/rpc/rpc-input-scheduler.js.map +1 -1
  2035. package/dist/modes/rpc/rpc-input.d.ts +7 -1
  2036. package/dist/modes/rpc/rpc-input.d.ts.map +1 -1
  2037. package/dist/modes/rpc/rpc-input.js +14 -4
  2038. package/dist/modes/rpc/rpc-input.js.map +1 -1
  2039. package/dist/modes/rpc/rpc-keybindings-reload.d.ts.map +1 -1
  2040. package/dist/modes/rpc/rpc-keybindings-reload.js.map +1 -1
  2041. package/dist/modes/rpc/rpc-mode.d.ts +1 -1
  2042. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  2043. package/dist/modes/rpc/rpc-mode.js +23 -23
  2044. package/dist/modes/rpc/rpc-mode.js.map +1 -1
  2045. package/dist/modes/rpc/rpc-model-fallback-prompt.d.ts +4 -0
  2046. package/dist/modes/rpc/rpc-model-fallback-prompt.d.ts.map +1 -0
  2047. package/dist/modes/rpc/rpc-model-fallback-prompt.js +11 -0
  2048. package/dist/modes/rpc/rpc-model-fallback-prompt.js.map +1 -0
  2049. package/dist/modes/rpc/rpc-oauth-client.d.ts +21 -0
  2050. package/dist/modes/rpc/rpc-oauth-client.d.ts.map +1 -0
  2051. package/dist/modes/rpc/rpc-oauth-client.js +81 -0
  2052. package/dist/modes/rpc/rpc-oauth-client.js.map +1 -0
  2053. package/dist/modes/rpc/rpc-oauth-interaction.d.ts +9 -0
  2054. package/dist/modes/rpc/rpc-oauth-interaction.d.ts.map +1 -0
  2055. package/dist/modes/rpc/rpc-oauth-interaction.js +49 -0
  2056. package/dist/modes/rpc/rpc-oauth-interaction.js.map +1 -0
  2057. package/dist/modes/rpc/rpc-output-buffer.d.ts +2 -1
  2058. package/dist/modes/rpc/rpc-output-buffer.d.ts.map +1 -1
  2059. package/dist/modes/rpc/rpc-output-buffer.js +7 -40
  2060. package/dist/modes/rpc/rpc-output-buffer.js.map +1 -1
  2061. package/dist/modes/rpc/rpc-pending-requests.d.ts +37 -0
  2062. package/dist/modes/rpc/rpc-pending-requests.d.ts.map +1 -0
  2063. package/dist/modes/rpc/rpc-pending-requests.js +57 -0
  2064. package/dist/modes/rpc/rpc-pending-requests.js.map +1 -0
  2065. package/dist/modes/rpc/rpc-provider-auth.d.ts +22 -0
  2066. package/dist/modes/rpc/rpc-provider-auth.d.ts.map +1 -0
  2067. package/dist/modes/rpc/rpc-provider-auth.js +117 -0
  2068. package/dist/modes/rpc/rpc-provider-auth.js.map +1 -0
  2069. package/dist/modes/rpc/rpc-responses.d.ts +0 -1
  2070. package/dist/modes/rpc/rpc-responses.d.ts.map +1 -1
  2071. package/dist/modes/rpc/rpc-responses.js +0 -14
  2072. package/dist/modes/rpc/rpc-responses.js.map +1 -1
  2073. package/dist/modes/rpc/rpc-session-binding.d.ts +2 -1
  2074. package/dist/modes/rpc/rpc-session-binding.d.ts.map +1 -1
  2075. package/dist/modes/rpc/rpc-session-binding.js +71 -43
  2076. package/dist/modes/rpc/rpc-session-binding.js.map +1 -1
  2077. package/dist/modes/rpc/rpc-terminal-drain.d.ts +52 -0
  2078. package/dist/modes/rpc/rpc-terminal-drain.d.ts.map +1 -0
  2079. package/dist/modes/rpc/rpc-terminal-drain.js +85 -0
  2080. package/dist/modes/rpc/rpc-terminal-drain.js.map +1 -0
  2081. package/dist/modes/rpc/rpc-transport-error.d.ts +49 -0
  2082. package/dist/modes/rpc/rpc-transport-error.d.ts.map +1 -0
  2083. package/dist/modes/rpc/rpc-transport-error.js +78 -0
  2084. package/dist/modes/rpc/rpc-transport-error.js.map +1 -0
  2085. package/dist/modes/rpc/rpc-types.d.ts +188 -25
  2086. package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
  2087. package/dist/modes/rpc/rpc-types.js.map +1 -1
  2088. package/dist/package-manager-cli-parser.js.map +1 -1
  2089. package/dist/package-manager-cli.d.ts +3 -3
  2090. package/dist/package-manager-cli.d.ts.map +1 -1
  2091. package/dist/package-manager-cli.js +66 -53
  2092. package/dist/package-manager-cli.js.map +1 -1
  2093. package/dist/rpc-entry.js +6 -2
  2094. package/dist/rpc-entry.js.map +1 -1
  2095. package/dist/self-update-plan.d.ts +12 -0
  2096. package/dist/self-update-plan.d.ts.map +1 -0
  2097. package/dist/self-update-plan.js +42 -0
  2098. package/dist/self-update-plan.js.map +1 -0
  2099. package/dist/utils/child-process.d.ts.map +1 -1
  2100. package/dist/utils/child-process.js.map +1 -1
  2101. package/dist/utils/clipboard-image.js +1 -1
  2102. package/dist/utils/clipboard-image.js.map +1 -1
  2103. package/dist/utils/clipboard-native.d.ts +1 -0
  2104. package/dist/utils/clipboard-native.d.ts.map +1 -1
  2105. package/dist/utils/clipboard-native.js.map +1 -1
  2106. package/dist/utils/clipboard.d.ts +3 -0
  2107. package/dist/utils/clipboard.d.ts.map +1 -1
  2108. package/dist/utils/clipboard.js +31 -8
  2109. package/dist/utils/clipboard.js.map +1 -1
  2110. package/dist/utils/compile-cache.d.ts +8 -0
  2111. package/dist/utils/compile-cache.d.ts.map +1 -0
  2112. package/dist/utils/compile-cache.js +31 -0
  2113. package/dist/utils/compile-cache.js.map +1 -0
  2114. package/dist/utils/fs-watch.d.ts.map +1 -1
  2115. package/dist/utils/fs-watch.js +1 -3
  2116. package/dist/utils/fs-watch.js.map +1 -1
  2117. package/dist/utils/git.js +1 -1
  2118. package/dist/utils/git.js.map +1 -1
  2119. package/dist/utils/interactive-engine-bootstrap.d.ts +67 -0
  2120. package/dist/utils/interactive-engine-bootstrap.d.ts.map +1 -0
  2121. package/dist/utils/interactive-engine-bootstrap.js +117 -0
  2122. package/dist/utils/interactive-engine-bootstrap.js.map +1 -0
  2123. package/dist/utils/interactive-engine-env.d.ts +41 -0
  2124. package/dist/utils/interactive-engine-env.d.ts.map +1 -0
  2125. package/dist/utils/interactive-engine-env.js +67 -0
  2126. package/dist/utils/interactive-engine-env.js.map +1 -0
  2127. package/dist/utils/markit.d.ts.map +1 -1
  2128. package/dist/utils/markit.js +15 -5
  2129. package/dist/utils/markit.js.map +1 -1
  2130. package/dist/utils/shell.js +2 -2
  2131. package/dist/utils/shell.js.map +1 -1
  2132. package/dist/utils/split-launcher.d.ts.map +1 -1
  2133. package/dist/utils/split-launcher.js +1 -2
  2134. package/dist/utils/split-launcher.js.map +1 -1
  2135. package/dist/utils/tools-manager.d.ts.map +1 -1
  2136. package/dist/utils/tools-manager.js +8 -34
  2137. package/dist/utils/tools-manager.js.map +1 -1
  2138. package/dist/utils/version-check.d.ts +1 -0
  2139. package/dist/utils/version-check.d.ts.map +1 -1
  2140. package/dist/utils/version-check.js +7 -5
  2141. package/dist/utils/version-check.js.map +1 -1
  2142. package/docs/changelog.mdx +24 -2
  2143. package/docs/compaction.md +101 -18
  2144. package/docs/custom-provider.md +40 -8
  2145. package/docs/development.md +14 -15
  2146. package/docs/docs.json +12 -2
  2147. package/docs/environment-variables.md +37 -0
  2148. package/docs/extensions.md +166 -18
  2149. package/docs/index.md +1 -0
  2150. package/docs/intercom.md +1 -1
  2151. package/docs/json.md +11 -5
  2152. package/docs/keybindings.md +19 -2
  2153. package/docs/llama-cpp.md +72 -0
  2154. package/docs/models/artificial-analysis-index.md +82 -0
  2155. package/docs/models/model-selection.md +63 -0
  2156. package/docs/models/pareto-efficiency.md +64 -0
  2157. package/docs/models.md +41 -50
  2158. package/docs/packages.md +4 -2
  2159. package/docs/prompt-templates.md +1 -0
  2160. package/docs/providers.md +89 -23
  2161. package/docs/quickstart.md +21 -17
  2162. package/docs/rpc.md +97 -68
  2163. package/docs/sdk.md +68 -71
  2164. package/docs/security.md +15 -0
  2165. package/docs/session-format.md +6 -15
  2166. package/docs/sessions.md +1 -1
  2167. package/docs/settings.md +29 -18
  2168. package/docs/skills.md +8 -0
  2169. package/docs/subagents.md +24 -8
  2170. package/docs/themes.md +10 -1
  2171. package/docs/tui.md +14 -7
  2172. package/docs/usage.md +71 -2
  2173. package/docs/windows.md +1 -1
  2174. package/docs/workflows.md +1253 -534
  2175. package/examples/extensions/README.md +2 -2
  2176. package/examples/extensions/border-status-editor.ts +1 -6
  2177. package/examples/extensions/custom-compaction.ts +7 -2
  2178. package/examples/extensions/custom-footer.ts +1 -1
  2179. package/examples/extensions/custom-provider-anthropic/index.ts +14 -2
  2180. package/examples/extensions/custom-provider-gitlab-duo/index.ts +1 -1
  2181. package/examples/extensions/gondolin/index.ts +1 -1
  2182. package/examples/extensions/handoff.ts +9 -2
  2183. package/examples/extensions/hello.ts +1 -1
  2184. package/examples/extensions/message-renderer.ts +2 -2
  2185. package/examples/extensions/minimal-mode.ts +6 -6
  2186. package/examples/extensions/overlay-qa-focus-components.ts +0 -1
  2187. package/examples/extensions/overlay-qa-streaming-input-components.ts +2 -2
  2188. package/examples/extensions/overlay-qa-tests.ts +16 -14
  2189. package/examples/extensions/overlay-qa-toggle-passive-components.ts +3 -5
  2190. package/examples/extensions/overlay-test.ts +3 -6
  2191. package/examples/extensions/plan-mode/index.ts +1 -1
  2192. package/examples/extensions/preset.ts +1 -1
  2193. package/examples/extensions/qna.ts +1 -1
  2194. package/examples/extensions/sandbox/package-lock.json +3 -3
  2195. package/examples/extensions/structured-output.ts +9 -9
  2196. package/examples/extensions/subagent/display.ts +115 -127
  2197. package/examples/extensions/subagent/index.ts +310 -349
  2198. package/examples/extensions/subagent/render.ts +244 -345
  2199. package/examples/extensions/subagent/runner.ts +223 -230
  2200. package/examples/extensions/subagent/schemas.ts +39 -46
  2201. package/examples/extensions/subagent/types.ts +22 -22
  2202. package/examples/extensions/summarize.ts +4 -1
  2203. package/examples/extensions/tic-tac-toe.ts +4 -4
  2204. package/examples/extensions/todo.ts +1 -1
  2205. package/examples/extensions/tool-override.ts +1 -1
  2206. package/examples/extensions/trigger-compact.ts +4 -1
  2207. package/examples/extensions/working-indicator.ts +3 -2
  2208. package/examples/rpc-extension-ui-components.ts +1 -2
  2209. package/examples/sdk/02-custom-model.ts +8 -10
  2210. package/examples/sdk/03-custom-prompt.ts +1 -6
  2211. package/examples/sdk/06-extensions.ts +1 -6
  2212. package/examples/sdk/07-context-files.ts +1 -6
  2213. package/examples/sdk/09-api-keys-and-oauth.ts +17 -23
  2214. package/examples/sdk/12-full-control.ts +10 -12
  2215. package/examples/sdk/README.md +17 -21
  2216. package/npm-shrinkwrap.json +305 -314
  2217. package/package.json +17 -15
  2218. package/dist/builtin/cursor/CHANGELOG.md +0 -275
  2219. package/dist/builtin/cursor/LICENSE +0 -26
  2220. package/dist/builtin/cursor/README.md +0 -24
  2221. package/dist/builtin/cursor/index.ts +0 -9
  2222. package/dist/builtin/cursor/package.json +0 -47
  2223. package/dist/builtin/cursor/src/auth.ts +0 -352
  2224. package/dist/builtin/cursor/src/catalog-cache.ts +0 -155
  2225. package/dist/builtin/cursor/src/config.ts +0 -123
  2226. package/dist/builtin/cursor/src/conversation-state.ts +0 -135
  2227. package/dist/builtin/cursor/src/cursor-models-raw.json +0 -412
  2228. package/dist/builtin/cursor/src/model-mapper.ts +0 -369
  2229. package/dist/builtin/cursor/src/model-reference.ts +0 -282
  2230. package/dist/builtin/cursor/src/models.ts +0 -54
  2231. package/dist/builtin/cursor/src/native-loader.ts +0 -71
  2232. package/dist/builtin/cursor/src/proto/README.md +0 -34
  2233. package/dist/builtin/cursor/src/proto/agent_pb.ts +0 -15294
  2234. package/dist/builtin/cursor/src/proto/protobuf-codec-base64.ts +0 -22
  2235. package/dist/builtin/cursor/src/proto/protobuf-codec-json.ts +0 -44
  2236. package/dist/builtin/cursor/src/proto/protobuf-codec-request.ts +0 -311
  2237. package/dist/builtin/cursor/src/proto/protobuf-codec-wire.ts +0 -248
  2238. package/dist/builtin/cursor/src/proto/protobuf-codec.ts +0 -200
  2239. package/dist/builtin/cursor/src/provider.ts +0 -301
  2240. package/dist/builtin/cursor/src/stream.ts +0 -494
  2241. package/dist/builtin/cursor/src/transport-errors.ts +0 -74
  2242. package/dist/builtin/cursor/src/transport-frame.ts +0 -56
  2243. package/dist/builtin/cursor/src/transport-http2.ts +0 -122
  2244. package/dist/builtin/cursor/src/transport-native-client.ts +0 -161
  2245. package/dist/builtin/cursor/src/transport-run-stream.ts +0 -188
  2246. package/dist/builtin/cursor/src/transport-timeouts.ts +0 -87
  2247. package/dist/builtin/cursor/src/transport-types.ts +0 -143
  2248. package/dist/builtin/cursor/src/transport.ts +0 -26
  2249. package/dist/builtin/workflows/builtin/deep-research-codebase-runner.ts +0 -492
  2250. package/dist/builtin/workflows/builtin/deep-research-codebase-utils.ts +0 -383
  2251. package/dist/builtin/workflows/builtin/deep-research-codebase.d.ts +0 -35
  2252. package/dist/builtin/workflows/builtin/deep-research-codebase.ts +0 -47
  2253. package/dist/builtin/workflows/skills/impeccable/reference/brand.md +0 -108
  2254. package/dist/builtin/workflows/skills/impeccable/reference/codex.md +0 -105
  2255. package/dist/builtin/workflows/skills/impeccable/reference/interaction-design.md +0 -189
  2256. package/dist/builtin/workflows/skills/impeccable/scripts/hook-before-edit.mjs +0 -516
  2257. package/dist/core/context-window.d.ts +0 -54
  2258. package/dist/core/context-window.d.ts.map +0 -1
  2259. package/dist/core/context-window.js +0 -110
  2260. package/dist/core/context-window.js.map +0 -1
  2261. package/dist/core/copilot-anthropic-sse-repair.d.ts +0 -23
  2262. package/dist/core/copilot-anthropic-sse-repair.d.ts.map +0 -1
  2263. package/dist/core/copilot-anthropic-sse-repair.js +0 -340
  2264. package/dist/core/copilot-anthropic-sse-repair.js.map +0 -1
  2265. package/dist/core/copilot-errors.d.ts +0 -9
  2266. package/dist/core/copilot-errors.d.ts.map +0 -1
  2267. package/dist/core/copilot-errors.js +0 -32
  2268. package/dist/core/copilot-errors.js.map +0 -1
  2269. package/dist/core/copilot-gemini-payload-sanitizer.d.ts +0 -72
  2270. package/dist/core/copilot-gemini-payload-sanitizer.d.ts.map +0 -1
  2271. package/dist/core/copilot-gemini-payload-sanitizer.js +0 -296
  2272. package/dist/core/copilot-gemini-payload-sanitizer.js.map +0 -1
  2273. package/dist/core/copilot-gemini-reasoning.d.ts +0 -126
  2274. package/dist/core/copilot-gemini-reasoning.d.ts.map +0 -1
  2275. package/dist/core/copilot-gemini-reasoning.js +0 -265
  2276. package/dist/core/copilot-gemini-reasoning.js.map +0 -1
  2277. package/dist/core/copilot-gemini-tool-arguments.d.ts +0 -42
  2278. package/dist/core/copilot-gemini-tool-arguments.d.ts.map +0 -1
  2279. package/dist/core/copilot-gemini-tool-arguments.js +0 -159
  2280. package/dist/core/copilot-gemini-tool-arguments.js.map +0 -1
  2281. package/dist/core/copilot-hosts.d.ts +0 -12
  2282. package/dist/core/copilot-hosts.d.ts.map +0 -1
  2283. package/dist/core/copilot-hosts.js +0 -33
  2284. package/dist/core/copilot-hosts.js.map +0 -1
  2285. package/dist/core/copilot-model-catalog.d.ts +0 -114
  2286. package/dist/core/copilot-model-catalog.d.ts.map +0 -1
  2287. package/dist/core/copilot-model-catalog.js +0 -392
  2288. package/dist/core/copilot-model-catalog.js.map +0 -1
  2289. package/dist/core/copilot-model-static-fallbacks.d.ts +0 -43
  2290. package/dist/core/copilot-model-static-fallbacks.d.ts.map +0 -1
  2291. package/dist/core/copilot-model-static-fallbacks.js +0 -50
  2292. package/dist/core/copilot-model-static-fallbacks.js.map +0 -1
  2293. package/dist/core/copilot-model-synthesis.d.ts +0 -10
  2294. package/dist/core/copilot-model-synthesis.d.ts.map +0 -1
  2295. package/dist/core/copilot-model-synthesis.js +0 -91
  2296. package/dist/core/copilot-model-synthesis.js.map +0 -1
  2297. package/dist/core/model-registry-auth.d.ts +0 -8
  2298. package/dist/core/model-registry-auth.d.ts.map +0 -1
  2299. package/dist/core/model-registry-auth.js +0 -83
  2300. package/dist/core/model-registry-auth.js.map +0 -1
  2301. package/dist/core/model-registry-builtins.d.ts +0 -10
  2302. package/dist/core/model-registry-builtins.d.ts.map +0 -1
  2303. package/dist/core/model-registry-builtins.js +0 -171
  2304. package/dist/core/model-registry-builtins.js.map +0 -1
  2305. package/dist/core/model-registry-custom-loader.d.ts +0 -3
  2306. package/dist/core/model-registry-custom-loader.d.ts.map +0 -1
  2307. package/dist/core/model-registry-custom-loader.js +0 -254
  2308. package/dist/core/model-registry-custom-loader.js.map +0 -1
  2309. package/dist/core/model-registry-dynamic.d.ts +0 -7
  2310. package/dist/core/model-registry-dynamic.d.ts.map +0 -1
  2311. package/dist/core/model-registry-dynamic.js +0 -201
  2312. package/dist/core/model-registry-dynamic.js.map +0 -1
  2313. package/dist/core/model-registry-loader.d.ts +0 -5
  2314. package/dist/core/model-registry-loader.d.ts.map +0 -1
  2315. package/dist/core/model-registry-loader.js +0 -28
  2316. package/dist/core/model-registry-loader.js.map +0 -1
  2317. package/dist/core/model-registry-schemas.d.ts +0 -1273
  2318. package/dist/core/model-registry-schemas.d.ts.map +0 -1
  2319. package/dist/core/model-registry-schemas.js.map +0 -1
  2320. package/dist/core/model-registry-types.d.ts +0 -82
  2321. package/dist/core/model-registry-types.d.ts.map +0 -1
  2322. package/dist/core/model-registry-types.js +0 -2
  2323. package/dist/core/model-registry-types.js.map +0 -1
  2324. package/dist/core/oauth-compat.d.ts +0 -17
  2325. package/dist/core/oauth-compat.d.ts.map +0 -1
  2326. package/dist/core/oauth-compat.js +0 -2
  2327. package/dist/core/oauth-compat.js.map +0 -1
  2328. package/dist/core/oauth-provider-bridge.d.ts +0 -40
  2329. package/dist/core/oauth-provider-bridge.d.ts.map +0 -1
  2330. package/dist/core/oauth-provider-bridge.js +0 -169
  2331. package/dist/core/oauth-provider-bridge.js.map +0 -1
  2332. package/dist/modes/interactive/components/context-window-selector.d.ts +0 -53
  2333. package/dist/modes/interactive/components/context-window-selector.d.ts.map +0 -1
  2334. package/dist/modes/interactive/components/context-window-selector.js +0 -136
  2335. package/dist/modes/interactive/components/context-window-selector.js.map +0 -1
  2336. package/dist/modes/rpc/bounded-writer.d.ts +0 -27
  2337. package/dist/modes/rpc/bounded-writer.d.ts.map +0 -1
  2338. package/dist/modes/rpc/bounded-writer.js +0 -103
  2339. package/dist/modes/rpc/bounded-writer.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"compaction-runner.js","sourceRoot":"","sources":["../../../src/core/compaction/compaction-runner.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,8BAA8B,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5F,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAW3D,qFAAqF;AACrF,MAAM,UAAU,eAAe,CAAC,WAA0C;IACzE,MAAM,cAAc,GAAG,WAAW,CAAC,MAAM,CAAC,oBAAoB,EAAE,IAAI,IAAI,CAAC,CAAC;IAC1E,OAAO,IAAI,CAAC,GAAG,CACd,cAAc,EACd,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,WAAW,CAAC,UAAU,CAAC,iBAAiB,CAAC,CACtF,CAAC;AACH,CAAC;AAED,SAAS,qBAAqB,CAC7B,MAA2B,EAC3B,WAA0C;IAE1C,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,GAAG,wBAAwB,CAAC,WAAW,CAAC,CAAC;IACrF,MAAM,gBAAgB,GAAG,WAAW,CAAC,YAAY,KAAK,CAAC;QACtD,CAAC,CAAC,CAAC;QACH,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,WAAW,GAAG,WAAW,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACxE,OAAO;QACN,GAAG,MAAM;QACT,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,EAAE,GAAG,MAAM,CAAC,KAAK,EAAE,YAAY,EAAE,WAAW,CAAC,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE;KACjG,CAAC;AACH,CAAC;AAED,sFAAsF;AACtF,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAC1C,WAA0C,EAC1C,KAAiB,EACjB,MAAc,EACd,OAAoC,EACpC,MAA+B,EAC/B,aAAwC,EACxC,OAA8B;IAE9B,IAAI,MAAM,EAAE,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAC7D,MAAM,GAAG,GAAG,MAAM,qBAAqB,CACtC,WAAW,CAAC,MAAM,EAClB,WAAW,CAAC,UAAU,EACtB,KAAK,EACL,EAAE,MAAM,EAAE,OAAO,EAAE,EACnB,MAAM,EACN,aAAa,EACb,WAAW,CAAC,QAAQ,CAAC,aAAa,EAClC,eAAe,CAAC,WAAW,CAAC,EAC5B,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,eAAe,EAAE,OAAO,CAAC,eAAe,EAAE,CACxE,CAAC;IACF,IAAI,MAAM,EAAE,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAC7D,OAAO,qBAAqB,CAC3B,8BAA8B,CAAC,WAAW,CAAC,MAAM,EAAE,qBAAqB,CAAC,GAAG,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,EAClG,WAAW,CACX,CAAC;AACH,CAAC","sourcesContent":["import type { StreamFn, ThinkingLevel } from \"@earendil-works/pi-agent-core\";\nimport type { ProviderHeaders } from \"@earendil-works/pi-ai\";\nimport type { Api, Model } from \"@earendil-works/pi-ai/compat\";\nimport { getKeptTailTokenEstimate } from \"./compaction-boundary.js\";\nimport { reconstructCompactedTranscript, validateDeletedRanges } from \"./deleted-ranges.js\";\nimport { planDeletedLineRanges } from \"./range-planner.js\";\nimport type { CompactedTranscript, VerbatimCompactionPreparation } from \"./compaction-types.js\";\n\nexport interface CompactionPlanOptions {\n\tstreamFn: StreamFn;\n\t/** Absolute path of the persisted session file. Undefined for in-memory sessions. */\n\tsessionFilePath?: string;\n}\n\nexport type CompactionRungResult = CompactedTranscript & { rung: \"planned\" };\n\n/** Calculate the single global line threshold directly from the prepared setting. */\nexport function targetKeepLines(preparation: VerbatimCompactionPreparation): number {\n\tconst protectedLines = preparation.region.protectedLineNumbers?.size ?? 0;\n\treturn Math.max(\n\t\tprotectedLines,\n\t\tMath.round(preparation.region.lines.length * preparation.parameters.compression_ratio),\n\t);\n}\n\nfunction withWholeContextStats(\n\tresult: CompactedTranscript,\n\tpreparation: VerbatimCompactionPreparation,\n): CompactionRungResult {\n\tconst tokensAfter = result.stats.tokensAfter + getKeptTailTokenEstimate(preparation);\n\tconst percentReduction = preparation.tokensBefore === 0\n\t\t? 0\n\t\t: Math.round((1 - tokensAfter / preparation.tokensBefore) * 1000) / 10;\n\treturn {\n\t\t...result,\n\t\trung: \"planned\",\n\t\tstats: { ...result.stats, tokensBefore: preparation.tokensBefore, tokensAfter, percentReduction },\n\t};\n}\n\n/** Execute one whole-region model plan and mechanically accept its safe deletions. */\nexport async function runVerbatimCompaction(\n\tpreparation: VerbatimCompactionPreparation,\n\tmodel: Model<Api>,\n\tapiKey: string,\n\theaders: ProviderHeaders | undefined,\n\tsignal: AbortSignal | undefined,\n\tthinkingLevel: ThinkingLevel | undefined,\n\toptions: CompactionPlanOptions,\n): Promise<CompactionRungResult> {\n\tif (signal?.aborted) throw new Error(\"Compaction cancelled\");\n\tconst raw = await planDeletedLineRanges(\n\t\tpreparation.region,\n\t\tpreparation.parameters,\n\t\tmodel,\n\t\t{ apiKey, headers },\n\t\tsignal,\n\t\tthinkingLevel,\n\t\tpreparation.settings.reserveTokens,\n\t\ttargetKeepLines(preparation),\n\t\t{ streamFn: options.streamFn, sessionFilePath: options.sessionFilePath },\n\t);\n\tif (signal?.aborted) throw new Error(\"Compaction cancelled\");\n\treturn withWholeContextStats(\n\t\treconstructCompactedTranscript(preparation.region, validateDeletedRanges(raw, preparation.region)),\n\t\tpreparation,\n\t);\n}\n"]}
1
+ {"version":3,"file":"compaction-runner.js","sourceRoot":"","sources":["../../../src/core/compaction/compaction-runner.ts"],"names":[],"mappings":"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","sourcesContent":["import type { StreamFn, ThinkingLevel } from \"@earendil-works/pi-agent-core\";\nimport type { RetryCallbacks, RetryPolicy } from \"@earendil-works/pi-ai\";\nimport type { Api, Model } from \"@earendil-works/pi-ai/compat\";\nimport { getKeptTailTokenEstimate } from \"./compaction-boundary.js\";\nimport type {\n\tBorrowedPlanner,\n\tCompactedTranscript,\n\tCompactionPlannerModel,\n\tCompactionUrgency,\n\tPlannerAuth,\n\tRawLineRange,\n\tVerbatimCompactionPreparation,\n} from \"./compaction-types.js\";\nimport { MIN_COMPACTABLE_REGION_LINES } from \"./compaction-types.js\";\nimport { reconstructCompactedTranscript, validateDeletedRanges } from \"./deleted-ranges.js\";\nimport {\n\ttype BorrowFallbackPlanner,\n\tcreateFallbackPlannerBorrower,\n\ttype FallbackPlannerContext,\n\tplannerAttemptKey,\n} from \"./fallback-planner.js\";\nimport type { TerminalPlannerOutcome } from \"./planner-outcome.js\";\nimport {\n\tMALFORMED_OUTPUT_MESSAGE,\n\tNO_USABLE_RANGES_MESSAGE,\n\tplanDeletedLineRanges,\n\tRangePlanError,\n\tresolvePlannerRequest,\n} from \"./range-planner.js\";\nimport { writeSuccessDiagnosticSidecar } from \"./range-planner-diagnostics.js\";\nimport { nextTrimOffset, rebaseTrimmedRanges, trimRegionHead } from \"./region-trimming.js\";\n\nexport interface CompactionPlanOptions {\n\tstreamFn: StreamFn;\n\t/** Absolute path of the persisted session file. Undefined for in-memory sessions. */\n\tsessionFilePath?: string;\n\tretry?: RetryPolicy;\n\tcallbacks?: RetryCallbacks;\n}\n\n/** One compaction run's request. Urgency is required; there is no default. */\nexport interface CompactionRunRequest extends CompactionPlanOptions {\n\t/** Per-model credentials; a borrowed candidate uses its own, never the session model's. */\n\tresolveAuth: (model: Model<Api>) => Promise<PlannerAuth | undefined>;\n\tsignal?: AbortSignal;\n\t/** Inherited by the planner and never modified across attempts. */\n\tthinkingLevel: ThinkingLevel | undefined;\n\turgency: CompactionUrgency;\n\t/** Configured fallback candidates. Omitted means borrowing is impossible. */\n\tfallback?: FallbackPlannerContext;\n}\n\nexport type CompactionRungResult = CompactedTranscript & {\n\trung: \"planned\" | \"fresh\";\n\t/** Present only when a borrowed fallback model ranked the lines. */\n\tplannerModel?: CompactionPlannerModel;\n\t/** False only when the fresh rung had to drop the protected tail. */\n\tkeptTail: boolean;\n};\n\n/** Runner-internal fresh-window build: the transcript plus the tail decision. */\ninterface FreshWindowBuild {\n\ttranscript: CompactedTranscript;\n\tkeptTail: boolean;\n}\n\n/**\n * Calculate the single global line threshold from the prepared setting.\n *\n * This is the untrimmed target. Overflow trimming does NOT reuse it:\n * `planWithTrimming` recomputes the threshold against each trimmed view, so the\n * planner is always asked to keep a proportion of the lines it actually\n * received rather than a proportion of a region it never saw.\n *\n * Retained as an exported helper for tests and consumers that need the\n * pre-trim target; production planning goes through `planWithTrimming`.\n */\nexport function targetKeepLines(preparation: VerbatimCompactionPreparation): number {\n\tconst region = preparation.region;\n\treturn Math.max(\n\t\tregion.protectedLineNumbers?.size ?? 0,\n\t\tMath.round(region.lines.length * preparation.parameters.compression_ratio),\n\t);\n}\n\nfunction hardInputLimitFor(model: Model<Api>): number {\n\treturn model.contextWindow > 0 ? model.contextWindow : Number.POSITIVE_INFINITY;\n}\n\nfunction withWholeContextStats(\n\tresult: CompactedTranscript,\n\tpreparation: VerbatimCompactionPreparation,\n\tkeptTail: boolean,\n): CompactedTranscript {\n\tconst tokensAfter = result.stats.tokensAfter + (keptTail ? getKeptTailTokenEstimate(preparation) : 0);\n\tconst percentReduction =\n\t\tpreparation.tokensBefore === 0 ? 0 : Math.round((1 - tokensAfter / preparation.tokensBefore) * 1000) / 10;\n\treturn {\n\t\t...result,\n\t\tstats: { ...result.stats, tokensBefore: preparation.tokensBefore, tokensAfter, percentReduction },\n\t};\n}\n\n/**\n * Build a fresh context window and the tail decision that goes with it.\n *\n * Private on purpose: `keptTail` is runner bookkeeping that persistence needs in\n * order to write `firstKeptEntryId: null` when the protected tail is dropped. It\n * is deliberately absent from the public door's return value, which is exactly a\n * `CompactedTranscript`.\n */\nfunction buildFreshTranscript(preparation: VerbatimCompactionPreparation): CompactedTranscript {\n\tconst region = preparation.region;\n\tconst whole: RawLineRange[] = region.lines.length > 0 ? [{ start: 1, end: region.lines.length }] : [];\n\treturn reconstructCompactedTranscript(region, validateDeletedRanges(whole, region));\n}\n\nfunction buildFreshContextWindow(preparation: VerbatimCompactionPreparation, hardInputLimit: number): FreshWindowBuild {\n\tconst limit = Number.isFinite(hardInputLimit) && hardInputLimit > 0 ? hardInputLimit : Number.POSITIVE_INFINITY;\n\t// The rule is \"tail under the limit ⇒ tail kept\", so the comparison is the\n\t// tail alone. Explicit protected lines are a hard floor that survives either\n\t// way, and counting the reconstructed protected/marker text here would drop a\n\t// tail that fits. A rebuilt context that still cannot be sent is the post-tool\n\t// gate's problem, not a reason for this rung to discard more.\n\treturn { transcript: buildFreshTranscript(preparation), keptTail: getKeptTailTokenEstimate(preparation) <= limit };\n}\n\n/**\n * Discard every compactable line and start a fresh context window.\n *\n * TOTAL. No provider, no credentials, no network, no signal, no failure mode,\n * no `Promise`. Port of codex `compact_token_budget` →\n * `Session::start_new_context_window`. Atomic's system prompt, context files,\n * and skills are rebuilt per request and were never in the transcript, so they\n * survive automatically.\n *\n * The whole region is emitted as one deletion range and handed to the unchanged\n * `validateDeletedRanges` → `reconstructCompactedTranscript` path, which splits\n * around protected spans and folds prior markers.\n *\n * Returns exactly a `CompactedTranscript` — `text`, `ranges`, `stats` and\n * nothing else. Whether the `preserve_recent` tail survives is a persistence\n * concern and travels on `CompactionRungResult.keptTail`, not on this door.\n */\nexport function startNewContextWindow(preparation: VerbatimCompactionPreparation): CompactedTranscript {\n\treturn buildFreshTranscript(preparation);\n}\n\nfunction plannedResult(\n\tpreparation: VerbatimCompactionPreparation,\n\tranges: RawLineRange[],\n\tplannerModel: CompactionPlannerModel | undefined,\n): CompactionRungResult {\n\tconst reconstructed = reconstructCompactedTranscript(\n\t\tpreparation.region,\n\t\tvalidateDeletedRanges(ranges, preparation.region),\n\t);\n\treturn {\n\t\t...withWholeContextStats(reconstructed, preparation, true),\n\t\trung: \"planned\",\n\t\t...(plannerModel ? { plannerModel } : {}),\n\t\tkeptTail: true,\n\t};\n}\n\nfunction borrowedIdentity(planner: BorrowedPlanner): CompactionPlannerModel {\n\treturn {\n\t\tprovider: planner.model.provider,\n\t\tid: planner.model.id,\n\t\t...(planner.budget.reasoning ? { thinkingLevel: planner.budget.reasoning } : {}),\n\t};\n}\n\nfunction terminalError(outcome: TerminalPlannerOutcome | undefined): RangePlanError {\n\tif (!outcome) return new RangePlanError(MALFORMED_OUTPUT_MESSAGE, 1, \"\", false);\n\tif (outcome.kind === \"rateLimited\") {\n\t\treturn new RangePlanError(outcome.message, 1, \"\", false, outcome.diagnosticPath, outcome);\n\t}\n\tif (outcome.kind === \"overflowed\") {\n\t\treturn new RangePlanError(\n\t\t\t\"Compaction range planning exceeded the model context window\",\n\t\t\t1,\n\t\t\t\"\",\n\t\t\ttrue,\n\t\t\toutcome.diagnosticPath,\n\t\t\toutcome,\n\t\t);\n\t}\n\tif (outcome.kind === \"providerError\") {\n\t\treturn new RangePlanError(outcome.message, 1, \"\", false, outcome.diagnosticPath, outcome);\n\t}\n\tconst message = outcome.category === \"malformed_output\" ? MALFORMED_OUTPUT_MESSAGE : NO_USABLE_RANGES_MESSAGE;\n\treturn new RangePlanError(message, 1, outcome.excerpt, false, outcome.diagnosticPath, outcome);\n}\n\ntype PlannerAttempt =\n\t| { kind: \"planned\"; ranges: RawLineRange[] }\n\t| { kind: \"terminal\"; outcome: TerminalPlannerOutcome };\n\n/**\n * Run one planner model, retrying the same model after oldest-first input\n * trimming when the request itself overflows the context window.\n *\n * Trimming continues until no strictly smaller view exists; `nextTrimOffset`\n * halves the remaining suffix, so the walk is finite. Only then is `overflowed`\n * terminal and the ladder advances.\n *\n * Each view gets its own keep target from `compression_ratio`. Reusing the\n * original whole-preparation target is what asked a halved 20-line region to\n * keep 10 of its 10 visible lines — a request for zero deletions, whose obedient\n * empty answer then hits the non-negotiable zero-range rejection. Extra\n * reduction still comes only from the head the runner withheld.\n */\nasync function planWithTrimming(\n\tpreparation: VerbatimCompactionPreparation,\n\tplanner: BorrowedPlanner,\n\toptions: CompactionPlanOptions & { signal?: AbortSignal },\n): Promise<PlannerAttempt> {\n\tlet offset = 0;\n\tfor (;;) {\n\t\tconst region = offset === 0 ? preparation.region : trimRegionHead(preparation.region, offset);\n\t\tif (!region) return { kind: \"terminal\", outcome: { kind: \"overflowed\" } };\n\t\tconst keepTarget = Math.max(\n\t\t\tregion.protectedLineNumbers?.size ?? 0,\n\t\t\tMath.round(region.lines.length * preparation.parameters.compression_ratio),\n\t\t);\n\t\tconst outcome = await planDeletedLineRanges(region, preparation.parameters, planner, keepTarget, options);\n\t\tif (outcome.kind === \"ranked\" || outcome.kind === \"recovered\") {\n\t\t\tif (offset === 0) return { kind: \"planned\", ranges: outcome.ranges };\n\t\t\tconst validated = validateDeletedRanges(outcome.ranges, region);\n\t\t\treturn { kind: \"planned\", ranges: rebaseTrimmedRanges(validated, offset) };\n\t\t}\n\t\tif (outcome.kind !== \"overflowed\") return { kind: \"terminal\", outcome };\n\t\tif (options.signal?.aborted) throw new Error(\"Compaction cancelled\");\n\t\tconst next = nextTrimOffset(preparation.region, offset);\n\t\tif (next === undefined) return { kind: \"terminal\", outcome };\n\t\toffset = next;\n\t}\n}\n\nconst MISSING_AUTH_MESSAGE = \"Compaction provider authentication is unavailable\";\n\n/**\n * A runner-local terminal cause with no provider attempt behind it.\n *\n * Missing credentials are not a provider outcome — no request was made — so no\n * synthetic response is fabricated and no diagnostic sidecar is written. It is\n * carried as `providerError` purely so the ladder can advance past it.\n */\nfunction authFailureOutcome(error: unknown): TerminalPlannerOutcome {\n\tconst message = error instanceof Error ? error.message : error === undefined ? MISSING_AUTH_MESSAGE : String(error);\n\treturn { kind: \"providerError\", message: message || MISSING_AUTH_MESSAGE };\n}\n\n/** Resolve one model's credentials, normalizing a rejection and `undefined` alike. */\nasync function resolvePlannerAuth(\n\tresolveAuth: CompactionRunRequest[\"resolveAuth\"],\n\tmodel: Model<Api>,\n): Promise<{ auth: PlannerAuth } | { failure: TerminalPlannerOutcome }> {\n\ttry {\n\t\tconst auth = await resolveAuth(model);\n\t\treturn auth ? { auth } : { failure: authFailureOutcome(undefined) };\n\t} catch (error) {\n\t\treturn { failure: authFailureOutcome(error) };\n\t}\n}\n\nfunction freshResult(preparation: VerbatimCompactionPreparation, hardInputLimit: number): CompactionRungResult {\n\tconst fresh = buildFreshContextWindow(preparation, hardInputLimit);\n\treturn {\n\t\t...withWholeContextStats(fresh.transcript, preparation, fresh.keptTail),\n\t\trung: \"fresh\",\n\t\tkeptTail: fresh.keptTail,\n\t};\n}\n\n/**\n * Produce one compacted transcript, tagged with the rung that produced it.\n *\n * The ladder is: the session model, then each configured fallback model\n * borrowed for one planner request, then — only under `load_bearing` urgency —\n * a fresh context window. A manual `/compact` runs at `recoverable` urgency and\n * therefore cannot reach the context-destroying rung; it fails honestly instead.\n *\n * Unavailable credentials are ladder control flow, not an early throw: a\n * borrowed candidate with its own working credentials can still rank the lines,\n * and a load-bearing caller still reaches the credential-free fresh rung.\n */\nexport async function runVerbatimCompaction(\n\tpreparation: VerbatimCompactionPreparation,\n\tmodel: Model<Api>,\n\trequest: CompactionRunRequest,\n): Promise<CompactionRungResult> {\n\tconst signal = request.signal;\n\tif (signal?.aborted) throw new Error(\"Compaction cancelled\");\n\tconst plannerOptions = {\n\t\tstreamFn: request.streamFn,\n\t\tsessionFilePath: request.sessionFilePath,\n\t\tretry: request.retry,\n\t\tcallbacks: request.callbacks,\n\t\tsignal,\n\t};\n\tconst hardInputLimit = hardInputLimitFor(model);\n\n\t// A region below the planner minimum cannot be made rankable by changing\n\t// models, so no planner is invoked. Only a load-bearing caller can reach a\n\t// preparation this small; recoverable callers were refused before the runner.\n\tif (preparation.region.lines.length < MIN_COMPACTABLE_REGION_LINES) {\n\t\tif (request.urgency !== \"load_bearing\") throw new RangePlanError(NO_USABLE_RANGES_MESSAGE, 0, \"\", false);\n\t\treturn freshResult(preparation, hardInputLimit);\n\t}\n\n\tconst attempted = new Set<string>();\n\t// One borrower per run owns the monotonic cursor, so the configured list is\n\t// walked exactly once no matter how many terminal outcomes occur.\n\tconst borrow: BorrowFallbackPlanner | undefined = request.fallback\n\t\t? createFallbackPlannerBorrower(request.fallback)\n\t\t: undefined;\n\tconst primaryBudget = resolvePlannerRequest(model, request.thinkingLevel);\n\tconst primaryAuth = await resolvePlannerAuth(request.resolveAuth, model);\n\tlet lastTerminal: TerminalPlannerOutcome | undefined = \"failure\" in primaryAuth ? primaryAuth.failure : undefined;\n\tlet borrowed = false;\n\tlet planner: BorrowedPlanner | undefined;\n\n\tif (\"auth\" in primaryAuth) {\n\t\tplanner = { model, budget: primaryBudget, auth: primaryAuth.auth };\n\t} else {\n\t\t// No request was made, but this candidate must not be retried.\n\t\tattempted.add(plannerAttemptKey({ model, budget: primaryBudget, auth: {} }));\n\t\tplanner = borrow ? await borrow(attempted, request.resolveAuth) : undefined;\n\t\tborrowed = planner !== undefined;\n\t}\n\n\twhile (planner) {\n\t\tconst attempt = await planWithTrimming(preparation, planner, plannerOptions);\n\t\tif (signal?.aborted) throw new Error(\"Compaction cancelled\");\n\t\tif (attempt.kind === \"planned\") {\n\t\t\tconst plannerModel = borrowed ? borrowedIdentity(planner) : undefined;\n\t\t\tif (plannerModel) {\n\t\t\t\t// Best-effort: the durable entry already records the borrowed model;\n\t\t\t\t// a sidecar write failure never affects compaction success.\n\t\t\t\twriteSuccessDiagnosticSidecar({\n\t\t\t\t\tsessionFilePath: request.sessionFilePath,\n\t\t\t\t\tmodel: planner.model,\n\t\t\t\t\tsuccessCategory: \"borrowed_planner\",\n\t\t\t\t\t...(plannerModel.thinkingLevel === undefined ? {} : { thinkingLevel: plannerModel.thinkingLevel }),\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn plannedResult(preparation, attempt.ranges, plannerModel);\n\t\t}\n\t\tlastTerminal = attempt.outcome;\n\t\tattempted.add(plannerAttemptKey(planner));\n\t\tplanner = borrow ? await borrow(attempted, request.resolveAuth) : undefined;\n\t\tborrowed = planner !== undefined;\n\t\tif (signal?.aborted) throw new Error(\"Compaction cancelled\");\n\t}\n\n\tif (request.urgency !== \"load_bearing\") throw terminalError(lastTerminal);\n\treturn freshResult(preparation, hardInputLimit);\n}\n"]}
@@ -1,3 +1,6 @@
1
+ import type { ThinkingLevel } from "@earendil-works/pi-agent-core";
2
+ import type { ProviderHeaders } from "@earendil-works/pi-ai";
3
+ import type { Api, Model } from "@earendil-works/pi-ai/compat";
1
4
  import type { CompactionSettings } from "./compaction.js";
2
5
  export declare const VERBATIM_COMPACTION_PROMPT_VERSION: 3;
3
6
  export declare const VERBATIM_COMPACTION_STRATEGY: "verbatim-lines";
@@ -49,12 +52,58 @@ export interface VerbatimCompactionStats {
49
52
  tokensAfter: number;
50
53
  percentReduction: number;
51
54
  }
55
+ /** How much the caller can afford to lose if compaction does not happen. */
56
+ export type CompactionUrgency =
57
+ /** Manual /compact, threshold auto-compaction — failing is safe. */
58
+ "recoverable"
59
+ /** Overflow recovery, post-tool preflight — failing kills the turn. */
60
+ | "load_bearing";
61
+ /** How a durable compaction boundary was produced. */
62
+ export type CompactionRung = "planned" | "extension" | "fresh";
63
+ /** Credentials for one planner request. Resolved per model, never shared. */
64
+ export interface PlannerAuth {
65
+ apiKey?: string;
66
+ headers?: ProviderHeaders;
67
+ baseUrl?: string;
68
+ }
69
+ /**
70
+ * What one planner request may spend.
71
+ *
72
+ * `maxTokens` is declared `undefined`, not `number | undefined`: the type
73
+ * forbids reintroducing the `0.8 * reserveTokens` output cap without changing
74
+ * the type and failing review. pi-ai's `clampMaxTokensToContext` is the only bound.
75
+ */
76
+ export interface PlannerBudget {
77
+ readonly maxTokens: undefined;
78
+ readonly reasoning: ThinkingLevel | undefined;
79
+ }
80
+ /**
81
+ * A planner-only model borrowing. Cannot be confused with a session model switch.
82
+ *
83
+ * It carries no attempted-set key: the effective identity of an attempt is
84
+ * `provider/model:<effective reasoning>`, derived from `model` and
85
+ * `budget.reasoning` by `plannerAttemptKey`. Storing a key resolved from the raw
86
+ * optional suffix would let the same effective request run twice.
87
+ */
88
+ export interface BorrowedPlanner {
89
+ readonly model: Model<Api>;
90
+ readonly budget: PlannerBudget;
91
+ readonly auth: PlannerAuth;
92
+ }
93
+ /** Identity of the model that ranked the deleted lines, when it was borrowed. */
94
+ export interface CompactionPlannerModel {
95
+ provider: string;
96
+ id: string;
97
+ thinkingLevel?: ThinkingLevel;
98
+ }
52
99
  export interface VerbatimCompactionDetails {
53
100
  strategy: typeof VERBATIM_COMPACTION_STRATEGY;
54
101
  promptVersion: typeof VERBATIM_COMPACTION_PROMPT_VERSION;
55
102
  parameters: VerbatimCompactionParameters;
56
103
  stats: VerbatimCompactionStats;
57
- rung: "planned" | "extension";
104
+ rung: CompactionRung;
105
+ /** Present only when a borrowed fallback model ranked the lines. */
106
+ plannerModel?: CompactionPlannerModel;
58
107
  backupPath?: string;
59
108
  }
60
109
  export interface VerbatimCompactionPreparation {
@@ -74,7 +123,9 @@ export interface VerbatimCompactionResult {
74
123
  stats: VerbatimCompactionStats;
75
124
  parameters: VerbatimCompactionParameters;
76
125
  promptVersion: typeof VERBATIM_COMPACTION_PROMPT_VERSION;
77
- rung: VerbatimCompactionDetails["rung"];
126
+ rung: CompactionRung;
127
+ /** Present only when a borrowed fallback model ranked the lines. */
128
+ plannerModel?: CompactionPlannerModel;
78
129
  backupPath?: string;
79
130
  }
80
131
  //# sourceMappingURL=compaction-types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"compaction-types.d.ts","sourceRoot":"","sources":["../../../src/core/compaction/compaction-types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compaction-types.d.ts","sourceRoot":"","sources":["../../../src/core/compaction/compaction-types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"compaction-types.js","sourceRoot":"","sources":["../../../src/core/compaction/compaction-types.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,kCAAkC,GAAG,CAAU,CAAC;AAC7D,MAAM,CAAC,MAAM,4BAA4B,GAAG,gBAAyB,CAAC;AAEtE,MAAM,CAAC,MAAM,yBAAyB,GAAG,GAAG,CAAC;AAC7C,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC;AACzC,MAAM,CAAC,MAAM,4BAA4B,GAAG,EAAE,CAAC","sourcesContent":["import type { CompactionSettings } from \"./compaction.js\";\n\nexport const VERBATIM_COMPACTION_PROMPT_VERSION = 3 as const;\nexport const VERBATIM_COMPACTION_STRATEGY = \"verbatim-lines\" as const;\n\nexport const DEFAULT_COMPRESSION_RATIO = 0.5;\nexport const DEFAULT_PRESERVE_RECENT = 2;\nexport const MIN_COMPACTABLE_REGION_LINES = 20;\n\nexport interface VerbatimCompactionParameters {\n\t/** Fraction of compactable region lines to keep. */\n\tcompression_ratio: number;\n\t/** Recent context-eligible messages retained outside the compactable region. */\n\tpreserve_recent: number;\n\t/** Relevance focus used by the range planner. */\n\tquery: string;\n}\n\nexport interface LineRange {\n\t/** One-based inclusive first line. */\n\tstart: number;\n\t/** One-based inclusive last line. */\n\tend: number;\n}\n\nexport type RawLineEndpoint = number | string | boolean | null;\n\nexport interface RawLineRange {\n\tstart?: RawLineEndpoint;\n\tend?: RawLineEndpoint;\n}\n\nexport interface NumberedRegion {\n\treadonly __brand: \"NumberedRegion\";\n\tlines: string[];\n\theaderLineNumbers: ReadonlySet<number>;\n\tpriorMarkerNs: ReadonlyMap<number, number>;\n\t/** Optional future protected spans, expressed as one-based line numbers. */\n\tprotectedLineNumbers?: ReadonlySet<number>;\n\ttokenEstimate: number;\n}\n\nexport type ValidatedRanges = readonly LineRange[] & { readonly __brand: \"ValidatedRanges\" };\n\nexport interface CompactedTranscript {\n\ttext: string;\n\tranges: LineRange[];\n\tstats: VerbatimCompactionStats;\n}\n\nexport interface VerbatimCompactionStats {\n\tlinesBefore: number;\n\tlinesDeleted: number;\n\tlinesKept: number;\n\trangeCount: number;\n\ttokensBefore: number;\n\ttokensAfter: number;\n\tpercentReduction: number;\n}\n\nexport interface VerbatimCompactionDetails {\n\tstrategy: typeof VERBATIM_COMPACTION_STRATEGY;\n\tpromptVersion: typeof VERBATIM_COMPACTION_PROMPT_VERSION;\n\tparameters: VerbatimCompactionParameters;\n\tstats: VerbatimCompactionStats;\n\trung: \"planned\" | \"extension\";\n\tbackupPath?: string;\n}\n\nexport interface VerbatimCompactionPreparation {\n\t/** First context-visible tail entry, or null when no pre-boundary message is retained. */\n\tfirstKeptEntryId: string | null;\n\tregion: NumberedRegion;\n\tregionEntryIds: string[];\n\tkeptTailMessageCount: number;\n\ttokensBefore: number;\n\tparameters: VerbatimCompactionParameters;\n\tsettings: CompactionSettings;\n}\n\nexport interface VerbatimCompactionResult {\n\tcompactedText: string;\n\tfirstKeptEntryId: string | null;\n\ttokensBefore: number;\n\tstats: VerbatimCompactionStats;\n\tparameters: VerbatimCompactionParameters;\n\tpromptVersion: typeof VERBATIM_COMPACTION_PROMPT_VERSION;\n\trung: VerbatimCompactionDetails[\"rung\"];\n\tbackupPath?: string;\n}\n"]}
1
+ {"version":3,"file":"compaction-types.js","sourceRoot":"","sources":["../../../src/core/compaction/compaction-types.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,MAAM,kCAAkC,GAAG,CAAU,CAAC;AAC7D,MAAM,CAAC,MAAM,4BAA4B,GAAG,gBAAyB,CAAC;AAEtE,MAAM,CAAC,MAAM,yBAAyB,GAAG,GAAG,CAAC;AAC7C,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC;AACzC,MAAM,CAAC,MAAM,4BAA4B,GAAG,EAAE,CAAC","sourcesContent":["import type { ThinkingLevel } from \"@earendil-works/pi-agent-core\";\nimport type { ProviderHeaders } from \"@earendil-works/pi-ai\";\nimport type { Api, Model } from \"@earendil-works/pi-ai/compat\";\nimport type { CompactionSettings } from \"./compaction.js\";\n\nexport const VERBATIM_COMPACTION_PROMPT_VERSION = 3 as const;\nexport const VERBATIM_COMPACTION_STRATEGY = \"verbatim-lines\" as const;\n\nexport const DEFAULT_COMPRESSION_RATIO = 0.5;\nexport const DEFAULT_PRESERVE_RECENT = 2;\nexport const MIN_COMPACTABLE_REGION_LINES = 20;\n\nexport interface VerbatimCompactionParameters {\n\t/** Fraction of compactable region lines to keep. */\n\tcompression_ratio: number;\n\t/** Recent context-eligible messages retained outside the compactable region. */\n\tpreserve_recent: number;\n\t/** Relevance focus used by the range planner. */\n\tquery: string;\n}\n\nexport interface LineRange {\n\t/** One-based inclusive first line. */\n\tstart: number;\n\t/** One-based inclusive last line. */\n\tend: number;\n}\n\nexport type RawLineEndpoint = number | string | boolean | null;\n\nexport interface RawLineRange {\n\tstart?: RawLineEndpoint;\n\tend?: RawLineEndpoint;\n}\n\nexport interface NumberedRegion {\n\treadonly __brand: \"NumberedRegion\";\n\tlines: string[];\n\theaderLineNumbers: ReadonlySet<number>;\n\tpriorMarkerNs: ReadonlyMap<number, number>;\n\t/** Optional future protected spans, expressed as one-based line numbers. */\n\tprotectedLineNumbers?: ReadonlySet<number>;\n\ttokenEstimate: number;\n}\n\nexport type ValidatedRanges = readonly LineRange[] & { readonly __brand: \"ValidatedRanges\" };\n\nexport interface CompactedTranscript {\n\ttext: string;\n\tranges: LineRange[];\n\tstats: VerbatimCompactionStats;\n}\n\nexport interface VerbatimCompactionStats {\n\tlinesBefore: number;\n\tlinesDeleted: number;\n\tlinesKept: number;\n\trangeCount: number;\n\ttokensBefore: number;\n\ttokensAfter: number;\n\tpercentReduction: number;\n}\n\n/** How much the caller can afford to lose if compaction does not happen. */\nexport type CompactionUrgency =\n\t/** Manual /compact, threshold auto-compaction — failing is safe. */\n\t| \"recoverable\"\n\t/** Overflow recovery, post-tool preflight — failing kills the turn. */\n\t| \"load_bearing\";\n\n/** How a durable compaction boundary was produced. */\nexport type CompactionRung = \"planned\" | \"extension\" | \"fresh\";\n\n/** Credentials for one planner request. Resolved per model, never shared. */\nexport interface PlannerAuth {\n\tapiKey?: string;\n\theaders?: ProviderHeaders;\n\tbaseUrl?: string;\n}\n\n/**\n * What one planner request may spend.\n *\n * `maxTokens` is declared `undefined`, not `number | undefined`: the type\n * forbids reintroducing the `0.8 * reserveTokens` output cap without changing\n * the type and failing review. pi-ai's `clampMaxTokensToContext` is the only bound.\n */\nexport interface PlannerBudget {\n\treadonly maxTokens: undefined;\n\treadonly reasoning: ThinkingLevel | undefined;\n}\n\n/**\n * A planner-only model borrowing. Cannot be confused with a session model switch.\n *\n * It carries no attempted-set key: the effective identity of an attempt is\n * `provider/model:<effective reasoning>`, derived from `model` and\n * `budget.reasoning` by `plannerAttemptKey`. Storing a key resolved from the raw\n * optional suffix would let the same effective request run twice.\n */\nexport interface BorrowedPlanner {\n\treadonly model: Model<Api>;\n\treadonly budget: PlannerBudget;\n\treadonly auth: PlannerAuth;\n}\n\n/** Identity of the model that ranked the deleted lines, when it was borrowed. */\nexport interface CompactionPlannerModel {\n\tprovider: string;\n\tid: string;\n\tthinkingLevel?: ThinkingLevel;\n}\n\nexport interface VerbatimCompactionDetails {\n\tstrategy: typeof VERBATIM_COMPACTION_STRATEGY;\n\tpromptVersion: typeof VERBATIM_COMPACTION_PROMPT_VERSION;\n\tparameters: VerbatimCompactionParameters;\n\tstats: VerbatimCompactionStats;\n\trung: CompactionRung;\n\t/** Present only when a borrowed fallback model ranked the lines. */\n\tplannerModel?: CompactionPlannerModel;\n\tbackupPath?: string;\n}\n\nexport interface VerbatimCompactionPreparation {\n\t/** First context-visible tail entry, or null when no pre-boundary message is retained. */\n\tfirstKeptEntryId: string | null;\n\tregion: NumberedRegion;\n\tregionEntryIds: string[];\n\tkeptTailMessageCount: number;\n\ttokensBefore: number;\n\tparameters: VerbatimCompactionParameters;\n\tsettings: CompactionSettings;\n}\n\nexport interface VerbatimCompactionResult {\n\tcompactedText: string;\n\tfirstKeptEntryId: string | null;\n\ttokensBefore: number;\n\tstats: VerbatimCompactionStats;\n\tparameters: VerbatimCompactionParameters;\n\tpromptVersion: typeof VERBATIM_COMPACTION_PROMPT_VERSION;\n\trung: CompactionRung;\n\t/** Present only when a borrowed fallback model ranked the lines. */\n\tplannerModel?: CompactionPlannerModel;\n\tbackupPath?: string;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"compaction.d.ts","sourceRoot":"","sources":["../../../src/core/compaction/compaction.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,EAAE,GAAG,EAAoB,KAAK,EAAE,MAAM,8BAA8B,CAAC;AACjF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAG1D,MAAM,WAAW,kBAAkB;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,gFAAgF;IAChF,iBAAiB,EAAE,MAAM,CAAC;IAC1B,+EAA+E;IAC/E,eAAe,EAAE,MAAM,CAAC;IACxB,+FAA+F;IAC/F,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAED,eAAO,MAAM,2BAA2B,EAAE,kBAKzC,CAAC;AAEF;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,EAAE,GAAG,GAAG,MAAM,CAYtE;AAgBD;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,KAAK,GAAG,SAAS,CAShF;AAED,MAAM,WAAW,oBAAoB;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAuBD;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG,oBAAoB,CA4BpF;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,aAAa,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,kBAAkB,GAAG,OAAO,CAGjH;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,qBAAqB,OAAO,CAAC;AAC1C,eAAO,MAAM,sBAAsB,QAAuC,CAAC;AAgC3E,mFAAmF;AACnF,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,UAAO,GAAG,MAAM,CAIjF;AAYD;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,MAAM,CAOzF;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,MAAM,CAE5F;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,CA6B5D"}
1
+ {"version":3,"file":"compaction.d.ts","sourceRoot":"","sources":["../../../src/core/compaction/compaction.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,EAAE,GAAG,EAAoB,KAAK,EAAE,MAAM,8BAA8B,CAAC;AAEjF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE1D,MAAM,WAAW,kBAAkB;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,gFAAgF;IAChF,iBAAiB,EAAE,MAAM,CAAC;IAC1B,+EAA+E;IAC/E,eAAe,EAAE,MAAM,CAAC;IACxB,+FAA+F;IAC/F,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAED,eAAO,MAAM,2BAA2B,EAAE,kBAKzC,CAAC;AAEF;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,EAAE,GAAG,GAAG,MAAM,CAiBtE;AAgBD;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,KAAK,GAAG,SAAS,CAShF;AAED,MAAM,WAAW,oBAAoB;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAuBD;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG,oBAAoB,CA4BpF;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,aAAa,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,kBAAkB,GAAG,OAAO,CAGjH;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,qBAAqB,OAAO,CAAC;AAC1C,eAAO,MAAM,sBAAsB,QAAuC,CAAC;AAgC3E,mFAAmF;AACnF,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,UAAO,GAAG,MAAM,CAIjF;AAYD;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,MAAM,CAOzF;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,MAAM,CAE5F;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,CA6B5D"}
@@ -27,7 +27,11 @@ export function calculateContextTokens(usage, api) {
27
27
  const hasComponents = input > 0 || output > 0 || cacheTokens > 0;
28
28
  if (!hasComponents)
29
29
  return Math.max(0, usage.totalTokens || 0);
30
- const cacheMirrorsInput = api === "anthropic-messages" && input > 0 && cacheTokens > 0 && cacheTokens >= input * 0.9 && cacheTokens <= input * 1.1;
30
+ const cacheMirrorsInput = api === "anthropic-messages" &&
31
+ input > 0 &&
32
+ cacheTokens > 0 &&
33
+ cacheTokens >= input * 0.9 &&
34
+ cacheTokens <= input * 1.1;
31
35
  const promptTokens = cacheMirrorsInput ? input : input + cacheTokens;
32
36
  return promptTokens + output;
33
37
  }
@@ -1 +1 @@
1
- {"version":3,"file":"compaction.js","sourceRoot":"","sources":["../../../src/core/compaction/compaction.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Neutral context-usage metrics for deciding when a session needs compaction.\n */\n\nimport type { AgentMessage } from \"@earendil-works/pi-agent-core\";\nimport type { Api, AssistantMessage, Usage } from \"@earendil-works/pi-ai/compat\";\nimport type { SessionEntry } from \"../session-manager.ts\";\nimport { messageIsLlmVisible, userLikeContentBlockIsLlmVisible } from \"../messages.ts\";\n\nexport interface CompactionSettings {\n\tenabled: boolean;\n\treserveTokens: number;\n\t/** Fraction of compactable context to keep. 0.3 is aggressive, 0.7 is light. */\n\tcompression_ratio: number;\n\t/** Number of recent context-eligible messages to preserve in standard mode. */\n\tpreserve_recent: number;\n\t/** Focus query for relevance-based pruning; auto-detected when omitted in settings/options. */\n\tquery?: string;\n}\n\nexport const DEFAULT_COMPACTION_SETTINGS: CompactionSettings = {\n\tenabled: true,\n\treserveTokens: 16384,\n\tcompression_ratio: 0.5,\n\tpreserve_recent: 2,\n};\n\n/**\n * Calculate active context-window tokens from provider usage.\n *\n * Prefer normalized component fields over `totalTokens`: some providers expose\n * `totalTokens` as a billing/cumulative total, while the footer needs an active\n * context estimate. Some Anthropic-compatible endpoints mirror cached input in\n * both `input` and `cacheRead`/`cacheWrite`; only Anthropic Messages usage uses\n * the near-equal-bucket guard because OpenAI APIs expose disjoint normalized\n * components that must always be summed.\n */\nexport function calculateContextTokens(usage: Usage, api?: Api): number {\n\tconst input = Math.max(0, usage.input || 0);\n\tconst output = Math.max(0, usage.output || 0);\n\tconst cacheRead = Math.max(0, usage.cacheRead || 0);\n\tconst cacheWrite = Math.max(0, usage.cacheWrite || 0);\n\tconst cacheTokens = cacheRead + cacheWrite;\n\tconst hasComponents = input > 0 || output > 0 || cacheTokens > 0;\n\tif (!hasComponents) return Math.max(0, usage.totalTokens || 0);\n\n\tconst cacheMirrorsInput = api === \"anthropic-messages\" && input > 0 && cacheTokens > 0 && cacheTokens >= input * 0.9 && cacheTokens <= input * 1.1;\n\tconst promptTokens = cacheMirrorsInput ? input : input + cacheTokens;\n\treturn promptTokens + output;\n}\n\n/**\n * Get usage from an assistant message if available.\n * Skips aborted and error messages as they don't have valid usage data.\n */\nfunction getAssistantUsage(msg: AgentMessage): Usage | undefined {\n\tif (msg.role === \"assistant\" && \"usage\" in msg) {\n\t\tconst assistantMsg = msg as AssistantMessage;\n\t\tif (assistantMsg.stopReason !== \"aborted\" && assistantMsg.stopReason !== \"error\" && assistantMsg.usage) {\n\t\t\treturn assistantMsg.usage;\n\t\t}\n\t}\n\treturn undefined;\n}\n\n/**\n * Find the last non-aborted assistant message usage from session entries.\n */\nexport function getLastAssistantUsage(entries: SessionEntry[]): Usage | undefined {\n\tfor (let i = entries.length - 1; i >= 0; i--) {\n\t\tconst entry = entries[i];\n\t\tif (entry.type === \"message\") {\n\t\t\tconst usage = getAssistantUsage(entry.message);\n\t\t\tif (usage) return usage;\n\t\t}\n\t}\n\treturn undefined;\n}\n\nexport interface ContextUsageEstimate {\n\ttokens: number;\n\tusageTokens: number;\n\ttrailingTokens: number;\n\tlastUsageIndex: number | null;\n}\n\nfunction getLastAssistantUsageInfo(messages: AgentMessage[]): { usage: Usage; api: Api; index: number } | undefined {\n\tlet latestPrefixTimestamp = Number.NEGATIVE_INFINITY;\n\tlet usageInfo: { usage: Usage; api: Api; index: number } | undefined;\n\n\tfor (let i = 0; i < messages.length; i++) {\n\t\tconst message = messages[i];\n\t\tconst usage = getAssistantUsage(message);\n\t\tif (\n\t\t\tusage &&\n\t\t\tmessage.role === \"assistant\" &&\n\t\t\tmessage.timestamp >= latestPrefixTimestamp &&\n\t\t\tcalculateContextTokens(usage, message.api) > 0\n\t\t) {\n\t\t\tusageInfo = { usage, api: message.api, index: i };\n\t\t}\n\t\tlatestPrefixTimestamp = Math.max(latestPrefixTimestamp, message.timestamp);\n\t}\n\n\treturn usageInfo;\n}\n\n/**\n * Estimate context tokens from messages, using the last assistant usage when available.\n * If there are messages after the last usage, estimate their tokens with estimateTokens.\n */\nexport function estimateContextTokens(messages: AgentMessage[]): ContextUsageEstimate {\n\tconst usageInfo = getLastAssistantUsageInfo(messages);\n\n\tif (!usageInfo) {\n\t\tlet estimated = 0;\n\t\tfor (const message of messages) {\n\t\t\testimated += estimateTokens(message);\n\t\t}\n\t\treturn {\n\t\t\ttokens: estimated,\n\t\t\tusageTokens: 0,\n\t\t\ttrailingTokens: estimated,\n\t\t\tlastUsageIndex: null,\n\t\t};\n\t}\n\n\tconst usageTokens = calculateContextTokens(usageInfo.usage, usageInfo.api);\n\tlet trailingTokens = 0;\n\tfor (let i = usageInfo.index + 1; i < messages.length; i++) {\n\t\ttrailingTokens += estimateTokens(messages[i]);\n\t}\n\n\treturn {\n\t\ttokens: usageTokens + trailingTokens,\n\t\tusageTokens,\n\t\ttrailingTokens,\n\t\tlastUsageIndex: usageInfo.index,\n\t};\n}\n\n/**\n * Check if compaction should trigger based on context usage.\n */\nexport function shouldCompact(contextTokens: number, contextWindow: number, settings: CompactionSettings): boolean {\n\tif (!settings.enabled) return false;\n\treturn contextTokens > contextWindow - settings.reserveTokens;\n}\n\n/**\n * Shared image-token estimation used by every compaction/context-accounting path.\n *\n * Providers fold image tokens into their reported prompt/input usage, so usage-based\n * accounting already captures actual image cost. For heuristic paths (trailing\n * messages without usage, transcript content-block estimates) a single conservative\n * fixed estimate keeps both the context-window threshold check and the transcript\n * planner consistent.\n */\nexport const ESTIMATED_IMAGE_CHARS = 4800;\nexport const ESTIMATED_IMAGE_TOKENS = Math.ceil(ESTIMATED_IMAGE_CHARS / 4);\n\nfunction safeSerializedPayloadLength(value: unknown, fallback: string): number {\n\ttry {\n\t\tconst serialized = JSON.stringify(value);\n\t\tif (typeof serialized === \"string\") return serialized.length;\n\t} catch {\n\t\t// Cyclic and otherwise unserializable future blocks use a conservative marker below.\n\t}\n\treturn fallback.length;\n}\n\nfunction nonEmptyBlockType(block: unknown): string | undefined {\n\tif (!block || typeof block !== \"object\") return undefined;\n\tconst type = (block as { type?: unknown }).type;\n\treturn typeof type === \"string\" && type.trim().length > 0 ? type : undefined;\n}\n\nfunction estimateContentBlockChars(block: unknown): number {\n\tconst type = nonEmptyBlockType(block);\n\tif (!type) return 0;\n\tconst record = block as Record<string, unknown>;\n\tif (type === \"image\") return ESTIMATED_IMAGE_CHARS;\n\tif (type === \"text\") return typeof record.text === \"string\" ? record.text.length : 0;\n\tif (type === \"thinking\") return typeof record.thinking === \"string\" ? record.thinking.length : 0;\n\tif (type === \"toolCall\") {\n\t\tconst nameLength = typeof record.name === \"string\" ? record.name.length : 0;\n\t\treturn nameLength + safeSerializedPayloadLength(record.arguments, \"[unserializable tool arguments]\");\n\t}\n\treturn safeSerializedPayloadLength(block, `[unserializable ${type} block]`);\n}\n\n/** Estimate one raw content block after the caller applies provider visibility. */\nexport function estimateContentBlockTokens(block: unknown, visible = true): number {\n\tif (!visible) return 0;\n\tconst chars = estimateContentBlockChars(block);\n\treturn chars > 0 ? Math.ceil(chars / 4) : 0;\n}\n\nfunction estimateUserLikeContentTokens(content: unknown): number {\n\tif (typeof content === \"string\") return content.trim().length > 0 ? Math.ceil(content.length / 4) : 0;\n\tif (!Array.isArray(content)) return 0;\n\tconst chars = content.reduce(\n\t\t(total, block) => total + (userLikeContentBlockIsLlmVisible(block) ? estimateContentBlockChars(block) : 0),\n\t\t0,\n\t);\n\treturn chars > 0 ? Math.ceil(chars / 4) : 0;\n}\n\n/**\n * Count image content blocks in a message content array (text or block array).\n *\n * Exported as the canonical image-counting contract so tests can verify the\n * heuristic independently of the transcript-based estimation used in production.\n */\nexport function countImageContentBlocks(content: string | Array<{ type: string }>): number {\n\tif (typeof content === \"string\" || !Array.isArray(content)) return 0;\n\tlet count = 0;\n\tfor (const block of content) {\n\t\tif (block && typeof block === \"object\" && block.type === \"image\") count += 1;\n\t}\n\treturn count;\n}\n\n/**\n * Estimate the token cost of only the image content blocks in a message content array.\n *\n * Exported as the canonical image-token-estimation contract so tests can verify\n * the heuristic independently of the transcript-based estimation used in production.\n */\nexport function estimateImageContentTokens(content: string | Array<{ type: string }>): number {\n\treturn countImageContentBlocks(content) * ESTIMATED_IMAGE_TOKENS;\n}\n\n/**\n * Estimate token count for a message using chars/4 heuristic.\n * This is conservative (overestimates tokens).\n */\nexport function estimateTokens(message: AgentMessage): number {\n\tif (!message || typeof message !== \"object\" || !messageIsLlmVisible(message)) return 0;\n\n\tswitch (message.role) {\n\t\tcase \"user\":\n\t\tcase \"custom\":\n\t\t\treturn estimateUserLikeContentTokens((message as { content?: unknown }).content);\n\t\tcase \"assistant\": {\n\t\t\tconst content = (message as { content?: unknown }).content;\n\t\t\tif (!Array.isArray(content)) return 0;\n\t\t\tconst chars = content.reduce((total, block) => total + estimateContentBlockChars(block), 0);\n\t\t\treturn chars > 0 ? Math.ceil(chars / 4) : 0;\n\t\t}\n\t\tcase \"toolResult\": {\n\t\t\tconst content = (message as { content?: unknown }).content;\n\t\t\tif (!Array.isArray(content)) return 0;\n\t\t\tconst chars = content.reduce((total, block) => total + estimateContentBlockChars(block), 0);\n\t\t\treturn chars > 0 ? Math.ceil(chars / 4) : 0;\n\t\t}\n\t\tcase \"bashExecution\": {\n\t\t\tconst command = typeof message.command === \"string\" ? message.command : \"\";\n\t\t\tconst output = typeof message.output === \"string\" ? message.output : \"\";\n\t\t\treturn Math.ceil((command.length + output.length) / 4);\n\t\t}\n\t\tcase \"branchSummary\":\n\t\t\treturn typeof message.summary === \"string\" ? Math.ceil(message.summary.length / 4) : 0;\n\t}\n\n\treturn 0;\n}\n"]}
1
+ {"version":3,"file":"compaction.js","sourceRoot":"","sources":["../../../src/core/compaction/compaction.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,mBAAmB,EAAE,gCAAgC,EAAE,MAAM,gBAAgB,CAAC;AAcvF,MAAM,CAAC,MAAM,2BAA2B,GAAuB;IAC9D,OAAO,EAAE,IAAI;IACb,aAAa,EAAE,KAAK;IACpB,iBAAiB,EAAE,GAAG;IACtB,eAAe,EAAE,CAAC;CAClB,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAAY,EAAE,GAAS;IAC7D,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;IAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;IAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC;IACpD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC;IACtD,MAAM,WAAW,GAAG,SAAS,GAAG,UAAU,CAAC;IAC3C,MAAM,aAAa,GAAG,KAAK,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,IAAI,WAAW,GAAG,CAAC,CAAC;IACjE,IAAI,CAAC,aAAa;QAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC;IAE/D,MAAM,iBAAiB,GACtB,GAAG,KAAK,oBAAoB;QAC5B,KAAK,GAAG,CAAC;QACT,WAAW,GAAG,CAAC;QACf,WAAW,IAAI,KAAK,GAAG,GAAG;QAC1B,WAAW,IAAI,KAAK,GAAG,GAAG,CAAC;IAC5B,MAAM,YAAY,GAAG,iBAAiB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,WAAW,CAAC;IACrE,OAAO,YAAY,GAAG,MAAM,CAAC;AAC9B,CAAC;AAED;;;GAGG;AACH,SAAS,iBAAiB,CAAC,GAAiB;IAC3C,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW,IAAI,OAAO,IAAI,GAAG,EAAE,CAAC;QAChD,MAAM,YAAY,GAAG,GAAuB,CAAC;QAC7C,IAAI,YAAY,CAAC,UAAU,KAAK,SAAS,IAAI,YAAY,CAAC,UAAU,KAAK,OAAO,IAAI,YAAY,CAAC,KAAK,EAAE,CAAC;YACxG,OAAO,YAAY,CAAC,KAAK,CAAC;QAC3B,CAAC;IACF,CAAC;IACD,OAAO,SAAS,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAAuB;IAC5D,KAAK,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9C,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACzB,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC9B,MAAM,KAAK,GAAG,iBAAiB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC/C,IAAI,KAAK;gBAAE,OAAO,KAAK,CAAC;QACzB,CAAC;IACF,CAAC;IACD,OAAO,SAAS,CAAC;AAClB,CAAC;AASD,SAAS,yBAAyB,CAAC,QAAwB;IAC1D,IAAI,qBAAqB,GAAG,MAAM,CAAC,iBAAiB,CAAC;IACrD,IAAI,SAAgE,CAAC;IAErE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC1C,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC5B,MAAM,KAAK,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;QACzC,IACC,KAAK;YACL,OAAO,CAAC,IAAI,KAAK,WAAW;YAC5B,OAAO,CAAC,SAAS,IAAI,qBAAqB;YAC1C,sBAAsB,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAC7C,CAAC;YACF,SAAS,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QACnD,CAAC;QACD,qBAAqB,GAAG,IAAI,CAAC,GAAG,CAAC,qBAAqB,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAC5E,CAAC;IAED,OAAO,SAAS,CAAC;AAClB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,QAAwB;IAC7D,MAAM,SAAS,GAAG,yBAAyB,CAAC,QAAQ,CAAC,CAAC;IAEtD,IAAI,CAAC,SAAS,EAAE,CAAC;QAChB,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAChC,SAAS,IAAI,cAAc,CAAC,OAAO,CAAC,CAAC;QACtC,CAAC;QACD,OAAO;YACN,MAAM,EAAE,SAAS;YACjB,WAAW,EAAE,CAAC;YACd,cAAc,EAAE,SAAS;YACzB,cAAc,EAAE,IAAI;SACpB,CAAC;IACH,CAAC;IAED,MAAM,WAAW,GAAG,sBAAsB,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC;IAC3E,IAAI,cAAc,GAAG,CAAC,CAAC;IACvB,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5D,cAAc,IAAI,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC;IAED,OAAO;QACN,MAAM,EAAE,WAAW,GAAG,cAAc;QACpC,WAAW;QACX,cAAc;QACd,cAAc,EAAE,SAAS,CAAC,KAAK;KAC/B,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,aAAqB,EAAE,aAAqB,EAAE,QAA4B;IACvG,IAAI,CAAC,QAAQ,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IACpC,OAAO,aAAa,GAAG,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC;AAC/D,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,CAAC;AAC1C,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,CAAC,IAAI,CAAC,qBAAqB,GAAG,CAAC,CAAC,CAAC;AAE3E,SAAS,2BAA2B,CAAC,KAAc,EAAE,QAAgB;IACpE,IAAI,CAAC;QACJ,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,OAAO,UAAU,KAAK,QAAQ;YAAE,OAAO,UAAU,CAAC,MAAM,CAAC;IAC9D,CAAC;IAAC,MAAM,CAAC;QACR,qFAAqF;IACtF,CAAC;IACD,OAAO,QAAQ,CAAC,MAAM,CAAC;AACxB,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAc;IACxC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAC1D,MAAM,IAAI,GAAI,KAA4B,CAAC,IAAI,CAAC;IAChD,OAAO,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;AAC9E,CAAC;AAED,SAAS,yBAAyB,CAAC,KAAc;IAChD,MAAM,IAAI,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACtC,IAAI,CAAC,IAAI;QAAE,OAAO,CAAC,CAAC;IACpB,MAAM,MAAM,GAAG,KAAgC,CAAC;IAChD,IAAI,IAAI,KAAK,OAAO;QAAE,OAAO,qBAAqB,CAAC;IACnD,IAAI,IAAI,KAAK,MAAM;QAAE,OAAO,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IACrF,IAAI,IAAI,KAAK,UAAU;QAAE,OAAO,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IACjG,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;QACzB,MAAM,UAAU,GAAG,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5E,OAAO,UAAU,GAAG,2BAA2B,CAAC,MAAM,CAAC,SAAS,EAAE,iCAAiC,CAAC,CAAC;IACtG,CAAC;IACD,OAAO,2BAA2B,CAAC,KAAK,EAAE,mBAAmB,IAAI,SAAS,CAAC,CAAC;AAC7E,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,0BAA0B,CAAC,KAAc,EAAE,OAAO,GAAG,IAAI;IACxE,IAAI,CAAC,OAAO;QAAE,OAAO,CAAC,CAAC;IACvB,MAAM,KAAK,GAAG,yBAAyB,CAAC,KAAK,CAAC,CAAC;IAC/C,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7C,CAAC;AAED,SAAS,6BAA6B,CAAC,OAAgB;IACtD,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACtG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QAAE,OAAO,CAAC,CAAC;IACtC,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAC3B,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,gCAAgC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAC1G,CAAC,CACD,CAAC;IACF,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,uBAAuB,CAAC,OAAyC;IAChF,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QAAE,OAAO,CAAC,CAAC;IACrE,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO;YAAE,KAAK,IAAI,CAAC,CAAC;IAC9E,CAAC;IACD,OAAO,KAAK,CAAC;AACd,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,0BAA0B,CAAC,OAAyC;IACnF,OAAO,uBAAuB,CAAC,OAAO,CAAC,GAAG,sBAAsB,CAAC;AAClE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,OAAqB;IACnD,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC;QAAE,OAAO,CAAC,CAAC;IAEvF,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;QACtB,KAAK,MAAM,CAAC;QACZ,KAAK,QAAQ;YACZ,OAAO,6BAA6B,CAAE,OAAiC,CAAC,OAAO,CAAC,CAAC;QAClF,KAAK,WAAW,EAAE,CAAC;YAClB,MAAM,OAAO,GAAI,OAAiC,CAAC,OAAO,CAAC;YAC3D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;gBAAE,OAAO,CAAC,CAAC;YACtC,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,GAAG,yBAAyB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;YAC5F,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7C,CAAC;QACD,KAAK,YAAY,EAAE,CAAC;YACnB,MAAM,OAAO,GAAI,OAAiC,CAAC,OAAO,CAAC;YAC3D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;gBAAE,OAAO,CAAC,CAAC;YACtC,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,GAAG,yBAAyB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;YAC5F,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7C,CAAC;QACD,KAAK,eAAe,EAAE,CAAC;YACtB,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3E,MAAM,MAAM,GAAG,OAAO,OAAO,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YACxE,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QACxD,CAAC;QACD,KAAK,eAAe;YACnB,OAAO,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzF,CAAC;IAED,OAAO,CAAC,CAAC;AACV,CAAC","sourcesContent":["/**\n * Neutral context-usage metrics for deciding when a session needs compaction.\n */\n\nimport type { AgentMessage } from \"@earendil-works/pi-agent-core\";\nimport type { Api, AssistantMessage, Usage } from \"@earendil-works/pi-ai/compat\";\nimport { messageIsLlmVisible, userLikeContentBlockIsLlmVisible } from \"../messages.ts\";\nimport type { SessionEntry } from \"../session-manager.ts\";\n\nexport interface CompactionSettings {\n\tenabled: boolean;\n\treserveTokens: number;\n\t/** Fraction of compactable context to keep. 0.3 is aggressive, 0.7 is light. */\n\tcompression_ratio: number;\n\t/** Number of recent context-eligible messages to preserve in standard mode. */\n\tpreserve_recent: number;\n\t/** Focus query for relevance-based pruning; auto-detected when omitted in settings/options. */\n\tquery?: string;\n}\n\nexport const DEFAULT_COMPACTION_SETTINGS: CompactionSettings = {\n\tenabled: true,\n\treserveTokens: 16384,\n\tcompression_ratio: 0.5,\n\tpreserve_recent: 2,\n};\n\n/**\n * Calculate active context-window tokens from provider usage.\n *\n * Prefer normalized component fields over `totalTokens`: some providers expose\n * `totalTokens` as a billing/cumulative total, while the footer needs an active\n * context estimate. Some Anthropic-compatible endpoints mirror cached input in\n * both `input` and `cacheRead`/`cacheWrite`; only Anthropic Messages usage uses\n * the near-equal-bucket guard because OpenAI APIs expose disjoint normalized\n * components that must always be summed.\n */\nexport function calculateContextTokens(usage: Usage, api?: Api): number {\n\tconst input = Math.max(0, usage.input || 0);\n\tconst output = Math.max(0, usage.output || 0);\n\tconst cacheRead = Math.max(0, usage.cacheRead || 0);\n\tconst cacheWrite = Math.max(0, usage.cacheWrite || 0);\n\tconst cacheTokens = cacheRead + cacheWrite;\n\tconst hasComponents = input > 0 || output > 0 || cacheTokens > 0;\n\tif (!hasComponents) return Math.max(0, usage.totalTokens || 0);\n\n\tconst cacheMirrorsInput =\n\t\tapi === \"anthropic-messages\" &&\n\t\tinput > 0 &&\n\t\tcacheTokens > 0 &&\n\t\tcacheTokens >= input * 0.9 &&\n\t\tcacheTokens <= input * 1.1;\n\tconst promptTokens = cacheMirrorsInput ? input : input + cacheTokens;\n\treturn promptTokens + output;\n}\n\n/**\n * Get usage from an assistant message if available.\n * Skips aborted and error messages as they don't have valid usage data.\n */\nfunction getAssistantUsage(msg: AgentMessage): Usage | undefined {\n\tif (msg.role === \"assistant\" && \"usage\" in msg) {\n\t\tconst assistantMsg = msg as AssistantMessage;\n\t\tif (assistantMsg.stopReason !== \"aborted\" && assistantMsg.stopReason !== \"error\" && assistantMsg.usage) {\n\t\t\treturn assistantMsg.usage;\n\t\t}\n\t}\n\treturn undefined;\n}\n\n/**\n * Find the last non-aborted assistant message usage from session entries.\n */\nexport function getLastAssistantUsage(entries: SessionEntry[]): Usage | undefined {\n\tfor (let i = entries.length - 1; i >= 0; i--) {\n\t\tconst entry = entries[i];\n\t\tif (entry.type === \"message\") {\n\t\t\tconst usage = getAssistantUsage(entry.message);\n\t\t\tif (usage) return usage;\n\t\t}\n\t}\n\treturn undefined;\n}\n\nexport interface ContextUsageEstimate {\n\ttokens: number;\n\tusageTokens: number;\n\ttrailingTokens: number;\n\tlastUsageIndex: number | null;\n}\n\nfunction getLastAssistantUsageInfo(messages: AgentMessage[]): { usage: Usage; api: Api; index: number } | undefined {\n\tlet latestPrefixTimestamp = Number.NEGATIVE_INFINITY;\n\tlet usageInfo: { usage: Usage; api: Api; index: number } | undefined;\n\n\tfor (let i = 0; i < messages.length; i++) {\n\t\tconst message = messages[i];\n\t\tconst usage = getAssistantUsage(message);\n\t\tif (\n\t\t\tusage &&\n\t\t\tmessage.role === \"assistant\" &&\n\t\t\tmessage.timestamp >= latestPrefixTimestamp &&\n\t\t\tcalculateContextTokens(usage, message.api) > 0\n\t\t) {\n\t\t\tusageInfo = { usage, api: message.api, index: i };\n\t\t}\n\t\tlatestPrefixTimestamp = Math.max(latestPrefixTimestamp, message.timestamp);\n\t}\n\n\treturn usageInfo;\n}\n\n/**\n * Estimate context tokens from messages, using the last assistant usage when available.\n * If there are messages after the last usage, estimate their tokens with estimateTokens.\n */\nexport function estimateContextTokens(messages: AgentMessage[]): ContextUsageEstimate {\n\tconst usageInfo = getLastAssistantUsageInfo(messages);\n\n\tif (!usageInfo) {\n\t\tlet estimated = 0;\n\t\tfor (const message of messages) {\n\t\t\testimated += estimateTokens(message);\n\t\t}\n\t\treturn {\n\t\t\ttokens: estimated,\n\t\t\tusageTokens: 0,\n\t\t\ttrailingTokens: estimated,\n\t\t\tlastUsageIndex: null,\n\t\t};\n\t}\n\n\tconst usageTokens = calculateContextTokens(usageInfo.usage, usageInfo.api);\n\tlet trailingTokens = 0;\n\tfor (let i = usageInfo.index + 1; i < messages.length; i++) {\n\t\ttrailingTokens += estimateTokens(messages[i]);\n\t}\n\n\treturn {\n\t\ttokens: usageTokens + trailingTokens,\n\t\tusageTokens,\n\t\ttrailingTokens,\n\t\tlastUsageIndex: usageInfo.index,\n\t};\n}\n\n/**\n * Check if compaction should trigger based on context usage.\n */\nexport function shouldCompact(contextTokens: number, contextWindow: number, settings: CompactionSettings): boolean {\n\tif (!settings.enabled) return false;\n\treturn contextTokens > contextWindow - settings.reserveTokens;\n}\n\n/**\n * Shared image-token estimation used by every compaction/context-accounting path.\n *\n * Providers fold image tokens into their reported prompt/input usage, so usage-based\n * accounting already captures actual image cost. For heuristic paths (trailing\n * messages without usage, transcript content-block estimates) a single conservative\n * fixed estimate keeps both the context-window threshold check and the transcript\n * planner consistent.\n */\nexport const ESTIMATED_IMAGE_CHARS = 4800;\nexport const ESTIMATED_IMAGE_TOKENS = Math.ceil(ESTIMATED_IMAGE_CHARS / 4);\n\nfunction safeSerializedPayloadLength(value: unknown, fallback: string): number {\n\ttry {\n\t\tconst serialized = JSON.stringify(value);\n\t\tif (typeof serialized === \"string\") return serialized.length;\n\t} catch {\n\t\t// Cyclic and otherwise unserializable future blocks use a conservative marker below.\n\t}\n\treturn fallback.length;\n}\n\nfunction nonEmptyBlockType(block: unknown): string | undefined {\n\tif (!block || typeof block !== \"object\") return undefined;\n\tconst type = (block as { type?: unknown }).type;\n\treturn typeof type === \"string\" && type.trim().length > 0 ? type : undefined;\n}\n\nfunction estimateContentBlockChars(block: unknown): number {\n\tconst type = nonEmptyBlockType(block);\n\tif (!type) return 0;\n\tconst record = block as Record<string, unknown>;\n\tif (type === \"image\") return ESTIMATED_IMAGE_CHARS;\n\tif (type === \"text\") return typeof record.text === \"string\" ? record.text.length : 0;\n\tif (type === \"thinking\") return typeof record.thinking === \"string\" ? record.thinking.length : 0;\n\tif (type === \"toolCall\") {\n\t\tconst nameLength = typeof record.name === \"string\" ? record.name.length : 0;\n\t\treturn nameLength + safeSerializedPayloadLength(record.arguments, \"[unserializable tool arguments]\");\n\t}\n\treturn safeSerializedPayloadLength(block, `[unserializable ${type} block]`);\n}\n\n/** Estimate one raw content block after the caller applies provider visibility. */\nexport function estimateContentBlockTokens(block: unknown, visible = true): number {\n\tif (!visible) return 0;\n\tconst chars = estimateContentBlockChars(block);\n\treturn chars > 0 ? Math.ceil(chars / 4) : 0;\n}\n\nfunction estimateUserLikeContentTokens(content: unknown): number {\n\tif (typeof content === \"string\") return content.trim().length > 0 ? Math.ceil(content.length / 4) : 0;\n\tif (!Array.isArray(content)) return 0;\n\tconst chars = content.reduce(\n\t\t(total, block) => total + (userLikeContentBlockIsLlmVisible(block) ? estimateContentBlockChars(block) : 0),\n\t\t0,\n\t);\n\treturn chars > 0 ? Math.ceil(chars / 4) : 0;\n}\n\n/**\n * Count image content blocks in a message content array (text or block array).\n *\n * Exported as the canonical image-counting contract so tests can verify the\n * heuristic independently of the transcript-based estimation used in production.\n */\nexport function countImageContentBlocks(content: string | Array<{ type: string }>): number {\n\tif (typeof content === \"string\" || !Array.isArray(content)) return 0;\n\tlet count = 0;\n\tfor (const block of content) {\n\t\tif (block && typeof block === \"object\" && block.type === \"image\") count += 1;\n\t}\n\treturn count;\n}\n\n/**\n * Estimate the token cost of only the image content blocks in a message content array.\n *\n * Exported as the canonical image-token-estimation contract so tests can verify\n * the heuristic independently of the transcript-based estimation used in production.\n */\nexport function estimateImageContentTokens(content: string | Array<{ type: string }>): number {\n\treturn countImageContentBlocks(content) * ESTIMATED_IMAGE_TOKENS;\n}\n\n/**\n * Estimate token count for a message using chars/4 heuristic.\n * This is conservative (overestimates tokens).\n */\nexport function estimateTokens(message: AgentMessage): number {\n\tif (!message || typeof message !== \"object\" || !messageIsLlmVisible(message)) return 0;\n\n\tswitch (message.role) {\n\t\tcase \"user\":\n\t\tcase \"custom\":\n\t\t\treturn estimateUserLikeContentTokens((message as { content?: unknown }).content);\n\t\tcase \"assistant\": {\n\t\t\tconst content = (message as { content?: unknown }).content;\n\t\t\tif (!Array.isArray(content)) return 0;\n\t\t\tconst chars = content.reduce((total, block) => total + estimateContentBlockChars(block), 0);\n\t\t\treturn chars > 0 ? Math.ceil(chars / 4) : 0;\n\t\t}\n\t\tcase \"toolResult\": {\n\t\t\tconst content = (message as { content?: unknown }).content;\n\t\t\tif (!Array.isArray(content)) return 0;\n\t\t\tconst chars = content.reduce((total, block) => total + estimateContentBlockChars(block), 0);\n\t\t\treturn chars > 0 ? Math.ceil(chars / 4) : 0;\n\t\t}\n\t\tcase \"bashExecution\": {\n\t\t\tconst command = typeof message.command === \"string\" ? message.command : \"\";\n\t\t\tconst output = typeof message.output === \"string\" ? message.output : \"\";\n\t\t\treturn Math.ceil((command.length + output.length) / 4);\n\t\t}\n\t\tcase \"branchSummary\":\n\t\t\treturn typeof message.summary === \"string\" ? Math.ceil(message.summary.length / 4) : 0;\n\t}\n\n\treturn 0;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"deleted-ranges.d.ts","sourceRoot":"","sources":["../../../src/core/compaction/deleted-ranges.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,mBAAmB,EAEnB,cAAc,EAEd,YAAY,EACZ,eAAe,EACf,MAAM,uBAAuB,CAAC;AA+B/B,4FAA4F;AAC5F,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,YAAY,EAAE,EAAE,MAAM,EAAE,cAAc,GAAG,eAAe,CAiBlG;AAmDD,yEAAyE;AACzE,wBAAgB,8BAA8B,CAC7C,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,eAAe,GACrB,mBAAmB,CA6BrB"}
1
+ {"version":3,"file":"deleted-ranges.d.ts","sourceRoot":"","sources":["../../../src/core/compaction/deleted-ranges.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,mBAAmB,EAEnB,cAAc,EAEd,YAAY,EACZ,eAAe,EACf,MAAM,uBAAuB,CAAC;AA+B/B,4FAA4F;AAC5F,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,YAAY,EAAE,EAAE,MAAM,EAAE,cAAc,GAAG,eAAe,CAiBlG;AAmDD,yEAAyE;AACzE,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,eAAe,GAAG,mBAAmB,CA6BnH"}
@@ -1 +1 @@
1
- {"version":3,"file":"deleted-ranges.js","sourceRoot":"","sources":["../../../src/core/compaction/deleted-ranges.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n\tCompactedTranscript,\n\tLineRange,\n\tNumberedRegion,\n\tRawLineEndpoint,\n\tRawLineRange,\n\tValidatedRanges,\n} from \"./compaction-types.js\";\nimport { filteredMarker } from \"./transcript-serialization.js\";\n\nfunction coerceEndpoint(value: RawLineEndpoint | undefined): number | undefined {\n\tif (value === undefined) return undefined;\n\tconst number = Number(value);\n\treturn Number.isFinite(number) ? Math.trunc(number) : undefined;\n}\n\nfunction mergeRanges(ranges: LineRange[]): LineRange[] {\n\tconst merged: LineRange[] = [];\n\tfor (const range of ranges) {\n\t\tconst current = merged[merged.length - 1];\n\t\tif (current && range.start <= current.end + 1) current.end = Math.max(current.end, range.end);\n\t\telse merged.push({ ...range });\n\t}\n\treturn merged;\n}\n\nfunction splitAroundProtected(range: LineRange, protectedLines: ReadonlySet<number>): LineRange[] {\n\tconst fragments: LineRange[] = [];\n\tlet start = range.start;\n\tfor (let line = range.start; line <= range.end; line++) {\n\t\tif (!protectedLines.has(line)) continue;\n\t\tif (start < line) fragments.push({ start, end: line - 1 });\n\t\tstart = line + 1;\n\t}\n\tif (start <= range.end) fragments.push({ start, end: range.end });\n\treturn fragments;\n}\n\n/** Normalize untrusted model ranges into the sole range type accepted by reconstruction. */\nexport function validateDeletedRanges(raw: RawLineRange[], region: NumberedRegion): ValidatedRanges {\n\tconst totalLines = region.lines.length;\n\tconst normalized: LineRange[] = [];\n\tfor (const candidate of raw) {\n\t\tlet start = coerceEndpoint(candidate.start);\n\t\tlet end = coerceEndpoint(candidate.end);\n\t\tif (start === undefined || end === undefined) continue;\n\t\tif (start > end) [start, end] = [end, start];\n\t\tstart = Math.max(1, start);\n\t\tend = Math.min(totalLines, end);\n\t\tif (start <= end) normalized.push({ start, end });\n\t}\n\tnormalized.sort((left, right) => left.start - right.start || left.end - right.end);\n\n\tconst protectedLines = new Set(region.protectedLineNumbers ?? []);\n\tconst split = mergeRanges(normalized).flatMap((range) => splitAroundProtected(range, protectedLines));\n\treturn Object.assign(split, { __brand: \"ValidatedRanges\" as const });\n}\n\nfunction rangesToDeletedLines(ranges: ValidatedRanges, lineCount: number): boolean[] {\n\tconst deleted = Array.from({ length: lineCount }, () => false);\n\tfor (const range of ranges) {\n\t\tfor (let line = range.start; line <= range.end; line++) deleted[line - 1] = true;\n\t}\n\treturn deleted;\n}\n\nfunction foldAdjacentMarkers(region: NumberedRegion, ranges: ValidatedRanges): LineRange[] {\n\tconst deleted = rangesToDeletedLines(ranges, region.lines.length);\n\tlet changed = true;\n\twhile (changed) {\n\t\tchanged = false;\n\t\tfor (const lineNumber of region.priorMarkerNs.keys()) {\n\t\t\tconst index = lineNumber - 1;\n\t\t\tif (deleted[index]) continue;\n\t\t\tconst previousDeleted = index > 0 ? (deleted[index - 1] ?? false) : false;\n\t\t\tconst nextDeleted = index + 1 < deleted.length ? (deleted[index + 1] ?? false) : false;\n\t\t\tif (previousDeleted || nextDeleted) {\n\t\t\t\tdeleted[index] = true;\n\t\t\t\tchanged = true;\n\t\t\t}\n\t\t}\n\t}\n\n\tconst folded: LineRange[] = [];\n\tlet start: number | undefined;\n\tfor (let index = 0; index <= deleted.length; index++) {\n\t\t// Sentinel iteration at index === deleted.length: treat as not deleted so a\n\t\t// trailing open range closes without reading past the array bounds.\n\t\tconst isDeleted = index < deleted.length ? (deleted[index] ?? false) : false;\n\t\tif (isDeleted && start === undefined) start = index + 1;\n\t\tif (!isDeleted && start !== undefined) {\n\t\t\tfolded.push({ start, end: index });\n\t\t\tstart = undefined;\n\t\t}\n\t}\n\treturn folded;\n}\n\nfunction cumulativeDeletedCount(region: NumberedRegion, range: LineRange): number {\n\tlet count = range.end - range.start + 1;\n\tfor (let line = range.start; line <= range.end; line++) {\n\t\tconst priorCount = region.priorMarkerNs.get(line);\n\t\tif (priorCount !== undefined) count += priorCount - 1;\n\t}\n\treturn count;\n}\n\n/** Rebuild a compacted transcript mechanically from validated ranges. */\nexport function reconstructCompactedTranscript(\n\tregion: NumberedRegion,\n\tranges: ValidatedRanges,\n): CompactedTranscript {\n\tconst finalRanges = foldAdjacentMarkers(region, ranges);\n\tconst output: string[] = [];\n\tlet line = 1;\n\tfor (const range of finalRanges) {\n\t\twhile (line < range.start) output.push(region.lines[line++ - 1]);\n\t\toutput.push(filteredMarker(cumulativeDeletedCount(region, range)));\n\t\tline = range.end + 1;\n\t}\n\twhile (line <= region.lines.length) output.push(region.lines[line++ - 1]);\n\n\tconst text = output.join(\"\\n\");\n\tconst linesDeleted = finalRanges.reduce((total, range) => total + range.end - range.start + 1, 0);\n\tconst tokensAfter = Math.ceil(text.length / 4);\n\tconst percentReduction =\n\t\tregion.tokenEstimate === 0 ? 0 : Math.round((1 - tokensAfter / region.tokenEstimate) * 1000) / 10;\n\treturn {\n\t\ttext,\n\t\tranges: finalRanges,\n\t\tstats: {\n\t\t\tlinesBefore: region.lines.length,\n\t\t\tlinesDeleted,\n\t\t\tlinesKept: region.lines.length - linesDeleted,\n\t\t\trangeCount: finalRanges.length,\n\t\t\ttokensBefore: region.tokenEstimate,\n\t\t\ttokensAfter,\n\t\t\tpercentReduction,\n\t\t},\n\t};\n}\n"]}
1
+ {"version":3,"file":"deleted-ranges.js","sourceRoot":"","sources":["../../../src/core/compaction/deleted-ranges.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n\tCompactedTranscript,\n\tLineRange,\n\tNumberedRegion,\n\tRawLineEndpoint,\n\tRawLineRange,\n\tValidatedRanges,\n} from \"./compaction-types.js\";\nimport { filteredMarker } from \"./transcript-serialization.js\";\n\nfunction coerceEndpoint(value: RawLineEndpoint | undefined): number | undefined {\n\tif (value === undefined) return undefined;\n\tconst number = Number(value);\n\treturn Number.isFinite(number) ? Math.trunc(number) : undefined;\n}\n\nfunction mergeRanges(ranges: LineRange[]): LineRange[] {\n\tconst merged: LineRange[] = [];\n\tfor (const range of ranges) {\n\t\tconst current = merged[merged.length - 1];\n\t\tif (current && range.start <= current.end + 1) current.end = Math.max(current.end, range.end);\n\t\telse merged.push({ ...range });\n\t}\n\treturn merged;\n}\n\nfunction splitAroundProtected(range: LineRange, protectedLines: ReadonlySet<number>): LineRange[] {\n\tconst fragments: LineRange[] = [];\n\tlet start = range.start;\n\tfor (let line = range.start; line <= range.end; line++) {\n\t\tif (!protectedLines.has(line)) continue;\n\t\tif (start < line) fragments.push({ start, end: line - 1 });\n\t\tstart = line + 1;\n\t}\n\tif (start <= range.end) fragments.push({ start, end: range.end });\n\treturn fragments;\n}\n\n/** Normalize untrusted model ranges into the sole range type accepted by reconstruction. */\nexport function validateDeletedRanges(raw: RawLineRange[], region: NumberedRegion): ValidatedRanges {\n\tconst totalLines = region.lines.length;\n\tconst normalized: LineRange[] = [];\n\tfor (const candidate of raw) {\n\t\tlet start = coerceEndpoint(candidate.start);\n\t\tlet end = coerceEndpoint(candidate.end);\n\t\tif (start === undefined || end === undefined) continue;\n\t\tif (start > end) [start, end] = [end, start];\n\t\tstart = Math.max(1, start);\n\t\tend = Math.min(totalLines, end);\n\t\tif (start <= end) normalized.push({ start, end });\n\t}\n\tnormalized.sort((left, right) => left.start - right.start || left.end - right.end);\n\n\tconst protectedLines = new Set(region.protectedLineNumbers ?? []);\n\tconst split = mergeRanges(normalized).flatMap((range) => splitAroundProtected(range, protectedLines));\n\treturn Object.assign(split, { __brand: \"ValidatedRanges\" as const });\n}\n\nfunction rangesToDeletedLines(ranges: ValidatedRanges, lineCount: number): boolean[] {\n\tconst deleted = Array.from({ length: lineCount }, () => false);\n\tfor (const range of ranges) {\n\t\tfor (let line = range.start; line <= range.end; line++) deleted[line - 1] = true;\n\t}\n\treturn deleted;\n}\n\nfunction foldAdjacentMarkers(region: NumberedRegion, ranges: ValidatedRanges): LineRange[] {\n\tconst deleted = rangesToDeletedLines(ranges, region.lines.length);\n\tlet changed = true;\n\twhile (changed) {\n\t\tchanged = false;\n\t\tfor (const lineNumber of region.priorMarkerNs.keys()) {\n\t\t\tconst index = lineNumber - 1;\n\t\t\tif (deleted[index]) continue;\n\t\t\tconst previousDeleted = index > 0 ? (deleted[index - 1] ?? false) : false;\n\t\t\tconst nextDeleted = index + 1 < deleted.length ? (deleted[index + 1] ?? false) : false;\n\t\t\tif (previousDeleted || nextDeleted) {\n\t\t\t\tdeleted[index] = true;\n\t\t\t\tchanged = true;\n\t\t\t}\n\t\t}\n\t}\n\n\tconst folded: LineRange[] = [];\n\tlet start: number | undefined;\n\tfor (let index = 0; index <= deleted.length; index++) {\n\t\t// Sentinel iteration at index === deleted.length: treat as not deleted so a\n\t\t// trailing open range closes without reading past the array bounds.\n\t\tconst isDeleted = index < deleted.length ? (deleted[index] ?? false) : false;\n\t\tif (isDeleted && start === undefined) start = index + 1;\n\t\tif (!isDeleted && start !== undefined) {\n\t\t\tfolded.push({ start, end: index });\n\t\t\tstart = undefined;\n\t\t}\n\t}\n\treturn folded;\n}\n\nfunction cumulativeDeletedCount(region: NumberedRegion, range: LineRange): number {\n\tlet count = range.end - range.start + 1;\n\tfor (let line = range.start; line <= range.end; line++) {\n\t\tconst priorCount = region.priorMarkerNs.get(line);\n\t\tif (priorCount !== undefined) count += priorCount - 1;\n\t}\n\treturn count;\n}\n\n/** Rebuild a compacted transcript mechanically from validated ranges. */\nexport function reconstructCompactedTranscript(region: NumberedRegion, ranges: ValidatedRanges): CompactedTranscript {\n\tconst finalRanges = foldAdjacentMarkers(region, ranges);\n\tconst output: string[] = [];\n\tlet line = 1;\n\tfor (const range of finalRanges) {\n\t\twhile (line < range.start) output.push(region.lines[line++ - 1]);\n\t\toutput.push(filteredMarker(cumulativeDeletedCount(region, range)));\n\t\tline = range.end + 1;\n\t}\n\twhile (line <= region.lines.length) output.push(region.lines[line++ - 1]);\n\n\tconst text = output.join(\"\\n\");\n\tconst linesDeleted = finalRanges.reduce((total, range) => total + range.end - range.start + 1, 0);\n\tconst tokensAfter = Math.ceil(text.length / 4);\n\tconst percentReduction =\n\t\tregion.tokenEstimate === 0 ? 0 : Math.round((1 - tokensAfter / region.tokenEstimate) * 1000) / 10;\n\treturn {\n\t\ttext,\n\t\tranges: finalRanges,\n\t\tstats: {\n\t\t\tlinesBefore: region.lines.length,\n\t\t\tlinesDeleted,\n\t\t\tlinesKept: region.lines.length - linesDeleted,\n\t\t\trangeCount: finalRanges.length,\n\t\t\ttokensBefore: region.tokenEstimate,\n\t\t\ttokensAfter,\n\t\t\tpercentReduction,\n\t\t},\n\t};\n}\n"]}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Borrow a configured fallback model for one compaction planner request.
3
+ *
4
+ * This is deliberately a *weaker* capability than main-chat model fallback. The
5
+ * borrowing door returns a `BorrowedPlanner` **value**: it holds no session
6
+ * handle, so it cannot write `agent.state.model`, append a model-change entry,
7
+ * change the session thinking level, refresh the system prompt, emit
8
+ * `model_changed`/`model_select`, or call `agent.continue()`.
9
+ * `_trySwitchToFallbackModel` does all of those and is not reused or modified.
10
+ *
11
+ * The attempted-key set belongs to the compaction run and is read-only here, so
12
+ * borrowing never touches the main chat's `_fallbackAttemptedKeys`.
13
+ */
14
+ import type { ThinkingLevel } from "@earendil-works/pi-agent-core";
15
+ import type { Api, Model } from "@earendil-works/pi-ai/compat";
16
+ import { type FallbackModelLookup } from "../fallback-models.js";
17
+ import type { BorrowedPlanner, PlannerAuth } from "./compaction-types.js";
18
+ /**
19
+ * Everything candidate selection needs.
20
+ *
21
+ * The RFC's §5.1 signature takes only `attempted` and `resolveAuth`, which
22
+ * cannot select a candidate on its own: it names no fallback list, no model
23
+ * registry, no preferred provider, and no inherited reasoning level. Those
24
+ * inputs travel in this context object rather than through hidden state.
25
+ */
26
+ export interface FallbackPlannerContext {
27
+ /** The session's effective `fallbackModels`, in configured order. */
28
+ readonly fallbackModels: readonly string[];
29
+ /** Model registry used to resolve and authenticate candidates. */
30
+ readonly registry: FallbackModelLookup;
31
+ /** Provider preferred when an unqualified entry is ambiguous. */
32
+ readonly preferredProvider: string | undefined;
33
+ /** Session level inherited when a candidate carries no `:level` suffix. */
34
+ readonly sessionThinkingLevel: ThinkingLevel | undefined;
35
+ }
36
+ /**
37
+ * Identity of one planner attempt: `provider/model:<effective reasoning>`.
38
+ *
39
+ * The key must be derived from the *effective* level the request will carry,
40
+ * not from the raw optional `model:level` suffix. An unsuffixed entry for the
41
+ * session model inherits the session level, so keying it as `provider/model:`
42
+ * would let the identical request run a second time.
43
+ */
44
+ export declare function plannerAttemptKey(planner: BorrowedPlanner): string;
45
+ /** The exact two-argument borrowing door, bound to one run's configuration. */
46
+ export type BorrowFallbackPlanner = (attempted: ReadonlySet<string>, resolveAuth: (model: Model<Api>) => Promise<PlannerAuth | undefined>) => Promise<BorrowedPlanner | undefined>;
47
+ /**
48
+ * Build the borrowing door for one compaction run.
49
+ *
50
+ * The RFC's top-level two-argument signature names no fallback list, registry,
51
+ * preferred provider, inherited reasoning level, or traversal cursor, so a
52
+ * stateless exported function cannot select a candidate without hidden shared
53
+ * state — unsafe under concurrent compactions. Binding the configuration and the
54
+ * run-local cursor in a closure keeps the returned door exactly two arguments
55
+ * while `attempted` stays a `ReadonlySet` the borrower never writes.
56
+ *
57
+ * The walk is one monotonic pass. Each list position is inspected at most once,
58
+ * whether it fails to resolve, has no usable credentials, duplicates an earlier
59
+ * identity, or yields a planner. Without the cursor, an entry that could not
60
+ * resolve earlier could be returned after a later candidate once the registry
61
+ * changed, producing a B→A order the configured list never asked for.
62
+ */
63
+ export declare function createFallbackPlannerBorrower(context: FallbackPlannerContext): BorrowFallbackPlanner;
64
+ //# sourceMappingURL=fallback-planner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fallback-planner.d.ts","sourceRoot":"","sources":["../../../src/core/compaction/fallback-planner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,KAAK,mBAAmB,EAAqC,MAAM,uBAAuB,CAAC;AACpG,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAG1E;;;;;;;GAOG;AACH,MAAM,WAAW,sBAAsB;IACtC,qEAAqE;IACrE,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C,kEAAkE;IAClE,QAAQ,CAAC,QAAQ,EAAE,mBAAmB,CAAC;IACvC,iEAAiE;IACjE,QAAQ,CAAC,iBAAiB,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/C,2EAA2E;IAC3E,QAAQ,CAAC,oBAAoB,EAAE,aAAa,GAAG,SAAS,CAAC;CACzD;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CAElE;AAeD,+EAA+E;AAC/E,MAAM,MAAM,qBAAqB,GAAG,CACnC,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,EAC9B,WAAW,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,KAAK,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,KAChE,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC,CAAC;AAE1C;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,sBAAsB,GAAG,qBAAqB,CA6BpG"}
@@ -0,0 +1,75 @@
1
+ /**
2
+ * Borrow a configured fallback model for one compaction planner request.
3
+ *
4
+ * This is deliberately a *weaker* capability than main-chat model fallback. The
5
+ * borrowing door returns a `BorrowedPlanner` **value**: it holds no session
6
+ * handle, so it cannot write `agent.state.model`, append a model-change entry,
7
+ * change the session thinking level, refresh the system prompt, emit
8
+ * `model_changed`/`model_select`, or call `agent.continue()`.
9
+ * `_trySwitchToFallbackModel` does all of those and is not reused or modified.
10
+ *
11
+ * The attempted-key set belongs to the compaction run and is read-only here, so
12
+ * borrowing never touches the main chat's `_fallbackAttemptedKeys`.
13
+ */
14
+ import { fallbackKey, resolveFallbackModel } from "../fallback-models.js";
15
+ import { resolvePlannerRequest } from "./range-planner.js";
16
+ /**
17
+ * Identity of one planner attempt: `provider/model:<effective reasoning>`.
18
+ *
19
+ * The key must be derived from the *effective* level the request will carry,
20
+ * not from the raw optional `model:level` suffix. An unsuffixed entry for the
21
+ * session model inherits the session level, so keying it as `provider/model:`
22
+ * would let the identical request run a second time.
23
+ */
24
+ export function plannerAttemptKey(planner) {
25
+ return fallbackKey(planner.model, planner.budget.reasoning);
26
+ }
27
+ /**
28
+ * Build the borrowing door for one compaction run.
29
+ *
30
+ * The RFC's top-level two-argument signature names no fallback list, registry,
31
+ * preferred provider, inherited reasoning level, or traversal cursor, so a
32
+ * stateless exported function cannot select a candidate without hidden shared
33
+ * state — unsafe under concurrent compactions. Binding the configuration and the
34
+ * run-local cursor in a closure keeps the returned door exactly two arguments
35
+ * while `attempted` stays a `ReadonlySet` the borrower never writes.
36
+ *
37
+ * The walk is one monotonic pass. Each list position is inspected at most once,
38
+ * whether it fails to resolve, has no usable credentials, duplicates an earlier
39
+ * identity, or yields a planner. Without the cursor, an entry that could not
40
+ * resolve earlier could be returned after a later candidate once the registry
41
+ * changed, producing a B→A order the configured list never asked for.
42
+ */
43
+ export function createFallbackPlannerBorrower(context) {
44
+ const walk = { nextIndex: 0, consumed: new Set() };
45
+ return async (attempted, resolveAuth) => {
46
+ while (walk.nextIndex < context.fallbackModels.length) {
47
+ const entry = context.fallbackModels[walk.nextIndex];
48
+ // Advance before any work: this list position is spent either way.
49
+ walk.nextIndex += 1;
50
+ const candidate = resolveFallbackModel(entry, context.registry, context.preferredProvider);
51
+ if (!candidate)
52
+ continue;
53
+ // Resolve the budget first: the identity depends on the effective
54
+ // reasoning level, which inheritance may supply.
55
+ const budget = resolvePlannerRequest(candidate.model, context.sessionThinkingLevel, candidate.thinkingLevel);
56
+ const key = fallbackKey(candidate.model, budget.reasoning);
57
+ if (attempted.has(key) || walk.consumed.has(key))
58
+ continue;
59
+ walk.consumed.add(key);
60
+ let auth;
61
+ try {
62
+ auth = await resolveAuth(candidate.model);
63
+ }
64
+ catch {
65
+ // A candidate whose credentials cannot be resolved is simply unusable.
66
+ auth = undefined;
67
+ }
68
+ if (!auth)
69
+ continue;
70
+ return { model: candidate.model, budget, auth };
71
+ }
72
+ return undefined;
73
+ };
74
+ }
75
+ //# sourceMappingURL=fallback-planner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fallback-planner.js","sourceRoot":"","sources":["../../../src/core/compaction/fallback-planner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,EAA4B,WAAW,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAEpG,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAqB3D;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAwB;IACzD,OAAO,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AAC7D,CAAC;AAqBD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,6BAA6B,CAAC,OAA+B;IAC5E,MAAM,IAAI,GAAwB,EAAE,SAAS,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,GAAG,EAAU,EAAE,CAAC;IAChF,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,EAAE;QACvC,OAAO,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC;YACvD,MAAM,KAAK,GAAG,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACrD,mEAAmE;YACnE,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC;YAEpB,MAAM,SAAS,GAAG,oBAAoB,CAAC,KAAK,EAAE,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;YAC3F,IAAI,CAAC,SAAS;gBAAE,SAAS;YACzB,kEAAkE;YAClE,iDAAiD;YACjD,MAAM,MAAM,GAAG,qBAAqB,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,oBAAoB,EAAE,SAAS,CAAC,aAAa,CAAC,CAAC;YAC7G,MAAM,GAAG,GAAG,WAAW,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;YAC3D,IAAI,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,SAAS;YAC3D,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAEvB,IAAI,IAA6B,CAAC;YAClC,IAAI,CAAC;gBACJ,IAAI,GAAG,MAAM,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YAC3C,CAAC;YAAC,MAAM,CAAC;gBACR,uEAAuE;gBACvE,IAAI,GAAG,SAAS,CAAC;YAClB,CAAC;YACD,IAAI,CAAC,IAAI;gBAAE,SAAS;YACpB,OAAO,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;QACjD,CAAC;QACD,OAAO,SAAS,CAAC;IAClB,CAAC,CAAC;AACH,CAAC","sourcesContent":["/**\n * Borrow a configured fallback model for one compaction planner request.\n *\n * This is deliberately a *weaker* capability than main-chat model fallback. The\n * borrowing door returns a `BorrowedPlanner` **value**: it holds no session\n * handle, so it cannot write `agent.state.model`, append a model-change entry,\n * change the session thinking level, refresh the system prompt, emit\n * `model_changed`/`model_select`, or call `agent.continue()`.\n * `_trySwitchToFallbackModel` does all of those and is not reused or modified.\n *\n * The attempted-key set belongs to the compaction run and is read-only here, so\n * borrowing never touches the main chat's `_fallbackAttemptedKeys`.\n */\n\nimport type { ThinkingLevel } from \"@earendil-works/pi-agent-core\";\nimport type { Api, Model } from \"@earendil-works/pi-ai/compat\";\nimport { type FallbackModelLookup, fallbackKey, resolveFallbackModel } from \"../fallback-models.js\";\nimport type { BorrowedPlanner, PlannerAuth } from \"./compaction-types.js\";\nimport { resolvePlannerRequest } from \"./range-planner.js\";\n\n/**\n * Everything candidate selection needs.\n *\n * The RFC's §5.1 signature takes only `attempted` and `resolveAuth`, which\n * cannot select a candidate on its own: it names no fallback list, no model\n * registry, no preferred provider, and no inherited reasoning level. Those\n * inputs travel in this context object rather than through hidden state.\n */\nexport interface FallbackPlannerContext {\n\t/** The session's effective `fallbackModels`, in configured order. */\n\treadonly fallbackModels: readonly string[];\n\t/** Model registry used to resolve and authenticate candidates. */\n\treadonly registry: FallbackModelLookup;\n\t/** Provider preferred when an unqualified entry is ambiguous. */\n\treadonly preferredProvider: string | undefined;\n\t/** Session level inherited when a candidate carries no `:level` suffix. */\n\treadonly sessionThinkingLevel: ThinkingLevel | undefined;\n}\n\n/**\n * Identity of one planner attempt: `provider/model:<effective reasoning>`.\n *\n * The key must be derived from the *effective* level the request will carry,\n * not from the raw optional `model:level` suffix. An unsuffixed entry for the\n * session model inherits the session level, so keying it as `provider/model:`\n * would let the identical request run a second time.\n */\nexport function plannerAttemptKey(planner: BorrowedPlanner): string {\n\treturn fallbackKey(planner.model, planner.budget.reasoning);\n}\n\n/**\n * Run-local traversal state for one compaction's fallback walk.\n *\n * Kept out of the borrower's arguments and out of module scope: concurrent\n * compactions each own one of these, so nothing is shared.\n */\ninterface FallbackPlannerWalk {\n\t/** Next configured list position to inspect. Only ever advances. */\n\tnextIndex: number;\n\t/** Effective `provider/model:level` identities already inspected this run. */\n\tconsumed: Set<string>;\n}\n\n/** The exact two-argument borrowing door, bound to one run's configuration. */\nexport type BorrowFallbackPlanner = (\n\tattempted: ReadonlySet<string>,\n\tresolveAuth: (model: Model<Api>) => Promise<PlannerAuth | undefined>,\n) => Promise<BorrowedPlanner | undefined>;\n\n/**\n * Build the borrowing door for one compaction run.\n *\n * The RFC's top-level two-argument signature names no fallback list, registry,\n * preferred provider, inherited reasoning level, or traversal cursor, so a\n * stateless exported function cannot select a candidate without hidden shared\n * state — unsafe under concurrent compactions. Binding the configuration and the\n * run-local cursor in a closure keeps the returned door exactly two arguments\n * while `attempted` stays a `ReadonlySet` the borrower never writes.\n *\n * The walk is one monotonic pass. Each list position is inspected at most once,\n * whether it fails to resolve, has no usable credentials, duplicates an earlier\n * identity, or yields a planner. Without the cursor, an entry that could not\n * resolve earlier could be returned after a later candidate once the registry\n * changed, producing a B→A order the configured list never asked for.\n */\nexport function createFallbackPlannerBorrower(context: FallbackPlannerContext): BorrowFallbackPlanner {\n\tconst walk: FallbackPlannerWalk = { nextIndex: 0, consumed: new Set<string>() };\n\treturn async (attempted, resolveAuth) => {\n\t\twhile (walk.nextIndex < context.fallbackModels.length) {\n\t\t\tconst entry = context.fallbackModels[walk.nextIndex];\n\t\t\t// Advance before any work: this list position is spent either way.\n\t\t\twalk.nextIndex += 1;\n\n\t\t\tconst candidate = resolveFallbackModel(entry, context.registry, context.preferredProvider);\n\t\t\tif (!candidate) continue;\n\t\t\t// Resolve the budget first: the identity depends on the effective\n\t\t\t// reasoning level, which inheritance may supply.\n\t\t\tconst budget = resolvePlannerRequest(candidate.model, context.sessionThinkingLevel, candidate.thinkingLevel);\n\t\t\tconst key = fallbackKey(candidate.model, budget.reasoning);\n\t\t\tif (attempted.has(key) || walk.consumed.has(key)) continue;\n\t\t\twalk.consumed.add(key);\n\n\t\t\tlet auth: PlannerAuth | undefined;\n\t\t\ttry {\n\t\t\t\tauth = await resolveAuth(candidate.model);\n\t\t\t} catch {\n\t\t\t\t// A candidate whose credentials cannot be resolved is simply unusable.\n\t\t\t\tauth = undefined;\n\t\t\t}\n\t\t\tif (!auth) continue;\n\t\t\treturn { model: candidate.model, budget, auth };\n\t\t}\n\t\treturn undefined;\n\t};\n}\n"]}
@@ -3,13 +3,16 @@
3
3
  */
4
4
  export * from "./branch-summarization.ts";
5
5
  export * from "./compaction.ts";
6
- export * from "./compaction-types.js";
7
- export * from "./compaction-parameters.js";
8
6
  export * from "./compaction-boundary.js";
9
- export * from "./range-planner.js";
10
- export * from "./range-planner-diagnostics.js";
7
+ export * from "./compaction-parameters.js";
11
8
  export * from "./compaction-runner.js";
9
+ export * from "./compaction-types.js";
12
10
  export * from "./deleted-ranges.js";
11
+ export * from "./fallback-planner.js";
12
+ export * from "./planner-outcome.js";
13
+ export * from "./range-planner.js";
14
+ export * from "./range-planner-diagnostics.js";
15
+ export * from "./region-trimming.js";
13
16
  export * from "./transcript-serialization.js";
14
17
  export * from "./utils.ts";
15
18
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/compaction/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/compaction/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,sBAAsB,CAAC;AACrC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,YAAY,CAAC"}
@@ -3,13 +3,16 @@
3
3
  */
4
4
  export * from "./branch-summarization.js";
5
5
  export * from "./compaction.js";
6
- export * from "./compaction-types.js";
7
- export * from "./compaction-parameters.js";
8
6
  export * from "./compaction-boundary.js";
9
- export * from "./range-planner.js";
10
- export * from "./range-planner-diagnostics.js";
7
+ export * from "./compaction-parameters.js";
11
8
  export * from "./compaction-runner.js";
9
+ export * from "./compaction-types.js";
12
10
  export * from "./deleted-ranges.js";
11
+ export * from "./fallback-planner.js";
12
+ export * from "./planner-outcome.js";
13
+ export * from "./range-planner.js";
14
+ export * from "./range-planner-diagnostics.js";
15
+ export * from "./region-trimming.js";
13
16
  export * from "./transcript-serialization.js";
14
17
  export * from "./utils.js";
15
18
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/compaction/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,YAAY,CAAC","sourcesContent":["/**\n * Compaction support utilities.\n */\n\nexport * from \"./branch-summarization.ts\";\nexport * from \"./compaction.ts\";\nexport * from \"./compaction-types.js\";\nexport * from \"./compaction-parameters.js\";\nexport * from \"./compaction-boundary.js\";\nexport * from \"./range-planner.js\";\nexport * from \"./range-planner-diagnostics.js\";\nexport * from \"./compaction-runner.js\";\nexport * from \"./deleted-ranges.js\";\nexport * from \"./transcript-serialization.js\";\nexport * from \"./utils.ts\";\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/compaction/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,sBAAsB,CAAC;AACrC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,YAAY,CAAC","sourcesContent":["/**\n * Compaction support utilities.\n */\n\nexport * from \"./branch-summarization.ts\";\nexport * from \"./compaction.ts\";\nexport * from \"./compaction-boundary.js\";\nexport * from \"./compaction-parameters.js\";\nexport * from \"./compaction-runner.js\";\nexport * from \"./compaction-types.js\";\nexport * from \"./deleted-ranges.js\";\nexport * from \"./fallback-planner.js\";\nexport * from \"./planner-outcome.js\";\nexport * from \"./range-planner.js\";\nexport * from \"./range-planner-diagnostics.js\";\nexport * from \"./region-trimming.js\";\nexport * from \"./transcript-serialization.js\";\nexport * from \"./utils.ts\";\n"]}