@bastani/atomic 0.8.31-alpha.5 → 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 (1357) hide show
  1. package/CHANGELOG.md +5 -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 +4 -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-runner.ts +499 -0
  196. package/dist/builtin/workflows/builtin/ralph.ts +7 -979
  197. package/dist/builtin/workflows/package.json +1 -1
  198. package/dist/builtin/workflows/skills/impeccable/scripts/detector/detect-antipatterns-browser.js +2 -2
  199. package/dist/builtin/workflows/skills/impeccable/scripts/detector/engines/regex/detect-text.mjs +2 -2
  200. package/dist/builtin/workflows/skills/impeccable/scripts/detector/rules/checks.mjs +2 -2
  201. package/dist/builtin/workflows/skills/impeccable/scripts/detector/shared/page.mjs +8 -1
  202. package/dist/builtin/workflows/skills/impeccable/scripts/live-accept.mjs +13 -15
  203. package/dist/builtin/workflows/skills/impeccable/scripts/live-manual-edit-evidence.mjs +2 -2
  204. package/dist/builtin/workflows/skills/impeccable/scripts/live-server.mjs +9 -0
  205. package/dist/builtin/workflows/src/extension/atomic-stage-session.ts +186 -0
  206. package/dist/builtin/workflows/src/extension/config-file-loader.ts +152 -0
  207. package/dist/builtin/workflows/src/extension/config-loader.ts +2 -167
  208. package/dist/builtin/workflows/src/extension/discovery-loaders.ts +115 -0
  209. package/dist/builtin/workflows/src/extension/discovery.ts +3 -117
  210. package/dist/builtin/workflows/src/extension/extension-factory.ts +120 -0
  211. package/dist/builtin/workflows/src/extension/extension-lifecycle.ts +109 -0
  212. package/dist/builtin/workflows/src/extension/extension-runtime-state.ts +270 -0
  213. package/dist/builtin/workflows/src/extension/index.ts +42 -4166
  214. package/dist/builtin/workflows/src/extension/public-types.ts +295 -0
  215. package/dist/builtin/workflows/src/extension/render-component.ts +14 -0
  216. package/dist/builtin/workflows/src/extension/runtime-direct.ts +96 -0
  217. package/dist/builtin/workflows/src/extension/runtime.ts +1 -92
  218. package/dist/builtin/workflows/src/extension/ui-surface.ts +286 -0
  219. package/dist/builtin/workflows/src/extension/wiring.ts +6 -475
  220. package/dist/builtin/workflows/src/extension/workflow-command-completions.ts +111 -0
  221. package/dist/builtin/workflows/src/extension/workflow-command-registration.ts +213 -0
  222. package/dist/builtin/workflows/src/extension/workflow-command-surfaces.ts +81 -0
  223. package/dist/builtin/workflows/src/extension/workflow-command-utils.ts +181 -0
  224. package/dist/builtin/workflows/src/extension/workflow-policy.ts +15 -0
  225. package/dist/builtin/workflows/src/extension/workflow-ports.ts +41 -0
  226. package/dist/builtin/workflows/src/extension/workflow-prompts.ts +23 -0
  227. package/dist/builtin/workflows/src/extension/workflow-run-control-command.ts +286 -0
  228. package/dist/builtin/workflows/src/extension/workflow-schema.ts +1 -1
  229. package/dist/builtin/workflows/src/extension/workflow-stage-results.ts +264 -0
  230. package/dist/builtin/workflows/src/extension/workflow-targets.ts +181 -0
  231. package/dist/builtin/workflows/src/extension/workflow-tool-content.ts +175 -0
  232. package/dist/builtin/workflows/src/extension/workflow-tool-control.ts +205 -0
  233. package/dist/builtin/workflows/src/extension/workflow-tool-helpers.ts +66 -0
  234. package/dist/builtin/workflows/src/extension/workflow-tool-inspection.ts +164 -0
  235. package/dist/builtin/workflows/src/extension/workflow-tool-registration.ts +54 -0
  236. package/dist/builtin/workflows/src/extension/workflow-tool-send.ts +164 -0
  237. package/dist/builtin/workflows/src/extension/workflow-tool.ts +102 -0
  238. package/dist/builtin/workflows/src/runs/foreground/executor-abort.ts +431 -0
  239. package/dist/builtin/workflows/src/runs/foreground/executor-child-boundary.ts +232 -0
  240. package/dist/builtin/workflows/src/runs/foreground/executor-child-helpers.ts +74 -0
  241. package/dist/builtin/workflows/src/runs/foreground/executor-child-workflow.ts +158 -0
  242. package/dist/builtin/workflows/src/runs/foreground/executor-continuation.ts +167 -0
  243. package/dist/builtin/workflows/src/runs/foreground/executor-direct-helpers.ts +450 -0
  244. package/dist/builtin/workflows/src/runs/foreground/executor-direct.ts +233 -0
  245. package/dist/builtin/workflows/src/runs/foreground/executor-exit-manager.ts +195 -0
  246. package/dist/builtin/workflows/src/runs/foreground/executor-hil.ts +368 -0
  247. package/dist/builtin/workflows/src/runs/foreground/executor-inputs.ts +83 -0
  248. package/dist/builtin/workflows/src/runs/foreground/executor-lifecycle.ts +441 -0
  249. package/dist/builtin/workflows/src/runs/foreground/executor-outputs.ts +160 -0
  250. package/dist/builtin/workflows/src/runs/foreground/executor-prompt-nodes.ts +274 -0
  251. package/dist/builtin/workflows/src/runs/foreground/executor-run-finalizers.ts +122 -0
  252. package/dist/builtin/workflows/src/runs/foreground/executor-run.ts +359 -0
  253. package/dist/builtin/workflows/src/runs/foreground/executor-scheduler.ts +204 -0
  254. package/dist/builtin/workflows/src/runs/foreground/executor-stage-call.ts +197 -0
  255. package/dist/builtin/workflows/src/runs/foreground/executor-stage-context.ts +120 -0
  256. package/dist/builtin/workflows/src/runs/foreground/executor-stage-control.ts +126 -0
  257. package/dist/builtin/workflows/src/runs/foreground/executor-stage-factory.ts +351 -0
  258. package/dist/builtin/workflows/src/runs/foreground/executor-stage-replay.ts +134 -0
  259. package/dist/builtin/workflows/src/runs/foreground/executor-stage-types.ts +54 -0
  260. package/dist/builtin/workflows/src/runs/foreground/executor-task-context.ts +132 -0
  261. package/dist/builtin/workflows/src/runs/foreground/executor-task-prompts.ts +293 -0
  262. package/dist/builtin/workflows/src/runs/foreground/executor-types.ts +109 -0
  263. package/dist/builtin/workflows/src/runs/foreground/executor.ts +19 -5354
  264. package/dist/builtin/workflows/src/runs/foreground/stage-runner-context.ts +219 -0
  265. package/dist/builtin/workflows/src/runs/foreground/stage-runner-controller.ts +500 -0
  266. package/dist/builtin/workflows/src/runs/foreground/stage-runner-messages.ts +129 -0
  267. package/dist/builtin/workflows/src/runs/foreground/stage-runner-options.ts +53 -0
  268. package/dist/builtin/workflows/src/runs/foreground/stage-runner-output.ts +146 -0
  269. package/dist/builtin/workflows/src/runs/foreground/stage-runner-session.ts +55 -0
  270. package/dist/builtin/workflows/src/runs/foreground/stage-runner-structured-output.ts +82 -0
  271. package/dist/builtin/workflows/src/runs/foreground/stage-runner-types.ts +141 -0
  272. package/dist/builtin/workflows/src/runs/foreground/stage-runner.ts +13 -1355
  273. package/dist/builtin/workflows/src/runs/shared/model-fallback-candidates.ts +453 -0
  274. package/dist/builtin/workflows/src/runs/shared/model-fallback-failures.ts +442 -0
  275. package/dist/builtin/workflows/src/runs/shared/model-fallback.ts +2 -836
  276. package/dist/builtin/workflows/src/runs/shared/worktree-diff.ts +165 -0
  277. package/dist/builtin/workflows/src/runs/shared/worktree-git.ts +220 -0
  278. package/dist/builtin/workflows/src/runs/shared/worktree-setup.ts +335 -0
  279. package/dist/builtin/workflows/src/runs/shared/worktree-types.ts +92 -0
  280. package/dist/builtin/workflows/src/runs/shared/worktree.ts +18 -791
  281. package/dist/builtin/workflows/src/shared/authoring-contract-stage.d.ts +365 -0
  282. package/dist/builtin/workflows/src/shared/authoring-contract-stage.ts +425 -0
  283. package/dist/builtin/workflows/src/shared/authoring-contract-ui.d.ts +236 -0
  284. package/dist/builtin/workflows/src/shared/authoring-contract-ui.ts +354 -0
  285. package/dist/builtin/workflows/src/shared/authoring-contract.d.ts +5 -598
  286. package/dist/builtin/workflows/src/shared/persistence-restore-helpers.ts +428 -0
  287. package/dist/builtin/workflows/src/shared/persistence-restore.ts +9 -431
  288. package/dist/builtin/workflows/src/shared/store-factory.ts +16 -0
  289. package/dist/builtin/workflows/src/shared/store-internal.ts +219 -0
  290. package/dist/builtin/workflows/src/shared/store-prompt-methods.ts +219 -0
  291. package/dist/builtin/workflows/src/shared/store-public-types.ts +215 -0
  292. package/dist/builtin/workflows/src/shared/store-run-methods.ts +223 -0
  293. package/dist/builtin/workflows/src/shared/store-stage-methods.ts +305 -0
  294. package/dist/builtin/workflows/src/shared/store.ts +11 -1138
  295. package/dist/builtin/workflows/src/shared/workflow-failures-classifier.ts +266 -0
  296. package/dist/builtin/workflows/src/shared/workflow-failures-contract.ts +75 -0
  297. package/dist/builtin/workflows/src/shared/workflow-failures-decisions.ts +477 -0
  298. package/dist/builtin/workflows/src/shared/workflow-failures-signals.ts +248 -0
  299. package/dist/builtin/workflows/src/shared/workflow-failures.ts +13 -1001
  300. package/dist/builtin/workflows/src/tui/chat-surface.ts +0 -66
  301. package/dist/builtin/workflows/src/tui/graph-view-constants.ts +45 -0
  302. package/dist/builtin/workflows/src/tui/graph-view-graph-render.ts +161 -0
  303. package/dist/builtin/workflows/src/tui/graph-view-input.ts +333 -0
  304. package/dist/builtin/workflows/src/tui/graph-view-render-helpers.ts +336 -0
  305. package/dist/builtin/workflows/src/tui/graph-view-render.ts +194 -0
  306. package/dist/builtin/workflows/src/tui/graph-view-state.ts +306 -0
  307. package/dist/builtin/workflows/src/tui/graph-view-types.ts +70 -0
  308. package/dist/builtin/workflows/src/tui/graph-view.ts +4 -1386
  309. package/dist/builtin/workflows/src/tui/inline-form-editor-text.ts +121 -0
  310. package/dist/builtin/workflows/src/tui/inline-form-editor.ts +11 -223
  311. package/dist/builtin/workflows/src/tui/inputs-picker-editing.ts +151 -0
  312. package/dist/builtin/workflows/src/tui/inputs-picker-input.ts +305 -0
  313. package/dist/builtin/workflows/src/tui/inputs-picker-render.ts +300 -0
  314. package/dist/builtin/workflows/src/tui/inputs-picker-types.ts +190 -0
  315. package/dist/builtin/workflows/src/tui/inputs-picker.ts +19 -997
  316. package/dist/builtin/workflows/src/tui/prompt-card-input.ts +226 -0
  317. package/dist/builtin/workflows/src/tui/prompt-card-render.ts +373 -0
  318. package/dist/builtin/workflows/src/tui/prompt-card-select.ts +116 -0
  319. package/dist/builtin/workflows/src/tui/prompt-card-state.ts +61 -0
  320. package/dist/builtin/workflows/src/tui/prompt-card-text.ts +129 -0
  321. package/dist/builtin/workflows/src/tui/prompt-card.ts +8 -910
  322. package/dist/builtin/workflows/src/tui/stage-chat-view-archive-history.ts +315 -0
  323. package/dist/builtin/workflows/src/tui/stage-chat-view-custom-ui.ts +127 -0
  324. package/dist/builtin/workflows/src/tui/stage-chat-view-footer-status.ts +187 -0
  325. package/dist/builtin/workflows/src/tui/stage-chat-view-input.ts +222 -0
  326. package/dist/builtin/workflows/src/tui/stage-chat-view-render-helpers.ts +152 -0
  327. package/dist/builtin/workflows/src/tui/stage-chat-view-state.ts +464 -0
  328. package/dist/builtin/workflows/src/tui/stage-chat-view-transcript.ts +242 -0
  329. package/dist/builtin/workflows/src/tui/stage-chat-view-types.ts +151 -0
  330. package/dist/builtin/workflows/src/tui/stage-chat-view.ts +141 -1777
  331. package/dist/builtin/workflows/src/tui/workflow-attach-pane-types.ts +85 -0
  332. package/dist/builtin/workflows/src/tui/workflow-attach-pane.ts +1 -129
  333. package/dist/config-self-update.d.ts +21 -0
  334. package/dist/config-self-update.d.ts.map +1 -0
  335. package/dist/config-self-update.js +265 -0
  336. package/dist/config-self-update.js.map +1 -0
  337. package/dist/config.d.ts +3 -12
  338. package/dist/config.d.ts.map +1 -1
  339. package/dist/config.js +15 -252
  340. package/dist/config.js.map +1 -1
  341. package/dist/core/agent-session-accessors.d.ts +3 -0
  342. package/dist/core/agent-session-accessors.d.ts.map +1 -0
  343. package/dist/core/agent-session-accessors.js +36 -0
  344. package/dist/core/agent-session-accessors.js.map +1 -0
  345. package/dist/core/agent-session-auto-compaction.d.ts +32 -0
  346. package/dist/core/agent-session-auto-compaction.d.ts.map +1 -0
  347. package/dist/core/agent-session-auto-compaction.js +214 -0
  348. package/dist/core/agent-session-auto-compaction.js.map +1 -0
  349. package/dist/core/agent-session-bash.d.ts +30 -0
  350. package/dist/core/agent-session-bash.d.ts.map +1 -0
  351. package/dist/core/agent-session-bash.js +84 -0
  352. package/dist/core/agent-session-bash.js.map +1 -0
  353. package/dist/core/agent-session-compaction.d.ts +44 -0
  354. package/dist/core/agent-session-compaction.d.ts.map +1 -0
  355. package/dist/core/agent-session-compaction.js +282 -0
  356. package/dist/core/agent-session-compaction.js.map +1 -0
  357. package/dist/core/agent-session-events.d.ts +65 -0
  358. package/dist/core/agent-session-events.d.ts.map +1 -0
  359. package/dist/core/agent-session-events.js +373 -0
  360. package/dist/core/agent-session-events.js.map +1 -0
  361. package/dist/core/agent-session-export.d.ts +42 -0
  362. package/dist/core/agent-session-export.d.ts.map +1 -0
  363. package/dist/core/agent-session-export.js +199 -0
  364. package/dist/core/agent-session-export.js.map +1 -0
  365. package/dist/core/agent-session-extension-bindings.d.ts +37 -0
  366. package/dist/core/agent-session-extension-bindings.d.ts.map +1 -0
  367. package/dist/core/agent-session-extension-bindings.js +231 -0
  368. package/dist/core/agent-session-extension-bindings.js.map +1 -0
  369. package/dist/core/agent-session-message-queue.d.ts +85 -0
  370. package/dist/core/agent-session-message-queue.d.ts.map +1 -0
  371. package/dist/core/agent-session-message-queue.js +264 -0
  372. package/dist/core/agent-session-message-queue.js.map +1 -0
  373. package/dist/core/agent-session-methods.d.ts +302 -0
  374. package/dist/core/agent-session-methods.d.ts.map +1 -0
  375. package/dist/core/agent-session-methods.js +2 -0
  376. package/dist/core/agent-session-methods.js.map +1 -0
  377. package/dist/core/agent-session-models.d.ts +111 -0
  378. package/dist/core/agent-session-models.d.ts.map +1 -0
  379. package/dist/core/agent-session-models.js +368 -0
  380. package/dist/core/agent-session-models.js.map +1 -0
  381. package/dist/core/agent-session-prompt.d.ts +61 -0
  382. package/dist/core/agent-session-prompt.d.ts.map +1 -0
  383. package/dist/core/agent-session-prompt.js +330 -0
  384. package/dist/core/agent-session-prompt.js.map +1 -0
  385. package/dist/core/agent-session-retry.d.ts +62 -0
  386. package/dist/core/agent-session-retry.d.ts.map +1 -0
  387. package/dist/core/agent-session-retry.js +202 -0
  388. package/dist/core/agent-session-retry.js.map +1 -0
  389. package/dist/core/agent-session-skill-block.d.ts +13 -0
  390. package/dist/core/agent-session-skill-block.d.ts.map +1 -0
  391. package/dist/core/agent-session-skill-block.js +37 -0
  392. package/dist/core/agent-session-skill-block.js.map +1 -0
  393. package/dist/core/agent-session-state.d.ts +48 -0
  394. package/dist/core/agent-session-state.d.ts.map +1 -0
  395. package/dist/core/agent-session-state.js +129 -0
  396. package/dist/core/agent-session-state.js.map +1 -0
  397. package/dist/core/agent-session-tool-hooks.d.ts +7 -0
  398. package/dist/core/agent-session-tool-hooks.d.ts.map +1 -0
  399. package/dist/core/agent-session-tool-hooks.js +72 -0
  400. package/dist/core/agent-session-tool-hooks.js.map +1 -0
  401. package/dist/core/agent-session-tool-registry.d.ts +15 -0
  402. package/dist/core/agent-session-tool-registry.d.ts.map +1 -0
  403. package/dist/core/agent-session-tool-registry.js +151 -0
  404. package/dist/core/agent-session-tool-registry.js.map +1 -0
  405. package/dist/core/agent-session-tree.d.ts +46 -0
  406. package/dist/core/agent-session-tree.d.ts.map +1 -0
  407. package/dist/core/agent-session-tree.js +217 -0
  408. package/dist/core/agent-session-tree.js.map +1 -0
  409. package/dist/core/agent-session-types.d.ts +159 -0
  410. package/dist/core/agent-session-types.d.ts.map +1 -0
  411. package/dist/core/agent-session-types.js +41 -0
  412. package/dist/core/agent-session-types.js.map +1 -0
  413. package/dist/core/agent-session.d.ts +68 -688
  414. package/dist/core/agent-session.d.ts.map +1 -1
  415. package/dist/core/agent-session.js +26 -3152
  416. package/dist/core/agent-session.js.map +1 -1
  417. package/dist/core/auth-storage-backends.d.ts +49 -0
  418. package/dist/core/auth-storage-backends.d.ts.map +1 -0
  419. package/dist/core/auth-storage-backends.js +185 -0
  420. package/dist/core/auth-storage-backends.js.map +1 -0
  421. package/dist/core/auth-storage.d.ts +2 -49
  422. package/dist/core/auth-storage.d.ts.map +1 -1
  423. package/dist/core/auth-storage.js +3 -183
  424. package/dist/core/auth-storage.js.map +1 -1
  425. package/dist/core/compaction/context-compaction-metrics.d.ts +16 -0
  426. package/dist/core/compaction/context-compaction-metrics.d.ts.map +1 -0
  427. package/dist/core/compaction/context-compaction-metrics.js +58 -0
  428. package/dist/core/compaction/context-compaction-metrics.js.map +1 -0
  429. package/dist/core/compaction/context-compaction-prompt.d.ts +9 -0
  430. package/dist/core/compaction/context-compaction-prompt.d.ts.map +1 -0
  431. package/dist/core/compaction/context-compaction-prompt.js +161 -0
  432. package/dist/core/compaction/context-compaction-prompt.js.map +1 -0
  433. package/dist/core/compaction/context-compaction-runner.d.ts +5 -0
  434. package/dist/core/compaction/context-compaction-runner.d.ts.map +1 -0
  435. package/dist/core/compaction/context-compaction-runner.js +181 -0
  436. package/dist/core/compaction/context-compaction-runner.js.map +1 -0
  437. package/dist/core/compaction/context-compaction-strategy.d.ts +5 -0
  438. package/dist/core/compaction/context-compaction-strategy.d.ts.map +1 -0
  439. package/dist/core/compaction/context-compaction-strategy.js +27 -0
  440. package/dist/core/compaction/context-compaction-strategy.js.map +1 -0
  441. package/dist/core/compaction/context-compaction-types.d.ts +73 -0
  442. package/dist/core/compaction/context-compaction-types.d.ts.map +1 -0
  443. package/dist/core/compaction/context-compaction-types.js +6 -0
  444. package/dist/core/compaction/context-compaction-types.js.map +1 -0
  445. package/dist/core/compaction/context-compaction.d.ts +9 -200
  446. package/dist/core/compaction/context-compaction.d.ts.map +1 -1
  447. package/dist/core/compaction/context-compaction.js +7 -1943
  448. package/dist/core/compaction/context-compaction.js.map +1 -1
  449. package/dist/core/compaction/context-deletion-application.d.ts +13 -0
  450. package/dist/core/compaction/context-deletion-application.d.ts.map +1 -0
  451. package/dist/core/compaction/context-deletion-application.js +259 -0
  452. package/dist/core/compaction/context-deletion-application.js.map +1 -0
  453. package/dist/core/compaction/context-deletion-store.d.ts +78 -0
  454. package/dist/core/compaction/context-deletion-store.d.ts.map +1 -0
  455. package/dist/core/compaction/context-deletion-store.js +162 -0
  456. package/dist/core/compaction/context-deletion-store.js.map +1 -0
  457. package/dist/core/compaction/context-deletion-targets.d.ts +40 -0
  458. package/dist/core/compaction/context-deletion-targets.d.ts.map +1 -0
  459. package/dist/core/compaction/context-deletion-targets.js +267 -0
  460. package/dist/core/compaction/context-deletion-targets.js.map +1 -0
  461. package/dist/core/compaction/context-deletion-tool-definitions.d.ts +187 -0
  462. package/dist/core/compaction/context-deletion-tool-definitions.d.ts.map +1 -0
  463. package/dist/core/compaction/context-deletion-tool-definitions.js +98 -0
  464. package/dist/core/compaction/context-deletion-tool-definitions.js.map +1 -0
  465. package/dist/core/compaction/context-deletion-tool-helpers.d.ts +19 -0
  466. package/dist/core/compaction/context-deletion-tool-helpers.d.ts.map +1 -0
  467. package/dist/core/compaction/context-deletion-tool-helpers.js +137 -0
  468. package/dist/core/compaction/context-deletion-tool-helpers.js.map +1 -0
  469. package/dist/core/compaction/context-deletion-tools.d.ts +4 -0
  470. package/dist/core/compaction/context-deletion-tools.d.ts.map +1 -0
  471. package/dist/core/compaction/context-deletion-tools.js +395 -0
  472. package/dist/core/compaction/context-deletion-tools.js.map +1 -0
  473. package/dist/core/compaction/context-transcript-analysis.d.ts +9 -0
  474. package/dist/core/compaction/context-transcript-analysis.d.ts.map +1 -0
  475. package/dist/core/compaction/context-transcript-analysis.js +234 -0
  476. package/dist/core/compaction/context-transcript-analysis.js.map +1 -0
  477. package/dist/core/export-html/index.d.ts.map +1 -1
  478. package/dist/core/export-html/index.js +2 -1
  479. package/dist/core/export-html/index.js.map +1 -1
  480. package/dist/core/export-html/template-js/data-tree.js +287 -0
  481. package/dist/core/export-html/template-js/entries-navigation.js +424 -0
  482. package/dist/core/export-html/template-js/initialization.js +312 -0
  483. package/dist/core/export-html/template-js/message-tools.js +415 -0
  484. package/dist/core/export-html/template-js/tree-filter-render.js +421 -0
  485. package/dist/core/export-html/template-script.d.ts +3 -0
  486. package/dist/core/export-html/template-script.d.ts.map +1 -0
  487. package/dist/core/export-html/template-script.js +13 -0
  488. package/dist/core/export-html/template-script.js.map +1 -0
  489. package/dist/core/export-html/template.js +3 -1
  490. package/dist/core/extensions/agent-events.d.ts +159 -0
  491. package/dist/core/extensions/agent-events.d.ts.map +1 -0
  492. package/dist/core/extensions/agent-events.js +2 -0
  493. package/dist/core/extensions/agent-events.js.map +1 -0
  494. package/dist/core/extensions/api-types.d.ts +189 -0
  495. package/dist/core/extensions/api-types.d.ts.map +1 -0
  496. package/dist/core/extensions/api-types.js +2 -0
  497. package/dist/core/extensions/api-types.js.map +1 -0
  498. package/dist/core/extensions/command-types.d.ts +14 -0
  499. package/dist/core/extensions/command-types.d.ts.map +1 -0
  500. package/dist/core/extensions/command-types.js +2 -0
  501. package/dist/core/extensions/command-types.js.map +1 -0
  502. package/dist/core/extensions/context-types.d.ts +130 -0
  503. package/dist/core/extensions/context-types.d.ts.map +1 -0
  504. package/dist/core/extensions/context-types.js +2 -0
  505. package/dist/core/extensions/context-types.js.map +1 -0
  506. package/dist/core/extensions/event-results.d.ts +61 -0
  507. package/dist/core/extensions/event-results.d.ts.map +1 -0
  508. package/dist/core/extensions/event-results.js +2 -0
  509. package/dist/core/extensions/event-results.js.map +1 -0
  510. package/dist/core/extensions/event-types.d.ts +6 -0
  511. package/dist/core/extensions/event-types.d.ts.map +1 -0
  512. package/dist/core/extensions/event-types.js +2 -0
  513. package/dist/core/extensions/event-types.js.map +1 -0
  514. package/dist/core/extensions/loader-api.d.ts +10 -0
  515. package/dist/core/extensions/loader-api.d.ts.map +1 -0
  516. package/dist/core/extensions/loader-api.js +143 -0
  517. package/dist/core/extensions/loader-api.js.map +1 -0
  518. package/dist/core/extensions/loader-core.d.ts +12 -0
  519. package/dist/core/extensions/loader-core.d.ts.map +1 -0
  520. package/dist/core/extensions/loader-core.js +91 -0
  521. package/dist/core/extensions/loader-core.js.map +1 -0
  522. package/dist/core/extensions/loader-discovery.d.ts +7 -0
  523. package/dist/core/extensions/loader-discovery.d.ts.map +1 -0
  524. package/dist/core/extensions/loader-discovery.js +139 -0
  525. package/dist/core/extensions/loader-discovery.js.map +1 -0
  526. package/dist/core/extensions/loader-resources.d.ts +11 -0
  527. package/dist/core/extensions/loader-resources.d.ts.map +1 -0
  528. package/dist/core/extensions/loader-resources.js +10 -0
  529. package/dist/core/extensions/loader-resources.js.map +1 -0
  530. package/dist/core/extensions/loader-runtime.d.ts +7 -0
  531. package/dist/core/extensions/loader-runtime.d.ts.map +1 -0
  532. package/dist/core/extensions/loader-runtime.js +51 -0
  533. package/dist/core/extensions/loader-runtime.js.map +1 -0
  534. package/dist/core/extensions/loader-virtual-modules.d.ts +3 -0
  535. package/dist/core/extensions/loader-virtual-modules.d.ts.map +1 -0
  536. package/dist/core/extensions/loader-virtual-modules.js +92 -0
  537. package/dist/core/extensions/loader-virtual-modules.js.map +1 -0
  538. package/dist/core/extensions/loader.d.ts +4 -28
  539. package/dist/core/extensions/loader.d.ts.map +1 -1
  540. package/dist/core/extensions/loader.js +3 -542
  541. package/dist/core/extensions/loader.js.map +1 -1
  542. package/dist/core/extensions/message-types.d.ts +34 -0
  543. package/dist/core/extensions/message-types.d.ts.map +1 -0
  544. package/dist/core/extensions/message-types.js +2 -0
  545. package/dist/core/extensions/message-types.js.map +1 -0
  546. package/dist/core/extensions/provider-types.d.ts +71 -0
  547. package/dist/core/extensions/provider-types.d.ts.map +1 -0
  548. package/dist/core/extensions/provider-types.js +2 -0
  549. package/dist/core/extensions/provider-types.js.map +1 -0
  550. package/dist/core/extensions/runner-context.d.ts +42 -0
  551. package/dist/core/extensions/runner-context.d.ts.map +1 -0
  552. package/dist/core/extensions/runner-context.js +112 -0
  553. package/dist/core/extensions/runner-context.js.map +1 -0
  554. package/dist/core/extensions/runner-events.d.ts +47 -0
  555. package/dist/core/extensions/runner-events.d.ts.map +1 -0
  556. package/dist/core/extensions/runner-events.js +280 -0
  557. package/dist/core/extensions/runner-events.js.map +1 -0
  558. package/dist/core/extensions/runner-handlers.d.ts +32 -0
  559. package/dist/core/extensions/runner-handlers.d.ts.map +1 -0
  560. package/dist/core/extensions/runner-handlers.js +2 -0
  561. package/dist/core/extensions/runner-handlers.js.map +1 -0
  562. package/dist/core/extensions/runner-project-trust.d.ts +6 -0
  563. package/dist/core/extensions/runner-project-trust.d.ts.map +1 -0
  564. package/dist/core/extensions/runner-project-trust.js +27 -0
  565. package/dist/core/extensions/runner-project-trust.js.map +1 -0
  566. package/dist/core/extensions/runner-registries.d.ts +8 -0
  567. package/dist/core/extensions/runner-registries.d.ts.map +1 -0
  568. package/dist/core/extensions/runner-registries.js +76 -0
  569. package/dist/core/extensions/runner-registries.js.map +1 -0
  570. package/dist/core/extensions/runner-shortcuts.d.ts +10 -0
  571. package/dist/core/extensions/runner-shortcuts.d.ts.map +1 -0
  572. package/dist/core/extensions/runner-shortcuts.js +71 -0
  573. package/dist/core/extensions/runner-shortcuts.js.map +1 -0
  574. package/dist/core/extensions/runner-ui.d.ts +3 -0
  575. package/dist/core/extensions/runner-ui.d.ts.map +1 -0
  576. package/dist/core/extensions/runner-ui.js +50 -0
  577. package/dist/core/extensions/runner-ui.js.map +1 -0
  578. package/dist/core/extensions/runner.d.ts +7 -74
  579. package/dist/core/extensions/runner.d.ts.map +1 -1
  580. package/dist/core/extensions/runner.js +67 -673
  581. package/dist/core/extensions/runner.js.map +1 -1
  582. package/dist/core/extensions/runtime-types.d.ts +179 -0
  583. package/dist/core/extensions/runtime-types.d.ts.map +1 -0
  584. package/dist/core/extensions/runtime-types.js +2 -0
  585. package/dist/core/extensions/runtime-types.js.map +1 -0
  586. package/dist/core/extensions/session-events.d.ts +89 -0
  587. package/dist/core/extensions/session-events.d.ts.map +1 -0
  588. package/dist/core/extensions/session-events.js +2 -0
  589. package/dist/core/extensions/session-events.js.map +1 -0
  590. package/dist/core/extensions/tool-events.d.ts +127 -0
  591. package/dist/core/extensions/tool-events.d.ts.map +1 -0
  592. package/dist/core/extensions/tool-events.js +26 -0
  593. package/dist/core/extensions/tool-events.js.map +1 -0
  594. package/dist/core/extensions/tool-types.d.ts +100 -0
  595. package/dist/core/extensions/tool-types.d.ts.map +1 -0
  596. package/dist/core/extensions/tool-types.js +11 -0
  597. package/dist/core/extensions/tool-types.js.map +1 -0
  598. package/dist/core/extensions/types.d.ts +20 -1288
  599. package/dist/core/extensions/types.d.ts.map +1 -1
  600. package/dist/core/extensions/types.js +4 -34
  601. package/dist/core/extensions/types.js.map +1 -1
  602. package/dist/core/extensions/ui-types.d.ts +200 -0
  603. package/dist/core/extensions/ui-types.d.ts.map +1 -0
  604. package/dist/core/extensions/ui-types.js +2 -0
  605. package/dist/core/extensions/ui-types.js.map +1 -0
  606. package/dist/core/model-registry-auth.d.ts +7 -0
  607. package/dist/core/model-registry-auth.d.ts.map +1 -0
  608. package/dist/core/model-registry-auth.js +64 -0
  609. package/dist/core/model-registry-auth.js.map +1 -0
  610. package/dist/core/model-registry-builtins.d.ts +9 -0
  611. package/dist/core/model-registry-builtins.d.ts.map +1 -0
  612. package/dist/core/model-registry-builtins.js +120 -0
  613. package/dist/core/model-registry-builtins.js.map +1 -0
  614. package/dist/core/model-registry-custom-loader.d.ts +3 -0
  615. package/dist/core/model-registry-custom-loader.d.ts.map +1 -0
  616. package/dist/core/model-registry-custom-loader.js +213 -0
  617. package/dist/core/model-registry-custom-loader.js.map +1 -0
  618. package/dist/core/model-registry-dynamic.d.ts +6 -0
  619. package/dist/core/model-registry-dynamic.d.ts.map +1 -0
  620. package/dist/core/model-registry-dynamic.js +155 -0
  621. package/dist/core/model-registry-dynamic.js.map +1 -0
  622. package/dist/core/model-registry-loader.d.ts +4 -0
  623. package/dist/core/model-registry-loader.d.ts.map +1 -0
  624. package/dist/core/model-registry-loader.js +20 -0
  625. package/dist/core/model-registry-loader.js.map +1 -0
  626. package/dist/core/model-registry-schemas.d.ts +1084 -0
  627. package/dist/core/model-registry-schemas.d.ts.map +1 -0
  628. package/dist/core/model-registry-schemas.js +161 -0
  629. package/dist/core/model-registry-schemas.js.map +1 -0
  630. package/dist/core/model-registry-types.d.ts +74 -0
  631. package/dist/core/model-registry-types.d.ts.map +1 -0
  632. package/dist/core/model-registry-types.js +2 -0
  633. package/dist/core/model-registry-types.js.map +1 -0
  634. package/dist/core/model-registry.d.ts +3 -76
  635. package/dist/core/model-registry.d.ts.map +1 -1
  636. package/dist/core/model-registry.js +24 -733
  637. package/dist/core/model-registry.js.map +1 -1
  638. package/dist/core/model-resolver-cli.d.ts +19 -0
  639. package/dist/core/model-resolver-cli.d.ts.map +1 -0
  640. package/dist/core/model-resolver-cli.js +118 -0
  641. package/dist/core/model-resolver-cli.js.map +1 -0
  642. package/dist/core/model-resolver-defaults.d.ts +5 -0
  643. package/dist/core/model-resolver-defaults.d.ts.map +1 -0
  644. package/dist/core/model-resolver-defaults.js +47 -0
  645. package/dist/core/model-resolver-defaults.js.map +1 -0
  646. package/dist/core/model-resolver-initial.d.ts +31 -0
  647. package/dist/core/model-resolver-initial.d.ts.map +1 -0
  648. package/dist/core/model-resolver-initial.js +116 -0
  649. package/dist/core/model-resolver-initial.js.map +1 -0
  650. package/dist/core/model-resolver-patterns.d.ts +26 -0
  651. package/dist/core/model-resolver-patterns.d.ts.map +1 -0
  652. package/dist/core/model-resolver-patterns.js +139 -0
  653. package/dist/core/model-resolver-patterns.js.map +1 -0
  654. package/dist/core/model-resolver-scope.d.ts +15 -0
  655. package/dist/core/model-resolver-scope.d.ts.map +1 -0
  656. package/dist/core/model-resolver-scope.js +66 -0
  657. package/dist/core/model-resolver-scope.js.map +1 -0
  658. package/dist/core/model-resolver-types.d.ts +29 -0
  659. package/dist/core/model-resolver-types.d.ts.map +1 -0
  660. package/dist/core/model-resolver-types.js +2 -0
  661. package/dist/core/model-resolver-types.js.map +1 -0
  662. package/dist/core/model-resolver.d.ts +6 -107
  663. package/dist/core/model-resolver.d.ts.map +1 -1
  664. package/dist/core/model-resolver.js +5 -549
  665. package/dist/core/model-resolver.js.map +1 -1
  666. package/dist/core/package-manager-auto-resources.d.ts +5 -0
  667. package/dist/core/package-manager-auto-resources.d.ts.map +1 -0
  668. package/dist/core/package-manager-auto-resources.js +109 -0
  669. package/dist/core/package-manager-auto-resources.js.map +1 -0
  670. package/dist/core/package-manager-command.d.ts +11 -0
  671. package/dist/core/package-manager-command.d.ts.map +1 -0
  672. package/dist/core/package-manager-command.js +102 -0
  673. package/dist/core/package-manager-command.js.map +1 -0
  674. package/dist/core/package-manager-constants.d.ts +4 -0
  675. package/dist/core/package-manager-constants.d.ts.map +1 -0
  676. package/dist/core/package-manager-constants.js +4 -0
  677. package/dist/core/package-manager-constants.js.map +1 -0
  678. package/dist/core/package-manager-env.d.ts +4 -0
  679. package/dist/core/package-manager-env.d.ts.map +1 -0
  680. package/dist/core/package-manager-env.js +40 -0
  681. package/dist/core/package-manager-env.js.map +1 -0
  682. package/dist/core/package-manager-git.d.ts +10 -0
  683. package/dist/core/package-manager-git.d.ts.map +1 -0
  684. package/dist/core/package-manager-git.js +271 -0
  685. package/dist/core/package-manager-git.js.map +1 -0
  686. package/dist/core/package-manager-manifest.d.ts +7 -0
  687. package/dist/core/package-manager-manifest.d.ts.map +1 -0
  688. package/dist/core/package-manager-manifest.js +45 -0
  689. package/dist/core/package-manager-manifest.js.map +1 -0
  690. package/dist/core/package-manager-npm.d.ts +25 -0
  691. package/dist/core/package-manager-npm.d.ts.map +1 -0
  692. package/dist/core/package-manager-npm.js +252 -0
  693. package/dist/core/package-manager-npm.js.map +1 -0
  694. package/dist/core/package-manager-operations.d.ts +11 -0
  695. package/dist/core/package-manager-operations.d.ts.map +1 -0
  696. package/dist/core/package-manager-operations.js +196 -0
  697. package/dist/core/package-manager-operations.js.map +1 -0
  698. package/dist/core/package-manager-paths.d.ts +14 -0
  699. package/dist/core/package-manager-paths.d.ts.map +1 -0
  700. package/dist/core/package-manager-paths.js +61 -0
  701. package/dist/core/package-manager-paths.js.map +1 -0
  702. package/dist/core/package-manager-progress.d.ts +4 -0
  703. package/dist/core/package-manager-progress.d.ts.map +1 -0
  704. package/dist/core/package-manager-progress.js +16 -0
  705. package/dist/core/package-manager-progress.js.map +1 -0
  706. package/dist/core/package-manager-resolver.d.ts +5 -0
  707. package/dist/core/package-manager-resolver.d.ts.map +1 -0
  708. package/dist/core/package-manager-resolver.js +149 -0
  709. package/dist/core/package-manager-resolver.js.map +1 -0
  710. package/dist/core/package-manager-resource-accumulator.d.ts +6 -0
  711. package/dist/core/package-manager-resource-accumulator.d.ts.map +1 -0
  712. package/dist/core/package-manager-resource-accumulator.js +67 -0
  713. package/dist/core/package-manager-resource-accumulator.js.map +1 -0
  714. package/dist/core/package-manager-resource-collector.d.ts +5 -0
  715. package/dist/core/package-manager-resource-collector.d.ts.map +1 -0
  716. package/dist/core/package-manager-resource-collector.js +148 -0
  717. package/dist/core/package-manager-resource-collector.js.map +1 -0
  718. package/dist/core/package-manager-resource-files.d.ts +14 -0
  719. package/dist/core/package-manager-resource-files.d.ts.map +1 -0
  720. package/dist/core/package-manager-resource-files.js +265 -0
  721. package/dist/core/package-manager-resource-files.js.map +1 -0
  722. package/dist/core/package-manager-resource-patterns.d.ts +12 -0
  723. package/dist/core/package-manager-resource-patterns.d.ts.map +1 -0
  724. package/dist/core/package-manager-resource-patterns.js +136 -0
  725. package/dist/core/package-manager-resource-patterns.js.map +1 -0
  726. package/dist/core/package-manager-settings.d.ts +10 -0
  727. package/dist/core/package-manager-settings.d.ts.map +1 -0
  728. package/dist/core/package-manager-settings.js +91 -0
  729. package/dist/core/package-manager-settings.js.map +1 -0
  730. package/dist/core/package-manager-source.d.ts +21 -0
  731. package/dist/core/package-manager-source.d.ts.map +1 -0
  732. package/dist/core/package-manager-source.js +146 -0
  733. package/dist/core/package-manager-source.js.map +1 -0
  734. package/dist/core/package-manager-types.d.ts +169 -0
  735. package/dist/core/package-manager-types.d.ts.map +1 -0
  736. package/dist/core/package-manager-types.js +9 -0
  737. package/dist/core/package-manager-types.js.map +1 -0
  738. package/dist/core/package-manager.d.ts +9 -174
  739. package/dist/core/package-manager.d.ts.map +1 -1
  740. package/dist/core/package-manager.js +56 -2100
  741. package/dist/core/package-manager.js.map +1 -1
  742. package/dist/core/resource-loader-assets.d.ts +6 -0
  743. package/dist/core/resource-loader-assets.d.ts.map +1 -0
  744. package/dist/core/resource-loader-assets.js +209 -0
  745. package/dist/core/resource-loader-assets.js.map +1 -0
  746. package/dist/core/resource-loader-context-files.d.ts +10 -0
  747. package/dist/core/resource-loader-context-files.d.ts.map +1 -0
  748. package/dist/core/resource-loader-context-files.js +74 -0
  749. package/dist/core/resource-loader-context-files.js.map +1 -0
  750. package/dist/core/resource-loader-core.d.ts +82 -0
  751. package/dist/core/resource-loader-core.d.ts.map +1 -0
  752. package/dist/core/resource-loader-core.js +168 -0
  753. package/dist/core/resource-loader-core.js.map +1 -0
  754. package/dist/core/resource-loader-discovery.d.ts +4 -0
  755. package/dist/core/resource-loader-discovery.d.ts.map +1 -0
  756. package/dist/core/resource-loader-discovery.js +28 -0
  757. package/dist/core/resource-loader-discovery.js.map +1 -0
  758. package/dist/core/resource-loader-extensions.d.ts +13 -0
  759. package/dist/core/resource-loader-extensions.d.ts.map +1 -0
  760. package/dist/core/resource-loader-extensions.js +110 -0
  761. package/dist/core/resource-loader-extensions.js.map +1 -0
  762. package/dist/core/resource-loader-helpers.d.ts +4 -0
  763. package/dist/core/resource-loader-helpers.d.ts.map +1 -0
  764. package/dist/core/resource-loader-helpers.js +23 -0
  765. package/dist/core/resource-loader-helpers.js.map +1 -0
  766. package/dist/core/resource-loader-internals.d.ts +96 -0
  767. package/dist/core/resource-loader-internals.d.ts.map +1 -0
  768. package/dist/core/resource-loader-internals.js +4 -0
  769. package/dist/core/resource-loader-internals.js.map +1 -0
  770. package/dist/core/resource-loader-package-resources.d.ts +31 -0
  771. package/dist/core/resource-loader-package-resources.d.ts.map +1 -0
  772. package/dist/core/resource-loader-package-resources.js +112 -0
  773. package/dist/core/resource-loader-package-resources.js.map +1 -0
  774. package/dist/core/resource-loader-paths.d.ts +4 -0
  775. package/dist/core/resource-loader-paths.d.ts.map +1 -0
  776. package/dist/core/resource-loader-paths.js +22 -0
  777. package/dist/core/resource-loader-paths.js.map +1 -0
  778. package/dist/core/resource-loader-reload.d.ts +6 -0
  779. package/dist/core/resource-loader-reload.d.ts.map +1 -0
  780. package/dist/core/resource-loader-reload.js +226 -0
  781. package/dist/core/resource-loader-reload.js.map +1 -0
  782. package/dist/core/resource-loader-source-info.d.ts +9 -0
  783. package/dist/core/resource-loader-source-info.d.ts.map +1 -0
  784. package/dist/core/resource-loader-source-info.js +101 -0
  785. package/dist/core/resource-loader-source-info.js.map +1 -0
  786. package/dist/core/resource-loader-types.d.ts +130 -0
  787. package/dist/core/resource-loader-types.d.ts.map +1 -0
  788. package/dist/core/resource-loader-types.js +2 -0
  789. package/dist/core/resource-loader-types.js.map +1 -0
  790. package/dist/core/resource-loader.d.ts +3 -242
  791. package/dist/core/resource-loader.d.ts.map +1 -1
  792. package/dist/core/resource-loader.js +2 -976
  793. package/dist/core/resource-loader.js.map +1 -1
  794. package/dist/core/sdk-exports.d.ts +7 -0
  795. package/dist/core/sdk-exports.d.ts.map +1 -0
  796. package/dist/core/sdk-exports.js +5 -0
  797. package/dist/core/sdk-exports.js.map +1 -0
  798. package/dist/core/sdk-types.d.ts +86 -0
  799. package/dist/core/sdk-types.d.ts.map +1 -0
  800. package/dist/core/sdk-types.js +2 -0
  801. package/dist/core/sdk-types.js.map +1 -0
  802. package/dist/core/sdk.d.ts +3 -91
  803. package/dist/core/sdk.d.ts.map +1 -1
  804. package/dist/core/sdk.js +2 -6
  805. package/dist/core/sdk.js.map +1 -1
  806. package/dist/core/session-manager-archive.d.ts +27 -0
  807. package/dist/core/session-manager-archive.d.ts.map +1 -0
  808. package/dist/core/session-manager-archive.js +114 -0
  809. package/dist/core/session-manager-archive.js.map +1 -0
  810. package/dist/core/session-manager-core.d.ts +104 -0
  811. package/dist/core/session-manager-core.d.ts.map +1 -0
  812. package/dist/core/session-manager-core.js +346 -0
  813. package/dist/core/session-manager-core.js.map +1 -0
  814. package/dist/core/session-manager-entries.d.ts +38 -0
  815. package/dist/core/session-manager-entries.d.ts.map +1 -0
  816. package/dist/core/session-manager-entries.js +124 -0
  817. package/dist/core/session-manager-entries.js.map +1 -0
  818. package/dist/core/session-manager-history.d.ts +38 -0
  819. package/dist/core/session-manager-history.d.ts.map +1 -0
  820. package/dist/core/session-manager-history.js +378 -0
  821. package/dist/core/session-manager-history.js.map +1 -0
  822. package/dist/core/session-manager-list.d.ts +5 -0
  823. package/dist/core/session-manager-list.d.ts.map +1 -0
  824. package/dist/core/session-manager-list.js +196 -0
  825. package/dist/core/session-manager-list.js.map +1 -0
  826. package/dist/core/session-manager-migrations.d.ts +11 -0
  827. package/dist/core/session-manager-migrations.d.ts.map +1 -0
  828. package/dist/core/session-manager-migrations.js +80 -0
  829. package/dist/core/session-manager-migrations.js.map +1 -0
  830. package/dist/core/session-manager-paths.d.ts +7 -0
  831. package/dist/core/session-manager-paths.d.ts.map +1 -0
  832. package/dist/core/session-manager-paths.js +22 -0
  833. package/dist/core/session-manager-paths.js.map +1 -0
  834. package/dist/core/session-manager-storage.d.ts +15 -0
  835. package/dist/core/session-manager-storage.d.ts.map +1 -0
  836. package/dist/core/session-manager-storage.js +127 -0
  837. package/dist/core/session-manager-storage.js.map +1 -0
  838. package/dist/core/session-manager-types.d.ts +172 -0
  839. package/dist/core/session-manager-types.d.ts.map +1 -0
  840. package/dist/core/session-manager-types.js +2 -0
  841. package/dist/core/session-manager-types.js.map +1 -0
  842. package/dist/core/session-manager-validation.d.ts +7 -0
  843. package/dist/core/session-manager-validation.d.ts.map +1 -0
  844. package/dist/core/session-manager-validation.js +34 -0
  845. package/dist/core/session-manager-validation.js.map +1 -0
  846. package/dist/core/session-manager.d.ts +8 -390
  847. package/dist/core/session-manager.d.ts.map +1 -1
  848. package/dist/core/session-manager.js +7 -1418
  849. package/dist/core/session-manager.js.map +1 -1
  850. package/dist/core/settings-manager-basic-accessors.d.ts +65 -0
  851. package/dist/core/settings-manager-basic-accessors.d.ts.map +1 -0
  852. package/dist/core/settings-manager-basic-accessors.js +253 -0
  853. package/dist/core/settings-manager-basic-accessors.js.map +1 -0
  854. package/dist/core/settings-manager-core.d.ts +57 -0
  855. package/dist/core/settings-manager-core.d.ts.map +1 -0
  856. package/dist/core/settings-manager-core.js +387 -0
  857. package/dist/core/settings-manager-core.js.map +1 -0
  858. package/dist/core/settings-manager-internals.d.ts +13 -0
  859. package/dist/core/settings-manager-internals.d.ts.map +1 -0
  860. package/dist/core/settings-manager-internals.js +4 -0
  861. package/dist/core/settings-manager-internals.js.map +1 -0
  862. package/dist/core/settings-manager-resource-accessors.d.ts +43 -0
  863. package/dist/core/settings-manager-resource-accessors.d.ts.map +1 -0
  864. package/dist/core/settings-manager-resource-accessors.js +172 -0
  865. package/dist/core/settings-manager-resource-accessors.js.map +1 -0
  866. package/dist/core/settings-manager-ui-accessors.d.ts +44 -0
  867. package/dist/core/settings-manager-ui-accessors.d.ts.map +1 -0
  868. package/dist/core/settings-manager-ui-accessors.js +208 -0
  869. package/dist/core/settings-manager-ui-accessors.js.map +1 -0
  870. package/dist/core/settings-manager.d.ts +6 -321
  871. package/dist/core/settings-manager.d.ts.map +1 -1
  872. package/dist/core/settings-manager.js +5 -1060
  873. package/dist/core/settings-manager.js.map +1 -1
  874. package/dist/core/settings-merge.d.ts +4 -0
  875. package/dist/core/settings-merge.d.ts.map +1 -0
  876. package/dist/core/settings-merge.js +26 -0
  877. package/dist/core/settings-merge.js.map +1 -0
  878. package/dist/core/settings-storage.d.ts +20 -0
  879. package/dist/core/settings-storage.d.ts.map +1 -0
  880. package/dist/core/settings-storage.js +100 -0
  881. package/dist/core/settings-storage.js.map +1 -0
  882. package/dist/core/settings-types.d.ts +123 -0
  883. package/dist/core/settings-types.d.ts.map +1 -0
  884. package/dist/core/settings-types.js +2 -0
  885. package/dist/core/settings-types.js.map +1 -0
  886. package/dist/core/system-prompt.d.ts.map +1 -1
  887. package/dist/core/system-prompt.js +7 -0
  888. package/dist/core/system-prompt.js.map +1 -1
  889. package/dist/core/tools/bash-policy-compile.d.ts +5 -0
  890. package/dist/core/tools/bash-policy-compile.d.ts.map +1 -0
  891. package/dist/core/tools/bash-policy-compile.js +241 -0
  892. package/dist/core/tools/bash-policy-compile.js.map +1 -0
  893. package/dist/core/tools/bash-policy-evaluate.d.ts +3 -0
  894. package/dist/core/tools/bash-policy-evaluate.d.ts.map +1 -0
  895. package/dist/core/tools/bash-policy-evaluate.js +92 -0
  896. package/dist/core/tools/bash-policy-evaluate.js.map +1 -0
  897. package/dist/core/tools/bash-policy-format.d.ts +5 -0
  898. package/dist/core/tools/bash-policy-format.d.ts.map +1 -0
  899. package/dist/core/tools/bash-policy-format.js +49 -0
  900. package/dist/core/tools/bash-policy-format.js.map +1 -0
  901. package/dist/core/tools/bash-policy-parser.d.ts +4 -0
  902. package/dist/core/tools/bash-policy-parser.d.ts.map +1 -0
  903. package/dist/core/tools/bash-policy-parser.js +155 -0
  904. package/dist/core/tools/bash-policy-parser.js.map +1 -0
  905. package/dist/core/tools/bash-policy-segment.d.ts +3 -0
  906. package/dist/core/tools/bash-policy-segment.d.ts.map +1 -0
  907. package/dist/core/tools/bash-policy-segment.js +275 -0
  908. package/dist/core/tools/bash-policy-segment.js.map +1 -0
  909. package/dist/core/tools/bash-policy-shell.d.ts +11 -0
  910. package/dist/core/tools/bash-policy-shell.d.ts.map +1 -0
  911. package/dist/core/tools/bash-policy-shell.js +267 -0
  912. package/dist/core/tools/bash-policy-shell.js.map +1 -0
  913. package/dist/core/tools/bash-policy-types.d.ts +146 -0
  914. package/dist/core/tools/bash-policy-types.d.ts.map +1 -0
  915. package/dist/core/tools/bash-policy-types.js +2 -0
  916. package/dist/core/tools/bash-policy-types.js.map +1 -0
  917. package/dist/core/tools/bash-policy.d.ts +5 -61
  918. package/dist/core/tools/bash-policy.d.ts.map +1 -1
  919. package/dist/core/tools/bash-policy.js +4 -1068
  920. package/dist/core/tools/bash-policy.js.map +1 -1
  921. package/dist/core/tools/todos-execute.d.ts +5 -0
  922. package/dist/core/tools/todos-execute.d.ts.map +1 -0
  923. package/dist/core/tools/todos-execute.js +200 -0
  924. package/dist/core/tools/todos-execute.js.map +1 -0
  925. package/dist/core/tools/todos-locks.d.ts +4 -0
  926. package/dist/core/tools/todos-locks.d.ts.map +1 -0
  927. package/dist/core/tools/todos-locks.js +80 -0
  928. package/dist/core/tools/todos-locks.js.map +1 -0
  929. package/dist/core/tools/todos-model.d.ts +21 -0
  930. package/dist/core/tools/todos-model.d.ts.map +1 -0
  931. package/dist/core/tools/todos-model.js +71 -0
  932. package/dist/core/tools/todos-model.js.map +1 -0
  933. package/dist/core/tools/todos-mutations.d.ts +6 -0
  934. package/dist/core/tools/todos-mutations.d.ts.map +1 -0
  935. package/dist/core/tools/todos-mutations.js +85 -0
  936. package/dist/core/tools/todos-mutations.js.map +1 -0
  937. package/dist/core/tools/todos-paths.d.ts +5 -0
  938. package/dist/core/tools/todos-paths.d.ts.map +1 -0
  939. package/dist/core/tools/todos-paths.js +25 -0
  940. package/dist/core/tools/todos-paths.js.map +1 -0
  941. package/dist/core/tools/todos-render.d.ts +10 -0
  942. package/dist/core/tools/todos-render.d.ts.map +1 -0
  943. package/dist/core/tools/todos-render.js +159 -0
  944. package/dist/core/tools/todos-render.js.map +1 -0
  945. package/dist/core/tools/todos-storage.d.ts +9 -0
  946. package/dist/core/tools/todos-storage.d.ts.map +1 -0
  947. package/dist/core/tools/todos-storage.js +183 -0
  948. package/dist/core/tools/todos-storage.js.map +1 -0
  949. package/dist/core/tools/todos-types.d.ts +46 -0
  950. package/dist/core/tools/todos-types.d.ts.map +1 -0
  951. package/dist/core/tools/todos-types.js +27 -0
  952. package/dist/core/tools/todos-types.js.map +1 -0
  953. package/dist/core/tools/todos.d.ts +12 -32
  954. package/dist/core/tools/todos.d.ts.map +1 -1
  955. package/dist/core/tools/todos.js +7 -893
  956. package/dist/core/tools/todos.js.map +1 -1
  957. package/dist/index-extensions.d.ts +3 -0
  958. package/dist/index-extensions.d.ts.map +1 -0
  959. package/dist/index-extensions.js +2 -0
  960. package/dist/index-extensions.js.map +1 -0
  961. package/dist/index.d.ts +1 -2
  962. package/dist/index.d.ts.map +1 -1
  963. package/dist/index.js +1 -1
  964. package/dist/index.js.map +1 -1
  965. package/dist/main-app-mode.d.ts +15 -0
  966. package/dist/main-app-mode.d.ts.map +1 -0
  967. package/dist/main-app-mode.js +51 -0
  968. package/dist/main-app-mode.js.map +1 -0
  969. package/dist/main-session-options.d.ts +12 -0
  970. package/dist/main-session-options.d.ts.map +1 -0
  971. package/dist/main-session-options.js +87 -0
  972. package/dist/main-session-options.js.map +1 -0
  973. package/dist/main-session.d.ts +9 -0
  974. package/dist/main-session.d.ts.map +1 -0
  975. package/dist/main-session.js +188 -0
  976. package/dist/main-session.js.map +1 -0
  977. package/dist/main-stdio.d.ts +12 -0
  978. package/dist/main-stdio.d.ts.map +1 -0
  979. package/dist/main-stdio.js +68 -0
  980. package/dist/main-stdio.js.map +1 -0
  981. package/dist/main.d.ts +2 -3
  982. package/dist/main.d.ts.map +1 -1
  983. package/dist/main.js +11 -388
  984. package/dist/main.js.map +1 -1
  985. package/dist/migrations-config-values.d.ts +9 -0
  986. package/dist/migrations-config-values.d.ts.map +1 -0
  987. package/dist/migrations-config-values.js +298 -0
  988. package/dist/migrations-config-values.js.map +1 -0
  989. package/dist/migrations.d.ts.map +1 -1
  990. package/dist/migrations.js +2 -296
  991. package/dist/migrations.js.map +1 -1
  992. package/dist/modes/interactive/components/chat-message-renderer.d.ts.map +1 -1
  993. package/dist/modes/interactive/components/chat-message-renderer.js +0 -7
  994. package/dist/modes/interactive/components/chat-message-renderer.js.map +1 -1
  995. package/dist/modes/interactive/components/chat-session-host-actions.d.ts +9 -0
  996. package/dist/modes/interactive/components/chat-session-host-actions.d.ts.map +1 -0
  997. package/dist/modes/interactive/components/chat-session-host-actions.js +244 -0
  998. package/dist/modes/interactive/components/chat-session-host-actions.js.map +1 -0
  999. package/dist/modes/interactive/components/chat-session-host-editor.d.ts +18 -0
  1000. package/dist/modes/interactive/components/chat-session-host-editor.d.ts.map +1 -0
  1001. package/dist/modes/interactive/components/chat-session-host-editor.js +165 -0
  1002. package/dist/modes/interactive/components/chat-session-host-editor.js.map +1 -0
  1003. package/dist/modes/interactive/components/chat-session-host-events.d.ts +5 -0
  1004. package/dist/modes/interactive/components/chat-session-host-events.d.ts.map +1 -0
  1005. package/dist/modes/interactive/components/chat-session-host-events.js +200 -0
  1006. package/dist/modes/interactive/components/chat-session-host-events.js.map +1 -0
  1007. package/dist/modes/interactive/components/chat-session-host-rendering.d.ts +13 -0
  1008. package/dist/modes/interactive/components/chat-session-host-rendering.d.ts.map +1 -0
  1009. package/dist/modes/interactive/components/chat-session-host-rendering.js +185 -0
  1010. package/dist/modes/interactive/components/chat-session-host-rendering.js.map +1 -0
  1011. package/dist/modes/interactive/components/chat-session-host-runtime.d.ts +13 -0
  1012. package/dist/modes/interactive/components/chat-session-host-runtime.d.ts.map +1 -0
  1013. package/dist/modes/interactive/components/chat-session-host-runtime.js +101 -0
  1014. package/dist/modes/interactive/components/chat-session-host-runtime.js.map +1 -0
  1015. package/dist/modes/interactive/components/chat-session-host-state.d.ts +53 -0
  1016. package/dist/modes/interactive/components/chat-session-host-state.d.ts.map +1 -0
  1017. package/dist/modes/interactive/components/chat-session-host-state.js +42 -0
  1018. package/dist/modes/interactive/components/chat-session-host-state.js.map +1 -0
  1019. package/dist/modes/interactive/components/chat-session-host-types.d.ts +63 -0
  1020. package/dist/modes/interactive/components/chat-session-host-types.d.ts.map +1 -0
  1021. package/dist/modes/interactive/components/chat-session-host-types.js +2 -0
  1022. package/dist/modes/interactive/components/chat-session-host-types.js.map +1 -0
  1023. package/dist/modes/interactive/components/chat-session-host-utils.d.ts +28 -0
  1024. package/dist/modes/interactive/components/chat-session-host-utils.d.ts.map +1 -0
  1025. package/dist/modes/interactive/components/chat-session-host-utils.js +103 -0
  1026. package/dist/modes/interactive/components/chat-session-host-utils.js.map +1 -0
  1027. package/dist/modes/interactive/components/chat-session-host.d.ts +6 -129
  1028. package/dist/modes/interactive/components/chat-session-host.d.ts.map +1 -1
  1029. package/dist/modes/interactive/components/chat-session-host.js +50 -1022
  1030. package/dist/modes/interactive/components/chat-session-host.js.map +1 -1
  1031. package/dist/modes/interactive/components/config-selector-list.d.ts +65 -0
  1032. package/dist/modes/interactive/components/config-selector-list.d.ts.map +1 -0
  1033. package/dist/modes/interactive/components/config-selector-list.js +458 -0
  1034. package/dist/modes/interactive/components/config-selector-list.js.map +1 -0
  1035. package/dist/modes/interactive/components/config-selector.d.ts +3 -58
  1036. package/dist/modes/interactive/components/config-selector.d.ts.map +1 -1
  1037. package/dist/modes/interactive/components/config-selector.js +2 -457
  1038. package/dist/modes/interactive/components/config-selector.js.map +1 -1
  1039. package/dist/modes/interactive/components/session-selector-delete.d.ts +10 -0
  1040. package/dist/modes/interactive/components/session-selector-delete.d.ts.map +1 -0
  1041. package/dist/modes/interactive/components/session-selector-delete.js +40 -0
  1042. package/dist/modes/interactive/components/session-selector-delete.js.map +1 -0
  1043. package/dist/modes/interactive/components/session-selector-header.d.ts +33 -0
  1044. package/dist/modes/interactive/components/session-selector-header.d.ts.map +1 -0
  1045. package/dist/modes/interactive/components/session-selector-header.js +117 -0
  1046. package/dist/modes/interactive/components/session-selector-header.js.map +1 -0
  1047. package/dist/modes/interactive/components/session-selector-list.d.ts +49 -0
  1048. package/dist/modes/interactive/components/session-selector-list.d.ts.map +1 -0
  1049. package/dist/modes/interactive/components/session-selector-list.js +307 -0
  1050. package/dist/modes/interactive/components/session-selector-list.js.map +1 -0
  1051. package/dist/modes/interactive/components/session-selector-tree.d.ts +25 -0
  1052. package/dist/modes/interactive/components/session-selector-tree.d.ts.map +1 -0
  1053. package/dist/modes/interactive/components/session-selector-tree.js +53 -0
  1054. package/dist/modes/interactive/components/session-selector-tree.js.map +1 -0
  1055. package/dist/modes/interactive/components/session-selector-types.d.ts +4 -0
  1056. package/dist/modes/interactive/components/session-selector-types.d.ts.map +1 -0
  1057. package/dist/modes/interactive/components/session-selector-types.js +2 -0
  1058. package/dist/modes/interactive/components/session-selector-types.js.map +1 -0
  1059. package/dist/modes/interactive/components/session-selector-utils.d.ts +4 -0
  1060. package/dist/modes/interactive/components/session-selector-utils.d.ts.map +1 -0
  1061. package/dist/modes/interactive/components/session-selector-utils.js +37 -0
  1062. package/dist/modes/interactive/components/session-selector-utils.js.map +1 -0
  1063. package/dist/modes/interactive/components/session-selector.d.ts +3 -49
  1064. package/dist/modes/interactive/components/session-selector.d.ts.map +1 -1
  1065. package/dist/modes/interactive/components/session-selector.js +5 -542
  1066. package/dist/modes/interactive/components/session-selector.js.map +1 -1
  1067. package/dist/modes/interactive/components/settings-selector-handlers.d.ts +3 -0
  1068. package/dist/modes/interactive/components/settings-selector-handlers.d.ts.map +1 -0
  1069. package/dist/modes/interactive/components/settings-selector-handlers.js +84 -0
  1070. package/dist/modes/interactive/components/settings-selector-handlers.js.map +1 -0
  1071. package/dist/modes/interactive/components/settings-selector-items.d.ts +4 -0
  1072. package/dist/modes/interactive/components/settings-selector-items.d.ts.map +1 -0
  1073. package/dist/modes/interactive/components/settings-selector-items.js +211 -0
  1074. package/dist/modes/interactive/components/settings-selector-items.js.map +1 -0
  1075. package/dist/modes/interactive/components/settings-selector-options.d.ts +6 -0
  1076. package/dist/modes/interactive/components/settings-selector-options.d.ts.map +1 -0
  1077. package/dist/modes/interactive/components/settings-selector-options.js +14 -0
  1078. package/dist/modes/interactive/components/settings-selector-options.js.map +1 -0
  1079. package/dist/modes/interactive/components/settings-selector-submenus.d.ts +44 -0
  1080. package/dist/modes/interactive/components/settings-selector-submenus.d.ts.map +1 -0
  1081. package/dist/modes/interactive/components/settings-selector-submenus.js +228 -0
  1082. package/dist/modes/interactive/components/settings-selector-submenus.js.map +1 -0
  1083. package/dist/modes/interactive/components/settings-selector-types.d.ts +67 -0
  1084. package/dist/modes/interactive/components/settings-selector-types.d.ts.map +1 -0
  1085. package/dist/modes/interactive/components/settings-selector-types.js +2 -0
  1086. package/dist/modes/interactive/components/settings-selector-types.js.map +1 -0
  1087. package/dist/modes/interactive/components/settings-selector.d.ts +2 -63
  1088. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  1089. package/dist/modes/interactive/components/settings-selector.js +5 -538
  1090. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  1091. package/dist/modes/interactive/components/tree-selector-component.d.ts +21 -0
  1092. package/dist/modes/interactive/components/tree-selector-component.d.ts.map +1 -0
  1093. package/dist/modes/interactive/components/tree-selector-component.js +80 -0
  1094. package/dist/modes/interactive/components/tree-selector-component.js.map +1 -0
  1095. package/dist/modes/interactive/components/tree-selector-content.d.ts +8 -0
  1096. package/dist/modes/interactive/components/tree-selector-content.d.ts.map +1 -0
  1097. package/dist/modes/interactive/components/tree-selector-content.js +263 -0
  1098. package/dist/modes/interactive/components/tree-selector-content.js.map +1 -0
  1099. package/dist/modes/interactive/components/tree-selector-help.d.ts +16 -0
  1100. package/dist/modes/interactive/components/tree-selector-help.d.ts.map +1 -0
  1101. package/dist/modes/interactive/components/tree-selector-help.js +103 -0
  1102. package/dist/modes/interactive/components/tree-selector-help.js.map +1 -0
  1103. package/dist/modes/interactive/components/tree-selector-label-input.d.ts +16 -0
  1104. package/dist/modes/interactive/components/tree-selector-label-input.d.ts.map +1 -0
  1105. package/dist/modes/interactive/components/tree-selector-label-input.js +46 -0
  1106. package/dist/modes/interactive/components/tree-selector-label-input.js.map +1 -0
  1107. package/dist/modes/interactive/components/tree-selector-list.d.ts +33 -0
  1108. package/dist/modes/interactive/components/tree-selector-list.d.ts.map +1 -0
  1109. package/dist/modes/interactive/components/tree-selector-list.js +336 -0
  1110. package/dist/modes/interactive/components/tree-selector-list.js.map +1 -0
  1111. package/dist/modes/interactive/components/tree-selector-model.d.ts +7 -0
  1112. package/dist/modes/interactive/components/tree-selector-model.d.ts.map +1 -0
  1113. package/dist/modes/interactive/components/tree-selector-model.js +358 -0
  1114. package/dist/modes/interactive/components/tree-selector-model.js.map +1 -0
  1115. package/dist/modes/interactive/components/tree-selector-types.d.ts +57 -0
  1116. package/dist/modes/interactive/components/tree-selector-types.d.ts.map +1 -0
  1117. package/dist/modes/interactive/components/tree-selector-types.js +6 -0
  1118. package/dist/modes/interactive/components/tree-selector-types.js.map +1 -0
  1119. package/dist/modes/interactive/components/tree-selector-viewport.d.ts +10 -0
  1120. package/dist/modes/interactive/components/tree-selector-viewport.d.ts.map +1 -0
  1121. package/dist/modes/interactive/components/tree-selector-viewport.js +32 -0
  1122. package/dist/modes/interactive/components/tree-selector-viewport.js.map +1 -0
  1123. package/dist/modes/interactive/components/tree-selector.d.ts +2 -88
  1124. package/dist/modes/interactive/components/tree-selector.d.ts.map +1 -1
  1125. package/dist/modes/interactive/components/tree-selector.js +1 -1200
  1126. package/dist/modes/interactive/components/tree-selector.js.map +1 -1
  1127. package/dist/modes/interactive/interactive-agent-events.d.ts +2 -0
  1128. package/dist/modes/interactive/interactive-agent-events.d.ts.map +1 -0
  1129. package/dist/modes/interactive/interactive-agent-events.js +370 -0
  1130. package/dist/modes/interactive/interactive-agent-events.js.map +1 -0
  1131. package/dist/modes/interactive/interactive-auth-login.d.ts +2 -0
  1132. package/dist/modes/interactive/interactive-auth-login.d.ts.map +1 -0
  1133. package/dist/modes/interactive/interactive-auth-login.js +214 -0
  1134. package/dist/modes/interactive/interactive-auth-login.js.map +1 -0
  1135. package/dist/modes/interactive/interactive-auth-routing.d.ts +2 -0
  1136. package/dist/modes/interactive/interactive-auth-routing.d.ts.map +1 -0
  1137. package/dist/modes/interactive/interactive-auth-routing.js +128 -0
  1138. package/dist/modes/interactive/interactive-auth-routing.js.map +1 -0
  1139. package/dist/modes/interactive/interactive-autocomplete.d.ts +2 -0
  1140. package/dist/modes/interactive/interactive-autocomplete.d.ts.map +1 -0
  1141. package/dist/modes/interactive/interactive-autocomplete.js +140 -0
  1142. package/dist/modes/interactive/interactive-autocomplete.js.map +1 -0
  1143. package/dist/modes/interactive/interactive-bash-compact.d.ts +2 -0
  1144. package/dist/modes/interactive/interactive-bash-compact.d.ts.map +1 -0
  1145. package/dist/modes/interactive/interactive-bash-compact.js +112 -0
  1146. package/dist/modes/interactive/interactive-bash-compact.js.map +1 -0
  1147. package/dist/modes/interactive/interactive-editor-actions.d.ts +2 -0
  1148. package/dist/modes/interactive/interactive-editor-actions.d.ts.map +1 -0
  1149. package/dist/modes/interactive/interactive-editor-actions.js +131 -0
  1150. package/dist/modes/interactive/interactive-editor-actions.js.map +1 -0
  1151. package/dist/modes/interactive/interactive-extension-context.d.ts +2 -0
  1152. package/dist/modes/interactive/interactive-extension-context.d.ts.map +1 -0
  1153. package/dist/modes/interactive/interactive-extension-context.js +159 -0
  1154. package/dist/modes/interactive/interactive-extension-context.js.map +1 -0
  1155. package/dist/modes/interactive/interactive-extension-custom-ui.d.ts +2 -0
  1156. package/dist/modes/interactive/interactive-extension-custom-ui.d.ts.map +1 -0
  1157. package/dist/modes/interactive/interactive-extension-custom-ui.js +208 -0
  1158. package/dist/modes/interactive/interactive-extension-custom-ui.js.map +1 -0
  1159. package/dist/modes/interactive/interactive-extension-dialogs.d.ts +2 -0
  1160. package/dist/modes/interactive/interactive-extension-dialogs.d.ts.map +1 -0
  1161. package/dist/modes/interactive/interactive-extension-dialogs.js +162 -0
  1162. package/dist/modes/interactive/interactive-extension-dialogs.js.map +1 -0
  1163. package/dist/modes/interactive/interactive-extension-runtime.d.ts +2 -0
  1164. package/dist/modes/interactive/interactive-extension-runtime.d.ts.map +1 -0
  1165. package/dist/modes/interactive/interactive-extension-runtime.js +179 -0
  1166. package/dist/modes/interactive/interactive-extension-runtime.js.map +1 -0
  1167. package/dist/modes/interactive/interactive-extension-widgets.d.ts +2 -0
  1168. package/dist/modes/interactive/interactive-extension-widgets.d.ts.map +1 -0
  1169. package/dist/modes/interactive/interactive-extension-widgets.js +113 -0
  1170. package/dist/modes/interactive/interactive-extension-widgets.js.map +1 -0
  1171. package/dist/modes/interactive/interactive-hotkeys-debug.d.ts +2 -0
  1172. package/dist/modes/interactive/interactive-hotkeys-debug.d.ts.map +1 -0
  1173. package/dist/modes/interactive/interactive-hotkeys-debug.js +186 -0
  1174. package/dist/modes/interactive/interactive-hotkeys-debug.js.map +1 -0
  1175. package/dist/modes/interactive/interactive-input-handling.d.ts +2 -0
  1176. package/dist/modes/interactive/interactive-input-handling.d.ts.map +1 -0
  1177. package/dist/modes/interactive/interactive-input-handling.js +275 -0
  1178. package/dist/modes/interactive/interactive-input-handling.js.map +1 -0
  1179. package/dist/modes/interactive/interactive-mode-base.d.ts +103 -0
  1180. package/dist/modes/interactive/interactive-mode-base.d.ts.map +1 -0
  1181. package/dist/modes/interactive/interactive-mode-base.js +130 -0
  1182. package/dist/modes/interactive/interactive-mode-base.js.map +1 -0
  1183. package/dist/modes/interactive/interactive-mode-deps.d.ts +81 -0
  1184. package/dist/modes/interactive/interactive-mode-deps.d.ts.map +1 -0
  1185. package/dist/modes/interactive/interactive-mode-deps.js +74 -0
  1186. package/dist/modes/interactive/interactive-mode-deps.js.map +1 -0
  1187. package/dist/modes/interactive/interactive-mode-helpers.d.ts +21 -0
  1188. package/dist/modes/interactive/interactive-mode-helpers.d.ts.map +1 -0
  1189. package/dist/modes/interactive/interactive-mode-helpers.js +77 -0
  1190. package/dist/modes/interactive/interactive-mode-helpers.js.map +1 -0
  1191. package/dist/modes/interactive/interactive-mode-surface.d.ts +313 -0
  1192. package/dist/modes/interactive/interactive-mode-surface.d.ts.map +1 -0
  1193. package/dist/modes/interactive/interactive-mode-surface.js +2 -0
  1194. package/dist/modes/interactive/interactive-mode-surface.js.map +1 -0
  1195. package/dist/modes/interactive/interactive-mode-types.d.ts +29 -0
  1196. package/dist/modes/interactive/interactive-mode-types.d.ts.map +1 -0
  1197. package/dist/modes/interactive/interactive-mode-types.js +2 -0
  1198. package/dist/modes/interactive/interactive-mode-types.js.map +1 -0
  1199. package/dist/modes/interactive/interactive-mode.d.ts +30 -404
  1200. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  1201. package/dist/modes/interactive/interactive-mode.js +29 -5260
  1202. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  1203. package/dist/modes/interactive/interactive-model-routing.d.ts +2 -0
  1204. package/dist/modes/interactive/interactive-model-routing.d.ts.map +1 -0
  1205. package/dist/modes/interactive/interactive-model-routing.js +269 -0
  1206. package/dist/modes/interactive/interactive-model-routing.js.map +1 -0
  1207. package/dist/modes/interactive/interactive-process-lifecycle.d.ts +2 -0
  1208. package/dist/modes/interactive/interactive-process-lifecycle.d.ts.map +1 -0
  1209. package/dist/modes/interactive/interactive-process-lifecycle.js +189 -0
  1210. package/dist/modes/interactive/interactive-process-lifecycle.js.map +1 -0
  1211. package/dist/modes/interactive/interactive-queueing.d.ts +2 -0
  1212. package/dist/modes/interactive/interactive-queueing.d.ts.map +1 -0
  1213. package/dist/modes/interactive/interactive-queueing.js +163 -0
  1214. package/dist/modes/interactive/interactive-queueing.js.map +1 -0
  1215. package/dist/modes/interactive/interactive-render-chat.d.ts +2 -0
  1216. package/dist/modes/interactive/interactive-render-chat.d.ts.map +1 -0
  1217. package/dist/modes/interactive/interactive-render-chat.js +170 -0
  1218. package/dist/modes/interactive/interactive-render-chat.js.map +1 -0
  1219. package/dist/modes/interactive/interactive-resource-disclosure.d.ts +2 -0
  1220. package/dist/modes/interactive/interactive-resource-disclosure.d.ts.map +1 -0
  1221. package/dist/modes/interactive/interactive-resource-disclosure.js +101 -0
  1222. package/dist/modes/interactive/interactive-resource-disclosure.js.map +1 -0
  1223. package/dist/modes/interactive/interactive-resource-paths.d.ts +2 -0
  1224. package/dist/modes/interactive/interactive-resource-paths.d.ts.map +1 -0
  1225. package/dist/modes/interactive/interactive-resource-paths.js +228 -0
  1226. package/dist/modes/interactive/interactive-resource-paths.js.map +1 -0
  1227. package/dist/modes/interactive/interactive-resource-rendering.d.ts +2 -0
  1228. package/dist/modes/interactive/interactive-resource-rendering.d.ts.map +1 -0
  1229. package/dist/modes/interactive/interactive-resource-rendering.js +181 -0
  1230. package/dist/modes/interactive/interactive-resource-rendering.js.map +1 -0
  1231. package/dist/modes/interactive/interactive-selectors.d.ts +2 -0
  1232. package/dist/modes/interactive/interactive-selectors.d.ts.map +1 -0
  1233. package/dist/modes/interactive/interactive-selectors.js +198 -0
  1234. package/dist/modes/interactive/interactive-selectors.js.map +1 -0
  1235. package/dist/modes/interactive/interactive-session-routing.d.ts +2 -0
  1236. package/dist/modes/interactive/interactive-session-routing.d.ts.map +1 -0
  1237. package/dist/modes/interactive/interactive-session-routing.js +232 -0
  1238. package/dist/modes/interactive/interactive-session-routing.js.map +1 -0
  1239. package/dist/modes/interactive/interactive-session-runtime.d.ts +2 -0
  1240. package/dist/modes/interactive/interactive-session-runtime.d.ts.map +1 -0
  1241. package/dist/modes/interactive/interactive-session-runtime.js +131 -0
  1242. package/dist/modes/interactive/interactive-session-runtime.js.map +1 -0
  1243. package/dist/modes/interactive/interactive-slash-commands.d.ts +2 -0
  1244. package/dist/modes/interactive/interactive-slash-commands.d.ts.map +1 -0
  1245. package/dist/modes/interactive/interactive-slash-commands.js +338 -0
  1246. package/dist/modes/interactive/interactive-slash-commands.js.map +1 -0
  1247. package/dist/modes/interactive/interactive-startup.d.ts +2 -0
  1248. package/dist/modes/interactive/interactive-startup.d.ts.map +1 -0
  1249. package/dist/modes/interactive/interactive-startup.js +348 -0
  1250. package/dist/modes/interactive/interactive-startup.js.map +1 -0
  1251. package/dist/modes/interactive/theme/color-utils.d.ts +20 -0
  1252. package/dist/modes/interactive/theme/color-utils.d.ts.map +1 -0
  1253. package/dist/modes/interactive/theme/color-utils.js +204 -0
  1254. package/dist/modes/interactive/theme/color-utils.js.map +1 -0
  1255. package/dist/modes/interactive/theme/export-colors.d.ts +19 -0
  1256. package/dist/modes/interactive/theme/export-colors.d.ts.map +1 -0
  1257. package/dist/modes/interactive/theme/export-colors.js +69 -0
  1258. package/dist/modes/interactive/theme/export-colors.js.map +1 -0
  1259. package/dist/modes/interactive/theme/global-theme.d.ts +12 -0
  1260. package/dist/modes/interactive/theme/global-theme.d.ts.map +1 -0
  1261. package/dist/modes/interactive/theme/global-theme.js +150 -0
  1262. package/dist/modes/interactive/theme/global-theme.js.map +1 -0
  1263. package/dist/modes/interactive/theme/terminal-detection.d.ts +30 -0
  1264. package/dist/modes/interactive/theme/terminal-detection.d.ts.map +1 -0
  1265. package/dist/modes/interactive/theme/terminal-detection.js +89 -0
  1266. package/dist/modes/interactive/theme/terminal-detection.js.map +1 -0
  1267. package/dist/modes/interactive/theme/theme-class.d.ts +30 -0
  1268. package/dist/modes/interactive/theme/theme-class.d.ts.map +1 -0
  1269. package/dist/modes/interactive/theme/theme-class.js +83 -0
  1270. package/dist/modes/interactive/theme/theme-class.js.map +1 -0
  1271. package/dist/modes/interactive/theme/theme-loading.d.ts +17 -0
  1272. package/dist/modes/interactive/theme/theme-loading.d.ts.map +1 -0
  1273. package/dist/modes/interactive/theme/theme-loading.js +155 -0
  1274. package/dist/modes/interactive/theme/theme-loading.js.map +1 -0
  1275. package/dist/modes/interactive/theme/theme-parse.d.ts +5 -0
  1276. package/dist/modes/interactive/theme/theme-parse.d.ts.map +1 -0
  1277. package/dist/modes/interactive/theme/theme-parse.js +52 -0
  1278. package/dist/modes/interactive/theme/theme-parse.js.map +1 -0
  1279. package/dist/modes/interactive/theme/theme-schema.d.ts +255 -0
  1280. package/dist/modes/interactive/theme/theme-schema.d.ts.map +1 -0
  1281. package/dist/modes/interactive/theme/theme-schema.js +78 -0
  1282. package/dist/modes/interactive/theme/theme-schema.js.map +1 -0
  1283. package/dist/modes/interactive/theme/theme.d.ts +6 -108
  1284. package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  1285. package/dist/modes/interactive/theme/theme.js +6 -1065
  1286. package/dist/modes/interactive/theme/theme.js.map +1 -1
  1287. package/dist/modes/interactive/theme/tui-theme.d.ts +15 -0
  1288. package/dist/modes/interactive/theme/tui-theme.d.ts.map +1 -0
  1289. package/dist/modes/interactive/theme/tui-theme.js +199 -0
  1290. package/dist/modes/interactive/theme/tui-theme.js.map +1 -0
  1291. package/dist/modes/rpc/rpc-client.d.ts +1 -61
  1292. package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
  1293. package/dist/modes/rpc/rpc-client.js +1 -72
  1294. package/dist/modes/rpc/rpc-client.js.map +1 -1
  1295. package/dist/modes/rpc/rpc-command-handler.d.ts +14 -0
  1296. package/dist/modes/rpc/rpc-command-handler.d.ts.map +1 -0
  1297. package/dist/modes/rpc/rpc-command-handler.js +226 -0
  1298. package/dist/modes/rpc/rpc-command-handler.js.map +1 -0
  1299. package/dist/modes/rpc/rpc-extension-ui.d.ts +15 -0
  1300. package/dist/modes/rpc/rpc-extension-ui.d.ts.map +1 -0
  1301. package/dist/modes/rpc/rpc-extension-ui.js +196 -0
  1302. package/dist/modes/rpc/rpc-extension-ui.js.map +1 -0
  1303. package/dist/modes/rpc/rpc-input.d.ts +12 -0
  1304. package/dist/modes/rpc/rpc-input.d.ts.map +1 -0
  1305. package/dist/modes/rpc/rpc-input.js +54 -0
  1306. package/dist/modes/rpc/rpc-input.js.map +1 -0
  1307. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  1308. package/dist/modes/rpc/rpc-mode.js +43 -607
  1309. package/dist/modes/rpc/rpc-mode.js.map +1 -1
  1310. package/dist/modes/rpc/rpc-responses.d.ts +8 -0
  1311. package/dist/modes/rpc/rpc-responses.d.ts.map +1 -0
  1312. package/dist/modes/rpc/rpc-responses.js +27 -0
  1313. package/dist/modes/rpc/rpc-responses.js.map +1 -0
  1314. package/dist/modes/rpc/rpc-session-binding.d.ts +25 -0
  1315. package/dist/modes/rpc/rpc-session-binding.d.ts.map +1 -0
  1316. package/dist/modes/rpc/rpc-session-binding.js +70 -0
  1317. package/dist/modes/rpc/rpc-session-binding.js.map +1 -0
  1318. package/dist/package-manager-cli-parser.d.ts +28 -0
  1319. package/dist/package-manager-cli-parser.d.ts.map +1 -0
  1320. package/dist/package-manager-cli-parser.js +269 -0
  1321. package/dist/package-manager-cli-parser.js.map +1 -0
  1322. package/dist/package-manager-cli.d.ts +0 -1
  1323. package/dist/package-manager-cli.d.ts.map +1 -1
  1324. package/dist/package-manager-cli.js +2 -267
  1325. package/dist/package-manager-cli.js.map +1 -1
  1326. package/dist/utils/git.d.ts.map +1 -1
  1327. package/dist/utils/git.js +10 -0
  1328. package/dist/utils/git.js.map +1 -1
  1329. package/dist/utils/version-check.d.ts +1 -0
  1330. package/dist/utils/version-check.d.ts.map +1 -1
  1331. package/dist/utils/version-check.js +17 -0
  1332. package/dist/utils/version-check.js.map +1 -1
  1333. package/docs/development.md +4 -0
  1334. package/docs/workflows.md +8 -6
  1335. package/examples/extensions/custom-provider-anthropic/index.ts +1 -106
  1336. package/examples/extensions/gondolin/index.ts +0 -23
  1337. package/examples/extensions/overlay-qa-animation-components.ts +255 -0
  1338. package/examples/extensions/overlay-qa-focus-components.ts +222 -0
  1339. package/examples/extensions/overlay-qa-position-components.ts +433 -0
  1340. package/examples/extensions/overlay-qa-shared.ts +37 -0
  1341. package/examples/extensions/overlay-qa-streaming-input-components.ts +205 -0
  1342. package/examples/extensions/overlay-qa-tests.ts +17 -1156
  1343. package/examples/extensions/overlay-qa-toggle-passive-components.ts +169 -0
  1344. package/examples/extensions/space-invaders.ts +0 -60
  1345. package/examples/extensions/subagent/display.ts +148 -0
  1346. package/examples/extensions/subagent/index.ts +11 -858
  1347. package/examples/extensions/subagent/render.ts +383 -0
  1348. package/examples/extensions/subagent/runner.ts +252 -0
  1349. package/examples/extensions/subagent/schemas.ts +59 -0
  1350. package/examples/extensions/subagent/types.ts +36 -0
  1351. package/examples/extensions/tic-tac-toe-instructions.ts +65 -0
  1352. package/examples/extensions/tic-tac-toe-rendering.ts +414 -0
  1353. package/examples/extensions/tic-tac-toe-state.ts +158 -0
  1354. package/examples/extensions/tic-tac-toe.ts +92 -754
  1355. package/examples/rpc-extension-ui-components.ts +189 -0
  1356. package/examples/rpc-extension-ui.ts +2 -179
  1357. package/package.json +4 -4
@@ -17,1391 +17,9 @@
17
17
  * - DESIGN.md §4 (Elevation), §5 (Components)
18
18
  */
19
19
  import type { Component } from "@earendil-works/pi-tui";
20
- import {
21
- Key,
22
- matchesKey,
23
- sliceColumns,
24
- truncateToWidth,
25
- visibleWidth,
26
- } from "./text-helpers.js";
27
- import type { Store } from "../shared/store.js";
28
- import type {
29
- PendingPrompt,
30
- StageSnapshot,
31
- StoreSnapshot,
32
- RunSnapshot,
33
- } from "../shared/store-types.js";
34
- import type { GraphTheme } from "./graph-theme.js";
35
- import type { SwitcherState } from "./switcher.js";
36
- import type { LayoutNode } from "./layout.js";
37
- import {
38
- expandWorkflowGraph,
39
- expandedStageTarget,
40
- type ExpandedWorkflowGraph,
41
- type ExpandedWorkflowStage,
42
- } from "../shared/expanded-workflow-graph.js";
43
- import { computeLayout, NODE_W, NODE_H } from "./layout.js";
44
- import { renderHeader, renderOutlinePill } from "./header.js";
45
- import { renderNodeCard } from "./node-card.js";
46
- import { renderSwitcher, filterStages } from "./switcher.js";
47
- import { renderToasts, createToastManager } from "./toast.js";
48
- import { hexToAnsi, hexBg, RESET, BOLD } from "./color-utils.js";
49
- import { GraphCanvas } from "./graph-canvas.js";
50
- import {
51
- createPromptCardState,
52
- defaultResponseFor,
53
- handlePromptCardInput,
54
- renderPromptCard,
55
- type PromptCardState,
56
- } from "./prompt-card.js";
57
- import { isKeybindingsLike, type KeybindingsLike } from "./keybindings-adapter.js";
20
+ import { GraphViewInputController } from "./graph-view-input.js";
58
21
 
59
- export type GraphViewMode = "overlay" | "widget";
22
+ export type { GraphViewMode, GraphViewOpts } from "./graph-view-types.js";
60
23
 
61
- export interface GraphViewOpts {
62
- mode: GraphViewMode;
63
- runId: string | null;
64
- store: Store;
65
- graphTheme: GraphTheme;
66
- onClose?: () => void;
67
- /**
68
- * Invoked when the user presses `q` inside the pane on an in-flight
69
- * run. Fires immediately (no confirm) per the toggle-driven UX:
70
- * `h` hides without quitting; `q` is reserved for terminating the
71
- * current run.
72
- */
73
- onKill?: (runId: string) => void;
74
- /**
75
- * Invoked when the user presses `h` inside the pane. Hides without
76
- * unmounting (overlay-adapter calls `setHidden(true)`). Re-open via
77
- * `F2` or `/workflow connect <id>`.
78
- */
79
- onHide?: () => void;
80
- /**
81
- * Invoked when the user submits (or skips) a HIL prompt rendered inside
82
- * the pane. The callback typically calls `store.resolvePendingPrompt`;
83
- * GraphView itself stays UI-only.
84
- */
85
- onPromptResolve?: (runId: string, promptId: string, response: unknown) => void;
86
- /**
87
- * Invoked when the user presses Enter on a focused graph node — the
88
- * parent attach shell swaps the popup interior to that stage's chat
89
- * pane. When unset, Enter is a no-op (preserves graph mode).
90
- */
91
- onStageAttach?: (runId: string, stageId: string) => void;
92
- /**
93
- * Invoked when the user presses `Ctrl+D` while in graph mode. Mirrors
94
- * the in-chat back affordance: detaches the whole popup (host calls
95
- * `setHidden(true)`). Falls back to `onHide` when unset.
96
- */
97
- onDetach?: () => void;
98
- /**
99
- * When provided, GraphView restores focus to this stage on construction
100
- * — used by the attach shell so returning from the chat lands the
101
- * cursor on the same node the user just attached to.
102
- */
103
- initialFocusedStageId?: string;
104
- /**
105
- * Optional accessor returning the current terminal row count. When
106
- * present in overlay mode the renderer expands the frame to roughly
107
- * `viewportRows` lines (clamped to at least the header + statusline
108
- * budget) so the popup fills the terminal under pi-tui's
109
- * `width: "100%" / maxHeight: "100%"` geometry. Returning `undefined`
110
- * falls back to the constant `OVERLAY_LINE_COUNT` rectangle.
111
- */
112
- getViewportRows?: () => number | undefined;
113
- /**
114
- * Invoked on each animation tick (~10 FPS) so the host can call
115
- * `tui.requestRender()`. Only wired in `overlay` mode; supplying it
116
- * starts the tick loop in the constructor so duration counters and
117
- * the running-stage border pulse refresh without requiring a key
118
- * press. The host is responsible for gating the underlying
119
- * `requestRender` on overlay visibility / focus (see
120
- * `overlay-adapter.ts`).
121
- */
122
- requestRender?: () => void;
123
- /** Host Pi keybindings manager used by run-level prompt cards. */
124
- piKeybindings?: unknown;
125
- }
126
-
127
- const HINT_KEYS: Array<{ key: string; label: string }> = [
128
- { key: "↑↓←→", label: "navigate" },
129
- { key: "↵", label: "attach" },
130
- { key: "/", label: "stages" },
131
- { key: "ctrl+d", label: "detach" },
132
- { key: "q", label: "kill" },
133
- ];
134
-
135
- /**
136
- * Bottom mode pill. The status bar mirrors the top header band: a
137
- * three-row chrome strip with an outlined pill flush-left and hints
138
- * flowing right of it on the centre row.
139
- */
140
- const MODE_PILL_LABEL = "GRAPH";
141
-
142
- /**
143
- * Fixed line count emitted by `_renderOverlay`. pi-tui paints the
144
- * overlay in the same buffer as the chat, so a *variable* line count
145
- * causes the chat to scroll every time the focused-stage section grows
146
- * or shrinks — that's exactly the duplicate-rows bug we hit when
147
- * navigating with j/k. Padding to a constant height keeps the overlay
148
- * a stable rectangle that pi-tui can diff cell-by-cell.
149
- *
150
- * Mirrors the doom-overlay reference extension, which always emits the
151
- * same number of lines per frame regardless of game state.
152
- */
153
- const OVERLAY_LINE_COUNT = 32;
154
- const OVERLAY_VERTICAL_MARGIN_ROWS = 1;
155
-
156
- /**
157
- * Animation tick period. Overlay re-renders fire on this cadence so
158
- * duration counters tick from active elapsed time (freezing while paused)
159
- * and the running-stage border lerps between `borderDim` and
160
- * `warning` without a key press. The host-supplied `requestRender`
161
- * gate prevents work while the overlay is hidden or unfocused.
162
- */
163
- const ANIMATION_TICK_MS = 100;
164
-
165
- /**
166
- * Full lerp period of `pulseT` for running-stage borders, in ms.
167
- * `pulsePhase ∈ [0, 1)` cycles every `PULSE_PERIOD_MS` so the sine
168
- * eased lerp inside `pickBorder` traces one full breath per cycle.
169
- */
170
- const PULSE_PERIOD_MS = 2000;
171
- const GRAPH_SCROLL_STEP_ROWS = 4;
172
-
173
- export class GraphView implements Component {
174
- private mode: GraphViewMode;
175
- private runId: string | null;
176
- private store: Store;
177
- private graphTheme: GraphTheme;
178
- private onClose?: () => void;
179
- private onKill?: (runId: string) => void;
180
- private onHide?: () => void;
181
- private onPromptResolve?: (runId: string, promptId: string, response: unknown) => void;
182
- private onStageAttach?: (runId: string, stageId: string) => void;
183
- private onDetach?: () => void;
184
- private initialFocusedStageId?: string;
185
- private getViewportRows?: () => number | undefined;
186
- private requestRender?: () => void;
187
- private piKeybindings?: unknown;
188
-
189
- /** Active HIL prompt state, set when `_rebuildLayout` sees a new prompt id. */
190
- private promptState: PromptCardState | null = null;
191
-
192
- private focusedIndex = 0;
193
- private switcherOpen = false;
194
- private switcherState: SwitcherState = { query: "", selectedIndex: 0 };
195
- private toastManager = createToastManager();
196
- private detailsExpanded = true;
197
- private cachedLayout: LayoutNode[] = [];
198
- private expandedGraph: ExpandedWorkflowGraph = { stages: [], targets: new Map() };
199
- private currentSnapshot: StoreSnapshot | null = null;
200
- private graphScrollOffset = 0;
201
- private graphScrollColOffset = 0;
202
- private pendingEnsureFocusedVisible = true;
203
- private lastAutoFocusedAwaitingInputKey: string | null = null;
204
-
205
- private _intervalId: ReturnType<typeof setInterval> | null = null;
206
- private _lastGTime: number | null = null;
207
- private _unsubscribe: (() => void) | null = null;
208
-
209
- constructor(opts: GraphViewOpts) {
210
- this.mode = opts.mode;
211
- this.runId = opts.runId;
212
- this.store = opts.store;
213
- this.graphTheme = opts.graphTheme;
214
- this.onClose = opts.onClose;
215
- this.onKill = opts.onKill;
216
- this.onHide = opts.onHide;
217
- this.onPromptResolve = opts.onPromptResolve;
218
- this.onStageAttach = opts.onStageAttach;
219
- this.onDetach = opts.onDetach;
220
- this.initialFocusedStageId = opts.initialFocusedStageId;
221
- this.getViewportRows = opts.getViewportRows;
222
- this.requestRender = opts.requestRender;
223
- this.piKeybindings = opts.piKeybindings;
224
-
225
- this._unsubscribe = this.store.subscribe((snap) => {
226
- this.currentSnapshot = snap;
227
- this._rebuildLayout();
228
- });
229
- this.currentSnapshot = this.store.snapshot();
230
- this._rebuildLayout();
231
-
232
- // Animation tick: while the overlay is mounted, fire a render
233
- // request every `ANIMATION_TICK_MS` so the duration counter on
234
- // each running stage advances and the border-pulse lerp animates
235
- // even when the user isn't pressing keys. Only overlay mode owns
236
- // visible animations; widget mode renders a single status line
237
- // that never needs a steady cadence. The host's `requestRender`
238
- // is responsible for gating on overlay visibility / focus — see
239
- // `overlay-adapter.ts` and `workflow-attach-pane.ts`. With that
240
- // gate in place the previous tmux scrollback "ghost overlay"
241
- // failure mode does not apply: pi-tui owns the screen buffer
242
- // and diff-blits frames in place.
243
- if (this.mode === "overlay" && this.requestRender) {
244
- this._intervalId = setInterval(() => {
245
- this.requestRender?.();
246
- }, ANIMATION_TICK_MS);
247
- (this._intervalId as { unref?: () => void }).unref?.();
248
- }
249
- }
250
-
251
- private _rebuildLayout(): void {
252
- const run = this._getCurrentRun();
253
- if (!run) {
254
- this.cachedLayout = [];
255
- this.expandedGraph = { stages: [], targets: new Map() };
256
- this.focusedIndex = 0;
257
- this.graphScrollOffset = 0;
258
- this.graphScrollColOffset = 0;
259
- this.pendingEnsureFocusedVisible = true;
260
- this.promptState = null;
261
- return;
262
- }
263
-
264
- const previousFocusedStageId = this.cachedLayout[this.focusedIndex]?.stage.id;
265
- const graphStages = this._graphStages(run);
266
- const nextLayout = computeLayout(graphStages, { orientation: "vertical" });
267
- this.cachedLayout = nextLayout;
268
-
269
- let focusNeedsReveal = this.pendingEnsureFocusedVisible;
270
- // One-shot: if the host passed `initialFocusedStageId`, snap the
271
- // cursor to that stage now that the layout exists. The attach shell
272
- // uses this when swapping back from chat mode so the focus lands on
273
- // the same node the user just attached to.
274
- if (this.initialFocusedStageId !== undefined) {
275
- const idx = this.cachedLayout.findIndex(
276
- (n) =>
277
- n.stage.id === this.initialFocusedStageId ||
278
- expandedStageTarget(this.expandedGraph, n.stage.id)?.stageId === this.initialFocusedStageId,
279
- );
280
- if (idx >= 0 && idx !== this.focusedIndex) {
281
- this.focusedIndex = idx;
282
- focusNeedsReveal = true;
283
- }
284
- this.initialFocusedStageId = undefined;
285
- } else if (previousFocusedStageId !== undefined) {
286
- const idx = this.cachedLayout.findIndex(
287
- (n) => n.stage.id === previousFocusedStageId,
288
- );
289
- if (idx >= 0 && idx !== this.focusedIndex) {
290
- this.focusedIndex = idx;
291
- focusNeedsReveal = true;
292
- }
293
- }
294
-
295
- const awaitingTarget = this._awaitingInputFocusTarget();
296
- if (awaitingTarget) {
297
- if (awaitingTarget.key !== this.lastAutoFocusedAwaitingInputKey) {
298
- this.focusedIndex = awaitingTarget.index;
299
- focusNeedsReveal = true;
300
- this.lastAutoFocusedAwaitingInputKey = awaitingTarget.key;
301
- }
302
- } else {
303
- this.lastAutoFocusedAwaitingInputKey = null;
304
- }
305
-
306
- if (this.cachedLayout.length === 0) {
307
- this.focusedIndex = 0;
308
- this.graphScrollOffset = 0;
309
- this.graphScrollColOffset = 0;
310
- } else if (this.focusedIndex >= this.cachedLayout.length) {
311
- this.focusedIndex = this.cachedLayout.length - 1;
312
- focusNeedsReveal = true;
313
- }
314
- this.pendingEnsureFocusedVisible = focusNeedsReveal;
315
- this._syncPromptState(run.pendingPrompt);
316
- }
317
-
318
- private _awaitingInputFocusTarget(): { index: number; key: string } | null {
319
- let newest: { index: number; key: string; createdAt: number } | null = null;
320
- for (let index = 0; index < this.cachedLayout.length; index++) {
321
- const stage = this.cachedLayout[index]!.stage;
322
- const target = this._awaitingInputKey(stage);
323
- if (!target) continue;
324
- if (!newest || target.createdAt >= newest.createdAt) {
325
- newest = { index, key: target.key, createdAt: target.createdAt };
326
- }
327
- }
328
- return newest ? { index: newest.index, key: newest.key } : null;
329
- }
330
-
331
- private _awaitingInputKey(stage: StageSnapshot): { key: string; createdAt: number } | null {
332
- const target = expandedStageTarget(this.expandedGraph, stage.id);
333
- const prefix = target ? `${target.runId}:${target.stageId}` : stage.id;
334
- if (stage.pendingPrompt) {
335
- return {
336
- key: `prompt:${prefix}:${stage.pendingPrompt.id}`,
337
- createdAt: stage.pendingPrompt.createdAt,
338
- };
339
- }
340
- if (stage.inputRequest) {
341
- return {
342
- key: `input-request:${prefix}:${stage.inputRequest.id}`,
343
- createdAt: stage.inputRequest.createdAt,
344
- };
345
- }
346
- if (stage.status === "awaiting_input") {
347
- return {
348
- key: `awaiting:${prefix}:${stage.awaitingInputSince ?? "active"}`,
349
- createdAt: stage.awaitingInputSince ?? stage.startedAt ?? 0,
350
- };
351
- }
352
- return null;
353
- }
354
-
355
- private _graphStages(run: RunSnapshot): ExpandedWorkflowStage[] {
356
- this.expandedGraph = this.currentSnapshot
357
- ? expandWorkflowGraph(this.currentSnapshot, run.id)
358
- : { stages: [], targets: new Map() };
359
- const stages = [...this.expandedGraph.stages];
360
- const hasStagePrompt = stages.some((stage) =>
361
- stage.pendingPrompt !== undefined ||
362
- (stage.status === "awaiting_input" && stage.promptFootprint?.kind === "custom")
363
- );
364
- if (!hasStagePrompt) return stages;
365
- return stages.filter((stage) => {
366
- // Prompt-node injection can leave unstarted author stages in the store
367
- // while the prompt node owns focus; hide only these inert placeholders.
368
- const isUnstartedPlaceholder =
369
- stage.status === "pending" &&
370
- stage.startedAt === undefined &&
371
- stage.pendingPrompt === undefined &&
372
- stage.toolEvents.length === 0;
373
- return !isUnstartedPlaceholder;
374
- });
375
- }
376
-
377
- /**
378
- * Mirror the run's `pendingPrompt` into a UI working state. A new prompt
379
- * id resets the state (caret + buffer); a cleared prompt drops the state
380
- * so the card disappears.
381
- */
382
- private _syncPromptState(prompt: PendingPrompt | undefined): void {
383
- if (!prompt) {
384
- this.promptState = null;
385
- return;
386
- }
387
- if (!this.promptState || this.promptState.prompt.id !== prompt.id) {
388
- this.promptState = createPromptCardState(prompt);
389
- }
390
- }
391
-
392
- private _getCurrentRun(): RunSnapshot | null {
393
- if (!this.currentSnapshot) return null;
394
- // Pin to the first run we see so a completed run stays visible after
395
- // `activeRunId()` clears. Caller can still pass an explicit runId.
396
- if (this.runId == null) {
397
- const activeId = this.store.activeRunId();
398
- if (activeId != null) {
399
- this.runId = activeId;
400
- }
401
- }
402
- if (this.runId == null) return null;
403
- return this.currentSnapshot.runs.find((r) => r.id === this.runId) ?? null;
404
- }
405
-
406
- /** Render to string lines. width = terminal columns. */
407
- render(width: number): string[] {
408
- if (this.mode === "widget") {
409
- return this._renderWidget(width);
410
- }
411
- return this._renderOverlay(width);
412
- }
413
-
414
- private _renderWidget(width: number): string[] {
415
- const run = this._getCurrentRun();
416
- if (!run) {
417
- return [`${hexToAnsi(this.graphTheme.dim)}no active workflow${RESET}`];
418
- }
419
- const displayStages = this._displayStages(run);
420
- const headerLines = renderHeader({ ...run, stages: displayStages }, { width, theme: this.graphTheme });
421
- const counts = this._counts(displayStages);
422
- const trailer =
423
- `${hexToAnsi(this.graphTheme.dim)}` +
424
- `${counts.completed}/${displayStages.length} done` +
425
- (counts.running > 0 ? ` · ${counts.running} running` : "") +
426
- (counts.failed > 0 ? ` · ${counts.failed} failed` : "") +
427
- (counts.blocked > 0 ? ` · ${counts.blocked} blocked` : "") +
428
- RESET;
429
- return [...headerLines, ` ${trailer}`];
430
- }
431
-
432
- /**
433
- * Number of rows the overlay frame must paint. Pi-tui anchors the
434
- * overlay vertically by counting rendered lines, so to truly fill the
435
- * terminal under `maxHeight: "100%"` the component must emit
436
- * approximately `terminal.rows` lines. When a host reports fewer
437
- * than the legacy 32 rows, honour that shorter viewport where the
438
- * graph chrome can still fit so the bottom status controls are not
439
- * clipped by pi-tui's overlay max-height slicing. A host that doesn't
440
- * surface terminal dimensions keeps the previous stable rectangle.
441
- */
442
- private _overlayLineCount(): number {
443
- const reported = this.getViewportRows?.();
444
- if (typeof reported !== "number" || !Number.isFinite(reported)) {
445
- return OVERLAY_LINE_COUNT;
446
- }
447
- // Header (3) + one body row + statusline (3) is the absolute
448
- // minimum useful frame. Margins are dropped automatically at this
449
- // size by `_overlayVerticalMarginRows`.
450
- return Math.max(7, Math.floor(reported));
451
- }
452
-
453
- /** Rows available for the graph body (between header and statusline). */
454
- private _overlayBodyRows(lineCount: number): number {
455
- return Math.max(1, lineCount - 3 /* header */ - 3 /* statusline */);
456
- }
457
-
458
- private _overlayVerticalMarginRows(lineCount = this._overlayLineCount()): number {
459
- return lineCount >= 9 ? OVERLAY_VERTICAL_MARGIN_ROWS : 0;
460
- }
461
-
462
- private _overlayPanelLineCount(): number {
463
- const lineCount = this._overlayLineCount();
464
- const margins = this._overlayVerticalMarginRows(lineCount) * 2;
465
- return Math.max(7, lineCount - margins);
466
- }
467
-
468
- private _marginRow(width: number): string {
469
- return " ".repeat(width);
470
- }
471
-
472
- private _withVerticalMargins(panelLines: string[], width: number): string[] {
473
- const expected = this._overlayLineCount();
474
- const marginRows = this._overlayVerticalMarginRows(expected);
475
- const panelTarget = this._overlayPanelLineCount();
476
- const body = panelLines.slice(0, panelTarget);
477
- while (body.length < panelTarget) body.push(this._blankRow(width));
478
- const margins = Array.from({ length: marginRows }, () => this._marginRow(width));
479
- const lines = [...margins, ...body, ...margins];
480
- if (lines.length > expected) return lines.slice(0, expected);
481
- while (lines.length < expected) {
482
- const insertAt = marginRows > 0 ? Math.max(0, lines.length - marginRows) : lines.length;
483
- lines.splice(insertAt, 0, this._blankRow(width));
484
- }
485
- return lines;
486
- }
487
-
488
- private _renderOverlay(width: number): string[] {
489
- const frameWidth = Math.max(40, width);
490
- const lines: string[] = [];
491
- const run = this._getCurrentRun();
492
-
493
- if (!run) {
494
- return this._renderEmptyState(frameWidth);
495
- }
496
-
497
- // 1. Header chrome (3 rows: outline pill + session name + counts).
498
- lines.push(
499
- ...renderHeader({ ...run, stages: this._displayStages(run) }, { width: frameWidth, theme: this.graphTheme }),
500
- );
501
-
502
- // 2. Graph occupies the full body. No section labels, no focused-
503
- // stage panel — status colour on each card carries that signal.
504
- const graphLines = this._renderGraph(frameWidth);
505
- const bodyTarget = this._overlayBodyRows(this._overlayPanelLineCount());
506
- const visibleGraph = this._visibleGraphLines(
507
- graphLines,
508
- frameWidth,
509
- bodyTarget,
510
- );
511
- for (let i = 0; i < visibleGraph.topPad; i++)
512
- lines.push(this._blankRow(frameWidth));
513
- for (const line of visibleGraph.lines) {
514
- lines.push(this._canvasRow(line, frameWidth));
515
- }
516
- while (lines.length < 3 + bodyTarget)
517
- lines.push(this._blankRow(frameWidth));
518
- if (lines.length > 3 + bodyTarget) lines.length = 3 + bodyTarget;
519
-
520
- // 3. Switcher overlay — floats over the body when open.
521
- if (this.switcherOpen) {
522
- const bodyStart = 3;
523
- const bodyEnd = 3 + bodyTarget;
524
- for (let row = bodyStart; row < bodyEnd; row++) {
525
- lines[row] = this._blankRow(frameWidth);
526
- }
527
- const switcherWidth = Math.min(60, Math.max(40, frameWidth - 8));
528
- const switcherLines = renderSwitcher(this._displayStages(run), this.switcherState, {
529
- width: switcherWidth,
530
- theme: this.graphTheme,
531
- });
532
- const insertAt = Math.max(bodyStart, bodyStart + Math.min(2, Math.floor((bodyTarget - switcherLines.length) / 3)));
533
- const switcherLeft = Math.max(2, Math.floor((frameWidth - switcherWidth) / 2));
534
- for (let i = 0; i < switcherLines.length; i++) {
535
- const lineIdx = insertAt + i;
536
- if (lineIdx >= bodyEnd) break;
537
- const base = lines[lineIdx] ?? this._blankRow(frameWidth);
538
- const merged = this._overlayCard(base, switcherLines[i]!, switcherLeft, frameWidth);
539
- if (lineIdx < lines.length) lines[lineIdx] = merged;
540
- else lines.push(merged);
541
- }
542
- }
543
-
544
- // 4. Pending HIL prompt — floats over the graph body, centred. The
545
- // chat editor remains free regardless: the overlay is the only
546
- // surface that interacts with the prompt. When the stage switcher is
547
- // open it owns the body/input, so hide the prompt card until it closes.
548
- if (this.promptState && !this.switcherOpen) {
549
- const cardWidth = Math.min(72, Math.max(40, frameWidth - 6));
550
- const cardLines = renderPromptCard({
551
- state: this.promptState,
552
- theme: this.graphTheme,
553
- width: cardWidth,
554
- cursorOn: ((Date.now() / 530) | 0) % 2 === 0,
555
- });
556
- const bodyStart = 3;
557
- const bodyEnd = 3 + bodyTarget;
558
- const slot = Math.max(
559
- bodyStart,
560
- bodyStart + Math.floor((bodyTarget - cardLines.length) / 2),
561
- );
562
- const leftPad = Math.max(0, Math.floor((frameWidth - cardWidth) / 2));
563
- for (let i = 0; i < cardLines.length; i++) {
564
- const lineIdx = slot + i;
565
- if (lineIdx >= bodyEnd) break;
566
- const base = lines[lineIdx] ?? this._blankRow(frameWidth);
567
- lines[lineIdx] = this._overlayCard(base, cardLines[i]!, leftPad, frameWidth);
568
- }
569
- }
570
-
571
- // 4. Toast overlay — top-right of header band.
572
- const toastLines = renderToasts(this.toastManager.active(), {
573
- theme: this.graphTheme,
574
- });
575
- if (toastLines.length > 0) {
576
- for (let i = 0; i < toastLines.length && i < lines.length; i++) {
577
- const existing = lines[i] ?? "";
578
- const merged = `${existing} ${toastLines[i]}`;
579
- lines[i] = truncateToWidth(merged, frameWidth, "", true);
580
- }
581
- }
582
-
583
- // 5. Three-row statusline pinned to the bottom.
584
- lines.push(...this._renderStatusline(frameWidth));
585
-
586
- return this._withVerticalMargins(lines, frameWidth);
587
- }
588
-
589
- private _renderEmptyState(width: number): string[] {
590
- const t = this.graphTheme;
591
- const muted = hexToAnsi(t.textMuted);
592
- const dim = hexToAnsi(t.dim);
593
- const accent = hexToAnsi(t.accent);
594
- const chromeBg = hexBg(t.backgroundPanel);
595
-
596
- const {
597
- top,
598
- mid,
599
- bot,
600
- visibleWidth: pillW,
601
- } = renderOutlinePill("ORCHESTRATOR", t.accent, chromeBg);
602
- const idleLabel = ` ${muted}idle${RESET}`;
603
- const fillerVisible = Math.max(0, width - 1 - pillW - 6 /* " idle" */ - 2);
604
- const filler = " ".repeat(fillerVisible);
605
- const lines: string[] = [
606
- `${chromeBg} ${RESET}${top}${chromeBg}${" ".repeat(6 + fillerVisible)}${" ".repeat(2)}${RESET}`,
607
- `${chromeBg} ${RESET}${mid}${chromeBg}${idleLabel}${filler}${" ".repeat(2)}${RESET}`,
608
- `${chromeBg} ${RESET}${bot}${chromeBg}${" ".repeat(6 + fillerVisible)}${" ".repeat(2)}${RESET}`,
609
- ];
610
- const bodyTarget = this._overlayBodyRows(this._overlayPanelLineCount());
611
- const body: string[] = [
612
- this._canvasRow(` ${muted}No active workflow run.${RESET}`, width),
613
- this._canvasRow(
614
- ` ${dim}Start one with ${accent}/workflow <name>${RESET}${dim} or press ${accent}F2${RESET}${dim} on an active run.${RESET}`,
615
- width,
616
- ),
617
- ];
618
- const topPad = Math.max(0, Math.floor((bodyTarget - body.length) / 2));
619
- for (let i = 0; i < topPad; i++) lines.push(this._blankRow(width));
620
- for (const l of body) lines.push(l);
621
- while (lines.length < 3 + bodyTarget) lines.push(this._blankRow(width));
622
- lines.push(...this._renderStatusline(width));
623
- return this._withVerticalMargins(lines, width);
624
- }
625
-
626
- private _renderGraph(width: number): string[] {
627
- const run = this._getCurrentRun();
628
- if (!run || this.cachedLayout.length === 0) {
629
- const dim = hexToAnsi(this.graphTheme.dim);
630
- return [
631
- this._centerCanvasContent(
632
- `${dim}waiting for stage events…${RESET}`,
633
- width,
634
- ),
635
- ];
636
- }
637
-
638
- const graphInner = Math.max(1, width - 4);
639
- const canvasWidth = this.cachedLayout.reduce(
640
- (max, node) => Math.max(max, node.x + NODE_W),
641
- 0,
642
- );
643
- // Centre the whole graph horizontally when it fits; otherwise keep a
644
- // small gutter and reveal focused nodes by horizontally scrolling the
645
- // graph canvas. Do not switch to a compact list: the orchestrator pane
646
- // should always preserve the node-card graph view.
647
- const leftMargin = Math.max(
648
- 2,
649
- canvasWidth <= graphInner ? Math.floor((graphInner - canvasWidth) / 2) : 2,
650
- );
651
- const viewportWidth = Math.max(1, width - leftMargin);
652
- const fullCanvasWidth = Math.max(canvasWidth, viewportWidth);
653
- this._clampGraphHorizontalScroll(fullCanvasWidth, viewportWidth);
654
- if (this.pendingEnsureFocusedVisible) {
655
- this._scrollFocusedColumnIntoView(viewportWidth, fullCanvasWidth);
656
- }
657
-
658
- // Pulse phase ∈ [0, 1) derived from wall-clock time so cards lerp
659
- // their border colour on the same beat regardless of how often
660
- // render() fires. The animation tick (`ANIMATION_TICK_MS`) only
661
- // controls render cadence — it does not advance the phase.
662
- const pulsePhase = (Date.now() % PULSE_PERIOD_MS) / PULSE_PERIOD_MS;
663
-
664
- // 1. Plot parent → child edges into a sparse char canvas so they
665
- // survive crisp through column gaps. Node-card bodies overwrite
666
- // edge cells per-row when we compose the final output below.
667
- const edgeCanvas = new GraphCanvas();
668
- const edgeColor = this.graphTheme.borderDim;
669
- const nodeByStageId = new Map(
670
- this.cachedLayout.map((n) => [n.stage.id, n]),
671
- );
672
- for (const node of this.cachedLayout) {
673
- for (const parentId of node.stage.parentIds) {
674
- const parent = nodeByStageId.get(parentId);
675
- if (!parent) continue;
676
- this._plotEdge(
677
- edgeCanvas,
678
- parent.x,
679
- parent.y,
680
- node.x,
681
- node.y,
682
- edgeColor,
683
- );
684
- }
685
- }
686
- const edgeLines = edgeCanvas.toLines();
687
-
688
- // 2. Render each node card and record its row span / start column.
689
- interface Placement {
690
- startCol: number;
691
- width: number;
692
- line: string;
693
- }
694
- const placements: Map<number, Placement[]> = new Map();
695
- for (let ni = 0; ni < this.cachedLayout.length; ni++) {
696
- const node = this.cachedLayout[ni]!;
697
- const focused = ni === this.focusedIndex;
698
- const cardLines = renderNodeCard(node.stage, {
699
- width: NODE_W,
700
- height: NODE_H,
701
- focused,
702
- pulsePhase,
703
- theme: this.graphTheme,
704
- stages: this.cachedLayout.map((layoutNode) => layoutNode.stage),
705
- });
706
- for (let li = 0; li < cardLines.length; li++) {
707
- const rowIdx = node.y + li;
708
- let bucket = placements.get(rowIdx);
709
- if (!bucket) {
710
- bucket = [];
711
- placements.set(rowIdx, bucket);
712
- }
713
- bucket.push({ startCol: node.x, width: NODE_W, line: cardLines[li]! });
714
- }
715
- }
716
-
717
- // 3. Compose each output row by interleaving edge segments with the
718
- // card placements at their assigned columns.
719
- const totalRows = Math.max(
720
- edgeLines.length,
721
- ...this.cachedLayout.map((n) => n.y + NODE_H),
722
- );
723
- const composed: string[] = [];
724
- for (let rowIdx = 0; rowIdx < totalRows; rowIdx++) {
725
- const edgeRowChars = this._edgeRowToCells(edgeLines[rowIdx] ?? "");
726
- const cards = placements.get(rowIdx) ?? [];
727
- composed.push(this._composeRow(edgeRowChars, cards, edgeColor));
728
- }
729
-
730
- // Pad the full graph canvas, then crop a horizontal viewport when the
731
- // fan-out is wider than the terminal. Cards/edges only paint cells they
732
- // occupy; everywhere else needs explicit bg so default terminal colours
733
- // never leak through.
734
- const bg = hexBg(this.graphTheme.bg);
735
- const leftPad = `${bg}${" ".repeat(leftMargin)}${RESET}`;
736
- return composed.map((line) => {
737
- const full = this._padCanvas(line, fullCanvasWidth);
738
- const sliced = this._sliceColumns(
739
- full,
740
- this.graphScrollColOffset,
741
- this.graphScrollColOffset + viewportWidth,
742
- );
743
- return `${leftPad}${this._padCanvas(sliced, viewportWidth)}`;
744
- });
745
- }
746
-
747
- private _visibleGraphLines(
748
- graphLines: string[],
749
- frameWidth: number,
750
- bodyRows: number,
751
- ): { lines: string[]; topPad: number } {
752
- if (graphLines.length <= bodyRows) {
753
- this.graphScrollOffset = 0;
754
- this.pendingEnsureFocusedVisible = false;
755
- return {
756
- lines: graphLines,
757
- topPad: Math.min(3, Math.max(0, Math.floor((bodyRows - graphLines.length) / 2))),
758
- };
759
- }
760
-
761
- this._clampGraphScroll(graphLines.length, bodyRows);
762
- if (this.pendingEnsureFocusedVisible) {
763
- this._scrollFocusedIntoView(frameWidth, bodyRows, graphLines.length);
764
- this.pendingEnsureFocusedVisible = false;
765
- }
766
- this._clampGraphScroll(graphLines.length, bodyRows);
767
- return {
768
- lines: graphLines.slice(
769
- this.graphScrollOffset,
770
- this.graphScrollOffset + bodyRows,
771
- ),
772
- topPad: 0,
773
- };
774
- }
775
-
776
- private _clampGraphScroll(totalRows: number, bodyRows: number): void {
777
- const maxOffset = Math.max(0, totalRows - bodyRows);
778
- this.graphScrollOffset = Math.max(
779
- 0,
780
- Math.min(maxOffset, this.graphScrollOffset),
781
- );
782
- }
783
-
784
- private _clampGraphHorizontalScroll(totalCols: number, viewportCols: number): void {
785
- const maxOffset = Math.max(0, totalCols - viewportCols);
786
- this.graphScrollColOffset = Math.max(
787
- 0,
788
- Math.min(maxOffset, this.graphScrollColOffset),
789
- );
790
- }
791
-
792
- private _scrollFocusedColumnIntoView(
793
- viewportCols: number,
794
- totalCols: number,
795
- ): void {
796
- const node = this.cachedLayout[this.focusedIndex];
797
- if (!node) return;
798
- const start = node.x;
799
- const end = node.x + NODE_W - 1;
800
- if (start < this.graphScrollColOffset) {
801
- this.graphScrollColOffset = start;
802
- } else if (end >= this.graphScrollColOffset + viewportCols) {
803
- this.graphScrollColOffset = end - viewportCols + 1;
804
- }
805
- this._clampGraphHorizontalScroll(totalCols, viewportCols);
806
- }
807
-
808
- private _scrollFocusedIntoView(
809
- frameWidth: number,
810
- bodyRows: number,
811
- totalRows: number,
812
- ): void {
813
- const range = this._focusedGraphRowRange(frameWidth);
814
- if (!range) return;
815
- if (range.start < this.graphScrollOffset) {
816
- this.graphScrollOffset = range.start;
817
- } else if (range.end >= this.graphScrollOffset + bodyRows) {
818
- this.graphScrollOffset = range.end - bodyRows + 1;
819
- }
820
- this._clampGraphScroll(totalRows, bodyRows);
821
- }
822
-
823
- private _focusedGraphRowRange(_frameWidth: number): { start: number; end: number } | null {
824
- const node = this.cachedLayout[this.focusedIndex];
825
- if (!node) return null;
826
- return { start: node.y, end: node.y + NODE_H - 1 };
827
- }
828
-
829
- /**
830
- * Plot a parent → child edge for the vertical orientation. The edge
831
- * exits from the parent's bottom-centre, runs through a horizontal
832
- * spine half-way down the gap, and re-enters from the child's
833
- * top-centre. Cells are merged by direction set so fan-out, fan-in,
834
- * and crossings produce stable orthogonal junctions instead of
835
- * stacked rounded corners.
836
- */
837
- private _plotEdge(
838
- canvas: GraphCanvas,
839
- px: number,
840
- py: number,
841
- cx: number,
842
- cy: number,
843
- color: string,
844
- ): void {
845
- const parentCol = px + Math.floor(NODE_W / 2);
846
- const childCol = cx + Math.floor(NODE_W / 2);
847
- const parentExitRow = py + NODE_H; // first row below parent's bottom border
848
- const childEntryRow = cy - 1; // last row above child's top border
849
- if (childEntryRow < parentExitRow) return;
850
-
851
- if (parentCol === childCol) {
852
- canvas.vline(parentCol, parentExitRow, childEntryRow, color);
853
- return;
854
- }
855
-
856
- const spineRow = Math.max(
857
- parentExitRow,
858
- Math.min(childEntryRow, Math.floor((parentExitRow + childEntryRow) / 2)),
859
- );
860
-
861
- // Down stub from parent into the spine row.
862
- if (spineRow > parentExitRow) {
863
- canvas.vline(parentCol, parentExitRow, spineRow - 1, color);
864
- }
865
- this._placeJunction(canvas, spineRow, parentCol, ["u", childCol > parentCol ? "r" : "l"], color);
866
-
867
- // Horizontal spine segment.
868
- const hloCol = Math.min(parentCol, childCol) + 1;
869
- const hhiCol = Math.max(parentCol, childCol) - 1;
870
- if (hhiCol >= hloCol) {
871
- canvas.hline(spineRow, hloCol, hhiCol, color);
872
- }
873
- this._placeJunction(canvas, spineRow, childCol, [childCol > parentCol ? "l" : "r", "d"], color);
874
-
875
- // Down stub from spine into child.
876
- if (childEntryRow > spineRow) {
877
- canvas.vline(childCol, spineRow + 1, childEntryRow, color);
878
- }
879
- }
880
-
881
- private _placeJunction(
882
- canvas: GraphCanvas,
883
- row: number,
884
- col: number,
885
- newDirs: Array<"u" | "d" | "l" | "r">,
886
- color: string,
887
- ): void {
888
- canvas.mergeCell(row, col, newDirs, color);
889
- }
890
-
891
- /**
892
- * Split the canvas-rendered edge row at card boundaries into spans of
893
- * `{ startCol, visibleWidth, content }` so the composer can interleave
894
- * cards without colliding.
895
- */
896
- private _edgeRowToCells(line: string): string {
897
- return line;
898
- }
899
-
900
- /**
901
- * Interleave a single edge row with the node cards that cross it.
902
- * Cards take precedence at their column ranges; edge characters fill
903
- * the gaps. Returns one composed line padded with spaces.
904
- */
905
- private _composeRow(
906
- edgeRow: string,
907
- cards: Array<{ startCol: number; width: number; line: string }>,
908
- _edgeColor: string,
909
- ): string {
910
- const bg = hexBg(this.graphTheme.bg);
911
- const sorted = cards.slice().sort((a, b) => a.startCol - b.startCol);
912
- let cursor = 0;
913
- let out = "";
914
- for (const card of sorted) {
915
- if (card.startCol > cursor) {
916
- // Edge segment up to card start — prepend bg so empty cells
917
- // in this stretch keep the body bg instead of falling back
918
- // to the terminal default once any prior RESET fired.
919
- out += `${bg}${this._edgeSegment(edgeRow, cursor, card.startCol)}`;
920
- cursor = card.startCol;
921
- }
922
- out += card.line;
923
- cursor += card.width;
924
- }
925
- // Trailing edge tail — same bg re-priming.
926
- out += `${bg}${this._edgeSegment(edgeRow, cursor, Math.max(cursor, visibleWidth(edgeRow)))}`;
927
- return out;
928
- }
929
-
930
- private _edgeSegment(line: string, fromCol: number, toCol: number): string {
931
- if (fromCol >= toCol) return "";
932
- const segment = this._sliceColumns(line, fromCol, toCol);
933
- const visible = visibleWidth(segment);
934
- return `${segment}${" ".repeat(Math.max(0, toCol - fromCol - visible))}`;
935
- }
936
-
937
- private _sliceColumns(line: string, fromCol: number, toCol: number): string {
938
- if (fromCol >= toCol) return "";
939
- return sliceColumns(line, fromCol, toCol - fromCol, true);
940
- }
941
-
942
- // -------------------------------------------------------------------------
943
- // Chrome / canvas / section helpers
944
- // -------------------------------------------------------------------------
945
-
946
- /**
947
- * Three-row statusline pinned to the bottom of the overlay. Mirrors
948
- * the header band: `backgroundPanel` chrome, outlined accent pill
949
- * flush-left, hints flowing right on the centre row.
950
- */
951
- private _renderStatusline(width: number): string[] {
952
- const t = this.graphTheme;
953
- const chromeBg = hexBg(t.backgroundPanel);
954
- const text = hexToAnsi(t.text);
955
- const muted = hexToAnsi(t.textMuted);
956
- const dim = hexToAnsi(t.dim);
957
-
958
- const {
959
- top,
960
- mid,
961
- bot,
962
- visibleWidth: pillW,
963
- } = renderOutlinePill(MODE_PILL_LABEL, t.accent, chromeBg);
964
-
965
- // Hints — `<key> <label>` separated by ` · `.
966
- const sep = `${chromeBg} ${dim}·${RESET}${chromeBg} `;
967
- const segments = HINT_KEYS.map(
968
- ({ key, label }) =>
969
- `${text}${BOLD}${key}${RESET}${chromeBg} ${muted}${label}${RESET}${chromeBg}`,
970
- );
971
- const hintsStyledRaw = segments.join(sep);
972
-
973
- const leftEdgePad = 1;
974
- const rightEdgePad = 2;
975
- const hintsBudget = Math.max(0, width - leftEdgePad - pillW - rightEdgePad);
976
- const hintsStyled = truncateToWidth(hintsStyledRaw, hintsBudget, "");
977
- const hintsVisibleLen = visibleWidth(hintsStyled);
978
- const fillerVisible = Math.max(0, hintsBudget - hintsVisibleLen);
979
- const filler = " ".repeat(fillerVisible);
980
- const blankAcross = " ".repeat(Math.max(0, width - leftEdgePad - pillW));
981
-
982
- return [
983
- `${chromeBg} ${RESET}${top}${chromeBg}${blankAcross}${RESET}`,
984
- `${chromeBg} ${RESET}${mid}${chromeBg}${filler}${hintsStyled}${chromeBg}${" ".repeat(rightEdgePad)}${RESET}`,
985
- `${chromeBg} ${RESET}${bot}${chromeBg}${blankAcross}${RESET}`,
986
- ];
987
- }
988
-
989
- /** Blank canvas row — single line of `bg`. */
990
- private _blankRow(width: number): string {
991
- return `${hexBg(this.graphTheme.bg)}${" ".repeat(width)}${RESET}`;
992
- }
993
-
994
- private _centerCanvasContent(content: string, width: number): string {
995
- const truncated = truncateToWidth(content, width, "…", true);
996
- const leftPad = Math.max(0, Math.floor((width - visibleWidth(truncated)) / 2));
997
- return `${" ".repeat(leftPad)}${truncated}`;
998
- }
999
-
1000
- /** Wrap content in a canvas-bg row, padded to `width`. Re-emits the
1001
- * bg ANSI right before the trailing fill so any internal `RESET`
1002
- * from cards/edges doesn't let the terminal default bleed through. */
1003
- private _canvasRow(content: string, width: number): string {
1004
- const bg = hexBg(this.graphTheme.bg);
1005
- const truncated = truncateToWidth(content, width, "…", true);
1006
- const padLen = Math.max(0, width - visibleWidth(truncated));
1007
- return `${bg}${truncated}${bg}${" ".repeat(padLen)}${RESET}`;
1008
- }
1009
-
1010
- /** Pad pre-styled content out to canvas width without truncation.
1011
- * Re-emits the body bg ANSI right before the trailing fill so any
1012
- * internal RESET inside `content` doesn't leak the terminal default. */
1013
- private _padCanvas(content: string, width: number): string {
1014
- const bg = hexBg(this.graphTheme.bg);
1015
- const padLen = Math.max(0, width - visibleWidth(content));
1016
- return `${bg}${content}${bg}${" ".repeat(padLen)}${RESET}`;
1017
- }
1018
-
1019
- /**
1020
- * Compose a pre-styled card line over a canvas row at `leftPad` columns.
1021
- * The base row keeps its `bg` (so background colour matches canvas);
1022
- * the card slice replaces the cells starting at `leftPad`, and the
1023
- * residual columns to the right are repainted with bg.
1024
- *
1025
- * We don't try to keep the parts of `base` that fall *under* the card
1026
- * — pi-tui paints flat lines, not z-buffered cells, so the card's panel
1027
- * background winning is fine.
1028
- */
1029
- private _overlayCard(
1030
- _base: string,
1031
- cardLine: string,
1032
- leftPad: number,
1033
- totalWidth: number,
1034
- ): string {
1035
- const bg = hexBg(this.graphTheme.bg);
1036
- const cardW = visibleWidth(cardLine);
1037
- const rightPadLen = Math.max(0, totalWidth - leftPad - cardW);
1038
- return `${bg}${" ".repeat(leftPad)}${RESET}${cardLine}${bg}${" ".repeat(rightPadLen)}${RESET}`;
1039
- }
1040
-
1041
- private _displayStages(run: RunSnapshot): StageSnapshot[] {
1042
- return this.cachedLayout.length > 0
1043
- ? this.cachedLayout.map((layoutNode) => layoutNode.stage)
1044
- : [...run.stages];
1045
- }
1046
-
1047
- private _counts(stages: readonly StageSnapshot[]): {
1048
- pending: number;
1049
- running: number;
1050
- awaiting_input: number;
1051
- paused: number;
1052
- blocked: number;
1053
- completed: number;
1054
- failed: number;
1055
- skipped: number;
1056
- } {
1057
- const c = {
1058
- pending: 0,
1059
- running: 0,
1060
- awaiting_input: 0,
1061
- paused: 0,
1062
- blocked: 0,
1063
- completed: 0,
1064
- failed: 0,
1065
- skipped: 0,
1066
- };
1067
- for (const s of stages) c[s.status]++;
1068
- return c;
1069
- }
1070
-
1071
- // -------------------------------------------------------------------------
1072
- // Input handling
1073
- // -------------------------------------------------------------------------
1074
-
1075
- /** Returns true if consumed. */
1076
- handleInput(data: string): boolean {
1077
- if (this.switcherOpen) {
1078
- return this._handleSwitcherInput(data);
1079
- }
1080
- // Stage-local HIL is represented by graph nodes and remains graph-first;
1081
- // only the legacy run-level prompt card sets `promptState`. Keep that
1082
- // fallback answerable, but let a narrow set of non-text graph controls
1083
- // through first so the workflow overlay can still be detached or scrolled
1084
- // instead of feeling modal while a prompt is visible. Printable keys such
1085
- // as "/" belong to the prompt card while legacy run-level text/editor
1086
- // prompts own input.
1087
- if (this.promptState) {
1088
- if (this._isNonTextGraphControlBeforePrompt(data)) {
1089
- return this._handleGraphInput(data);
1090
- }
1091
- return this._handlePromptInput(data);
1092
- }
1093
- return this._handleGraphInput(data);
1094
- }
1095
-
1096
- private _promptKeybindings(): KeybindingsLike | undefined {
1097
- return isKeybindingsLike(this.piKeybindings) ? this.piKeybindings : undefined;
1098
- }
1099
-
1100
- private _isNonTextGraphControlBeforePrompt(data: string): boolean {
1101
- return (
1102
- this._mouseWheelDeltaRows(data) !== 0 ||
1103
- matchesKey(data, Key.ctrl("d"))
1104
- );
1105
- }
1106
-
1107
- private _handlePromptInput(data: string): boolean {
1108
- const state = this.promptState;
1109
- if (!state) return false;
1110
- const action = handlePromptCardInput(data, state, this._promptKeybindings());
1111
- if (action.kind === "noop") return true;
1112
- const runId = this.runId;
1113
- if (!runId) return true;
1114
- const response =
1115
- action.kind === "cancel" ? defaultResponseFor(state.prompt) : action.response;
1116
- this._resolvePrompt(runId, state.prompt.id, response);
1117
- return true;
1118
- }
1119
-
1120
- private _resolvePrompt(runId: string, promptId: string, response: unknown): void {
1121
- // Clear local state immediately so the card disappears even if the
1122
- // host doesn't re-emit a store snapshot between resolve and render.
1123
- this.promptState = null;
1124
- if (this.onPromptResolve) {
1125
- this.onPromptResolve(runId, promptId, response);
1126
- return;
1127
- }
1128
- // Fallback path used by callers that wire GraphView directly without
1129
- // injecting onPromptResolve. Best-effort — if the store rejects (stale
1130
- // id) we already cleared local state, so we don't try to re-arm.
1131
- this.store.resolvePendingPrompt(runId, promptId, response);
1132
- }
1133
-
1134
- private _handleGraphInput(data: string): boolean {
1135
- const stageCount = this.cachedLayout.length;
1136
- const wheelDeltaRows = this._mouseWheelDeltaRows(data);
1137
- if (wheelDeltaRows !== 0) {
1138
- this._scrollGraphBy(wheelDeltaRows);
1139
- return true;
1140
- }
1141
-
1142
- // Vertical-graph navigation: up/down step between depth levels
1143
- // (col), left/right step between siblings at the same depth (row).
1144
- // j/k preserved as a flat-order fallback for muscle memory.
1145
- if (matchesKey(data, Key.down))
1146
- return this._moveByDepth(+1);
1147
- if (matchesKey(data, Key.up))
1148
- return this._moveByDepth(-1);
1149
- if (matchesKey(data, Key.right))
1150
- return this._moveBySibling(+1);
1151
- if (matchesKey(data, Key.left))
1152
- return this._moveBySibling(-1);
1153
- if (matchesKey(data, "j")) {
1154
- this._setFocusedIndex(Math.min(this.focusedIndex + 1, stageCount - 1));
1155
- return true;
1156
- }
1157
- if (matchesKey(data, "k")) {
1158
- this._setFocusedIndex(Math.max(this.focusedIndex - 1, 0));
1159
- return true;
1160
- }
1161
- if (matchesKey(data, "g")) {
1162
- const now = Date.now();
1163
- if (this._lastGTime != null && now - this._lastGTime < 500) {
1164
- this._setFocusedIndex(0);
1165
- this._lastGTime = null;
1166
- } else {
1167
- this._lastGTime = now;
1168
- }
1169
- return true;
1170
- }
1171
- if (matchesKey(data, "/")) {
1172
- this.switcherOpen = true;
1173
- this.switcherState = { query: "", selectedIndex: 0 };
1174
- return true;
1175
- }
1176
- if (matchesKey(data, Key.enter)) {
1177
- // Enter attaches the popup interior to the focused stage. The
1178
- // attach shell swaps in the stage-chat view without remounting
1179
- // the overlay; without a callback, fall back to the legacy
1180
- // expand/collapse toggle so non-attach hosts still work.
1181
- if (this._attachFocusedStage()) return true;
1182
- this.detailsExpanded = !this.detailsExpanded;
1183
- return true;
1184
- }
1185
- // `ctrl+d` detaches the whole popup (host hides the overlay). This
1186
- // is the graph-mode counterpart of the in-chat back affordance.
1187
- if (matchesKey(data, Key.ctrl("d"))) {
1188
- if (this.onDetach) {
1189
- this.onDetach();
1190
- } else if (this.onHide) {
1191
- this.onHide();
1192
- }
1193
- return true;
1194
- }
1195
- // `q` kills the active run (no confirm). `h` hides the pane via
1196
- // the overlay's setHidden() flag (not unmount); Escape/Ctrl+C closes.
1197
- if (matchesKey(data, "q")) {
1198
- const run = this._getCurrentRun();
1199
- const targetRunId = this._focusedStageTarget()?.runId ?? run?.id;
1200
- const targetRun = targetRunId !== undefined
1201
- ? this.currentSnapshot?.runs.find((candidate) => candidate.id === targetRunId)
1202
- : undefined;
1203
- if (targetRun && targetRun.endedAt === undefined && this.onKill) {
1204
- this.onKill(targetRun.id);
1205
- }
1206
- this.onClose?.();
1207
- return true;
1208
- }
1209
- if (matchesKey(data, "h") && this.onHide) {
1210
- this.onHide();
1211
- return true;
1212
- }
1213
- if (matchesKey(data, Key.escape) || matchesKey(data, Key.ctrl("c"))) {
1214
- this.onClose?.();
1215
- return true;
1216
- }
1217
- return false;
1218
- }
1219
-
1220
- private _handleSwitcherInput(data: string): boolean {
1221
- const stages = this.cachedLayout.map((layoutNode) => layoutNode.stage);
1222
-
1223
- if (matchesKey(data, Key.escape)) {
1224
- this.switcherOpen = false;
1225
- return true;
1226
- }
1227
- if (matchesKey(data, Key.enter)) {
1228
- const filtered = filterStages(stages, this.switcherState.query);
1229
- const selected = filtered[this.switcherState.selectedIndex];
1230
- if (selected) {
1231
- const idx = this.cachedLayout.findIndex(
1232
- (n) => n.stage.id === selected.id,
1233
- );
1234
- if (idx !== -1) {
1235
- this._setFocusedIndex(idx);
1236
- // Selecting from the `/` switcher should complete the same
1237
- // action as pressing Enter on a graph node: jump straight
1238
- // into that stage's chat when the attach shell is present.
1239
- this.switcherOpen = false;
1240
- if (this._attachFocusedStage()) return true;
1241
- }
1242
- }
1243
- this.switcherOpen = false;
1244
- return true;
1245
- }
1246
- if (matchesKey(data, Key.down)) {
1247
- const filtered = filterStages(stages, this.switcherState.query);
1248
- this.switcherState = {
1249
- ...this.switcherState,
1250
- selectedIndex: Math.min(
1251
- this.switcherState.selectedIndex + 1,
1252
- filtered.length - 1,
1253
- ),
1254
- };
1255
- return true;
1256
- }
1257
- if (matchesKey(data, Key.up)) {
1258
- this.switcherState = {
1259
- ...this.switcherState,
1260
- selectedIndex: Math.max(this.switcherState.selectedIndex - 1, 0),
1261
- };
1262
- return true;
1263
- }
1264
- if (matchesKey(data, Key.backspace)) {
1265
- this.switcherState = {
1266
- query: this.switcherState.query.slice(0, -1),
1267
- selectedIndex: 0,
1268
- };
1269
- return true;
1270
- }
1271
- if (data.length === 1 && data >= " ") {
1272
- this.switcherState = {
1273
- query: this.switcherState.query + data,
1274
- selectedIndex: 0,
1275
- };
1276
- return true;
1277
- }
1278
- return false;
1279
- }
1280
-
1281
- dispose(): void {
1282
- if (this._intervalId != null) {
1283
- clearInterval(this._intervalId);
1284
- this._intervalId = null;
1285
- }
1286
- if (this._unsubscribe) {
1287
- this._unsubscribe();
1288
- this._unsubscribe = null;
1289
- }
1290
- }
1291
-
1292
- invalidate(): void {
1293
- this._rebuildLayout();
1294
- }
1295
-
1296
- /**
1297
- * Move focus to the nearest node `step` depth-levels away (↑/↓).
1298
- * Picks the sibling with the closest `row` to the current node so
1299
- * navigation feels spatially continuous in the vertical layout.
1300
- */
1301
- private _moveByDepth(step: number): boolean {
1302
- const cur = this.cachedLayout[this.focusedIndex];
1303
- if (!cur) return true;
1304
- const targetCol = cur.col + step;
1305
- const candidates = this.cachedLayout
1306
- .map((n, i) => ({ n, i }))
1307
- .filter(({ n }) => n.col === targetCol);
1308
- if (candidates.length === 0) return true;
1309
- let best = candidates[0]!;
1310
- let bestDist = Math.abs(best.n.row - cur.row);
1311
- for (const c of candidates) {
1312
- const d = Math.abs(c.n.row - cur.row);
1313
- if (d < bestDist) {
1314
- best = c;
1315
- bestDist = d;
1316
- }
1317
- }
1318
- this._setFocusedIndex(best.i);
1319
- return true;
1320
- }
1321
-
1322
- /**
1323
- * Move focus to the next sibling at the same depth (←/→). Clamps
1324
- * at the band edges — no wrap, so the user always knows when they
1325
- * hit a boundary.
1326
- */
1327
- private _moveBySibling(step: number): boolean {
1328
- const cur = this.cachedLayout[this.focusedIndex];
1329
- if (!cur) return true;
1330
- const siblings = this.cachedLayout
1331
- .map((n, i) => ({ n, i }))
1332
- .filter(({ n }) => n.col === cur.col)
1333
- .sort((a, b) => a.n.row - b.n.row);
1334
- const pos = siblings.findIndex(({ i }) => i === this.focusedIndex);
1335
- if (pos === -1) return true;
1336
- const next = siblings[pos + step];
1337
- if (!next) return true;
1338
- this._setFocusedIndex(next.i);
1339
- return true;
1340
- }
1341
-
1342
- private _attachFocusedStage(): boolean {
1343
- if (!this.onStageAttach) return false;
1344
- const node = this.cachedLayout[this.focusedIndex];
1345
- const run = this._getCurrentRun();
1346
- if (!node || !run) return false;
1347
- const target = expandedStageTarget(this.expandedGraph, node.stage.id) ?? {
1348
- runId: run.id,
1349
- stageId: node.stage.id,
1350
- };
1351
- this.onStageAttach(target.runId, target.stageId);
1352
- return true;
1353
- }
1354
-
1355
- private _focusedStageTarget(): { runId: string; stageId: string } | undefined {
1356
- const node = this.cachedLayout[this.focusedIndex];
1357
- if (!node) return undefined;
1358
- const target = expandedStageTarget(this.expandedGraph, node.stage.id);
1359
- return target ? { runId: target.runId, stageId: target.stageId } : undefined;
1360
- }
1361
-
1362
- private _setFocusedIndex(index: number): void {
1363
- const max = Math.max(0, this.cachedLayout.length - 1);
1364
- const next = Math.max(0, Math.min(index, max));
1365
- if (next === this.focusedIndex) return;
1366
- this.focusedIndex = next;
1367
- this.pendingEnsureFocusedVisible = true;
1368
- }
1369
-
1370
- private _scrollGraphBy(deltaRows: number): void {
1371
- this.pendingEnsureFocusedVisible = false;
1372
- this.graphScrollOffset = Math.max(0, this.graphScrollOffset + deltaRows);
1373
- }
1374
-
1375
- private _mouseWheelDeltaRows(data: string): number {
1376
- const sgr = data.match(/^\x1b\[<(\d+);\d+;\d+M$/);
1377
- if (sgr) {
1378
- return this._wheelDeltaForButtonCode(Number.parseInt(sgr[1]!, 10));
1379
- }
1380
- if (data.startsWith("\x1b[M") && data.length >= 6) {
1381
- return this._wheelDeltaForButtonCode(data.charCodeAt(3) - 32);
1382
- }
1383
- return 0;
1384
- }
1385
-
1386
- private _wheelDeltaForButtonCode(code: number): number {
1387
- if ((code & 64) === 0) return 0;
1388
- const direction = code & 3;
1389
- if (direction === 0) return -GRAPH_SCROLL_STEP_ROWS;
1390
- if (direction === 1) return GRAPH_SCROLL_STEP_ROWS;
1391
- return 0;
1392
- }
1393
-
1394
- // ---- test seams ----
1395
- get _focusedIndex(): number {
1396
- return this.focusedIndex;
1397
- }
1398
- get _switcherOpen(): boolean {
1399
- return this.switcherOpen;
1400
- }
1401
- get _switcherState(): SwitcherState {
1402
- return this.switcherState;
1403
- }
1404
- get _graphScrollOffset(): number {
1405
- return this.graphScrollOffset;
1406
- }
1407
- }
24
+ /** Public facade preserving the historical `./graph-view.js` import path. */
25
+ export class GraphView extends GraphViewInputController implements Component {}