@bastani/atomic 0.8.31-alpha.4 → 0.9.0-alpha.1

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 (1361) hide show
  1. package/CHANGELOG.md +6 -1
  2. package/dist/builtin/cursor/CHANGELOG.md +4 -1
  3. package/dist/builtin/cursor/package.json +2 -2
  4. package/dist/builtin/cursor/src/proto/protobuf-codec-json.ts +44 -0
  5. package/dist/builtin/cursor/src/proto/protobuf-codec-request.ts +271 -0
  6. package/dist/builtin/cursor/src/proto/protobuf-codec-wire.ts +231 -0
  7. package/dist/builtin/cursor/src/proto/protobuf-codec.ts +5 -523
  8. package/dist/builtin/cursor/src/stream.ts +6 -70
  9. package/dist/builtin/cursor/src/transport-errors.ts +74 -0
  10. package/dist/builtin/cursor/src/transport-frame.ts +56 -0
  11. package/dist/builtin/cursor/src/transport-http2.ts +122 -0
  12. package/dist/builtin/cursor/src/transport-native-client.ts +161 -0
  13. package/dist/builtin/cursor/src/transport-run-stream.ts +188 -0
  14. package/dist/builtin/cursor/src/transport-timeouts.ts +87 -0
  15. package/dist/builtin/cursor/src/transport-types.ts +140 -0
  16. package/dist/builtin/cursor/src/transport.ts +24 -790
  17. package/dist/builtin/intercom/CHANGELOG.md +3 -0
  18. package/dist/builtin/intercom/broker/client.ts +0 -35
  19. package/dist/builtin/intercom/contact-supervisor-tool.ts +289 -0
  20. package/dist/builtin/intercom/index-heavy.ts +77 -1336
  21. package/dist/builtin/intercom/intercom-tool.ts +409 -0
  22. package/dist/builtin/intercom/intercom-utils.ts +401 -0
  23. package/dist/builtin/intercom/lifecycle.ts +133 -0
  24. package/dist/builtin/intercom/overlay.ts +96 -0
  25. package/dist/builtin/intercom/package.json +1 -1
  26. package/dist/builtin/intercom/subagent-relay.ts +137 -0
  27. package/dist/builtin/mcp/CHANGELOG.md +3 -0
  28. package/dist/builtin/mcp/config-write-utils.ts +104 -0
  29. package/dist/builtin/mcp/config.ts +4 -180
  30. package/dist/builtin/mcp/mcp-panel-renderer.ts +243 -0
  31. package/dist/builtin/mcp/mcp-panel-state.ts +227 -0
  32. package/dist/builtin/mcp/mcp-panel-types.ts +86 -0
  33. package/dist/builtin/mcp/mcp-panel.ts +145 -579
  34. package/dist/builtin/mcp/mcp-setup-panel.ts +4 -81
  35. package/dist/builtin/mcp/package.json +1 -1
  36. package/dist/builtin/mcp/proxy-auth.ts +61 -0
  37. package/dist/builtin/mcp/proxy-call.ts +373 -0
  38. package/dist/builtin/mcp/proxy-connect.ts +58 -0
  39. package/dist/builtin/mcp/proxy-info-modes.ts +326 -0
  40. package/dist/builtin/mcp/proxy-modes.ts +3 -805
  41. package/dist/builtin/mcp/proxy-types.ts +3 -0
  42. package/dist/builtin/mcp/ui-server-http.ts +81 -0
  43. package/dist/builtin/mcp/ui-server.ts +2 -127
  44. package/dist/builtin/subagents/CHANGELOG.md +3 -0
  45. package/dist/builtin/subagents/package.json +1 -1
  46. package/dist/builtin/subagents/src/agents/agent-discovery.ts +127 -0
  47. package/dist/builtin/subagents/src/agents/agent-loaders.ts +175 -0
  48. package/dist/builtin/subagents/src/agents/agent-management-helpers.ts +310 -0
  49. package/dist/builtin/subagents/src/agents/agent-management.ts +3 -309
  50. package/dist/builtin/subagents/src/agents/agent-overrides.ts +397 -0
  51. package/dist/builtin/subagents/src/agents/agent-paths.ts +88 -0
  52. package/dist/builtin/subagents/src/agents/agent-types.ts +136 -0
  53. package/dist/builtin/subagents/src/agents/agents.ts +22 -895
  54. package/dist/builtin/subagents/src/agents/skills-paths.ts +333 -0
  55. package/dist/builtin/subagents/src/agents/skills.ts +3 -326
  56. package/dist/builtin/subagents/src/extension/index.ts +4 -118
  57. package/dist/builtin/subagents/src/extension/prompt-guidance.ts +13 -0
  58. package/dist/builtin/subagents/src/runs/background/async-execution-chain.ts +401 -0
  59. package/dist/builtin/subagents/src/runs/background/async-execution-common.ts +131 -0
  60. package/dist/builtin/subagents/src/runs/background/async-execution-single.ts +213 -0
  61. package/dist/builtin/subagents/src/runs/background/async-execution-types.ts +84 -0
  62. package/dist/builtin/subagents/src/runs/background/async-execution.ts +13 -795
  63. package/dist/builtin/subagents/src/runs/background/subagent-runner-dynamic.ts +215 -0
  64. package/dist/builtin/subagents/src/runs/background/subagent-runner-finalize.ts +136 -0
  65. package/dist/builtin/subagents/src/runs/background/subagent-runner-output.ts +105 -0
  66. package/dist/builtin/subagents/src/runs/background/subagent-runner-parallel-helpers.ts +112 -0
  67. package/dist/builtin/subagents/src/runs/background/subagent-runner-parallel.ts +159 -0
  68. package/dist/builtin/subagents/src/runs/background/subagent-runner-sequential.ts +127 -0
  69. package/dist/builtin/subagents/src/runs/background/subagent-runner-state.ts +427 -0
  70. package/dist/builtin/subagents/src/runs/background/subagent-runner-step.ts +273 -0
  71. package/dist/builtin/subagents/src/runs/background/subagent-runner-streaming.ts +269 -0
  72. package/dist/builtin/subagents/src/runs/background/subagent-runner-types.ts +196 -0
  73. package/dist/builtin/subagents/src/runs/background/subagent-runner-utils.ts +70 -0
  74. package/dist/builtin/subagents/src/runs/background/subagent-runner.ts +44 -2233
  75. package/dist/builtin/subagents/src/runs/foreground/chain-clarify-behavior.ts +75 -0
  76. package/dist/builtin/subagents/src/runs/foreground/chain-clarify-component.ts +202 -0
  77. package/dist/builtin/subagents/src/runs/foreground/chain-clarify-edit.ts +97 -0
  78. package/dist/builtin/subagents/src/runs/foreground/chain-clarify-editor.ts +160 -0
  79. package/dist/builtin/subagents/src/runs/foreground/chain-clarify-frame.ts +72 -0
  80. package/dist/builtin/subagents/src/runs/foreground/chain-clarify-render-modes.ts +161 -0
  81. package/dist/builtin/subagents/src/runs/foreground/chain-clarify-render-selectors.ts +203 -0
  82. package/dist/builtin/subagents/src/runs/foreground/chain-clarify-selectors.ts +234 -0
  83. package/dist/builtin/subagents/src/runs/foreground/chain-clarify-state.ts +103 -0
  84. package/dist/builtin/subagents/src/runs/foreground/chain-clarify-types.ts +29 -0
  85. package/dist/builtin/subagents/src/runs/foreground/chain-clarify.ts +4 -1328
  86. package/dist/builtin/subagents/src/runs/foreground/chain-execution-clarify.ts +117 -0
  87. package/dist/builtin/subagents/src/runs/foreground/chain-execution-details.ts +35 -0
  88. package/dist/builtin/subagents/src/runs/foreground/chain-execution-dynamic-step.ts +194 -0
  89. package/dist/builtin/subagents/src/runs/foreground/chain-execution-parallel-runner.ts +183 -0
  90. package/dist/builtin/subagents/src/runs/foreground/chain-execution-parallel-step.ts +185 -0
  91. package/dist/builtin/subagents/src/runs/foreground/chain-execution-sequential-step.ts +229 -0
  92. package/dist/builtin/subagents/src/runs/foreground/chain-execution-types.ts +194 -0
  93. package/dist/builtin/subagents/src/runs/foreground/chain-execution.ts +94 -1043
  94. package/dist/builtin/subagents/src/runs/foreground/execution-attempt-control.ts +135 -0
  95. package/dist/builtin/subagents/src/runs/foreground/execution-attempt-finalize.ts +107 -0
  96. package/dist/builtin/subagents/src/runs/foreground/execution-attempt-types.ts +17 -0
  97. package/dist/builtin/subagents/src/runs/foreground/execution-attempt.ts +454 -0
  98. package/dist/builtin/subagents/src/runs/foreground/execution-run-sync.ts +219 -0
  99. package/dist/builtin/subagents/src/runs/foreground/execution-structured-retries.ts +77 -0
  100. package/dist/builtin/subagents/src/runs/foreground/execution-updates.ts +34 -0
  101. package/dist/builtin/subagents/src/runs/foreground/execution-utils.ts +56 -0
  102. package/dist/builtin/subagents/src/runs/foreground/execution.ts +6 -1082
  103. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-async.ts +207 -0
  104. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-chain.ts +140 -0
  105. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-context.ts +266 -0
  106. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-input.ts +270 -0
  107. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-parallel-task.ts +157 -0
  108. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-parallel.ts +375 -0
  109. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-resume.ts +463 -0
  110. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-runtime.ts +17 -0
  111. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-single.ts +320 -0
  112. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-status.ts +207 -0
  113. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-types.ts +121 -0
  114. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-worktree.ts +113 -0
  115. package/dist/builtin/subagents/src/runs/foreground/subagent-executor.ts +150 -2522
  116. package/dist/builtin/subagents/src/runs/shared/model-fallback.ts +0 -16
  117. package/dist/builtin/subagents/src/runs/shared/nested-events-control.ts +167 -0
  118. package/dist/builtin/subagents/src/runs/shared/nested-events-core.ts +219 -0
  119. package/dist/builtin/subagents/src/runs/shared/nested-events-projection.ts +121 -0
  120. package/dist/builtin/subagents/src/runs/shared/nested-events-registry.ts +289 -0
  121. package/dist/builtin/subagents/src/runs/shared/nested-events-sanitize.ts +201 -0
  122. package/dist/builtin/subagents/src/runs/shared/nested-events.ts +50 -935
  123. package/dist/builtin/subagents/src/runs/shared/worktree.ts +0 -78
  124. package/dist/builtin/subagents/src/shared/types-async.ts +265 -0
  125. package/dist/builtin/subagents/src/shared/types-config.ts +125 -0
  126. package/dist/builtin/subagents/src/shared/types-depth.ts +121 -0
  127. package/dist/builtin/subagents/src/shared/types-output.ts +63 -0
  128. package/dist/builtin/subagents/src/shared/types-results.ts +318 -0
  129. package/dist/builtin/subagents/src/shared/types-runtime.ts +136 -0
  130. package/dist/builtin/subagents/src/shared/types.ts +10 -975
  131. package/dist/builtin/subagents/src/slash/slash-commands.ts +0 -12
  132. package/dist/builtin/subagents/src/tui/render-chain-graph.ts +247 -0
  133. package/dist/builtin/subagents/src/tui/render-event-formatting.ts +259 -0
  134. package/dist/builtin/subagents/src/tui/render-layout.ts +120 -0
  135. package/dist/builtin/subagents/src/tui/render-result-animation.ts +56 -0
  136. package/dist/builtin/subagents/src/tui/render-result-compact.ts +154 -0
  137. package/dist/builtin/subagents/src/tui/render-result.ts +390 -0
  138. package/dist/builtin/subagents/src/tui/render-stable-output.ts +83 -0
  139. package/dist/builtin/subagents/src/tui/render-status-progress.ts +133 -0
  140. package/dist/builtin/subagents/src/tui/render-widget-graph.ts +166 -0
  141. package/dist/builtin/subagents/src/tui/render-widget.ts +273 -0
  142. package/dist/builtin/subagents/src/tui/render.ts +14 -1801
  143. package/dist/builtin/web-access/CHANGELOG.md +3 -0
  144. package/dist/builtin/web-access/content-tools.ts +348 -0
  145. package/dist/builtin/web-access/curator-page-assets/script-1.ts +400 -0
  146. package/dist/builtin/web-access/curator-page-assets/script-2.ts +400 -0
  147. package/dist/builtin/web-access/curator-page-assets/script-3.ts +400 -0
  148. package/dist/builtin/web-access/curator-page-assets/script-4.ts +400 -0
  149. package/dist/builtin/web-access/curator-page-assets/script-5.ts +398 -0
  150. package/dist/builtin/web-access/curator-page-assets/styles-1.ts +394 -0
  151. package/dist/builtin/web-access/curator-page-assets/styles-2.ts +394 -0
  152. package/dist/builtin/web-access/curator-page-assets/styles-3.ts +393 -0
  153. package/dist/builtin/web-access/curator-page.ts +17 -3180
  154. package/dist/builtin/web-access/curator-server-helpers.ts +115 -0
  155. package/dist/builtin/web-access/curator-server.ts +2 -113
  156. package/dist/builtin/web-access/exa-mcp.ts +218 -0
  157. package/dist/builtin/web-access/exa.ts +2 -207
  158. package/dist/builtin/web-access/extract-frames.ts +228 -0
  159. package/dist/builtin/web-access/extract.ts +13 -214
  160. package/dist/builtin/web-access/github-config.ts +156 -0
  161. package/dist/builtin/web-access/github-extract.ts +3 -154
  162. package/dist/builtin/web-access/index-heavy.ts +8 -1904
  163. package/dist/builtin/web-access/package.json +2 -1
  164. package/dist/builtin/web-access/web-search-activity.ts +102 -0
  165. package/dist/builtin/web-access/web-search-browser.ts +116 -0
  166. package/dist/builtin/web-access/web-search-command.ts +242 -0
  167. package/dist/builtin/web-access/web-search-config.ts +163 -0
  168. package/dist/builtin/web-access/web-search-curator.ts +214 -0
  169. package/dist/builtin/web-access/web-search-features.ts +165 -0
  170. package/dist/builtin/web-access/web-search-formatting.ts +117 -0
  171. package/dist/builtin/web-access/web-search-return.ts +136 -0
  172. package/dist/builtin/web-access/web-search-summary.ts +170 -0
  173. package/dist/builtin/web-access/web-search-tool.ts +290 -0
  174. package/dist/builtin/web-access/web-search-types.ts +50 -0
  175. package/dist/builtin/workflows/CHANGELOG.md +8 -1
  176. package/dist/builtin/workflows/builtin/deep-research-codebase-runner.ts +492 -0
  177. package/dist/builtin/workflows/builtin/deep-research-codebase-utils.ts +346 -0
  178. package/dist/builtin/workflows/builtin/deep-research-codebase.ts +6 -822
  179. package/dist/builtin/workflows/builtin/goal-artifacts.ts +43 -0
  180. package/dist/builtin/workflows/builtin/goal-ledger.ts +54 -0
  181. package/dist/builtin/workflows/builtin/goal-prompts.ts +360 -0
  182. package/dist/builtin/workflows/builtin/goal-reducer.ts +141 -0
  183. package/dist/builtin/workflows/builtin/goal-reports.ts +56 -0
  184. package/dist/builtin/workflows/builtin/goal-review.ts +84 -0
  185. package/dist/builtin/workflows/builtin/goal-runner.ts +343 -0
  186. package/dist/builtin/workflows/builtin/goal-schemas.ts +60 -0
  187. package/dist/builtin/workflows/builtin/goal-types.ts +132 -0
  188. package/dist/builtin/workflows/builtin/goal.ts +4 -1160
  189. package/dist/builtin/workflows/builtin/open-claude-design-phases.ts +432 -0
  190. package/dist/builtin/workflows/builtin/open-claude-design-runner.ts +477 -0
  191. package/dist/builtin/workflows/builtin/open-claude-design-utils.ts +312 -0
  192. package/dist/builtin/workflows/builtin/open-claude-design.ts +7 -1083
  193. package/dist/builtin/workflows/builtin/ralph-core.ts +408 -0
  194. package/dist/builtin/workflows/builtin/ralph-models.ts +123 -0
  195. package/dist/builtin/workflows/builtin/ralph-review-gate.ts +89 -0
  196. package/dist/builtin/workflows/builtin/ralph-runner.ts +499 -0
  197. package/dist/builtin/workflows/builtin/ralph.ts +7 -1015
  198. package/dist/builtin/workflows/package.json +1 -1
  199. package/dist/builtin/workflows/skills/impeccable/scripts/detector/detect-antipatterns-browser.js +2 -2
  200. package/dist/builtin/workflows/skills/impeccable/scripts/detector/engines/regex/detect-text.mjs +2 -2
  201. package/dist/builtin/workflows/skills/impeccable/scripts/detector/rules/checks.mjs +2 -2
  202. package/dist/builtin/workflows/skills/impeccable/scripts/detector/shared/page.mjs +8 -1
  203. package/dist/builtin/workflows/skills/impeccable/scripts/live-accept.mjs +13 -15
  204. package/dist/builtin/workflows/skills/impeccable/scripts/live-manual-edit-evidence.mjs +2 -2
  205. package/dist/builtin/workflows/skills/impeccable/scripts/live-server.mjs +9 -0
  206. package/dist/builtin/workflows/src/extension/atomic-stage-session.ts +186 -0
  207. package/dist/builtin/workflows/src/extension/config-file-loader.ts +152 -0
  208. package/dist/builtin/workflows/src/extension/config-loader.ts +2 -167
  209. package/dist/builtin/workflows/src/extension/discovery-loaders.ts +115 -0
  210. package/dist/builtin/workflows/src/extension/discovery.ts +3 -117
  211. package/dist/builtin/workflows/src/extension/dispatcher.ts +3 -0
  212. package/dist/builtin/workflows/src/extension/extension-factory.ts +120 -0
  213. package/dist/builtin/workflows/src/extension/extension-lifecycle.ts +109 -0
  214. package/dist/builtin/workflows/src/extension/extension-runtime-state.ts +270 -0
  215. package/dist/builtin/workflows/src/extension/index.ts +42 -4151
  216. package/dist/builtin/workflows/src/extension/public-types.ts +295 -0
  217. package/dist/builtin/workflows/src/extension/render-component.ts +14 -0
  218. package/dist/builtin/workflows/src/extension/runtime-direct.ts +96 -0
  219. package/dist/builtin/workflows/src/extension/runtime.ts +8 -92
  220. package/dist/builtin/workflows/src/extension/ui-surface.ts +286 -0
  221. package/dist/builtin/workflows/src/extension/wiring.ts +6 -475
  222. package/dist/builtin/workflows/src/extension/workflow-command-completions.ts +111 -0
  223. package/dist/builtin/workflows/src/extension/workflow-command-registration.ts +213 -0
  224. package/dist/builtin/workflows/src/extension/workflow-command-surfaces.ts +81 -0
  225. package/dist/builtin/workflows/src/extension/workflow-command-utils.ts +181 -0
  226. package/dist/builtin/workflows/src/extension/workflow-policy.ts +15 -0
  227. package/dist/builtin/workflows/src/extension/workflow-ports.ts +41 -0
  228. package/dist/builtin/workflows/src/extension/workflow-prompts.ts +23 -0
  229. package/dist/builtin/workflows/src/extension/workflow-run-control-command.ts +286 -0
  230. package/dist/builtin/workflows/src/extension/workflow-schema.ts +1 -1
  231. package/dist/builtin/workflows/src/extension/workflow-stage-results.ts +264 -0
  232. package/dist/builtin/workflows/src/extension/workflow-targets.ts +181 -0
  233. package/dist/builtin/workflows/src/extension/workflow-tool-content.ts +175 -0
  234. package/dist/builtin/workflows/src/extension/workflow-tool-control.ts +205 -0
  235. package/dist/builtin/workflows/src/extension/workflow-tool-helpers.ts +66 -0
  236. package/dist/builtin/workflows/src/extension/workflow-tool-inspection.ts +164 -0
  237. package/dist/builtin/workflows/src/extension/workflow-tool-registration.ts +54 -0
  238. package/dist/builtin/workflows/src/extension/workflow-tool-send.ts +164 -0
  239. package/dist/builtin/workflows/src/extension/workflow-tool.ts +102 -0
  240. package/dist/builtin/workflows/src/runs/foreground/executor-abort.ts +431 -0
  241. package/dist/builtin/workflows/src/runs/foreground/executor-child-boundary.ts +232 -0
  242. package/dist/builtin/workflows/src/runs/foreground/executor-child-helpers.ts +74 -0
  243. package/dist/builtin/workflows/src/runs/foreground/executor-child-workflow.ts +158 -0
  244. package/dist/builtin/workflows/src/runs/foreground/executor-continuation.ts +167 -0
  245. package/dist/builtin/workflows/src/runs/foreground/executor-direct-helpers.ts +450 -0
  246. package/dist/builtin/workflows/src/runs/foreground/executor-direct.ts +233 -0
  247. package/dist/builtin/workflows/src/runs/foreground/executor-exit-manager.ts +195 -0
  248. package/dist/builtin/workflows/src/runs/foreground/executor-hil.ts +368 -0
  249. package/dist/builtin/workflows/src/runs/foreground/executor-inputs.ts +83 -0
  250. package/dist/builtin/workflows/src/runs/foreground/executor-lifecycle.ts +441 -0
  251. package/dist/builtin/workflows/src/runs/foreground/executor-outputs.ts +160 -0
  252. package/dist/builtin/workflows/src/runs/foreground/executor-prompt-nodes.ts +274 -0
  253. package/dist/builtin/workflows/src/runs/foreground/executor-run-finalizers.ts +122 -0
  254. package/dist/builtin/workflows/src/runs/foreground/executor-run.ts +359 -0
  255. package/dist/builtin/workflows/src/runs/foreground/executor-scheduler.ts +204 -0
  256. package/dist/builtin/workflows/src/runs/foreground/executor-stage-call.ts +197 -0
  257. package/dist/builtin/workflows/src/runs/foreground/executor-stage-context.ts +120 -0
  258. package/dist/builtin/workflows/src/runs/foreground/executor-stage-control.ts +126 -0
  259. package/dist/builtin/workflows/src/runs/foreground/executor-stage-factory.ts +351 -0
  260. package/dist/builtin/workflows/src/runs/foreground/executor-stage-replay.ts +134 -0
  261. package/dist/builtin/workflows/src/runs/foreground/executor-stage-types.ts +54 -0
  262. package/dist/builtin/workflows/src/runs/foreground/executor-task-context.ts +132 -0
  263. package/dist/builtin/workflows/src/runs/foreground/executor-task-prompts.ts +293 -0
  264. package/dist/builtin/workflows/src/runs/foreground/executor-types.ts +109 -0
  265. package/dist/builtin/workflows/src/runs/foreground/executor.ts +19 -5258
  266. package/dist/builtin/workflows/src/runs/foreground/stage-runner-context.ts +219 -0
  267. package/dist/builtin/workflows/src/runs/foreground/stage-runner-controller.ts +500 -0
  268. package/dist/builtin/workflows/src/runs/foreground/stage-runner-messages.ts +129 -0
  269. package/dist/builtin/workflows/src/runs/foreground/stage-runner-options.ts +53 -0
  270. package/dist/builtin/workflows/src/runs/foreground/stage-runner-output.ts +146 -0
  271. package/dist/builtin/workflows/src/runs/foreground/stage-runner-session.ts +55 -0
  272. package/dist/builtin/workflows/src/runs/foreground/stage-runner-structured-output.ts +82 -0
  273. package/dist/builtin/workflows/src/runs/foreground/stage-runner-types.ts +141 -0
  274. package/dist/builtin/workflows/src/runs/foreground/stage-runner.ts +13 -1342
  275. package/dist/builtin/workflows/src/runs/shared/model-fallback-candidates.ts +453 -0
  276. package/dist/builtin/workflows/src/runs/shared/model-fallback-failures.ts +442 -0
  277. package/dist/builtin/workflows/src/runs/shared/model-fallback.ts +2 -836
  278. package/dist/builtin/workflows/src/runs/shared/worktree-diff.ts +165 -0
  279. package/dist/builtin/workflows/src/runs/shared/worktree-git.ts +220 -0
  280. package/dist/builtin/workflows/src/runs/shared/worktree-setup.ts +335 -0
  281. package/dist/builtin/workflows/src/runs/shared/worktree-types.ts +92 -0
  282. package/dist/builtin/workflows/src/runs/shared/worktree.ts +18 -791
  283. package/dist/builtin/workflows/src/shared/authoring-contract-stage.d.ts +365 -0
  284. package/dist/builtin/workflows/src/shared/authoring-contract-stage.ts +425 -0
  285. package/dist/builtin/workflows/src/shared/authoring-contract-ui.d.ts +236 -0
  286. package/dist/builtin/workflows/src/shared/authoring-contract-ui.ts +354 -0
  287. package/dist/builtin/workflows/src/shared/authoring-contract.d.ts +5 -598
  288. package/dist/builtin/workflows/src/shared/persistence-restore-helpers.ts +428 -0
  289. package/dist/builtin/workflows/src/shared/persistence-restore.ts +11 -431
  290. package/dist/builtin/workflows/src/shared/store-factory.ts +16 -0
  291. package/dist/builtin/workflows/src/shared/store-internal.ts +219 -0
  292. package/dist/builtin/workflows/src/shared/store-prompt-methods.ts +219 -0
  293. package/dist/builtin/workflows/src/shared/store-public-types.ts +215 -0
  294. package/dist/builtin/workflows/src/shared/store-run-methods.ts +223 -0
  295. package/dist/builtin/workflows/src/shared/store-stage-methods.ts +305 -0
  296. package/dist/builtin/workflows/src/shared/store.ts +11 -1138
  297. package/dist/builtin/workflows/src/shared/workflow-failures-classifier.ts +266 -0
  298. package/dist/builtin/workflows/src/shared/workflow-failures-contract.ts +75 -0
  299. package/dist/builtin/workflows/src/shared/workflow-failures-decisions.ts +477 -0
  300. package/dist/builtin/workflows/src/shared/workflow-failures-signals.ts +248 -0
  301. package/dist/builtin/workflows/src/shared/workflow-failures.ts +13 -1001
  302. package/dist/builtin/workflows/src/tui/chat-surface.ts +0 -66
  303. package/dist/builtin/workflows/src/tui/graph-view-constants.ts +45 -0
  304. package/dist/builtin/workflows/src/tui/graph-view-graph-render.ts +161 -0
  305. package/dist/builtin/workflows/src/tui/graph-view-input.ts +333 -0
  306. package/dist/builtin/workflows/src/tui/graph-view-render-helpers.ts +336 -0
  307. package/dist/builtin/workflows/src/tui/graph-view-render.ts +194 -0
  308. package/dist/builtin/workflows/src/tui/graph-view-state.ts +306 -0
  309. package/dist/builtin/workflows/src/tui/graph-view-types.ts +70 -0
  310. package/dist/builtin/workflows/src/tui/graph-view.ts +4 -1386
  311. package/dist/builtin/workflows/src/tui/inline-form-editor-text.ts +121 -0
  312. package/dist/builtin/workflows/src/tui/inline-form-editor.ts +11 -223
  313. package/dist/builtin/workflows/src/tui/inputs-picker-editing.ts +151 -0
  314. package/dist/builtin/workflows/src/tui/inputs-picker-input.ts +305 -0
  315. package/dist/builtin/workflows/src/tui/inputs-picker-render.ts +300 -0
  316. package/dist/builtin/workflows/src/tui/inputs-picker-types.ts +190 -0
  317. package/dist/builtin/workflows/src/tui/inputs-picker.ts +19 -997
  318. package/dist/builtin/workflows/src/tui/prompt-card-input.ts +226 -0
  319. package/dist/builtin/workflows/src/tui/prompt-card-render.ts +373 -0
  320. package/dist/builtin/workflows/src/tui/prompt-card-select.ts +116 -0
  321. package/dist/builtin/workflows/src/tui/prompt-card-state.ts +61 -0
  322. package/dist/builtin/workflows/src/tui/prompt-card-text.ts +129 -0
  323. package/dist/builtin/workflows/src/tui/prompt-card.ts +8 -910
  324. package/dist/builtin/workflows/src/tui/stage-chat-view-archive-history.ts +315 -0
  325. package/dist/builtin/workflows/src/tui/stage-chat-view-custom-ui.ts +127 -0
  326. package/dist/builtin/workflows/src/tui/stage-chat-view-footer-status.ts +187 -0
  327. package/dist/builtin/workflows/src/tui/stage-chat-view-input.ts +222 -0
  328. package/dist/builtin/workflows/src/tui/stage-chat-view-render-helpers.ts +152 -0
  329. package/dist/builtin/workflows/src/tui/stage-chat-view-state.ts +464 -0
  330. package/dist/builtin/workflows/src/tui/stage-chat-view-transcript.ts +242 -0
  331. package/dist/builtin/workflows/src/tui/stage-chat-view-types.ts +151 -0
  332. package/dist/builtin/workflows/src/tui/stage-chat-view.ts +141 -1777
  333. package/dist/builtin/workflows/src/tui/workflow-attach-pane-types.ts +85 -0
  334. package/dist/builtin/workflows/src/tui/workflow-attach-pane.ts +1 -129
  335. package/dist/config-self-update.d.ts +21 -0
  336. package/dist/config-self-update.d.ts.map +1 -0
  337. package/dist/config-self-update.js +265 -0
  338. package/dist/config-self-update.js.map +1 -0
  339. package/dist/config.d.ts +3 -12
  340. package/dist/config.d.ts.map +1 -1
  341. package/dist/config.js +15 -252
  342. package/dist/config.js.map +1 -1
  343. package/dist/core/agent-session-accessors.d.ts +3 -0
  344. package/dist/core/agent-session-accessors.d.ts.map +1 -0
  345. package/dist/core/agent-session-accessors.js +36 -0
  346. package/dist/core/agent-session-accessors.js.map +1 -0
  347. package/dist/core/agent-session-auto-compaction.d.ts +32 -0
  348. package/dist/core/agent-session-auto-compaction.d.ts.map +1 -0
  349. package/dist/core/agent-session-auto-compaction.js +214 -0
  350. package/dist/core/agent-session-auto-compaction.js.map +1 -0
  351. package/dist/core/agent-session-bash.d.ts +30 -0
  352. package/dist/core/agent-session-bash.d.ts.map +1 -0
  353. package/dist/core/agent-session-bash.js +84 -0
  354. package/dist/core/agent-session-bash.js.map +1 -0
  355. package/dist/core/agent-session-compaction.d.ts +44 -0
  356. package/dist/core/agent-session-compaction.d.ts.map +1 -0
  357. package/dist/core/agent-session-compaction.js +282 -0
  358. package/dist/core/agent-session-compaction.js.map +1 -0
  359. package/dist/core/agent-session-events.d.ts +65 -0
  360. package/dist/core/agent-session-events.d.ts.map +1 -0
  361. package/dist/core/agent-session-events.js +373 -0
  362. package/dist/core/agent-session-events.js.map +1 -0
  363. package/dist/core/agent-session-export.d.ts +42 -0
  364. package/dist/core/agent-session-export.d.ts.map +1 -0
  365. package/dist/core/agent-session-export.js +199 -0
  366. package/dist/core/agent-session-export.js.map +1 -0
  367. package/dist/core/agent-session-extension-bindings.d.ts +37 -0
  368. package/dist/core/agent-session-extension-bindings.d.ts.map +1 -0
  369. package/dist/core/agent-session-extension-bindings.js +231 -0
  370. package/dist/core/agent-session-extension-bindings.js.map +1 -0
  371. package/dist/core/agent-session-message-queue.d.ts +85 -0
  372. package/dist/core/agent-session-message-queue.d.ts.map +1 -0
  373. package/dist/core/agent-session-message-queue.js +264 -0
  374. package/dist/core/agent-session-message-queue.js.map +1 -0
  375. package/dist/core/agent-session-methods.d.ts +302 -0
  376. package/dist/core/agent-session-methods.d.ts.map +1 -0
  377. package/dist/core/agent-session-methods.js +2 -0
  378. package/dist/core/agent-session-methods.js.map +1 -0
  379. package/dist/core/agent-session-models.d.ts +111 -0
  380. package/dist/core/agent-session-models.d.ts.map +1 -0
  381. package/dist/core/agent-session-models.js +368 -0
  382. package/dist/core/agent-session-models.js.map +1 -0
  383. package/dist/core/agent-session-prompt.d.ts +61 -0
  384. package/dist/core/agent-session-prompt.d.ts.map +1 -0
  385. package/dist/core/agent-session-prompt.js +330 -0
  386. package/dist/core/agent-session-prompt.js.map +1 -0
  387. package/dist/core/agent-session-retry.d.ts +62 -0
  388. package/dist/core/agent-session-retry.d.ts.map +1 -0
  389. package/dist/core/agent-session-retry.js +202 -0
  390. package/dist/core/agent-session-retry.js.map +1 -0
  391. package/dist/core/agent-session-skill-block.d.ts +13 -0
  392. package/dist/core/agent-session-skill-block.d.ts.map +1 -0
  393. package/dist/core/agent-session-skill-block.js +37 -0
  394. package/dist/core/agent-session-skill-block.js.map +1 -0
  395. package/dist/core/agent-session-state.d.ts +48 -0
  396. package/dist/core/agent-session-state.d.ts.map +1 -0
  397. package/dist/core/agent-session-state.js +129 -0
  398. package/dist/core/agent-session-state.js.map +1 -0
  399. package/dist/core/agent-session-tool-hooks.d.ts +7 -0
  400. package/dist/core/agent-session-tool-hooks.d.ts.map +1 -0
  401. package/dist/core/agent-session-tool-hooks.js +72 -0
  402. package/dist/core/agent-session-tool-hooks.js.map +1 -0
  403. package/dist/core/agent-session-tool-registry.d.ts +15 -0
  404. package/dist/core/agent-session-tool-registry.d.ts.map +1 -0
  405. package/dist/core/agent-session-tool-registry.js +151 -0
  406. package/dist/core/agent-session-tool-registry.js.map +1 -0
  407. package/dist/core/agent-session-tree.d.ts +46 -0
  408. package/dist/core/agent-session-tree.d.ts.map +1 -0
  409. package/dist/core/agent-session-tree.js +217 -0
  410. package/dist/core/agent-session-tree.js.map +1 -0
  411. package/dist/core/agent-session-types.d.ts +159 -0
  412. package/dist/core/agent-session-types.d.ts.map +1 -0
  413. package/dist/core/agent-session-types.js +41 -0
  414. package/dist/core/agent-session-types.js.map +1 -0
  415. package/dist/core/agent-session.d.ts +68 -688
  416. package/dist/core/agent-session.d.ts.map +1 -1
  417. package/dist/core/agent-session.js +26 -3152
  418. package/dist/core/agent-session.js.map +1 -1
  419. package/dist/core/auth-storage-backends.d.ts +49 -0
  420. package/dist/core/auth-storage-backends.d.ts.map +1 -0
  421. package/dist/core/auth-storage-backends.js +185 -0
  422. package/dist/core/auth-storage-backends.js.map +1 -0
  423. package/dist/core/auth-storage.d.ts +2 -49
  424. package/dist/core/auth-storage.d.ts.map +1 -1
  425. package/dist/core/auth-storage.js +3 -183
  426. package/dist/core/auth-storage.js.map +1 -1
  427. package/dist/core/compaction/context-compaction-metrics.d.ts +16 -0
  428. package/dist/core/compaction/context-compaction-metrics.d.ts.map +1 -0
  429. package/dist/core/compaction/context-compaction-metrics.js +58 -0
  430. package/dist/core/compaction/context-compaction-metrics.js.map +1 -0
  431. package/dist/core/compaction/context-compaction-prompt.d.ts +9 -0
  432. package/dist/core/compaction/context-compaction-prompt.d.ts.map +1 -0
  433. package/dist/core/compaction/context-compaction-prompt.js +161 -0
  434. package/dist/core/compaction/context-compaction-prompt.js.map +1 -0
  435. package/dist/core/compaction/context-compaction-runner.d.ts +5 -0
  436. package/dist/core/compaction/context-compaction-runner.d.ts.map +1 -0
  437. package/dist/core/compaction/context-compaction-runner.js +181 -0
  438. package/dist/core/compaction/context-compaction-runner.js.map +1 -0
  439. package/dist/core/compaction/context-compaction-strategy.d.ts +5 -0
  440. package/dist/core/compaction/context-compaction-strategy.d.ts.map +1 -0
  441. package/dist/core/compaction/context-compaction-strategy.js +27 -0
  442. package/dist/core/compaction/context-compaction-strategy.js.map +1 -0
  443. package/dist/core/compaction/context-compaction-types.d.ts +73 -0
  444. package/dist/core/compaction/context-compaction-types.d.ts.map +1 -0
  445. package/dist/core/compaction/context-compaction-types.js +6 -0
  446. package/dist/core/compaction/context-compaction-types.js.map +1 -0
  447. package/dist/core/compaction/context-compaction.d.ts +9 -200
  448. package/dist/core/compaction/context-compaction.d.ts.map +1 -1
  449. package/dist/core/compaction/context-compaction.js +7 -1943
  450. package/dist/core/compaction/context-compaction.js.map +1 -1
  451. package/dist/core/compaction/context-deletion-application.d.ts +13 -0
  452. package/dist/core/compaction/context-deletion-application.d.ts.map +1 -0
  453. package/dist/core/compaction/context-deletion-application.js +259 -0
  454. package/dist/core/compaction/context-deletion-application.js.map +1 -0
  455. package/dist/core/compaction/context-deletion-store.d.ts +78 -0
  456. package/dist/core/compaction/context-deletion-store.d.ts.map +1 -0
  457. package/dist/core/compaction/context-deletion-store.js +162 -0
  458. package/dist/core/compaction/context-deletion-store.js.map +1 -0
  459. package/dist/core/compaction/context-deletion-targets.d.ts +40 -0
  460. package/dist/core/compaction/context-deletion-targets.d.ts.map +1 -0
  461. package/dist/core/compaction/context-deletion-targets.js +267 -0
  462. package/dist/core/compaction/context-deletion-targets.js.map +1 -0
  463. package/dist/core/compaction/context-deletion-tool-definitions.d.ts +187 -0
  464. package/dist/core/compaction/context-deletion-tool-definitions.d.ts.map +1 -0
  465. package/dist/core/compaction/context-deletion-tool-definitions.js +98 -0
  466. package/dist/core/compaction/context-deletion-tool-definitions.js.map +1 -0
  467. package/dist/core/compaction/context-deletion-tool-helpers.d.ts +19 -0
  468. package/dist/core/compaction/context-deletion-tool-helpers.d.ts.map +1 -0
  469. package/dist/core/compaction/context-deletion-tool-helpers.js +137 -0
  470. package/dist/core/compaction/context-deletion-tool-helpers.js.map +1 -0
  471. package/dist/core/compaction/context-deletion-tools.d.ts +4 -0
  472. package/dist/core/compaction/context-deletion-tools.d.ts.map +1 -0
  473. package/dist/core/compaction/context-deletion-tools.js +395 -0
  474. package/dist/core/compaction/context-deletion-tools.js.map +1 -0
  475. package/dist/core/compaction/context-transcript-analysis.d.ts +9 -0
  476. package/dist/core/compaction/context-transcript-analysis.d.ts.map +1 -0
  477. package/dist/core/compaction/context-transcript-analysis.js +234 -0
  478. package/dist/core/compaction/context-transcript-analysis.js.map +1 -0
  479. package/dist/core/export-html/index.d.ts.map +1 -1
  480. package/dist/core/export-html/index.js +2 -1
  481. package/dist/core/export-html/index.js.map +1 -1
  482. package/dist/core/export-html/template-js/data-tree.js +287 -0
  483. package/dist/core/export-html/template-js/entries-navigation.js +424 -0
  484. package/dist/core/export-html/template-js/initialization.js +312 -0
  485. package/dist/core/export-html/template-js/message-tools.js +415 -0
  486. package/dist/core/export-html/template-js/tree-filter-render.js +421 -0
  487. package/dist/core/export-html/template-script.d.ts +3 -0
  488. package/dist/core/export-html/template-script.d.ts.map +1 -0
  489. package/dist/core/export-html/template-script.js +13 -0
  490. package/dist/core/export-html/template-script.js.map +1 -0
  491. package/dist/core/export-html/template.js +3 -1
  492. package/dist/core/extensions/agent-events.d.ts +159 -0
  493. package/dist/core/extensions/agent-events.d.ts.map +1 -0
  494. package/dist/core/extensions/agent-events.js +2 -0
  495. package/dist/core/extensions/agent-events.js.map +1 -0
  496. package/dist/core/extensions/api-types.d.ts +189 -0
  497. package/dist/core/extensions/api-types.d.ts.map +1 -0
  498. package/dist/core/extensions/api-types.js +2 -0
  499. package/dist/core/extensions/api-types.js.map +1 -0
  500. package/dist/core/extensions/command-types.d.ts +14 -0
  501. package/dist/core/extensions/command-types.d.ts.map +1 -0
  502. package/dist/core/extensions/command-types.js +2 -0
  503. package/dist/core/extensions/command-types.js.map +1 -0
  504. package/dist/core/extensions/context-types.d.ts +130 -0
  505. package/dist/core/extensions/context-types.d.ts.map +1 -0
  506. package/dist/core/extensions/context-types.js +2 -0
  507. package/dist/core/extensions/context-types.js.map +1 -0
  508. package/dist/core/extensions/event-results.d.ts +61 -0
  509. package/dist/core/extensions/event-results.d.ts.map +1 -0
  510. package/dist/core/extensions/event-results.js +2 -0
  511. package/dist/core/extensions/event-results.js.map +1 -0
  512. package/dist/core/extensions/event-types.d.ts +6 -0
  513. package/dist/core/extensions/event-types.d.ts.map +1 -0
  514. package/dist/core/extensions/event-types.js +2 -0
  515. package/dist/core/extensions/event-types.js.map +1 -0
  516. package/dist/core/extensions/loader-api.d.ts +10 -0
  517. package/dist/core/extensions/loader-api.d.ts.map +1 -0
  518. package/dist/core/extensions/loader-api.js +143 -0
  519. package/dist/core/extensions/loader-api.js.map +1 -0
  520. package/dist/core/extensions/loader-core.d.ts +12 -0
  521. package/dist/core/extensions/loader-core.d.ts.map +1 -0
  522. package/dist/core/extensions/loader-core.js +91 -0
  523. package/dist/core/extensions/loader-core.js.map +1 -0
  524. package/dist/core/extensions/loader-discovery.d.ts +7 -0
  525. package/dist/core/extensions/loader-discovery.d.ts.map +1 -0
  526. package/dist/core/extensions/loader-discovery.js +139 -0
  527. package/dist/core/extensions/loader-discovery.js.map +1 -0
  528. package/dist/core/extensions/loader-resources.d.ts +11 -0
  529. package/dist/core/extensions/loader-resources.d.ts.map +1 -0
  530. package/dist/core/extensions/loader-resources.js +10 -0
  531. package/dist/core/extensions/loader-resources.js.map +1 -0
  532. package/dist/core/extensions/loader-runtime.d.ts +7 -0
  533. package/dist/core/extensions/loader-runtime.d.ts.map +1 -0
  534. package/dist/core/extensions/loader-runtime.js +51 -0
  535. package/dist/core/extensions/loader-runtime.js.map +1 -0
  536. package/dist/core/extensions/loader-virtual-modules.d.ts +3 -0
  537. package/dist/core/extensions/loader-virtual-modules.d.ts.map +1 -0
  538. package/dist/core/extensions/loader-virtual-modules.js +92 -0
  539. package/dist/core/extensions/loader-virtual-modules.js.map +1 -0
  540. package/dist/core/extensions/loader.d.ts +4 -28
  541. package/dist/core/extensions/loader.d.ts.map +1 -1
  542. package/dist/core/extensions/loader.js +3 -542
  543. package/dist/core/extensions/loader.js.map +1 -1
  544. package/dist/core/extensions/message-types.d.ts +34 -0
  545. package/dist/core/extensions/message-types.d.ts.map +1 -0
  546. package/dist/core/extensions/message-types.js +2 -0
  547. package/dist/core/extensions/message-types.js.map +1 -0
  548. package/dist/core/extensions/provider-types.d.ts +71 -0
  549. package/dist/core/extensions/provider-types.d.ts.map +1 -0
  550. package/dist/core/extensions/provider-types.js +2 -0
  551. package/dist/core/extensions/provider-types.js.map +1 -0
  552. package/dist/core/extensions/runner-context.d.ts +42 -0
  553. package/dist/core/extensions/runner-context.d.ts.map +1 -0
  554. package/dist/core/extensions/runner-context.js +112 -0
  555. package/dist/core/extensions/runner-context.js.map +1 -0
  556. package/dist/core/extensions/runner-events.d.ts +47 -0
  557. package/dist/core/extensions/runner-events.d.ts.map +1 -0
  558. package/dist/core/extensions/runner-events.js +280 -0
  559. package/dist/core/extensions/runner-events.js.map +1 -0
  560. package/dist/core/extensions/runner-handlers.d.ts +32 -0
  561. package/dist/core/extensions/runner-handlers.d.ts.map +1 -0
  562. package/dist/core/extensions/runner-handlers.js +2 -0
  563. package/dist/core/extensions/runner-handlers.js.map +1 -0
  564. package/dist/core/extensions/runner-project-trust.d.ts +6 -0
  565. package/dist/core/extensions/runner-project-trust.d.ts.map +1 -0
  566. package/dist/core/extensions/runner-project-trust.js +27 -0
  567. package/dist/core/extensions/runner-project-trust.js.map +1 -0
  568. package/dist/core/extensions/runner-registries.d.ts +8 -0
  569. package/dist/core/extensions/runner-registries.d.ts.map +1 -0
  570. package/dist/core/extensions/runner-registries.js +76 -0
  571. package/dist/core/extensions/runner-registries.js.map +1 -0
  572. package/dist/core/extensions/runner-shortcuts.d.ts +10 -0
  573. package/dist/core/extensions/runner-shortcuts.d.ts.map +1 -0
  574. package/dist/core/extensions/runner-shortcuts.js +71 -0
  575. package/dist/core/extensions/runner-shortcuts.js.map +1 -0
  576. package/dist/core/extensions/runner-ui.d.ts +3 -0
  577. package/dist/core/extensions/runner-ui.d.ts.map +1 -0
  578. package/dist/core/extensions/runner-ui.js +50 -0
  579. package/dist/core/extensions/runner-ui.js.map +1 -0
  580. package/dist/core/extensions/runner.d.ts +7 -74
  581. package/dist/core/extensions/runner.d.ts.map +1 -1
  582. package/dist/core/extensions/runner.js +67 -673
  583. package/dist/core/extensions/runner.js.map +1 -1
  584. package/dist/core/extensions/runtime-types.d.ts +179 -0
  585. package/dist/core/extensions/runtime-types.d.ts.map +1 -0
  586. package/dist/core/extensions/runtime-types.js +2 -0
  587. package/dist/core/extensions/runtime-types.js.map +1 -0
  588. package/dist/core/extensions/session-events.d.ts +89 -0
  589. package/dist/core/extensions/session-events.d.ts.map +1 -0
  590. package/dist/core/extensions/session-events.js +2 -0
  591. package/dist/core/extensions/session-events.js.map +1 -0
  592. package/dist/core/extensions/tool-events.d.ts +127 -0
  593. package/dist/core/extensions/tool-events.d.ts.map +1 -0
  594. package/dist/core/extensions/tool-events.js +26 -0
  595. package/dist/core/extensions/tool-events.js.map +1 -0
  596. package/dist/core/extensions/tool-types.d.ts +100 -0
  597. package/dist/core/extensions/tool-types.d.ts.map +1 -0
  598. package/dist/core/extensions/tool-types.js +11 -0
  599. package/dist/core/extensions/tool-types.js.map +1 -0
  600. package/dist/core/extensions/types.d.ts +20 -1288
  601. package/dist/core/extensions/types.d.ts.map +1 -1
  602. package/dist/core/extensions/types.js +4 -34
  603. package/dist/core/extensions/types.js.map +1 -1
  604. package/dist/core/extensions/ui-types.d.ts +200 -0
  605. package/dist/core/extensions/ui-types.d.ts.map +1 -0
  606. package/dist/core/extensions/ui-types.js +2 -0
  607. package/dist/core/extensions/ui-types.js.map +1 -0
  608. package/dist/core/model-registry-auth.d.ts +7 -0
  609. package/dist/core/model-registry-auth.d.ts.map +1 -0
  610. package/dist/core/model-registry-auth.js +64 -0
  611. package/dist/core/model-registry-auth.js.map +1 -0
  612. package/dist/core/model-registry-builtins.d.ts +9 -0
  613. package/dist/core/model-registry-builtins.d.ts.map +1 -0
  614. package/dist/core/model-registry-builtins.js +120 -0
  615. package/dist/core/model-registry-builtins.js.map +1 -0
  616. package/dist/core/model-registry-custom-loader.d.ts +3 -0
  617. package/dist/core/model-registry-custom-loader.d.ts.map +1 -0
  618. package/dist/core/model-registry-custom-loader.js +213 -0
  619. package/dist/core/model-registry-custom-loader.js.map +1 -0
  620. package/dist/core/model-registry-dynamic.d.ts +6 -0
  621. package/dist/core/model-registry-dynamic.d.ts.map +1 -0
  622. package/dist/core/model-registry-dynamic.js +155 -0
  623. package/dist/core/model-registry-dynamic.js.map +1 -0
  624. package/dist/core/model-registry-loader.d.ts +4 -0
  625. package/dist/core/model-registry-loader.d.ts.map +1 -0
  626. package/dist/core/model-registry-loader.js +20 -0
  627. package/dist/core/model-registry-loader.js.map +1 -0
  628. package/dist/core/model-registry-schemas.d.ts +1084 -0
  629. package/dist/core/model-registry-schemas.d.ts.map +1 -0
  630. package/dist/core/model-registry-schemas.js +161 -0
  631. package/dist/core/model-registry-schemas.js.map +1 -0
  632. package/dist/core/model-registry-types.d.ts +74 -0
  633. package/dist/core/model-registry-types.d.ts.map +1 -0
  634. package/dist/core/model-registry-types.js +2 -0
  635. package/dist/core/model-registry-types.js.map +1 -0
  636. package/dist/core/model-registry.d.ts +3 -76
  637. package/dist/core/model-registry.d.ts.map +1 -1
  638. package/dist/core/model-registry.js +24 -733
  639. package/dist/core/model-registry.js.map +1 -1
  640. package/dist/core/model-resolver-cli.d.ts +19 -0
  641. package/dist/core/model-resolver-cli.d.ts.map +1 -0
  642. package/dist/core/model-resolver-cli.js +118 -0
  643. package/dist/core/model-resolver-cli.js.map +1 -0
  644. package/dist/core/model-resolver-defaults.d.ts +5 -0
  645. package/dist/core/model-resolver-defaults.d.ts.map +1 -0
  646. package/dist/core/model-resolver-defaults.js +47 -0
  647. package/dist/core/model-resolver-defaults.js.map +1 -0
  648. package/dist/core/model-resolver-initial.d.ts +31 -0
  649. package/dist/core/model-resolver-initial.d.ts.map +1 -0
  650. package/dist/core/model-resolver-initial.js +116 -0
  651. package/dist/core/model-resolver-initial.js.map +1 -0
  652. package/dist/core/model-resolver-patterns.d.ts +26 -0
  653. package/dist/core/model-resolver-patterns.d.ts.map +1 -0
  654. package/dist/core/model-resolver-patterns.js +139 -0
  655. package/dist/core/model-resolver-patterns.js.map +1 -0
  656. package/dist/core/model-resolver-scope.d.ts +15 -0
  657. package/dist/core/model-resolver-scope.d.ts.map +1 -0
  658. package/dist/core/model-resolver-scope.js +66 -0
  659. package/dist/core/model-resolver-scope.js.map +1 -0
  660. package/dist/core/model-resolver-types.d.ts +29 -0
  661. package/dist/core/model-resolver-types.d.ts.map +1 -0
  662. package/dist/core/model-resolver-types.js +2 -0
  663. package/dist/core/model-resolver-types.js.map +1 -0
  664. package/dist/core/model-resolver.d.ts +6 -107
  665. package/dist/core/model-resolver.d.ts.map +1 -1
  666. package/dist/core/model-resolver.js +5 -549
  667. package/dist/core/model-resolver.js.map +1 -1
  668. package/dist/core/package-manager-auto-resources.d.ts +5 -0
  669. package/dist/core/package-manager-auto-resources.d.ts.map +1 -0
  670. package/dist/core/package-manager-auto-resources.js +109 -0
  671. package/dist/core/package-manager-auto-resources.js.map +1 -0
  672. package/dist/core/package-manager-command.d.ts +11 -0
  673. package/dist/core/package-manager-command.d.ts.map +1 -0
  674. package/dist/core/package-manager-command.js +102 -0
  675. package/dist/core/package-manager-command.js.map +1 -0
  676. package/dist/core/package-manager-constants.d.ts +4 -0
  677. package/dist/core/package-manager-constants.d.ts.map +1 -0
  678. package/dist/core/package-manager-constants.js +4 -0
  679. package/dist/core/package-manager-constants.js.map +1 -0
  680. package/dist/core/package-manager-env.d.ts +4 -0
  681. package/dist/core/package-manager-env.d.ts.map +1 -0
  682. package/dist/core/package-manager-env.js +40 -0
  683. package/dist/core/package-manager-env.js.map +1 -0
  684. package/dist/core/package-manager-git.d.ts +10 -0
  685. package/dist/core/package-manager-git.d.ts.map +1 -0
  686. package/dist/core/package-manager-git.js +271 -0
  687. package/dist/core/package-manager-git.js.map +1 -0
  688. package/dist/core/package-manager-manifest.d.ts +7 -0
  689. package/dist/core/package-manager-manifest.d.ts.map +1 -0
  690. package/dist/core/package-manager-manifest.js +45 -0
  691. package/dist/core/package-manager-manifest.js.map +1 -0
  692. package/dist/core/package-manager-npm.d.ts +25 -0
  693. package/dist/core/package-manager-npm.d.ts.map +1 -0
  694. package/dist/core/package-manager-npm.js +252 -0
  695. package/dist/core/package-manager-npm.js.map +1 -0
  696. package/dist/core/package-manager-operations.d.ts +11 -0
  697. package/dist/core/package-manager-operations.d.ts.map +1 -0
  698. package/dist/core/package-manager-operations.js +196 -0
  699. package/dist/core/package-manager-operations.js.map +1 -0
  700. package/dist/core/package-manager-paths.d.ts +14 -0
  701. package/dist/core/package-manager-paths.d.ts.map +1 -0
  702. package/dist/core/package-manager-paths.js +61 -0
  703. package/dist/core/package-manager-paths.js.map +1 -0
  704. package/dist/core/package-manager-progress.d.ts +4 -0
  705. package/dist/core/package-manager-progress.d.ts.map +1 -0
  706. package/dist/core/package-manager-progress.js +16 -0
  707. package/dist/core/package-manager-progress.js.map +1 -0
  708. package/dist/core/package-manager-resolver.d.ts +5 -0
  709. package/dist/core/package-manager-resolver.d.ts.map +1 -0
  710. package/dist/core/package-manager-resolver.js +149 -0
  711. package/dist/core/package-manager-resolver.js.map +1 -0
  712. package/dist/core/package-manager-resource-accumulator.d.ts +6 -0
  713. package/dist/core/package-manager-resource-accumulator.d.ts.map +1 -0
  714. package/dist/core/package-manager-resource-accumulator.js +67 -0
  715. package/dist/core/package-manager-resource-accumulator.js.map +1 -0
  716. package/dist/core/package-manager-resource-collector.d.ts +5 -0
  717. package/dist/core/package-manager-resource-collector.d.ts.map +1 -0
  718. package/dist/core/package-manager-resource-collector.js +148 -0
  719. package/dist/core/package-manager-resource-collector.js.map +1 -0
  720. package/dist/core/package-manager-resource-files.d.ts +14 -0
  721. package/dist/core/package-manager-resource-files.d.ts.map +1 -0
  722. package/dist/core/package-manager-resource-files.js +265 -0
  723. package/dist/core/package-manager-resource-files.js.map +1 -0
  724. package/dist/core/package-manager-resource-patterns.d.ts +12 -0
  725. package/dist/core/package-manager-resource-patterns.d.ts.map +1 -0
  726. package/dist/core/package-manager-resource-patterns.js +136 -0
  727. package/dist/core/package-manager-resource-patterns.js.map +1 -0
  728. package/dist/core/package-manager-settings.d.ts +10 -0
  729. package/dist/core/package-manager-settings.d.ts.map +1 -0
  730. package/dist/core/package-manager-settings.js +91 -0
  731. package/dist/core/package-manager-settings.js.map +1 -0
  732. package/dist/core/package-manager-source.d.ts +21 -0
  733. package/dist/core/package-manager-source.d.ts.map +1 -0
  734. package/dist/core/package-manager-source.js +146 -0
  735. package/dist/core/package-manager-source.js.map +1 -0
  736. package/dist/core/package-manager-types.d.ts +169 -0
  737. package/dist/core/package-manager-types.d.ts.map +1 -0
  738. package/dist/core/package-manager-types.js +9 -0
  739. package/dist/core/package-manager-types.js.map +1 -0
  740. package/dist/core/package-manager.d.ts +9 -174
  741. package/dist/core/package-manager.d.ts.map +1 -1
  742. package/dist/core/package-manager.js +56 -2100
  743. package/dist/core/package-manager.js.map +1 -1
  744. package/dist/core/resource-loader-assets.d.ts +6 -0
  745. package/dist/core/resource-loader-assets.d.ts.map +1 -0
  746. package/dist/core/resource-loader-assets.js +209 -0
  747. package/dist/core/resource-loader-assets.js.map +1 -0
  748. package/dist/core/resource-loader-context-files.d.ts +10 -0
  749. package/dist/core/resource-loader-context-files.d.ts.map +1 -0
  750. package/dist/core/resource-loader-context-files.js +74 -0
  751. package/dist/core/resource-loader-context-files.js.map +1 -0
  752. package/dist/core/resource-loader-core.d.ts +82 -0
  753. package/dist/core/resource-loader-core.d.ts.map +1 -0
  754. package/dist/core/resource-loader-core.js +168 -0
  755. package/dist/core/resource-loader-core.js.map +1 -0
  756. package/dist/core/resource-loader-discovery.d.ts +4 -0
  757. package/dist/core/resource-loader-discovery.d.ts.map +1 -0
  758. package/dist/core/resource-loader-discovery.js +28 -0
  759. package/dist/core/resource-loader-discovery.js.map +1 -0
  760. package/dist/core/resource-loader-extensions.d.ts +13 -0
  761. package/dist/core/resource-loader-extensions.d.ts.map +1 -0
  762. package/dist/core/resource-loader-extensions.js +110 -0
  763. package/dist/core/resource-loader-extensions.js.map +1 -0
  764. package/dist/core/resource-loader-helpers.d.ts +4 -0
  765. package/dist/core/resource-loader-helpers.d.ts.map +1 -0
  766. package/dist/core/resource-loader-helpers.js +23 -0
  767. package/dist/core/resource-loader-helpers.js.map +1 -0
  768. package/dist/core/resource-loader-internals.d.ts +96 -0
  769. package/dist/core/resource-loader-internals.d.ts.map +1 -0
  770. package/dist/core/resource-loader-internals.js +4 -0
  771. package/dist/core/resource-loader-internals.js.map +1 -0
  772. package/dist/core/resource-loader-package-resources.d.ts +31 -0
  773. package/dist/core/resource-loader-package-resources.d.ts.map +1 -0
  774. package/dist/core/resource-loader-package-resources.js +112 -0
  775. package/dist/core/resource-loader-package-resources.js.map +1 -0
  776. package/dist/core/resource-loader-paths.d.ts +4 -0
  777. package/dist/core/resource-loader-paths.d.ts.map +1 -0
  778. package/dist/core/resource-loader-paths.js +22 -0
  779. package/dist/core/resource-loader-paths.js.map +1 -0
  780. package/dist/core/resource-loader-reload.d.ts +6 -0
  781. package/dist/core/resource-loader-reload.d.ts.map +1 -0
  782. package/dist/core/resource-loader-reload.js +226 -0
  783. package/dist/core/resource-loader-reload.js.map +1 -0
  784. package/dist/core/resource-loader-source-info.d.ts +9 -0
  785. package/dist/core/resource-loader-source-info.d.ts.map +1 -0
  786. package/dist/core/resource-loader-source-info.js +101 -0
  787. package/dist/core/resource-loader-source-info.js.map +1 -0
  788. package/dist/core/resource-loader-types.d.ts +130 -0
  789. package/dist/core/resource-loader-types.d.ts.map +1 -0
  790. package/dist/core/resource-loader-types.js +2 -0
  791. package/dist/core/resource-loader-types.js.map +1 -0
  792. package/dist/core/resource-loader.d.ts +3 -242
  793. package/dist/core/resource-loader.d.ts.map +1 -1
  794. package/dist/core/resource-loader.js +2 -976
  795. package/dist/core/resource-loader.js.map +1 -1
  796. package/dist/core/sdk-exports.d.ts +7 -0
  797. package/dist/core/sdk-exports.d.ts.map +1 -0
  798. package/dist/core/sdk-exports.js +5 -0
  799. package/dist/core/sdk-exports.js.map +1 -0
  800. package/dist/core/sdk-types.d.ts +86 -0
  801. package/dist/core/sdk-types.d.ts.map +1 -0
  802. package/dist/core/sdk-types.js +2 -0
  803. package/dist/core/sdk-types.js.map +1 -0
  804. package/dist/core/sdk.d.ts +3 -91
  805. package/dist/core/sdk.d.ts.map +1 -1
  806. package/dist/core/sdk.js +2 -6
  807. package/dist/core/sdk.js.map +1 -1
  808. package/dist/core/session-manager-archive.d.ts +27 -0
  809. package/dist/core/session-manager-archive.d.ts.map +1 -0
  810. package/dist/core/session-manager-archive.js +114 -0
  811. package/dist/core/session-manager-archive.js.map +1 -0
  812. package/dist/core/session-manager-core.d.ts +104 -0
  813. package/dist/core/session-manager-core.d.ts.map +1 -0
  814. package/dist/core/session-manager-core.js +346 -0
  815. package/dist/core/session-manager-core.js.map +1 -0
  816. package/dist/core/session-manager-entries.d.ts +38 -0
  817. package/dist/core/session-manager-entries.d.ts.map +1 -0
  818. package/dist/core/session-manager-entries.js +124 -0
  819. package/dist/core/session-manager-entries.js.map +1 -0
  820. package/dist/core/session-manager-history.d.ts +38 -0
  821. package/dist/core/session-manager-history.d.ts.map +1 -0
  822. package/dist/core/session-manager-history.js +378 -0
  823. package/dist/core/session-manager-history.js.map +1 -0
  824. package/dist/core/session-manager-list.d.ts +5 -0
  825. package/dist/core/session-manager-list.d.ts.map +1 -0
  826. package/dist/core/session-manager-list.js +196 -0
  827. package/dist/core/session-manager-list.js.map +1 -0
  828. package/dist/core/session-manager-migrations.d.ts +11 -0
  829. package/dist/core/session-manager-migrations.d.ts.map +1 -0
  830. package/dist/core/session-manager-migrations.js +80 -0
  831. package/dist/core/session-manager-migrations.js.map +1 -0
  832. package/dist/core/session-manager-paths.d.ts +7 -0
  833. package/dist/core/session-manager-paths.d.ts.map +1 -0
  834. package/dist/core/session-manager-paths.js +22 -0
  835. package/dist/core/session-manager-paths.js.map +1 -0
  836. package/dist/core/session-manager-storage.d.ts +15 -0
  837. package/dist/core/session-manager-storage.d.ts.map +1 -0
  838. package/dist/core/session-manager-storage.js +127 -0
  839. package/dist/core/session-manager-storage.js.map +1 -0
  840. package/dist/core/session-manager-types.d.ts +172 -0
  841. package/dist/core/session-manager-types.d.ts.map +1 -0
  842. package/dist/core/session-manager-types.js +2 -0
  843. package/dist/core/session-manager-types.js.map +1 -0
  844. package/dist/core/session-manager-validation.d.ts +7 -0
  845. package/dist/core/session-manager-validation.d.ts.map +1 -0
  846. package/dist/core/session-manager-validation.js +34 -0
  847. package/dist/core/session-manager-validation.js.map +1 -0
  848. package/dist/core/session-manager.d.ts +8 -390
  849. package/dist/core/session-manager.d.ts.map +1 -1
  850. package/dist/core/session-manager.js +7 -1418
  851. package/dist/core/session-manager.js.map +1 -1
  852. package/dist/core/settings-manager-basic-accessors.d.ts +65 -0
  853. package/dist/core/settings-manager-basic-accessors.d.ts.map +1 -0
  854. package/dist/core/settings-manager-basic-accessors.js +253 -0
  855. package/dist/core/settings-manager-basic-accessors.js.map +1 -0
  856. package/dist/core/settings-manager-core.d.ts +57 -0
  857. package/dist/core/settings-manager-core.d.ts.map +1 -0
  858. package/dist/core/settings-manager-core.js +387 -0
  859. package/dist/core/settings-manager-core.js.map +1 -0
  860. package/dist/core/settings-manager-internals.d.ts +13 -0
  861. package/dist/core/settings-manager-internals.d.ts.map +1 -0
  862. package/dist/core/settings-manager-internals.js +4 -0
  863. package/dist/core/settings-manager-internals.js.map +1 -0
  864. package/dist/core/settings-manager-resource-accessors.d.ts +43 -0
  865. package/dist/core/settings-manager-resource-accessors.d.ts.map +1 -0
  866. package/dist/core/settings-manager-resource-accessors.js +172 -0
  867. package/dist/core/settings-manager-resource-accessors.js.map +1 -0
  868. package/dist/core/settings-manager-ui-accessors.d.ts +44 -0
  869. package/dist/core/settings-manager-ui-accessors.d.ts.map +1 -0
  870. package/dist/core/settings-manager-ui-accessors.js +208 -0
  871. package/dist/core/settings-manager-ui-accessors.js.map +1 -0
  872. package/dist/core/settings-manager.d.ts +6 -321
  873. package/dist/core/settings-manager.d.ts.map +1 -1
  874. package/dist/core/settings-manager.js +5 -1060
  875. package/dist/core/settings-manager.js.map +1 -1
  876. package/dist/core/settings-merge.d.ts +4 -0
  877. package/dist/core/settings-merge.d.ts.map +1 -0
  878. package/dist/core/settings-merge.js +26 -0
  879. package/dist/core/settings-merge.js.map +1 -0
  880. package/dist/core/settings-storage.d.ts +20 -0
  881. package/dist/core/settings-storage.d.ts.map +1 -0
  882. package/dist/core/settings-storage.js +100 -0
  883. package/dist/core/settings-storage.js.map +1 -0
  884. package/dist/core/settings-types.d.ts +123 -0
  885. package/dist/core/settings-types.d.ts.map +1 -0
  886. package/dist/core/settings-types.js +2 -0
  887. package/dist/core/settings-types.js.map +1 -0
  888. package/dist/core/system-prompt.d.ts.map +1 -1
  889. package/dist/core/system-prompt.js +7 -0
  890. package/dist/core/system-prompt.js.map +1 -1
  891. package/dist/core/tools/bash-policy-compile.d.ts +5 -0
  892. package/dist/core/tools/bash-policy-compile.d.ts.map +1 -0
  893. package/dist/core/tools/bash-policy-compile.js +241 -0
  894. package/dist/core/tools/bash-policy-compile.js.map +1 -0
  895. package/dist/core/tools/bash-policy-evaluate.d.ts +3 -0
  896. package/dist/core/tools/bash-policy-evaluate.d.ts.map +1 -0
  897. package/dist/core/tools/bash-policy-evaluate.js +92 -0
  898. package/dist/core/tools/bash-policy-evaluate.js.map +1 -0
  899. package/dist/core/tools/bash-policy-format.d.ts +5 -0
  900. package/dist/core/tools/bash-policy-format.d.ts.map +1 -0
  901. package/dist/core/tools/bash-policy-format.js +49 -0
  902. package/dist/core/tools/bash-policy-format.js.map +1 -0
  903. package/dist/core/tools/bash-policy-parser.d.ts +4 -0
  904. package/dist/core/tools/bash-policy-parser.d.ts.map +1 -0
  905. package/dist/core/tools/bash-policy-parser.js +155 -0
  906. package/dist/core/tools/bash-policy-parser.js.map +1 -0
  907. package/dist/core/tools/bash-policy-segment.d.ts +3 -0
  908. package/dist/core/tools/bash-policy-segment.d.ts.map +1 -0
  909. package/dist/core/tools/bash-policy-segment.js +275 -0
  910. package/dist/core/tools/bash-policy-segment.js.map +1 -0
  911. package/dist/core/tools/bash-policy-shell.d.ts +11 -0
  912. package/dist/core/tools/bash-policy-shell.d.ts.map +1 -0
  913. package/dist/core/tools/bash-policy-shell.js +267 -0
  914. package/dist/core/tools/bash-policy-shell.js.map +1 -0
  915. package/dist/core/tools/bash-policy-types.d.ts +146 -0
  916. package/dist/core/tools/bash-policy-types.d.ts.map +1 -0
  917. package/dist/core/tools/bash-policy-types.js +2 -0
  918. package/dist/core/tools/bash-policy-types.js.map +1 -0
  919. package/dist/core/tools/bash-policy.d.ts +5 -61
  920. package/dist/core/tools/bash-policy.d.ts.map +1 -1
  921. package/dist/core/tools/bash-policy.js +4 -1068
  922. package/dist/core/tools/bash-policy.js.map +1 -1
  923. package/dist/core/tools/todos-execute.d.ts +5 -0
  924. package/dist/core/tools/todos-execute.d.ts.map +1 -0
  925. package/dist/core/tools/todos-execute.js +200 -0
  926. package/dist/core/tools/todos-execute.js.map +1 -0
  927. package/dist/core/tools/todos-locks.d.ts +4 -0
  928. package/dist/core/tools/todos-locks.d.ts.map +1 -0
  929. package/dist/core/tools/todos-locks.js +80 -0
  930. package/dist/core/tools/todos-locks.js.map +1 -0
  931. package/dist/core/tools/todos-model.d.ts +21 -0
  932. package/dist/core/tools/todos-model.d.ts.map +1 -0
  933. package/dist/core/tools/todos-model.js +71 -0
  934. package/dist/core/tools/todos-model.js.map +1 -0
  935. package/dist/core/tools/todos-mutations.d.ts +6 -0
  936. package/dist/core/tools/todos-mutations.d.ts.map +1 -0
  937. package/dist/core/tools/todos-mutations.js +85 -0
  938. package/dist/core/tools/todos-mutations.js.map +1 -0
  939. package/dist/core/tools/todos-paths.d.ts +5 -0
  940. package/dist/core/tools/todos-paths.d.ts.map +1 -0
  941. package/dist/core/tools/todos-paths.js +25 -0
  942. package/dist/core/tools/todos-paths.js.map +1 -0
  943. package/dist/core/tools/todos-render.d.ts +10 -0
  944. package/dist/core/tools/todos-render.d.ts.map +1 -0
  945. package/dist/core/tools/todos-render.js +159 -0
  946. package/dist/core/tools/todos-render.js.map +1 -0
  947. package/dist/core/tools/todos-storage.d.ts +9 -0
  948. package/dist/core/tools/todos-storage.d.ts.map +1 -0
  949. package/dist/core/tools/todos-storage.js +183 -0
  950. package/dist/core/tools/todos-storage.js.map +1 -0
  951. package/dist/core/tools/todos-types.d.ts +46 -0
  952. package/dist/core/tools/todos-types.d.ts.map +1 -0
  953. package/dist/core/tools/todos-types.js +27 -0
  954. package/dist/core/tools/todos-types.js.map +1 -0
  955. package/dist/core/tools/todos.d.ts +12 -32
  956. package/dist/core/tools/todos.d.ts.map +1 -1
  957. package/dist/core/tools/todos.js +7 -893
  958. package/dist/core/tools/todos.js.map +1 -1
  959. package/dist/index-extensions.d.ts +3 -0
  960. package/dist/index-extensions.d.ts.map +1 -0
  961. package/dist/index-extensions.js +2 -0
  962. package/dist/index-extensions.js.map +1 -0
  963. package/dist/index.d.ts +1 -2
  964. package/dist/index.d.ts.map +1 -1
  965. package/dist/index.js +1 -1
  966. package/dist/index.js.map +1 -1
  967. package/dist/main-app-mode.d.ts +15 -0
  968. package/dist/main-app-mode.d.ts.map +1 -0
  969. package/dist/main-app-mode.js +51 -0
  970. package/dist/main-app-mode.js.map +1 -0
  971. package/dist/main-session-options.d.ts +12 -0
  972. package/dist/main-session-options.d.ts.map +1 -0
  973. package/dist/main-session-options.js +87 -0
  974. package/dist/main-session-options.js.map +1 -0
  975. package/dist/main-session.d.ts +9 -0
  976. package/dist/main-session.d.ts.map +1 -0
  977. package/dist/main-session.js +188 -0
  978. package/dist/main-session.js.map +1 -0
  979. package/dist/main-stdio.d.ts +12 -0
  980. package/dist/main-stdio.d.ts.map +1 -0
  981. package/dist/main-stdio.js +68 -0
  982. package/dist/main-stdio.js.map +1 -0
  983. package/dist/main.d.ts +2 -3
  984. package/dist/main.d.ts.map +1 -1
  985. package/dist/main.js +11 -388
  986. package/dist/main.js.map +1 -1
  987. package/dist/migrations-config-values.d.ts +9 -0
  988. package/dist/migrations-config-values.d.ts.map +1 -0
  989. package/dist/migrations-config-values.js +298 -0
  990. package/dist/migrations-config-values.js.map +1 -0
  991. package/dist/migrations.d.ts.map +1 -1
  992. package/dist/migrations.js +2 -296
  993. package/dist/migrations.js.map +1 -1
  994. package/dist/modes/interactive/components/chat-message-renderer.d.ts.map +1 -1
  995. package/dist/modes/interactive/components/chat-message-renderer.js +0 -7
  996. package/dist/modes/interactive/components/chat-message-renderer.js.map +1 -1
  997. package/dist/modes/interactive/components/chat-session-host-actions.d.ts +9 -0
  998. package/dist/modes/interactive/components/chat-session-host-actions.d.ts.map +1 -0
  999. package/dist/modes/interactive/components/chat-session-host-actions.js +244 -0
  1000. package/dist/modes/interactive/components/chat-session-host-actions.js.map +1 -0
  1001. package/dist/modes/interactive/components/chat-session-host-editor.d.ts +18 -0
  1002. package/dist/modes/interactive/components/chat-session-host-editor.d.ts.map +1 -0
  1003. package/dist/modes/interactive/components/chat-session-host-editor.js +165 -0
  1004. package/dist/modes/interactive/components/chat-session-host-editor.js.map +1 -0
  1005. package/dist/modes/interactive/components/chat-session-host-events.d.ts +5 -0
  1006. package/dist/modes/interactive/components/chat-session-host-events.d.ts.map +1 -0
  1007. package/dist/modes/interactive/components/chat-session-host-events.js +200 -0
  1008. package/dist/modes/interactive/components/chat-session-host-events.js.map +1 -0
  1009. package/dist/modes/interactive/components/chat-session-host-rendering.d.ts +13 -0
  1010. package/dist/modes/interactive/components/chat-session-host-rendering.d.ts.map +1 -0
  1011. package/dist/modes/interactive/components/chat-session-host-rendering.js +185 -0
  1012. package/dist/modes/interactive/components/chat-session-host-rendering.js.map +1 -0
  1013. package/dist/modes/interactive/components/chat-session-host-runtime.d.ts +13 -0
  1014. package/dist/modes/interactive/components/chat-session-host-runtime.d.ts.map +1 -0
  1015. package/dist/modes/interactive/components/chat-session-host-runtime.js +101 -0
  1016. package/dist/modes/interactive/components/chat-session-host-runtime.js.map +1 -0
  1017. package/dist/modes/interactive/components/chat-session-host-state.d.ts +53 -0
  1018. package/dist/modes/interactive/components/chat-session-host-state.d.ts.map +1 -0
  1019. package/dist/modes/interactive/components/chat-session-host-state.js +42 -0
  1020. package/dist/modes/interactive/components/chat-session-host-state.js.map +1 -0
  1021. package/dist/modes/interactive/components/chat-session-host-types.d.ts +63 -0
  1022. package/dist/modes/interactive/components/chat-session-host-types.d.ts.map +1 -0
  1023. package/dist/modes/interactive/components/chat-session-host-types.js +2 -0
  1024. package/dist/modes/interactive/components/chat-session-host-types.js.map +1 -0
  1025. package/dist/modes/interactive/components/chat-session-host-utils.d.ts +28 -0
  1026. package/dist/modes/interactive/components/chat-session-host-utils.d.ts.map +1 -0
  1027. package/dist/modes/interactive/components/chat-session-host-utils.js +103 -0
  1028. package/dist/modes/interactive/components/chat-session-host-utils.js.map +1 -0
  1029. package/dist/modes/interactive/components/chat-session-host.d.ts +6 -129
  1030. package/dist/modes/interactive/components/chat-session-host.d.ts.map +1 -1
  1031. package/dist/modes/interactive/components/chat-session-host.js +50 -1022
  1032. package/dist/modes/interactive/components/chat-session-host.js.map +1 -1
  1033. package/dist/modes/interactive/components/config-selector-list.d.ts +65 -0
  1034. package/dist/modes/interactive/components/config-selector-list.d.ts.map +1 -0
  1035. package/dist/modes/interactive/components/config-selector-list.js +458 -0
  1036. package/dist/modes/interactive/components/config-selector-list.js.map +1 -0
  1037. package/dist/modes/interactive/components/config-selector.d.ts +3 -58
  1038. package/dist/modes/interactive/components/config-selector.d.ts.map +1 -1
  1039. package/dist/modes/interactive/components/config-selector.js +2 -457
  1040. package/dist/modes/interactive/components/config-selector.js.map +1 -1
  1041. package/dist/modes/interactive/components/session-selector-delete.d.ts +10 -0
  1042. package/dist/modes/interactive/components/session-selector-delete.d.ts.map +1 -0
  1043. package/dist/modes/interactive/components/session-selector-delete.js +40 -0
  1044. package/dist/modes/interactive/components/session-selector-delete.js.map +1 -0
  1045. package/dist/modes/interactive/components/session-selector-header.d.ts +33 -0
  1046. package/dist/modes/interactive/components/session-selector-header.d.ts.map +1 -0
  1047. package/dist/modes/interactive/components/session-selector-header.js +117 -0
  1048. package/dist/modes/interactive/components/session-selector-header.js.map +1 -0
  1049. package/dist/modes/interactive/components/session-selector-list.d.ts +49 -0
  1050. package/dist/modes/interactive/components/session-selector-list.d.ts.map +1 -0
  1051. package/dist/modes/interactive/components/session-selector-list.js +307 -0
  1052. package/dist/modes/interactive/components/session-selector-list.js.map +1 -0
  1053. package/dist/modes/interactive/components/session-selector-tree.d.ts +25 -0
  1054. package/dist/modes/interactive/components/session-selector-tree.d.ts.map +1 -0
  1055. package/dist/modes/interactive/components/session-selector-tree.js +53 -0
  1056. package/dist/modes/interactive/components/session-selector-tree.js.map +1 -0
  1057. package/dist/modes/interactive/components/session-selector-types.d.ts +4 -0
  1058. package/dist/modes/interactive/components/session-selector-types.d.ts.map +1 -0
  1059. package/dist/modes/interactive/components/session-selector-types.js +2 -0
  1060. package/dist/modes/interactive/components/session-selector-types.js.map +1 -0
  1061. package/dist/modes/interactive/components/session-selector-utils.d.ts +4 -0
  1062. package/dist/modes/interactive/components/session-selector-utils.d.ts.map +1 -0
  1063. package/dist/modes/interactive/components/session-selector-utils.js +37 -0
  1064. package/dist/modes/interactive/components/session-selector-utils.js.map +1 -0
  1065. package/dist/modes/interactive/components/session-selector.d.ts +3 -49
  1066. package/dist/modes/interactive/components/session-selector.d.ts.map +1 -1
  1067. package/dist/modes/interactive/components/session-selector.js +5 -542
  1068. package/dist/modes/interactive/components/session-selector.js.map +1 -1
  1069. package/dist/modes/interactive/components/settings-selector-handlers.d.ts +3 -0
  1070. package/dist/modes/interactive/components/settings-selector-handlers.d.ts.map +1 -0
  1071. package/dist/modes/interactive/components/settings-selector-handlers.js +84 -0
  1072. package/dist/modes/interactive/components/settings-selector-handlers.js.map +1 -0
  1073. package/dist/modes/interactive/components/settings-selector-items.d.ts +4 -0
  1074. package/dist/modes/interactive/components/settings-selector-items.d.ts.map +1 -0
  1075. package/dist/modes/interactive/components/settings-selector-items.js +211 -0
  1076. package/dist/modes/interactive/components/settings-selector-items.js.map +1 -0
  1077. package/dist/modes/interactive/components/settings-selector-options.d.ts +6 -0
  1078. package/dist/modes/interactive/components/settings-selector-options.d.ts.map +1 -0
  1079. package/dist/modes/interactive/components/settings-selector-options.js +14 -0
  1080. package/dist/modes/interactive/components/settings-selector-options.js.map +1 -0
  1081. package/dist/modes/interactive/components/settings-selector-submenus.d.ts +44 -0
  1082. package/dist/modes/interactive/components/settings-selector-submenus.d.ts.map +1 -0
  1083. package/dist/modes/interactive/components/settings-selector-submenus.js +228 -0
  1084. package/dist/modes/interactive/components/settings-selector-submenus.js.map +1 -0
  1085. package/dist/modes/interactive/components/settings-selector-types.d.ts +67 -0
  1086. package/dist/modes/interactive/components/settings-selector-types.d.ts.map +1 -0
  1087. package/dist/modes/interactive/components/settings-selector-types.js +2 -0
  1088. package/dist/modes/interactive/components/settings-selector-types.js.map +1 -0
  1089. package/dist/modes/interactive/components/settings-selector.d.ts +2 -63
  1090. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  1091. package/dist/modes/interactive/components/settings-selector.js +5 -538
  1092. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  1093. package/dist/modes/interactive/components/tree-selector-component.d.ts +21 -0
  1094. package/dist/modes/interactive/components/tree-selector-component.d.ts.map +1 -0
  1095. package/dist/modes/interactive/components/tree-selector-component.js +80 -0
  1096. package/dist/modes/interactive/components/tree-selector-component.js.map +1 -0
  1097. package/dist/modes/interactive/components/tree-selector-content.d.ts +8 -0
  1098. package/dist/modes/interactive/components/tree-selector-content.d.ts.map +1 -0
  1099. package/dist/modes/interactive/components/tree-selector-content.js +263 -0
  1100. package/dist/modes/interactive/components/tree-selector-content.js.map +1 -0
  1101. package/dist/modes/interactive/components/tree-selector-help.d.ts +16 -0
  1102. package/dist/modes/interactive/components/tree-selector-help.d.ts.map +1 -0
  1103. package/dist/modes/interactive/components/tree-selector-help.js +103 -0
  1104. package/dist/modes/interactive/components/tree-selector-help.js.map +1 -0
  1105. package/dist/modes/interactive/components/tree-selector-label-input.d.ts +16 -0
  1106. package/dist/modes/interactive/components/tree-selector-label-input.d.ts.map +1 -0
  1107. package/dist/modes/interactive/components/tree-selector-label-input.js +46 -0
  1108. package/dist/modes/interactive/components/tree-selector-label-input.js.map +1 -0
  1109. package/dist/modes/interactive/components/tree-selector-list.d.ts +33 -0
  1110. package/dist/modes/interactive/components/tree-selector-list.d.ts.map +1 -0
  1111. package/dist/modes/interactive/components/tree-selector-list.js +336 -0
  1112. package/dist/modes/interactive/components/tree-selector-list.js.map +1 -0
  1113. package/dist/modes/interactive/components/tree-selector-model.d.ts +7 -0
  1114. package/dist/modes/interactive/components/tree-selector-model.d.ts.map +1 -0
  1115. package/dist/modes/interactive/components/tree-selector-model.js +358 -0
  1116. package/dist/modes/interactive/components/tree-selector-model.js.map +1 -0
  1117. package/dist/modes/interactive/components/tree-selector-types.d.ts +57 -0
  1118. package/dist/modes/interactive/components/tree-selector-types.d.ts.map +1 -0
  1119. package/dist/modes/interactive/components/tree-selector-types.js +6 -0
  1120. package/dist/modes/interactive/components/tree-selector-types.js.map +1 -0
  1121. package/dist/modes/interactive/components/tree-selector-viewport.d.ts +10 -0
  1122. package/dist/modes/interactive/components/tree-selector-viewport.d.ts.map +1 -0
  1123. package/dist/modes/interactive/components/tree-selector-viewport.js +32 -0
  1124. package/dist/modes/interactive/components/tree-selector-viewport.js.map +1 -0
  1125. package/dist/modes/interactive/components/tree-selector.d.ts +2 -88
  1126. package/dist/modes/interactive/components/tree-selector.d.ts.map +1 -1
  1127. package/dist/modes/interactive/components/tree-selector.js +1 -1200
  1128. package/dist/modes/interactive/components/tree-selector.js.map +1 -1
  1129. package/dist/modes/interactive/interactive-agent-events.d.ts +2 -0
  1130. package/dist/modes/interactive/interactive-agent-events.d.ts.map +1 -0
  1131. package/dist/modes/interactive/interactive-agent-events.js +370 -0
  1132. package/dist/modes/interactive/interactive-agent-events.js.map +1 -0
  1133. package/dist/modes/interactive/interactive-auth-login.d.ts +2 -0
  1134. package/dist/modes/interactive/interactive-auth-login.d.ts.map +1 -0
  1135. package/dist/modes/interactive/interactive-auth-login.js +214 -0
  1136. package/dist/modes/interactive/interactive-auth-login.js.map +1 -0
  1137. package/dist/modes/interactive/interactive-auth-routing.d.ts +2 -0
  1138. package/dist/modes/interactive/interactive-auth-routing.d.ts.map +1 -0
  1139. package/dist/modes/interactive/interactive-auth-routing.js +128 -0
  1140. package/dist/modes/interactive/interactive-auth-routing.js.map +1 -0
  1141. package/dist/modes/interactive/interactive-autocomplete.d.ts +2 -0
  1142. package/dist/modes/interactive/interactive-autocomplete.d.ts.map +1 -0
  1143. package/dist/modes/interactive/interactive-autocomplete.js +140 -0
  1144. package/dist/modes/interactive/interactive-autocomplete.js.map +1 -0
  1145. package/dist/modes/interactive/interactive-bash-compact.d.ts +2 -0
  1146. package/dist/modes/interactive/interactive-bash-compact.d.ts.map +1 -0
  1147. package/dist/modes/interactive/interactive-bash-compact.js +112 -0
  1148. package/dist/modes/interactive/interactive-bash-compact.js.map +1 -0
  1149. package/dist/modes/interactive/interactive-editor-actions.d.ts +2 -0
  1150. package/dist/modes/interactive/interactive-editor-actions.d.ts.map +1 -0
  1151. package/dist/modes/interactive/interactive-editor-actions.js +131 -0
  1152. package/dist/modes/interactive/interactive-editor-actions.js.map +1 -0
  1153. package/dist/modes/interactive/interactive-extension-context.d.ts +2 -0
  1154. package/dist/modes/interactive/interactive-extension-context.d.ts.map +1 -0
  1155. package/dist/modes/interactive/interactive-extension-context.js +159 -0
  1156. package/dist/modes/interactive/interactive-extension-context.js.map +1 -0
  1157. package/dist/modes/interactive/interactive-extension-custom-ui.d.ts +2 -0
  1158. package/dist/modes/interactive/interactive-extension-custom-ui.d.ts.map +1 -0
  1159. package/dist/modes/interactive/interactive-extension-custom-ui.js +208 -0
  1160. package/dist/modes/interactive/interactive-extension-custom-ui.js.map +1 -0
  1161. package/dist/modes/interactive/interactive-extension-dialogs.d.ts +2 -0
  1162. package/dist/modes/interactive/interactive-extension-dialogs.d.ts.map +1 -0
  1163. package/dist/modes/interactive/interactive-extension-dialogs.js +162 -0
  1164. package/dist/modes/interactive/interactive-extension-dialogs.js.map +1 -0
  1165. package/dist/modes/interactive/interactive-extension-runtime.d.ts +2 -0
  1166. package/dist/modes/interactive/interactive-extension-runtime.d.ts.map +1 -0
  1167. package/dist/modes/interactive/interactive-extension-runtime.js +179 -0
  1168. package/dist/modes/interactive/interactive-extension-runtime.js.map +1 -0
  1169. package/dist/modes/interactive/interactive-extension-widgets.d.ts +2 -0
  1170. package/dist/modes/interactive/interactive-extension-widgets.d.ts.map +1 -0
  1171. package/dist/modes/interactive/interactive-extension-widgets.js +113 -0
  1172. package/dist/modes/interactive/interactive-extension-widgets.js.map +1 -0
  1173. package/dist/modes/interactive/interactive-hotkeys-debug.d.ts +2 -0
  1174. package/dist/modes/interactive/interactive-hotkeys-debug.d.ts.map +1 -0
  1175. package/dist/modes/interactive/interactive-hotkeys-debug.js +186 -0
  1176. package/dist/modes/interactive/interactive-hotkeys-debug.js.map +1 -0
  1177. package/dist/modes/interactive/interactive-input-handling.d.ts +2 -0
  1178. package/dist/modes/interactive/interactive-input-handling.d.ts.map +1 -0
  1179. package/dist/modes/interactive/interactive-input-handling.js +275 -0
  1180. package/dist/modes/interactive/interactive-input-handling.js.map +1 -0
  1181. package/dist/modes/interactive/interactive-mode-base.d.ts +103 -0
  1182. package/dist/modes/interactive/interactive-mode-base.d.ts.map +1 -0
  1183. package/dist/modes/interactive/interactive-mode-base.js +130 -0
  1184. package/dist/modes/interactive/interactive-mode-base.js.map +1 -0
  1185. package/dist/modes/interactive/interactive-mode-deps.d.ts +81 -0
  1186. package/dist/modes/interactive/interactive-mode-deps.d.ts.map +1 -0
  1187. package/dist/modes/interactive/interactive-mode-deps.js +74 -0
  1188. package/dist/modes/interactive/interactive-mode-deps.js.map +1 -0
  1189. package/dist/modes/interactive/interactive-mode-helpers.d.ts +21 -0
  1190. package/dist/modes/interactive/interactive-mode-helpers.d.ts.map +1 -0
  1191. package/dist/modes/interactive/interactive-mode-helpers.js +77 -0
  1192. package/dist/modes/interactive/interactive-mode-helpers.js.map +1 -0
  1193. package/dist/modes/interactive/interactive-mode-surface.d.ts +313 -0
  1194. package/dist/modes/interactive/interactive-mode-surface.d.ts.map +1 -0
  1195. package/dist/modes/interactive/interactive-mode-surface.js +2 -0
  1196. package/dist/modes/interactive/interactive-mode-surface.js.map +1 -0
  1197. package/dist/modes/interactive/interactive-mode-types.d.ts +29 -0
  1198. package/dist/modes/interactive/interactive-mode-types.d.ts.map +1 -0
  1199. package/dist/modes/interactive/interactive-mode-types.js +2 -0
  1200. package/dist/modes/interactive/interactive-mode-types.js.map +1 -0
  1201. package/dist/modes/interactive/interactive-mode.d.ts +30 -404
  1202. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  1203. package/dist/modes/interactive/interactive-mode.js +29 -5260
  1204. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  1205. package/dist/modes/interactive/interactive-model-routing.d.ts +2 -0
  1206. package/dist/modes/interactive/interactive-model-routing.d.ts.map +1 -0
  1207. package/dist/modes/interactive/interactive-model-routing.js +269 -0
  1208. package/dist/modes/interactive/interactive-model-routing.js.map +1 -0
  1209. package/dist/modes/interactive/interactive-process-lifecycle.d.ts +2 -0
  1210. package/dist/modes/interactive/interactive-process-lifecycle.d.ts.map +1 -0
  1211. package/dist/modes/interactive/interactive-process-lifecycle.js +189 -0
  1212. package/dist/modes/interactive/interactive-process-lifecycle.js.map +1 -0
  1213. package/dist/modes/interactive/interactive-queueing.d.ts +2 -0
  1214. package/dist/modes/interactive/interactive-queueing.d.ts.map +1 -0
  1215. package/dist/modes/interactive/interactive-queueing.js +163 -0
  1216. package/dist/modes/interactive/interactive-queueing.js.map +1 -0
  1217. package/dist/modes/interactive/interactive-render-chat.d.ts +2 -0
  1218. package/dist/modes/interactive/interactive-render-chat.d.ts.map +1 -0
  1219. package/dist/modes/interactive/interactive-render-chat.js +170 -0
  1220. package/dist/modes/interactive/interactive-render-chat.js.map +1 -0
  1221. package/dist/modes/interactive/interactive-resource-disclosure.d.ts +2 -0
  1222. package/dist/modes/interactive/interactive-resource-disclosure.d.ts.map +1 -0
  1223. package/dist/modes/interactive/interactive-resource-disclosure.js +101 -0
  1224. package/dist/modes/interactive/interactive-resource-disclosure.js.map +1 -0
  1225. package/dist/modes/interactive/interactive-resource-paths.d.ts +2 -0
  1226. package/dist/modes/interactive/interactive-resource-paths.d.ts.map +1 -0
  1227. package/dist/modes/interactive/interactive-resource-paths.js +228 -0
  1228. package/dist/modes/interactive/interactive-resource-paths.js.map +1 -0
  1229. package/dist/modes/interactive/interactive-resource-rendering.d.ts +2 -0
  1230. package/dist/modes/interactive/interactive-resource-rendering.d.ts.map +1 -0
  1231. package/dist/modes/interactive/interactive-resource-rendering.js +181 -0
  1232. package/dist/modes/interactive/interactive-resource-rendering.js.map +1 -0
  1233. package/dist/modes/interactive/interactive-selectors.d.ts +2 -0
  1234. package/dist/modes/interactive/interactive-selectors.d.ts.map +1 -0
  1235. package/dist/modes/interactive/interactive-selectors.js +198 -0
  1236. package/dist/modes/interactive/interactive-selectors.js.map +1 -0
  1237. package/dist/modes/interactive/interactive-session-routing.d.ts +2 -0
  1238. package/dist/modes/interactive/interactive-session-routing.d.ts.map +1 -0
  1239. package/dist/modes/interactive/interactive-session-routing.js +232 -0
  1240. package/dist/modes/interactive/interactive-session-routing.js.map +1 -0
  1241. package/dist/modes/interactive/interactive-session-runtime.d.ts +2 -0
  1242. package/dist/modes/interactive/interactive-session-runtime.d.ts.map +1 -0
  1243. package/dist/modes/interactive/interactive-session-runtime.js +131 -0
  1244. package/dist/modes/interactive/interactive-session-runtime.js.map +1 -0
  1245. package/dist/modes/interactive/interactive-slash-commands.d.ts +2 -0
  1246. package/dist/modes/interactive/interactive-slash-commands.d.ts.map +1 -0
  1247. package/dist/modes/interactive/interactive-slash-commands.js +338 -0
  1248. package/dist/modes/interactive/interactive-slash-commands.js.map +1 -0
  1249. package/dist/modes/interactive/interactive-startup.d.ts +2 -0
  1250. package/dist/modes/interactive/interactive-startup.d.ts.map +1 -0
  1251. package/dist/modes/interactive/interactive-startup.js +348 -0
  1252. package/dist/modes/interactive/interactive-startup.js.map +1 -0
  1253. package/dist/modes/interactive/theme/color-utils.d.ts +20 -0
  1254. package/dist/modes/interactive/theme/color-utils.d.ts.map +1 -0
  1255. package/dist/modes/interactive/theme/color-utils.js +204 -0
  1256. package/dist/modes/interactive/theme/color-utils.js.map +1 -0
  1257. package/dist/modes/interactive/theme/export-colors.d.ts +19 -0
  1258. package/dist/modes/interactive/theme/export-colors.d.ts.map +1 -0
  1259. package/dist/modes/interactive/theme/export-colors.js +69 -0
  1260. package/dist/modes/interactive/theme/export-colors.js.map +1 -0
  1261. package/dist/modes/interactive/theme/global-theme.d.ts +12 -0
  1262. package/dist/modes/interactive/theme/global-theme.d.ts.map +1 -0
  1263. package/dist/modes/interactive/theme/global-theme.js +150 -0
  1264. package/dist/modes/interactive/theme/global-theme.js.map +1 -0
  1265. package/dist/modes/interactive/theme/terminal-detection.d.ts +30 -0
  1266. package/dist/modes/interactive/theme/terminal-detection.d.ts.map +1 -0
  1267. package/dist/modes/interactive/theme/terminal-detection.js +89 -0
  1268. package/dist/modes/interactive/theme/terminal-detection.js.map +1 -0
  1269. package/dist/modes/interactive/theme/theme-class.d.ts +30 -0
  1270. package/dist/modes/interactive/theme/theme-class.d.ts.map +1 -0
  1271. package/dist/modes/interactive/theme/theme-class.js +83 -0
  1272. package/dist/modes/interactive/theme/theme-class.js.map +1 -0
  1273. package/dist/modes/interactive/theme/theme-loading.d.ts +17 -0
  1274. package/dist/modes/interactive/theme/theme-loading.d.ts.map +1 -0
  1275. package/dist/modes/interactive/theme/theme-loading.js +155 -0
  1276. package/dist/modes/interactive/theme/theme-loading.js.map +1 -0
  1277. package/dist/modes/interactive/theme/theme-parse.d.ts +5 -0
  1278. package/dist/modes/interactive/theme/theme-parse.d.ts.map +1 -0
  1279. package/dist/modes/interactive/theme/theme-parse.js +52 -0
  1280. package/dist/modes/interactive/theme/theme-parse.js.map +1 -0
  1281. package/dist/modes/interactive/theme/theme-schema.d.ts +255 -0
  1282. package/dist/modes/interactive/theme/theme-schema.d.ts.map +1 -0
  1283. package/dist/modes/interactive/theme/theme-schema.js +78 -0
  1284. package/dist/modes/interactive/theme/theme-schema.js.map +1 -0
  1285. package/dist/modes/interactive/theme/theme.d.ts +6 -108
  1286. package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  1287. package/dist/modes/interactive/theme/theme.js +6 -1065
  1288. package/dist/modes/interactive/theme/theme.js.map +1 -1
  1289. package/dist/modes/interactive/theme/tui-theme.d.ts +15 -0
  1290. package/dist/modes/interactive/theme/tui-theme.d.ts.map +1 -0
  1291. package/dist/modes/interactive/theme/tui-theme.js +199 -0
  1292. package/dist/modes/interactive/theme/tui-theme.js.map +1 -0
  1293. package/dist/modes/rpc/rpc-client.d.ts +1 -61
  1294. package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
  1295. package/dist/modes/rpc/rpc-client.js +1 -72
  1296. package/dist/modes/rpc/rpc-client.js.map +1 -1
  1297. package/dist/modes/rpc/rpc-command-handler.d.ts +14 -0
  1298. package/dist/modes/rpc/rpc-command-handler.d.ts.map +1 -0
  1299. package/dist/modes/rpc/rpc-command-handler.js +226 -0
  1300. package/dist/modes/rpc/rpc-command-handler.js.map +1 -0
  1301. package/dist/modes/rpc/rpc-extension-ui.d.ts +15 -0
  1302. package/dist/modes/rpc/rpc-extension-ui.d.ts.map +1 -0
  1303. package/dist/modes/rpc/rpc-extension-ui.js +196 -0
  1304. package/dist/modes/rpc/rpc-extension-ui.js.map +1 -0
  1305. package/dist/modes/rpc/rpc-input.d.ts +12 -0
  1306. package/dist/modes/rpc/rpc-input.d.ts.map +1 -0
  1307. package/dist/modes/rpc/rpc-input.js +54 -0
  1308. package/dist/modes/rpc/rpc-input.js.map +1 -0
  1309. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  1310. package/dist/modes/rpc/rpc-mode.js +43 -607
  1311. package/dist/modes/rpc/rpc-mode.js.map +1 -1
  1312. package/dist/modes/rpc/rpc-responses.d.ts +8 -0
  1313. package/dist/modes/rpc/rpc-responses.d.ts.map +1 -0
  1314. package/dist/modes/rpc/rpc-responses.js +27 -0
  1315. package/dist/modes/rpc/rpc-responses.js.map +1 -0
  1316. package/dist/modes/rpc/rpc-session-binding.d.ts +25 -0
  1317. package/dist/modes/rpc/rpc-session-binding.d.ts.map +1 -0
  1318. package/dist/modes/rpc/rpc-session-binding.js +70 -0
  1319. package/dist/modes/rpc/rpc-session-binding.js.map +1 -0
  1320. package/dist/package-manager-cli-parser.d.ts +28 -0
  1321. package/dist/package-manager-cli-parser.d.ts.map +1 -0
  1322. package/dist/package-manager-cli-parser.js +269 -0
  1323. package/dist/package-manager-cli-parser.js.map +1 -0
  1324. package/dist/package-manager-cli.d.ts +0 -1
  1325. package/dist/package-manager-cli.d.ts.map +1 -1
  1326. package/dist/package-manager-cli.js +2 -267
  1327. package/dist/package-manager-cli.js.map +1 -1
  1328. package/dist/utils/git.d.ts.map +1 -1
  1329. package/dist/utils/git.js +10 -0
  1330. package/dist/utils/git.js.map +1 -1
  1331. package/dist/utils/version-check.d.ts +1 -0
  1332. package/dist/utils/version-check.d.ts.map +1 -1
  1333. package/dist/utils/version-check.js +17 -0
  1334. package/dist/utils/version-check.js.map +1 -1
  1335. package/docs/development.md +4 -0
  1336. package/docs/sessions.md +4 -0
  1337. package/docs/workflows.md +13 -7
  1338. package/examples/extensions/custom-provider-anthropic/index.ts +1 -106
  1339. package/examples/extensions/gondolin/index.ts +0 -23
  1340. package/examples/extensions/gondolin/package-lock.json +183 -183
  1341. package/examples/extensions/overlay-qa-animation-components.ts +255 -0
  1342. package/examples/extensions/overlay-qa-focus-components.ts +222 -0
  1343. package/examples/extensions/overlay-qa-position-components.ts +433 -0
  1344. package/examples/extensions/overlay-qa-shared.ts +37 -0
  1345. package/examples/extensions/overlay-qa-streaming-input-components.ts +205 -0
  1346. package/examples/extensions/overlay-qa-tests.ts +17 -1156
  1347. package/examples/extensions/overlay-qa-toggle-passive-components.ts +169 -0
  1348. package/examples/extensions/space-invaders.ts +0 -60
  1349. package/examples/extensions/subagent/display.ts +148 -0
  1350. package/examples/extensions/subagent/index.ts +11 -858
  1351. package/examples/extensions/subagent/render.ts +383 -0
  1352. package/examples/extensions/subagent/runner.ts +252 -0
  1353. package/examples/extensions/subagent/schemas.ts +59 -0
  1354. package/examples/extensions/subagent/types.ts +36 -0
  1355. package/examples/extensions/tic-tac-toe-instructions.ts +65 -0
  1356. package/examples/extensions/tic-tac-toe-rendering.ts +414 -0
  1357. package/examples/extensions/tic-tac-toe-state.ts +158 -0
  1358. package/examples/extensions/tic-tac-toe.ts +92 -754
  1359. package/examples/rpc-extension-ui-components.ts +189 -0
  1360. package/examples/rpc-extension-ui.ts +2 -179
  1361. package/package.json +4 -4
@@ -1,1419 +1,8 @@
1
- import { randomBytes, randomUUID } from "crypto";
2
- import { appendFileSync, closeSync, existsSync, mkdirSync, openSync, readdirSync, readSync, statSync, writeFileSync, } from "fs";
3
- import { readdir, readFile, stat } from "fs/promises";
4
- import { join, resolve } from "path";
5
- import { StringDecoder } from "string_decoder";
6
- import { getAgentDir as getDefaultAgentDir, getSessionsDir } from "../config.js";
7
- import { normalizePath, resolvePath } from "../utils/paths.js";
8
- import { createBranchSummaryMessage, createCustomMessage, } from "./messages.js";
9
- import { contentArrayHasAssistantThinkingBlock } from "./thinking-blocks.js";
10
- export const CURRENT_SESSION_VERSION = 3;
11
- function createUuidV7() {
12
- const bytes = randomBytes(16);
13
- const timestamp = BigInt(Date.now());
14
- bytes[0] = Number((timestamp >> 40n) & 0xffn);
15
- bytes[1] = Number((timestamp >> 32n) & 0xffn);
16
- bytes[2] = Number((timestamp >> 24n) & 0xffn);
17
- bytes[3] = Number((timestamp >> 16n) & 0xffn);
18
- bytes[4] = Number((timestamp >> 8n) & 0xffn);
19
- bytes[5] = Number(timestamp & 0xffn);
20
- bytes[6] = (bytes[6] & 0x0f) | 0x70;
21
- bytes[8] = (bytes[8] & 0x3f) | 0x80;
22
- const hex = bytes.toString("hex");
23
- return `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-${hex.slice(16, 20)}-${hex.slice(20)}`;
24
- }
25
- function createSessionId() {
26
- return createUuidV7();
27
- }
28
- export function assertValidSessionId(id) {
29
- if (!/^[A-Za-z0-9](?:[A-Za-z0-9._-]*[A-Za-z0-9])?$/.test(id)) {
30
- throw new Error("Session id must be non-empty, contain only alphanumeric characters, '-', '_', and '.', and start and end with an alphanumeric character");
31
- }
32
- }
33
- /** Generate a unique short ID (8 hex chars, collision-checked) */
34
- function generateId(byId) {
35
- for (let i = 0; i < 100; i++) {
36
- const id = randomUUID().slice(0, 8);
37
- if (!byId.has(id))
38
- return id;
39
- }
40
- // Fallback to full UUID if somehow we have collisions
41
- return randomUUID();
42
- }
43
- /** Migrate v1 → v2: add id/parentId tree structure. Mutates in place. */
44
- function migrateV1ToV2(entries) {
45
- const ids = new Set();
46
- let prevId = null;
47
- for (const entry of entries) {
48
- if (entry.type === "session") {
49
- entry.version = 2;
50
- continue;
51
- }
52
- entry.id = generateId(ids);
53
- entry.parentId = prevId;
54
- prevId = entry.id;
55
- // Convert firstKeptEntryIndex to firstKeptEntryId for compaction
56
- if (entry.type === "compaction") {
57
- const comp = entry;
58
- if (typeof comp.firstKeptEntryIndex === "number") {
59
- const targetEntry = entries[comp.firstKeptEntryIndex];
60
- if (targetEntry && targetEntry.type !== "session") {
61
- comp.firstKeptEntryId = targetEntry.id;
62
- }
63
- delete comp.firstKeptEntryIndex;
64
- }
65
- }
66
- }
67
- }
68
- /** Migrate v2 → v3: rename hookMessage role to custom. Mutates in place. */
69
- function migrateV2ToV3(entries) {
70
- for (const entry of entries) {
71
- if (entry.type === "session") {
72
- entry.version = 3;
73
- continue;
74
- }
75
- // Update message entries with hookMessage role
76
- if (entry.type === "message") {
77
- const msgEntry = entry;
78
- if (msgEntry.message && msgEntry.message.role === "hookMessage") {
79
- msgEntry.message.role = "custom";
80
- }
81
- }
82
- }
83
- }
84
- /**
85
- * Run all necessary migrations to bring entries to current version.
86
- * Mutates entries in place. Returns true if any migration was applied.
87
- */
88
- function migrateToCurrentVersion(entries) {
89
- const header = entries.find((e) => e.type === "session");
90
- const version = header?.version ?? 1;
91
- if (version >= CURRENT_SESSION_VERSION)
92
- return false;
93
- if (version < 2)
94
- migrateV1ToV2(entries);
95
- if (version < 3)
96
- migrateV2ToV3(entries);
97
- return true;
98
- }
99
- /** Exported for testing */
100
- export function migrateSessionEntries(entries) {
101
- migrateToCurrentVersion(entries);
102
- }
103
- /** Exported for compaction.test.ts */
104
- export function parseSessionEntries(content) {
105
- const entries = [];
106
- const lines = content.trim().split("\n");
107
- for (const line of lines) {
108
- if (!line.trim())
109
- continue;
110
- try {
111
- const entry = JSON.parse(line);
112
- entries.push(entry);
113
- }
114
- catch {
115
- // Skip malformed lines
116
- }
117
- }
118
- return entries;
119
- }
120
- export function getLatestCompactionBoundaryEntry(entries) {
121
- for (let i = entries.length - 1; i >= 0; i--) {
122
- const entry = entries[i];
123
- if (entry.type === "context_compaction") {
124
- return entry;
125
- }
126
- }
127
- return null;
128
- }
129
- /**
130
- * Build raw deletion filters from persisted context_compaction entries.
131
- *
132
- * These raw filters do not apply replay-safety repair for latest assistant
133
- * thinking/redacted_thinking blocks or their paired tool results. Production
134
- * context rebuild paths should prefer `buildEffectiveContextDeletionFilters`
135
- * or `buildContextDeletionFilteredPath(path)` unless they intentionally need
136
- * the un-repaired historical deletion plan for diagnostics.
137
- */
138
- export function buildContextDeletionFilters(path) {
139
- const deletedEntryIds = new Set();
140
- const deletedContentBlocks = new Map();
141
- for (const entry of path) {
142
- if (entry.type !== "context_compaction")
143
- continue;
144
- for (const target of entry.deletedTargets) {
145
- if (target.kind === "entry") {
146
- deletedEntryIds.add(target.entryId);
147
- continue;
148
- }
149
- const existing = deletedContentBlocks.get(target.entryId) ?? new Set();
150
- existing.add(target.blockIndex);
151
- deletedContentBlocks.set(target.entryId, existing);
152
- }
153
- }
154
- return { deletedEntryIds, deletedContentBlocks };
155
- }
156
- function getToolCallContentBlockId(block) {
157
- if (!block || typeof block !== "object")
158
- return undefined;
159
- const candidate = block;
160
- return candidate.type === "toolCall" && typeof candidate.id === "string" ? candidate.id : undefined;
161
- }
162
- function getToolResultCallId(message) {
163
- if (message.role !== "toolResult")
164
- return undefined;
165
- const toolCallId = message.toolCallId;
166
- return typeof toolCallId === "string" ? toolCallId : undefined;
167
- }
168
- function collectToolCallContentBlockIds(content) {
169
- const toolCallIds = new Set();
170
- for (const block of content) {
171
- const toolCallId = getToolCallContentBlockId(block);
172
- if (toolCallId)
173
- toolCallIds.add(toolCallId);
174
- }
175
- return toolCallIds;
176
- }
177
- function addDeletionTarget(filters, target) {
178
- if (target.kind === "entry") {
179
- filters.deletedEntryIds.add(target.entryId);
180
- return;
181
- }
182
- const existing = filters.deletedContentBlocks.get(target.entryId) ?? new Set();
183
- existing.add(target.blockIndex);
184
- filters.deletedContentBlocks.set(target.entryId, existing);
185
- }
186
- function buildToolResultEntryIdsByCallId(path) {
187
- const toolResultEntryIdsByCallId = new Map();
188
- for (const entry of path) {
189
- if (entry.type !== "message")
190
- continue;
191
- const toolCallId = getToolResultCallId(entry.message);
192
- if (!toolCallId)
193
- continue;
194
- const existing = toolResultEntryIdsByCallId.get(toolCallId) ?? new Set();
195
- existing.add(entry.id);
196
- toolResultEntryIdsByCallId.set(toolCallId, existing);
197
- }
198
- return toolResultEntryIdsByCallId;
199
- }
200
- function findRetainedThinkingAssistants(path, deletedEntryIds) {
201
- return path.filter((entry) => {
202
- if (entry.type !== "message")
203
- return false;
204
- if (deletedEntryIds.has(entry.id))
205
- return false;
206
- if (entry.message.role !== "assistant")
207
- return false;
208
- return contentArrayHasAssistantThinkingBlock(entry.message.content);
209
- });
210
- }
211
- export function buildEffectiveContextDeletionFilters(path) {
212
- const filters = buildContextDeletionFilters(path);
213
- if (!path.some((entry) => entry.type === "context_compaction"))
214
- return filters;
215
- const rawDeletedEntryIds = new Set();
216
- for (const compaction of path) {
217
- if (compaction.type !== "context_compaction")
218
- continue;
219
- for (const target of compaction.deletedTargets) {
220
- if (target.kind === "entry")
221
- rawDeletedEntryIds.add(target.entryId);
222
- }
223
- }
224
- const retainedThinkingAssistants = findRetainedThinkingAssistants(path, rawDeletedEntryIds);
225
- const retainedThinkingAssistantIds = new Set(retainedThinkingAssistants.map((entry) => entry.id));
226
- const retainedThinkingAssistantById = new Map(retainedThinkingAssistants.map((entry) => [entry.id, entry]));
227
- const toolResultEntryIdsByCallId = buildToolResultEntryIdsByCallId(path);
228
- const effectiveFilters = {
229
- deletedEntryIds: new Set(),
230
- deletedContentBlocks: new Map(),
231
- };
232
- const allRestoredToolResultEntryIds = new Set();
233
- for (const compaction of path) {
234
- if (compaction.type !== "context_compaction")
235
- continue;
236
- for (const target of compaction.deletedTargets) {
237
- if (target.kind !== "content_block")
238
- continue;
239
- const retainedThinkingAssistant = retainedThinkingAssistantById.get(target.entryId);
240
- if (!retainedThinkingAssistant)
241
- continue;
242
- const content = retainedThinkingAssistant.message.content;
243
- for (const toolCallId of collectToolCallContentBlockIds(content)) {
244
- for (const entryId of toolResultEntryIdsByCallId.get(toolCallId) ?? []) {
245
- allRestoredToolResultEntryIds.add(entryId);
246
- }
247
- }
248
- }
249
- }
250
- for (const compaction of path) {
251
- if (compaction.type !== "context_compaction")
252
- continue;
253
- let restoresRetainedThinkingAssistant = false;
254
- for (const target of compaction.deletedTargets) {
255
- if (target.kind === "content_block" && retainedThinkingAssistantIds.has(target.entryId)) {
256
- restoresRetainedThinkingAssistant = true;
257
- break;
258
- }
259
- }
260
- for (const target of compaction.deletedTargets) {
261
- if (target.kind === "content_block" && retainedThinkingAssistantIds.has(target.entryId)) {
262
- continue;
263
- }
264
- // When a stale persisted plan tried to partially filter a retained
265
- // thinking-bearing assistant, treat the same compaction entry as one
266
- // unsafe unit and restore its paired tool results. Later compaction
267
- // entries may still trim those restored multi-block results normally,
268
- // but whole-entry deletion of those paired results remains unsafe in any
269
- // later compaction because the assistant tool call is retained.
270
- if (restoresRetainedThinkingAssistant && allRestoredToolResultEntryIds.has(target.entryId))
271
- continue;
272
- if (target.kind === "entry" && allRestoredToolResultEntryIds.has(target.entryId))
273
- continue;
274
- addDeletionTarget(effectiveFilters, target);
275
- }
276
- }
277
- return effectiveFilters;
278
- }
279
- function filterContentArray(content, deletedBlocks) {
280
- return content.filter((_, index) => !deletedBlocks.has(index));
281
- }
282
- function filterMessageContentBlocks(message, deletedBlocks) {
283
- if (!deletedBlocks || deletedBlocks.size === 0)
284
- return message;
285
- switch (message.role) {
286
- case "user": {
287
- if (!Array.isArray(message.content))
288
- return message;
289
- const content = filterContentArray(message.content, deletedBlocks);
290
- if (content.length === 0)
291
- return undefined;
292
- return { ...message, content };
293
- }
294
- case "assistant": {
295
- const content = filterContentArray(message.content, deletedBlocks);
296
- if (content.length === 0)
297
- return undefined;
298
- return { ...message, content };
299
- }
300
- case "toolResult": {
301
- if (!Array.isArray(message.content))
302
- return message;
303
- const content = filterContentArray(message.content, deletedBlocks);
304
- if (content.length === 0)
305
- return undefined;
306
- return { ...message, content };
307
- }
308
- case "custom": {
309
- if (!Array.isArray(message.content))
310
- return message;
311
- const content = filterContentArray(message.content, deletedBlocks);
312
- if (content.length === 0)
313
- return undefined;
314
- return { ...message, content };
315
- }
316
- case "bashExecution":
317
- case "branchSummary":
318
- return message;
319
- }
320
- }
321
- /**
322
- * Return the active branch path after applying logical context-deletion entries.
323
- * Whole-entry deletions remove the entry from the path. Content-block deletions
324
- * clone only affected message/custom-message entries so retained blocks stay verbatim.
325
- * The optional filters parameter is for callers that already computed effective
326
- * filters with `buildEffectiveContextDeletionFilters(path)` and want to avoid
327
- * repeating the repair pass.
328
- */
329
- export function buildContextDeletionFilteredPath(path, effectiveFilters = buildEffectiveContextDeletionFilters(path)) {
330
- const filteredPath = [];
331
- for (const entry of path) {
332
- if (effectiveFilters.deletedEntryIds.has(entry.id))
333
- continue;
334
- const deletedBlocks = effectiveFilters.deletedContentBlocks.get(entry.id);
335
- if (!deletedBlocks || deletedBlocks.size === 0) {
336
- filteredPath.push(entry);
337
- continue;
338
- }
339
- if (entry.type === "message") {
340
- const message = filterMessageContentBlocks(entry.message, deletedBlocks);
341
- if (message)
342
- filteredPath.push({ ...entry, message });
343
- continue;
344
- }
345
- if (entry.type === "custom_message" && Array.isArray(entry.content)) {
346
- const content = filterContentArray(entry.content, deletedBlocks);
347
- if (content.length > 0)
348
- filteredPath.push({ ...entry, content });
349
- continue;
350
- }
351
- filteredPath.push(entry);
352
- }
353
- return filteredPath;
354
- }
355
- /**
356
- * Build the session context from entries using tree traversal.
357
- * If leafId is provided, walks from that entry to root.
358
- * Applies context-deletion filtering and includes branch summaries along the path.
359
- */
360
- export function buildSessionContext(entries, leafId, byId) {
361
- // Build uuid index if not available
362
- if (!byId) {
363
- byId = new Map();
364
- for (const entry of entries) {
365
- byId.set(entry.id, entry);
366
- }
367
- }
368
- // Find leaf
369
- let leaf;
370
- if (leafId === null) {
371
- // Explicitly null - return no messages (navigated to before first entry)
372
- return { messages: [], thinkingLevel: "off", contextWindow: undefined, model: null };
373
- }
374
- if (leafId) {
375
- leaf = byId.get(leafId);
376
- }
377
- if (!leaf) {
378
- // Fallback to last entry (when leafId is undefined)
379
- leaf = entries[entries.length - 1];
380
- }
381
- if (!leaf) {
382
- return { messages: [], thinkingLevel: "off", contextWindow: undefined, model: null };
383
- }
384
- // Walk from leaf to root, collecting path
385
- const path = [];
386
- let current = leaf;
387
- while (current) {
388
- path.unshift(current);
389
- current = current.parentId ? byId.get(current.parentId) : undefined;
390
- }
391
- // Extract settings
392
- let thinkingLevel = "off";
393
- let contextWindow;
394
- let model = null;
395
- for (const entry of path) {
396
- if (entry.type === "thinking_level_change") {
397
- thinkingLevel = entry.thinkingLevel;
398
- }
399
- else if (entry.type === "context_window_change") {
400
- contextWindow = entry.contextWindow;
401
- }
402
- else if (entry.type === "model_change") {
403
- model = { provider: entry.provider, modelId: entry.modelId };
404
- }
405
- else if (entry.type === "message" && entry.message.role === "assistant") {
406
- model = { provider: entry.message.provider, modelId: entry.message.model };
407
- }
408
- }
409
- const filteredPath = buildContextDeletionFilteredPath(path);
410
- // Build active context messages from the filtered path. Legacy "compaction"
411
- // entries are archival metadata and intentionally inert here.
412
- const messages = [];
413
- const appendMessage = (entry) => {
414
- let message;
415
- if (entry.type === "message") {
416
- message = entry.message;
417
- }
418
- else if (entry.type === "custom_message") {
419
- message = createCustomMessage(entry.customType, entry.content, entry.display, entry.details, entry.timestamp, entry.excludeFromContext);
420
- }
421
- else if (entry.type === "branch_summary" && entry.summary) {
422
- message = createBranchSummaryMessage(entry.summary, entry.fromId, entry.timestamp);
423
- }
424
- if (message)
425
- messages.push(message);
426
- };
427
- for (const entry of filteredPath) {
428
- appendMessage(entry);
429
- }
430
- return { messages, thinkingLevel, contextWindow, model };
431
- }
432
- /**
433
- * Compute the default session directory for a cwd.
434
- * Encodes cwd into a safe directory name under ~/.atomic/agent/sessions/.
435
- */
436
- function getDefaultSessionDirPath(cwd, agentDir = getDefaultAgentDir()) {
437
- const resolvedCwd = resolvePath(cwd);
438
- const resolvedAgentDir = resolvePath(agentDir);
439
- const safePath = `--${resolvedCwd.replace(/^[/\\]/, "").replace(/[/\\:]/g, "-")}--`;
440
- return join(resolvedAgentDir, "sessions", safePath);
441
- }
442
- export function getDefaultSessionDir(cwd, agentDir = getDefaultAgentDir()) {
443
- const sessionDir = getDefaultSessionDirPath(cwd, agentDir);
444
- if (!existsSync(sessionDir)) {
445
- mkdirSync(sessionDir, { recursive: true });
446
- }
447
- return sessionDir;
448
- }
449
- const SESSION_READ_BUFFER_SIZE = 1024 * 1024;
450
- function parseSessionEntryLine(line) {
451
- if (!line.trim())
452
- return null;
453
- try {
454
- return JSON.parse(line);
455
- }
456
- catch {
457
- return null;
458
- }
459
- }
460
- /** Exported for testing */
461
- export function loadEntriesFromFile(filePath) {
462
- const resolvedFilePath = normalizePath(filePath);
463
- if (!existsSync(resolvedFilePath))
464
- return [];
465
- const entries = [];
466
- const fd = openSync(resolvedFilePath, "r");
467
- try {
468
- const decoder = new StringDecoder("utf8");
469
- const buffer = Buffer.allocUnsafe(SESSION_READ_BUFFER_SIZE);
470
- let pending = "";
471
- while (true) {
472
- const bytesRead = readSync(fd, buffer, 0, buffer.length, null);
473
- if (bytesRead === 0)
474
- break;
475
- pending += decoder.write(buffer.subarray(0, bytesRead));
476
- let lineStart = 0;
477
- let newlineIndex = pending.indexOf("\n", lineStart);
478
- while (newlineIndex !== -1) {
479
- const entry = parseSessionEntryLine(pending.slice(lineStart, newlineIndex));
480
- if (entry)
481
- entries.push(entry);
482
- lineStart = newlineIndex + 1;
483
- newlineIndex = pending.indexOf("\n", lineStart);
484
- }
485
- pending = pending.slice(lineStart);
486
- }
487
- pending += decoder.end();
488
- const finalEntry = parseSessionEntryLine(pending);
489
- if (finalEntry)
490
- entries.push(finalEntry);
491
- }
492
- finally {
493
- closeSync(fd);
494
- }
495
- // Validate session header
496
- if (entries.length === 0)
497
- return entries;
498
- const header = entries[0];
499
- if (header.type !== "session" || !("id" in header) || typeof header.id !== "string") {
500
- return [];
501
- }
502
- return entries;
503
- }
504
- function readSessionHeader(filePath) {
505
- try {
506
- const fd = openSync(filePath, "r");
507
- const buffer = Buffer.alloc(512);
508
- const bytesRead = readSync(fd, buffer, 0, 512, 0);
509
- closeSync(fd);
510
- const firstLine = buffer.toString("utf8", 0, bytesRead).split("\n")[0];
511
- if (!firstLine)
512
- return null;
513
- const header = JSON.parse(firstLine);
514
- if (header.type !== "session" || typeof header.id !== "string") {
515
- return null;
516
- }
517
- return header;
518
- }
519
- catch {
520
- return null;
521
- }
522
- }
523
- function getSessionHeaderCwd(header) {
524
- const cwd = header.cwd;
525
- return typeof cwd === "string" ? cwd : undefined;
526
- }
527
- function sessionCwdMatches(cwd, resolvedCwd) {
528
- return cwd !== undefined && cwd !== "" && resolvePath(cwd) === resolvedCwd;
529
- }
530
- /** Exported for testing */
531
- export function findMostRecentSession(sessionDir, cwd) {
532
- const resolvedSessionDir = normalizePath(sessionDir);
533
- const resolvedCwd = cwd ? resolvePath(cwd) : undefined;
534
- try {
535
- const files = readdirSync(resolvedSessionDir)
536
- .filter((f) => f.endsWith(".jsonl"))
537
- .map((f) => join(resolvedSessionDir, f))
538
- .map((path) => ({ path, header: readSessionHeader(path) }))
539
- .filter((file) => file.header !== null &&
540
- (!resolvedCwd || sessionCwdMatches(getSessionHeaderCwd(file.header), resolvedCwd)))
541
- .map(({ path }) => ({ path, mtime: statSync(path).mtime }))
542
- .sort((a, b) => b.mtime.getTime() - a.mtime.getTime());
543
- return files[0]?.path || null;
544
- }
545
- catch {
546
- return null;
547
- }
548
- }
549
- function isMessageWithContent(message) {
550
- return typeof message.role === "string" && "content" in message;
551
- }
552
- function extractTextContent(message) {
553
- const content = message.content;
554
- if (typeof content === "string") {
555
- return content;
556
- }
557
- return content
558
- .filter((block) => block.type === "text")
559
- .map((block) => block.text)
560
- .join(" ");
561
- }
562
- function getLastActivityTime(entries) {
563
- let lastActivityTime;
564
- for (const entry of entries) {
565
- if (entry.type !== "message")
566
- continue;
567
- const message = entry.message;
568
- if (!isMessageWithContent(message))
569
- continue;
570
- if (message.role !== "user" && message.role !== "assistant")
571
- continue;
572
- const msgTimestamp = message.timestamp;
573
- if (typeof msgTimestamp === "number") {
574
- lastActivityTime = Math.max(lastActivityTime ?? 0, msgTimestamp);
575
- continue;
576
- }
577
- const entryTimestamp = entry.timestamp;
578
- if (typeof entryTimestamp === "string") {
579
- const t = new Date(entryTimestamp).getTime();
580
- if (!Number.isNaN(t)) {
581
- lastActivityTime = Math.max(lastActivityTime ?? 0, t);
582
- }
583
- }
584
- }
585
- return lastActivityTime;
586
- }
587
- function getSessionModifiedDate(entries, header, statsMtime) {
588
- const lastActivityTime = getLastActivityTime(entries);
589
- if (typeof lastActivityTime === "number" && lastActivityTime > 0) {
590
- return new Date(lastActivityTime);
591
- }
592
- const headerTime = typeof header.timestamp === "string" ? new Date(header.timestamp).getTime() : NaN;
593
- return !Number.isNaN(headerTime) ? new Date(headerTime) : statsMtime;
594
- }
595
- async function buildSessionInfo(filePath) {
596
- try {
597
- const content = await readFile(filePath, "utf8");
598
- const entries = [];
599
- const lines = content.trim().split("\n");
600
- for (const line of lines) {
601
- if (!line.trim())
602
- continue;
603
- try {
604
- entries.push(JSON.parse(line));
605
- }
606
- catch {
607
- // Skip malformed lines
608
- }
609
- }
610
- if (entries.length === 0)
611
- return null;
612
- const header = entries[0];
613
- if (header.type !== "session")
614
- return null;
615
- const stats = await stat(filePath);
616
- let messageCount = 0;
617
- let firstMessage = "";
618
- const allMessages = [];
619
- let name;
620
- for (const entry of entries) {
621
- // Extract session name (use latest, including explicit clears)
622
- if (entry.type === "session_info") {
623
- const infoEntry = entry;
624
- name = infoEntry.name?.trim() || undefined;
625
- }
626
- if (entry.type !== "message")
627
- continue;
628
- messageCount++;
629
- const message = entry.message;
630
- if (!isMessageWithContent(message))
631
- continue;
632
- if (message.role !== "user" && message.role !== "assistant")
633
- continue;
634
- const textContent = extractTextContent(message);
635
- if (!textContent)
636
- continue;
637
- allMessages.push(textContent);
638
- if (!firstMessage && message.role === "user") {
639
- firstMessage = textContent;
640
- }
641
- }
642
- const cwd = typeof header.cwd === "string" ? header.cwd : "";
643
- const parentSessionPath = header.parentSession;
644
- const modified = getSessionModifiedDate(entries, header, stats.mtime);
645
- return {
646
- path: filePath,
647
- id: header.id,
648
- cwd,
649
- name,
650
- parentSessionPath,
651
- created: new Date(header.timestamp),
652
- modified,
653
- messageCount,
654
- firstMessage: firstMessage || "(no messages)",
655
- allMessagesText: allMessages.join(" "),
656
- };
657
- }
658
- catch {
659
- return null;
660
- }
661
- }
662
- async function listSessionsFromDir(dir, onProgress, progressOffset = 0, progressTotal) {
663
- const sessions = [];
664
- if (!existsSync(dir)) {
665
- return sessions;
666
- }
667
- try {
668
- const dirEntries = await readdir(dir);
669
- const files = dirEntries.filter((f) => f.endsWith(".jsonl")).map((f) => join(dir, f));
670
- const total = progressTotal ?? files.length;
671
- let loaded = 0;
672
- const results = await Promise.all(files.map(async (file) => {
673
- const info = await buildSessionInfo(file);
674
- loaded++;
675
- onProgress?.(progressOffset + loaded, total);
676
- return info;
677
- }));
678
- for (const info of results) {
679
- if (info) {
680
- sessions.push(info);
681
- }
682
- }
683
- }
684
- catch {
685
- // Return empty list on error
686
- }
687
- return sessions;
688
- }
689
- /**
690
- * Manages conversation sessions as append-only trees stored in JSONL files.
691
- *
692
- * Each session entry has an id and parentId forming a tree structure. The "leaf"
693
- * pointer tracks the current position. Appending creates a child of the current leaf.
694
- * Branching moves the leaf to an earlier entry, allowing new branches without
695
- * modifying history.
696
- *
697
- * Use buildSessionContext() to get the resolved message list for the LLM, which
698
- * applies context-deletion filtering and follows the path from root to current leaf.
699
- */
700
- export class SessionManager {
701
- constructor(cwd, sessionDir, sessionFile, persist, newSessionOptions) {
702
- this.sessionId = "";
703
- this.flushed = false;
704
- this.fileEntries = [];
705
- this.byId = new Map();
706
- this.labelsById = new Map();
707
- this.labelTimestampsById = new Map();
708
- this.leafId = null;
709
- this.cwd = resolvePath(cwd);
710
- this.sessionDir = normalizePath(sessionDir);
711
- this.persist = persist;
712
- if (persist && this.sessionDir && !existsSync(this.sessionDir)) {
713
- mkdirSync(this.sessionDir, { recursive: true });
714
- }
715
- if (sessionFile) {
716
- this.setSessionFile(sessionFile);
717
- }
718
- else {
719
- this.newSession(newSessionOptions);
720
- }
721
- }
722
- /** Switch to a different session file (used for resume and branching) */
723
- setSessionFile(sessionFile) {
724
- this.sessionFile = resolvePath(sessionFile);
725
- if (existsSync(this.sessionFile)) {
726
- this.fileEntries = loadEntriesFromFile(this.sessionFile);
727
- // If file was empty or corrupted (no valid header), truncate and start fresh
728
- // to avoid appending messages without a session header (which breaks the session)
729
- if (this.fileEntries.length === 0) {
730
- const explicitPath = this.sessionFile;
731
- this.newSession();
732
- this.sessionFile = explicitPath;
733
- this._rewriteFile();
734
- this.flushed = true;
735
- return;
736
- }
737
- const header = this.fileEntries.find((e) => e.type === "session");
738
- this.sessionId = header?.id ?? createSessionId();
739
- if (migrateToCurrentVersion(this.fileEntries)) {
740
- this._rewriteFile();
741
- }
742
- this._buildIndex();
743
- this.flushed = true;
744
- }
745
- else {
746
- const explicitPath = this.sessionFile;
747
- this.newSession();
748
- this.sessionFile = explicitPath; // preserve explicit path from --session flag
749
- }
750
- }
751
- newSession(options) {
752
- if (options?.id !== undefined) {
753
- assertValidSessionId(options.id);
754
- }
755
- this.sessionId = options?.id ?? createSessionId();
756
- const timestamp = new Date().toISOString();
757
- const header = {
758
- type: "session",
759
- version: CURRENT_SESSION_VERSION,
760
- id: this.sessionId,
761
- timestamp,
762
- cwd: this.cwd,
763
- parentSession: options?.parentSession,
764
- };
765
- this.fileEntries = [header];
766
- this.byId.clear();
767
- this.labelsById.clear();
768
- this.leafId = null;
769
- this.flushed = false;
770
- if (this.persist) {
771
- const fileTimestamp = timestamp.replace(/[:.]/g, "-");
772
- this.sessionFile = join(this.getSessionDir(), `${fileTimestamp}_${this.sessionId}.jsonl`);
773
- }
774
- return this.sessionFile;
775
- }
776
- _buildIndex() {
777
- this.byId.clear();
778
- this.labelsById.clear();
779
- this.labelTimestampsById.clear();
780
- this.leafId = null;
781
- for (const entry of this.fileEntries) {
782
- if (entry.type === "session")
783
- continue;
784
- this.byId.set(entry.id, entry);
785
- this.leafId = entry.id;
786
- if (entry.type === "label") {
787
- if (entry.label) {
788
- this.labelsById.set(entry.targetId, entry.label);
789
- this.labelTimestampsById.set(entry.targetId, entry.timestamp);
790
- }
791
- else {
792
- this.labelsById.delete(entry.targetId);
793
- this.labelTimestampsById.delete(entry.targetId);
794
- }
795
- }
796
- }
797
- }
798
- _rewriteFile() {
799
- if (!this.persist || !this.sessionFile)
800
- return;
801
- const content = `${this.fileEntries.map((e) => JSON.stringify(e)).join("\n")}\n`;
802
- writeFileSync(this.sessionFile, content);
803
- }
804
- isPersisted() {
805
- return this.persist;
806
- }
807
- getCwd() {
808
- return this.cwd;
809
- }
810
- getSessionDir() {
811
- return this.sessionDir;
812
- }
813
- usesDefaultSessionDir() {
814
- return this.sessionDir === getDefaultSessionDirPath(this.cwd);
815
- }
816
- getSessionId() {
817
- return this.sessionId;
818
- }
819
- getSessionFile() {
820
- return this.sessionFile;
821
- }
822
- _persist(entry) {
823
- if (!this.persist || !this.sessionFile)
824
- return;
825
- const hasAssistant = this.fileEntries.some((e) => e.type === "message" && e.message.role === "assistant");
826
- if (!hasAssistant) {
827
- // Mark as not flushed so when assistant arrives, all entries get written
828
- this.flushed = false;
829
- return;
830
- }
831
- if (!this.flushed) {
832
- for (const e of this.fileEntries) {
833
- appendFileSync(this.sessionFile, `${JSON.stringify(e)}\n`);
834
- }
835
- this.flushed = true;
836
- }
837
- else {
838
- appendFileSync(this.sessionFile, `${JSON.stringify(entry)}\n`);
839
- }
840
- }
841
- _appendEntry(entry) {
842
- this.fileEntries.push(entry);
843
- this.byId.set(entry.id, entry);
844
- this.leafId = entry.id;
845
- this._persist(entry);
846
- }
847
- /** Append a message as child of current leaf, then advance leaf. Returns entry id.
848
- * Does not allow writing branch summaries or context compaction metadata as regular messages.
849
- * Reason: we want these to be top-level entries in the session, not message session entries,
850
- * so it is easier to find them.
851
- * Branch summaries are appended via appendBranchSummary(), and context compaction metadata via appendContextCompaction().
852
- */
853
- appendMessage(message) {
854
- const entry = {
855
- type: "message",
856
- id: generateId(this.byId),
857
- parentId: this.leafId,
858
- timestamp: new Date().toISOString(),
859
- message,
860
- };
861
- this._appendEntry(entry);
862
- return entry.id;
863
- }
864
- /** Append a thinking level change as child of current leaf, then advance leaf. Returns entry id. */
865
- appendThinkingLevelChange(thinkingLevel) {
866
- const entry = {
867
- type: "thinking_level_change",
868
- id: generateId(this.byId),
869
- parentId: this.leafId,
870
- timestamp: new Date().toISOString(),
871
- thinkingLevel,
872
- };
873
- this._appendEntry(entry);
874
- return entry.id;
875
- }
876
- /** Append a context window change as child of current leaf, then advance leaf. Returns entry id. */
877
- appendContextWindowChange(contextWindow) {
878
- const entry = {
879
- type: "context_window_change",
880
- id: generateId(this.byId),
881
- parentId: this.leafId,
882
- timestamp: new Date().toISOString(),
883
- contextWindow,
884
- };
885
- this._appendEntry(entry);
886
- return entry.id;
887
- }
888
- /** Append a model change as child of current leaf, then advance leaf. Returns entry id. */
889
- appendModelChange(provider, modelId) {
890
- const entry = {
891
- type: "model_change",
892
- id: generateId(this.byId),
893
- parentId: this.leafId,
894
- timestamp: new Date().toISOString(),
895
- provider,
896
- modelId,
897
- };
898
- this._appendEntry(entry);
899
- return entry.id;
900
- }
901
- /** Append logical deletion metadata for deletion-only context compaction. */
902
- appendContextCompaction(deletedTargets, protectedEntryIds, stats, backupPath) {
903
- const entry = {
904
- type: "context_compaction",
905
- id: generateId(this.byId),
906
- parentId: this.leafId,
907
- timestamp: new Date().toISOString(),
908
- promptVersion: 1,
909
- deletedTargets,
910
- protectedEntryIds,
911
- stats,
912
- backupPath,
913
- };
914
- this._appendEntry(entry);
915
- return entry.id;
916
- }
917
- /** Write a recoverable snapshot of the current session entries without mutating the active JSONL. */
918
- writeBackupSnapshot(label = "compact") {
919
- if (!this.persist || !this.sessionFile)
920
- return undefined;
921
- const safeLabel = label.replace(/[^a-z0-9_-]/gi, "-").replace(/-+/g, "-").replace(/^-|-$/g, "") || "backup";
922
- const timestamp = new Date().toISOString().replace(/[:.]/g, "-");
923
- const backupPath = `${this.sessionFile}.${timestamp}.${safeLabel}.bak`;
924
- const content = `${this.fileEntries.map((e) => JSON.stringify(e)).join("\n")}\n`;
925
- writeFileSync(backupPath, content);
926
- return backupPath;
927
- }
928
- /** Append a custom entry (for extensions) as child of current leaf, then advance leaf. Returns entry id. */
929
- appendCustomEntry(customType, data) {
930
- const entry = {
931
- type: "custom",
932
- customType,
933
- data,
934
- id: generateId(this.byId),
935
- parentId: this.leafId,
936
- timestamp: new Date().toISOString(),
937
- };
938
- this._appendEntry(entry);
939
- return entry.id;
940
- }
941
- /** Append a session info entry (e.g., display name). Returns entry id. */
942
- appendSessionInfo(name) {
943
- const entry = {
944
- type: "session_info",
945
- id: generateId(this.byId),
946
- parentId: this.leafId,
947
- timestamp: new Date().toISOString(),
948
- name: name.trim(),
949
- };
950
- this._appendEntry(entry);
951
- return entry.id;
952
- }
953
- /** Get the current session name from the latest session_info entry, if any. */
954
- getSessionName() {
955
- // Walk entries in reverse to find the latest session_info entry.
956
- // Empty names explicitly clear the session title.
957
- const entries = this.getEntries();
958
- for (let i = entries.length - 1; i >= 0; i--) {
959
- const entry = entries[i];
960
- if (entry.type === "session_info") {
961
- return entry.name?.trim() || undefined;
962
- }
963
- }
964
- return undefined;
965
- }
966
- /**
967
- * Append a custom message entry (for extensions) that participates in LLM context unless excluded.
968
- * @param customType Extension identifier for filtering on reload
969
- * @param content Message content (string or TextContent/ImageContent array)
970
- * @param display Whether to show in TUI (true = styled display, false = hidden)
971
- * @param details Optional extension-specific metadata (not sent to LLM)
972
- * @param excludeFromContext Whether to render/persist without adding to LLM context
973
- * @returns Entry id
974
- */
975
- appendCustomMessageEntry(customType, content, display, details, excludeFromContext) {
976
- const entry = {
977
- type: "custom_message",
978
- customType,
979
- content,
980
- display,
981
- details,
982
- ...(excludeFromContext === true ? { excludeFromContext: true } : {}),
983
- id: generateId(this.byId),
984
- parentId: this.leafId,
985
- timestamp: new Date().toISOString(),
986
- };
987
- this._appendEntry(entry);
988
- return entry.id;
989
- }
990
- // =========================================================================
991
- // Tree Traversal
992
- // =========================================================================
993
- getLeafId() {
994
- return this.leafId;
995
- }
996
- getLeafEntry() {
997
- return this.leafId ? this.byId.get(this.leafId) : undefined;
998
- }
999
- getEntry(id) {
1000
- return this.byId.get(id);
1001
- }
1002
- /**
1003
- * Get all direct children of an entry.
1004
- */
1005
- getChildren(parentId) {
1006
- const children = [];
1007
- for (const entry of this.byId.values()) {
1008
- if (entry.parentId === parentId) {
1009
- children.push(entry);
1010
- }
1011
- }
1012
- return children;
1013
- }
1014
- /**
1015
- * Get the label for an entry, if any.
1016
- */
1017
- getLabel(id) {
1018
- return this.labelsById.get(id);
1019
- }
1020
- /**
1021
- * Set or clear a label on an entry.
1022
- * Labels are user-defined markers for bookmarking/navigation.
1023
- * Pass undefined or empty string to clear the label.
1024
- */
1025
- appendLabelChange(targetId, label) {
1026
- if (!this.byId.has(targetId)) {
1027
- throw new Error(`Entry ${targetId} not found`);
1028
- }
1029
- const entry = {
1030
- type: "label",
1031
- id: generateId(this.byId),
1032
- parentId: this.leafId,
1033
- timestamp: new Date().toISOString(),
1034
- targetId,
1035
- label,
1036
- };
1037
- this._appendEntry(entry);
1038
- if (label) {
1039
- this.labelsById.set(targetId, label);
1040
- this.labelTimestampsById.set(targetId, entry.timestamp);
1041
- }
1042
- else {
1043
- this.labelsById.delete(targetId);
1044
- this.labelTimestampsById.delete(targetId);
1045
- }
1046
- return entry.id;
1047
- }
1048
- /**
1049
- * Walk from entry to root, returning all entries in path order.
1050
- * Includes all entry types (messages, compaction, model changes, etc.).
1051
- * Use buildSessionContext() to get the resolved messages for the LLM.
1052
- */
1053
- getBranch(fromId) {
1054
- const path = [];
1055
- const startId = fromId ?? this.leafId;
1056
- let current = startId ? this.byId.get(startId) : undefined;
1057
- while (current) {
1058
- path.unshift(current);
1059
- current = current.parentId ? this.byId.get(current.parentId) : undefined;
1060
- }
1061
- return path;
1062
- }
1063
- /**
1064
- * Build the session context (what gets sent to the LLM).
1065
- * Uses tree traversal from current leaf.
1066
- */
1067
- buildSessionContext() {
1068
- return buildSessionContext(this.getEntries(), this.leafId, this.byId);
1069
- }
1070
- /**
1071
- * Get session header.
1072
- */
1073
- getHeader() {
1074
- const h = this.fileEntries.find((e) => e.type === "session");
1075
- return h ? h : null;
1076
- }
1077
- /**
1078
- * Get all session entries (excludes header). Returns a shallow copy.
1079
- * The session is append-only: use appendXXX() to add entries, branch() to
1080
- * change the leaf pointer. Entries cannot be modified or deleted.
1081
- */
1082
- getEntries() {
1083
- return this.fileEntries.filter((e) => e.type !== "session");
1084
- }
1085
- /**
1086
- * Get the session as a tree structure. Returns a shallow defensive copy of all entries.
1087
- * A well-formed session has exactly one root (first entry with parentId === null).
1088
- * Orphaned entries (broken parent chain) are also returned as roots.
1089
- */
1090
- getTree() {
1091
- const entries = this.getEntries();
1092
- const nodeMap = new Map();
1093
- const roots = [];
1094
- // Create nodes with resolved labels
1095
- for (const entry of entries) {
1096
- const label = this.labelsById.get(entry.id);
1097
- const labelTimestamp = this.labelTimestampsById.get(entry.id);
1098
- nodeMap.set(entry.id, { entry, children: [], label, labelTimestamp });
1099
- }
1100
- // Build tree
1101
- for (const entry of entries) {
1102
- const node = nodeMap.get(entry.id);
1103
- if (entry.parentId === null || entry.parentId === entry.id) {
1104
- roots.push(node);
1105
- }
1106
- else {
1107
- const parent = nodeMap.get(entry.parentId);
1108
- if (parent) {
1109
- parent.children.push(node);
1110
- }
1111
- else {
1112
- // Orphan - treat as root
1113
- roots.push(node);
1114
- }
1115
- }
1116
- }
1117
- // Sort children by timestamp (oldest first, newest at bottom)
1118
- // Use iterative approach to avoid stack overflow on deep trees
1119
- const stack = [...roots];
1120
- while (stack.length > 0) {
1121
- const node = stack.pop();
1122
- node.children.sort((a, b) => new Date(a.entry.timestamp).getTime() - new Date(b.entry.timestamp).getTime());
1123
- stack.push(...node.children);
1124
- }
1125
- return roots;
1126
- }
1127
- // =========================================================================
1128
- // Branching
1129
- // =========================================================================
1130
- /**
1131
- * Start a new branch from an earlier entry.
1132
- * Moves the leaf pointer to the specified entry. The next appendXXX() call
1133
- * will create a child of that entry, forming a new branch. Existing entries
1134
- * are not modified or deleted.
1135
- */
1136
- branch(branchFromId) {
1137
- if (!this.byId.has(branchFromId)) {
1138
- throw new Error(`Entry ${branchFromId} not found`);
1139
- }
1140
- this.leafId = branchFromId;
1141
- }
1142
- /**
1143
- * Reset the leaf pointer to null (before any entries).
1144
- * The next appendXXX() call will create a new root entry (parentId = null).
1145
- * Use this when navigating to re-edit the first user message.
1146
- */
1147
- resetLeaf() {
1148
- this.leafId = null;
1149
- }
1150
- /**
1151
- * Start a new branch with a summary of the abandoned path.
1152
- * Same as branch(), but also appends a branch_summary entry that captures
1153
- * context from the abandoned conversation path.
1154
- */
1155
- branchWithSummary(branchFromId, summary, details, fromHook) {
1156
- if (branchFromId !== null && !this.byId.has(branchFromId)) {
1157
- throw new Error(`Entry ${branchFromId} not found`);
1158
- }
1159
- this.leafId = branchFromId;
1160
- const entry = {
1161
- type: "branch_summary",
1162
- id: generateId(this.byId),
1163
- parentId: branchFromId,
1164
- timestamp: new Date().toISOString(),
1165
- fromId: branchFromId ?? "root",
1166
- summary,
1167
- details,
1168
- fromHook,
1169
- };
1170
- this._appendEntry(entry);
1171
- return entry.id;
1172
- }
1173
- /**
1174
- * Create a new session file containing only the path from root to the specified leaf.
1175
- * Useful for extracting a single conversation path from a branched session.
1176
- * Returns the new session file path, or undefined if not persisting.
1177
- */
1178
- createBranchedSession(leafId) {
1179
- const previousSessionFile = this.sessionFile;
1180
- const path = this.getBranch(leafId);
1181
- if (path.length === 0) {
1182
- throw new Error(`Entry ${leafId} not found`);
1183
- }
1184
- // Filter out LabelEntry from path - we'll recreate them from the resolved map
1185
- const pathWithoutLabels = path.filter((e) => e.type !== "label");
1186
- const newSessionId = createSessionId();
1187
- const timestamp = new Date().toISOString();
1188
- const fileTimestamp = timestamp.replace(/[:.]/g, "-");
1189
- const newSessionFile = join(this.getSessionDir(), `${fileTimestamp}_${newSessionId}.jsonl`);
1190
- const header = {
1191
- type: "session",
1192
- version: CURRENT_SESSION_VERSION,
1193
- id: newSessionId,
1194
- timestamp,
1195
- cwd: this.cwd,
1196
- parentSession: this.persist ? previousSessionFile : undefined,
1197
- };
1198
- // Collect labels for entries in the path
1199
- const pathEntryIds = new Set(pathWithoutLabels.map((e) => e.id));
1200
- const labelsToWrite = [];
1201
- for (const [targetId, label] of this.labelsById) {
1202
- if (pathEntryIds.has(targetId)) {
1203
- labelsToWrite.push({ targetId, label, timestamp: this.labelTimestampsById.get(targetId) });
1204
- }
1205
- }
1206
- if (this.persist) {
1207
- // Build label entries
1208
- const lastEntryId = pathWithoutLabels[pathWithoutLabels.length - 1]?.id || null;
1209
- let parentId = lastEntryId;
1210
- const labelEntries = [];
1211
- for (const { targetId, label, timestamp: labelTimestamp } of labelsToWrite) {
1212
- const labelEntry = {
1213
- type: "label",
1214
- id: generateId(new Set(pathEntryIds)),
1215
- parentId,
1216
- timestamp: labelTimestamp,
1217
- targetId,
1218
- label,
1219
- };
1220
- pathEntryIds.add(labelEntry.id);
1221
- labelEntries.push(labelEntry);
1222
- parentId = labelEntry.id;
1223
- }
1224
- this.fileEntries = [header, ...pathWithoutLabels, ...labelEntries];
1225
- this.sessionId = newSessionId;
1226
- this.sessionFile = newSessionFile;
1227
- this._buildIndex();
1228
- // Only write the file now if it contains an assistant message.
1229
- // Otherwise defer to _persist(), which creates the file on the
1230
- // first assistant response, matching the newSession() contract
1231
- // and avoiding the duplicate-header bug when _persist()'s
1232
- // no-assistant guard later resets flushed to false.
1233
- const hasAssistant = this.fileEntries.some((e) => e.type === "message" && e.message.role === "assistant");
1234
- if (hasAssistant) {
1235
- this._rewriteFile();
1236
- this.flushed = true;
1237
- }
1238
- else {
1239
- this.flushed = false;
1240
- }
1241
- return newSessionFile;
1242
- }
1243
- // In-memory mode: replace current session with the path + labels
1244
- const labelEntries = [];
1245
- let parentId = pathWithoutLabels[pathWithoutLabels.length - 1]?.id || null;
1246
- for (const { targetId, label, timestamp: labelTimestamp } of labelsToWrite) {
1247
- const labelEntry = {
1248
- type: "label",
1249
- id: generateId(new Set([...pathEntryIds, ...labelEntries.map((e) => e.id)])),
1250
- parentId,
1251
- timestamp: labelTimestamp,
1252
- targetId,
1253
- label,
1254
- };
1255
- labelEntries.push(labelEntry);
1256
- parentId = labelEntry.id;
1257
- }
1258
- this.fileEntries = [header, ...pathWithoutLabels, ...labelEntries];
1259
- this.sessionId = newSessionId;
1260
- this._buildIndex();
1261
- return undefined;
1262
- }
1263
- /**
1264
- * Create a new session.
1265
- * @param cwd Working directory (stored in session header)
1266
- * @param sessionDir Optional session directory. If omitted, uses default (~/.atomic/agent/sessions/<encoded-cwd>/).
1267
- */
1268
- static create(cwd, sessionDir, options) {
1269
- const dir = sessionDir ? normalizePath(sessionDir) : getDefaultSessionDir(cwd);
1270
- return new SessionManager(cwd, dir, undefined, true, options);
1271
- }
1272
- /**
1273
- * Open a specific session file.
1274
- * @param path Path to session file
1275
- * @param sessionDir Optional session directory for /new or /branch. If omitted, derives from file's parent.
1276
- * @param cwdOverride Optional cwd override instead of the session header cwd.
1277
- */
1278
- static open(path, sessionDir, cwdOverride) {
1279
- const resolvedPath = resolvePath(path);
1280
- // Extract cwd from session header if possible, otherwise use process.cwd()
1281
- const entries = loadEntriesFromFile(resolvedPath);
1282
- const header = entries.find((e) => e.type === "session");
1283
- const cwd = cwdOverride ?? header?.cwd ?? process.cwd();
1284
- // If no sessionDir provided, derive from file's parent directory
1285
- const dir = sessionDir ? normalizePath(sessionDir) : resolve(resolvedPath, "..");
1286
- return new SessionManager(cwd, dir, resolvedPath, true);
1287
- }
1288
- /**
1289
- * Continue the most recent session, or create new if none.
1290
- * @param cwd Working directory
1291
- * @param sessionDir Optional session directory. If omitted, uses default (~/.atomic/agent/sessions/<encoded-cwd>/).
1292
- */
1293
- static continueRecent(cwd, sessionDir) {
1294
- const dir = sessionDir ? normalizePath(sessionDir) : getDefaultSessionDir(cwd);
1295
- const filterCwd = sessionDir !== undefined && dir !== getDefaultSessionDirPath(cwd);
1296
- const mostRecent = findMostRecentSession(dir, filterCwd ? cwd : undefined);
1297
- if (mostRecent) {
1298
- return new SessionManager(cwd, dir, mostRecent, true);
1299
- }
1300
- return new SessionManager(cwd, dir, undefined, true);
1301
- }
1302
- /** Create an in-memory session (no file persistence) */
1303
- static inMemory(cwd = process.cwd()) {
1304
- return new SessionManager(cwd, "", undefined, false);
1305
- }
1306
- /**
1307
- * Fork a session from another project directory into the current project.
1308
- * Creates a new session in the target cwd with the full history from the source session.
1309
- * @param sourcePath Path to the source session file
1310
- * @param targetCwd Target working directory (where the new session will be stored)
1311
- * @param sessionDir Optional session directory. If omitted, uses default for targetCwd.
1312
- */
1313
- static forkFrom(sourcePath, targetCwd, sessionDir, options) {
1314
- const resolvedSourcePath = resolvePath(sourcePath);
1315
- const resolvedTargetCwd = resolvePath(targetCwd);
1316
- const sourceEntries = loadEntriesFromFile(resolvedSourcePath);
1317
- if (sourceEntries.length === 0) {
1318
- throw new Error(`Cannot fork: source session file is empty or invalid: ${resolvedSourcePath}`);
1319
- }
1320
- const sourceHeader = sourceEntries.find((e) => e.type === "session");
1321
- if (!sourceHeader) {
1322
- throw new Error(`Cannot fork: source session has no header: ${resolvedSourcePath}`);
1323
- }
1324
- const dir = sessionDir ? normalizePath(sessionDir) : getDefaultSessionDir(resolvedTargetCwd);
1325
- if (!existsSync(dir)) {
1326
- mkdirSync(dir, { recursive: true });
1327
- }
1328
- // Create new session file with new ID but forked content
1329
- if (options?.id !== undefined) {
1330
- assertValidSessionId(options.id);
1331
- }
1332
- const newSessionId = options?.id ?? createSessionId();
1333
- const timestamp = new Date().toISOString();
1334
- const fileTimestamp = timestamp.replace(/[:.]/g, "-");
1335
- const newSessionFile = join(dir, `${fileTimestamp}_${newSessionId}.jsonl`);
1336
- // Write new header pointing to source as parent, with updated cwd
1337
- const newHeader = {
1338
- type: "session",
1339
- version: CURRENT_SESSION_VERSION,
1340
- id: newSessionId,
1341
- timestamp,
1342
- cwd: resolvedTargetCwd,
1343
- parentSession: resolvedSourcePath,
1344
- };
1345
- appendFileSync(newSessionFile, `${JSON.stringify(newHeader)}\n`);
1346
- // Copy all non-header entries from source
1347
- for (const entry of sourceEntries) {
1348
- if (entry.type !== "session") {
1349
- appendFileSync(newSessionFile, `${JSON.stringify(entry)}\n`);
1350
- }
1351
- }
1352
- return new SessionManager(resolvedTargetCwd, dir, newSessionFile, true);
1353
- }
1354
- /**
1355
- * List all sessions for a directory.
1356
- * @param cwd Working directory (used to compute default session directory)
1357
- * @param sessionDir Optional session directory. If omitted, uses default (~/.atomic/agent/sessions/<encoded-cwd>/).
1358
- * @param onProgress Optional callback for progress updates (loaded, total)
1359
- */
1360
- static async list(cwd, sessionDir, onProgress) {
1361
- const dir = sessionDir ? normalizePath(sessionDir) : getDefaultSessionDir(cwd);
1362
- const filterCwd = sessionDir !== undefined && dir !== getDefaultSessionDirPath(cwd);
1363
- const resolvedCwd = resolvePath(cwd);
1364
- const sessions = (await listSessionsFromDir(dir, onProgress)).filter((session) => !filterCwd || sessionCwdMatches(session.cwd, resolvedCwd));
1365
- sessions.sort((a, b) => b.modified.getTime() - a.modified.getTime());
1366
- return sessions;
1367
- }
1368
- static async listAll(sessionDirOrOnProgress, onProgress) {
1369
- const customSessionDir = typeof sessionDirOrOnProgress === "string" ? normalizePath(sessionDirOrOnProgress) : undefined;
1370
- const progress = typeof sessionDirOrOnProgress === "function" ? sessionDirOrOnProgress : onProgress;
1371
- if (customSessionDir) {
1372
- const sessions = await listSessionsFromDir(customSessionDir, progress);
1373
- sessions.sort((a, b) => b.modified.getTime() - a.modified.getTime());
1374
- return sessions;
1375
- }
1376
- const sessionsDir = getSessionsDir();
1377
- try {
1378
- if (!existsSync(sessionsDir)) {
1379
- return [];
1380
- }
1381
- const entries = await readdir(sessionsDir, { withFileTypes: true });
1382
- const dirs = entries.filter((e) => e.isDirectory()).map((e) => join(sessionsDir, e.name));
1383
- // Count total files first for accurate progress
1384
- let totalFiles = 0;
1385
- const dirFiles = [];
1386
- for (const dir of dirs) {
1387
- try {
1388
- const files = (await readdir(dir)).filter((f) => f.endsWith(".jsonl"));
1389
- dirFiles.push(files.map((f) => join(dir, f)));
1390
- totalFiles += files.length;
1391
- }
1392
- catch {
1393
- dirFiles.push([]);
1394
- }
1395
- }
1396
- // Process all files with progress tracking
1397
- let loaded = 0;
1398
- const sessions = [];
1399
- const allFiles = dirFiles.flat();
1400
- const results = await Promise.all(allFiles.map(async (file) => {
1401
- const info = await buildSessionInfo(file);
1402
- loaded++;
1403
- progress?.(loaded, totalFiles);
1404
- return info;
1405
- }));
1406
- for (const info of results) {
1407
- if (info) {
1408
- sessions.push(info);
1409
- }
1410
- }
1411
- sessions.sort((a, b) => b.modified.getTime() - a.modified.getTime());
1412
- return sessions;
1413
- }
1414
- catch {
1415
- return [];
1416
- }
1417
- }
1418
- }
1
+ export { SessionManager } from "./session-manager-core.js";
2
+ export { buildContextDeletionFilteredPath, buildContextDeletionFilters, buildEffectiveContextDeletionFilters, buildSessionContext, getLatestCompactionBoundaryEntry, } from "./session-manager-history.js";
3
+ export { migrateSessionEntries, parseSessionEntries } from "./session-manager-migrations.js";
4
+ export { getDefaultSessionDir } from "./session-manager-paths.js";
5
+ export { findMostRecentSession, loadEntriesFromFile } from "./session-manager-storage.js";
6
+ export { assertValidSessionId } from "./session-manager-validation.js";
7
+ export { CURRENT_SESSION_VERSION } from "./session-manager-types.js";
1419
8
  //# sourceMappingURL=session-manager.js.map