@bastani/atomic 0.9.28-alpha.3 → 0.9.28-alpha.5

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 (311) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/dist/builtin/intercom/CHANGELOG.md +6 -0
  3. package/dist/builtin/intercom/README.md +3 -2
  4. package/dist/builtin/intercom/broker/broker.ts +90 -14
  5. package/dist/builtin/intercom/broker/paths.ts +4 -0
  6. package/dist/builtin/intercom/broker/socket-liveness.ts +32 -0
  7. package/dist/builtin/intercom/broker/socket-replacement-lock.ts +104 -0
  8. package/dist/builtin/intercom/broker/spawn.ts +108 -63
  9. package/dist/builtin/intercom/index.bundle.mjs +114 -61
  10. package/dist/builtin/intercom/package.json +2 -2
  11. package/dist/builtin/mcp/package.json +1 -1
  12. package/dist/builtin/subagents/CHANGELOG.md +6 -0
  13. package/dist/builtin/subagents/package.json +3 -3
  14. package/dist/builtin/subagents/skills/agent-browser/SKILL.md +1 -1
  15. package/dist/builtin/subagents/skills/cua-driver/BROWSER.md +60 -39
  16. package/dist/builtin/subagents/skills/cua-driver/EMBEDDING.md +119 -36
  17. package/dist/builtin/subagents/skills/cua-driver/LINUX.md +225 -183
  18. package/dist/builtin/subagents/skills/cua-driver/MACOS.md +120 -89
  19. package/dist/builtin/subagents/skills/cua-driver/README.md +16 -7
  20. package/dist/builtin/subagents/skills/cua-driver/RECORDING.md +85 -115
  21. package/dist/builtin/subagents/skills/cua-driver/RUNTIME.md +113 -0
  22. package/dist/builtin/subagents/skills/cua-driver/SKILL.md +55 -1071
  23. package/dist/builtin/subagents/skills/cua-driver/VISUAL.md +125 -0
  24. package/dist/builtin/subagents/skills/cua-driver/WINDOWS.md +145 -185
  25. package/dist/builtin/subagents/skills/cua-driver/WORKFLOW.md +173 -0
  26. package/dist/builtin/web-access/package.json +2 -2
  27. package/dist/builtin/workflows/CHANGELOG.md +16 -0
  28. package/dist/builtin/workflows/README.md +1 -1
  29. package/dist/builtin/workflows/builtin/{chunk-aqv8ny38.js → chunk-9ywkdsa9.js} +1 -1
  30. package/dist/builtin/workflows/builtin/{chunk-p6jagvyf.js → chunk-bnz4knhy.js} +1 -1
  31. package/dist/builtin/workflows/builtin/{chunk-br4ac9a3.js → chunk-dx5sjaxe.js} +1 -1
  32. package/dist/builtin/workflows/builtin/{chunk-p3xmajmj.js → chunk-v4scsq3y.js} +41 -13
  33. package/dist/builtin/workflows/builtin/goal.js +2 -2
  34. package/dist/builtin/workflows/builtin/index.js +3 -3
  35. package/dist/builtin/workflows/builtin/ralph.js +2 -2
  36. package/dist/builtin/workflows/package.json +2 -2
  37. package/dist/builtin/workflows/skills/impeccable/SKILL.md +8 -2
  38. package/dist/builtin/workflows/skills/impeccable/reference/adapt.md +6 -0
  39. package/dist/builtin/workflows/skills/impeccable/reference/audit.md +2 -1
  40. package/dist/builtin/workflows/skills/impeccable/reference/component-review.md +63 -0
  41. package/dist/builtin/workflows/skills/impeccable/reference/degraded/asset-producer.md +5 -0
  42. package/dist/builtin/workflows/skills/impeccable/reference/degraded/finish-reviewer.md +1 -1
  43. package/dist/builtin/workflows/skills/impeccable/reference/generate.md +101 -0
  44. package/dist/builtin/workflows/skills/impeccable/reference/harden.md +9 -0
  45. package/dist/builtin/workflows/skills/impeccable/reference/hooks.md +3 -1
  46. package/dist/builtin/workflows/skills/impeccable/reference/mode-operate.md +21 -0
  47. package/dist/builtin/workflows/skills/impeccable/reference/mode-persuade.md +19 -0
  48. package/dist/builtin/workflows/skills/impeccable/reference/mode-read.md +21 -0
  49. package/dist/builtin/workflows/skills/impeccable/reference/new-work.md +19 -12
  50. package/dist/builtin/workflows/skills/impeccable/reference/region-map.md +26 -0
  51. package/dist/builtin/workflows/skills/impeccable/reference/routing.md +1 -1
  52. package/dist/builtin/workflows/skills/impeccable/reference/visualize.md +5 -5
  53. package/dist/builtin/workflows/skills/impeccable/scripts/VERSION +1 -1
  54. package/dist/builtin/workflows/skills/impeccable/scripts/command-metadata.json +4 -0
  55. package/dist/builtin/workflows/skills/impeccable/scripts/impeccable.cmd +2 -2
  56. package/dist/builtin/workflows/skills/impeccable/scripts/live-browser-session.js +5 -1
  57. package/dist/builtin/workflows/skills/impeccable/scripts/live-browser.js +524 -4
  58. package/dist/builtin/workflows/skills/prompt-engineer/SKILL.md +1 -0
  59. package/dist/builtin/workflows/skills/prompt-engineer/references/claude_haiku_5_5.md +81 -0
  60. package/dist/builtin/workflows/src/extension/index.bundle.mjs +38 -14
  61. package/dist/builtin/workflows/src/index.js +38 -14
  62. package/dist/cli/startup-ui.d.ts +3 -2
  63. package/dist/cli/startup-ui.d.ts.map +1 -1
  64. package/dist/cli/startup-ui.js +19 -4
  65. package/dist/cli/startup-ui.js.map +1 -1
  66. package/dist/codemode-worker.js +2 -2
  67. package/dist/core/agent-session-compaction.d.ts +3 -3
  68. package/dist/core/agent-session-compaction.d.ts.map +1 -1
  69. package/dist/core/agent-session-compaction.js +5 -1
  70. package/dist/core/agent-session-compaction.js.map +1 -1
  71. package/dist/core/agent-session-events.d.ts.map +1 -1
  72. package/dist/core/agent-session-events.js +1 -0
  73. package/dist/core/agent-session-events.js.map +1 -1
  74. package/dist/core/agent-session-extension-bindings.d.ts.map +1 -1
  75. package/dist/core/agent-session-extension-bindings.js +4 -0
  76. package/dist/core/agent-session-extension-bindings.js.map +1 -1
  77. package/dist/core/agent-session-methods.d.ts +6 -1
  78. package/dist/core/agent-session-methods.d.ts.map +1 -1
  79. package/dist/core/agent-session-methods.js.map +1 -1
  80. package/dist/core/agent-session-prompt.d.ts.map +1 -1
  81. package/dist/core/agent-session-prompt.js +3 -2
  82. package/dist/core/agent-session-prompt.js.map +1 -1
  83. package/dist/core/agent-session-runtime.d.ts +5 -1
  84. package/dist/core/agent-session-runtime.d.ts.map +1 -1
  85. package/dist/core/agent-session-runtime.js +13 -9
  86. package/dist/core/agent-session-runtime.js.map +1 -1
  87. package/dist/core/agent-session-types.d.ts +1 -0
  88. package/dist/core/agent-session-types.d.ts.map +1 -1
  89. package/dist/core/agent-session-types.js.map +1 -1
  90. package/dist/core/agent-session.d.ts +1 -0
  91. package/dist/core/agent-session.d.ts.map +1 -1
  92. package/dist/core/agent-session.js.map +1 -1
  93. package/dist/core/export-html/tool-renderer.d.ts.map +1 -1
  94. package/dist/core/export-html/tool-renderer.js +2 -0
  95. package/dist/core/export-html/tool-renderer.js.map +1 -1
  96. package/dist/core/extensions/agent-events.d.ts +2 -0
  97. package/dist/core/extensions/agent-events.d.ts.map +1 -1
  98. package/dist/core/extensions/agent-events.js.map +1 -1
  99. package/dist/core/extensions/context-types.d.ts +2 -0
  100. package/dist/core/extensions/context-types.d.ts.map +1 -1
  101. package/dist/core/extensions/context-types.js.map +1 -1
  102. package/dist/core/extensions/mcp-server-registry.d.ts +4 -1
  103. package/dist/core/extensions/mcp-server-registry.d.ts.map +1 -1
  104. package/dist/core/extensions/mcp-server-registry.js +7 -4
  105. package/dist/core/extensions/mcp-server-registry.js.map +1 -1
  106. package/dist/core/extensions/runner.d.ts +3 -0
  107. package/dist/core/extensions/runner.d.ts.map +1 -1
  108. package/dist/core/extensions/runner.js +19 -0
  109. package/dist/core/extensions/runner.js.map +1 -1
  110. package/dist/core/extensions/session-events.d.ts +2 -0
  111. package/dist/core/extensions/session-events.d.ts.map +1 -1
  112. package/dist/core/extensions/session-events.js.map +1 -1
  113. package/dist/core/extensions/tool-types.d.ts +2 -0
  114. package/dist/core/extensions/tool-types.d.ts.map +1 -1
  115. package/dist/core/extensions/tool-types.js.map +1 -1
  116. package/dist/core/fast-model-variants.d.ts.map +1 -1
  117. package/dist/core/fast-model-variants.js +3 -2
  118. package/dist/core/fast-model-variants.js.map +1 -1
  119. package/dist/core/model-resolver-defaults.d.ts.map +1 -1
  120. package/dist/core/model-resolver-defaults.js +2 -0
  121. package/dist/core/model-resolver-defaults.js.map +1 -1
  122. package/dist/core/nested-tool-calls.d.ts +1 -0
  123. package/dist/core/nested-tool-calls.d.ts.map +1 -1
  124. package/dist/core/nested-tool-calls.js +1 -0
  125. package/dist/core/nested-tool-calls.js.map +1 -1
  126. package/dist/core/provider-alias.d.ts.map +1 -1
  127. package/dist/core/provider-alias.js +8 -0
  128. package/dist/core/provider-alias.js.map +1 -1
  129. package/dist/core/provider-composer-internal.d.ts.map +1 -1
  130. package/dist/core/provider-composer-internal.js +6 -3
  131. package/dist/core/provider-composer-internal.js.map +1 -1
  132. package/dist/core/resource-loader-reload.d.ts.map +1 -1
  133. package/dist/core/resource-loader-reload.js +1 -0
  134. package/dist/core/resource-loader-reload.js.map +1 -1
  135. package/dist/core/resource-loader-types.d.ts +1 -0
  136. package/dist/core/resource-loader-types.d.ts.map +1 -1
  137. package/dist/core/resource-loader-types.js.map +1 -1
  138. package/dist/core/settings-types.js.map +1 -1
  139. package/dist/core/tools/bash.d.ts.map +1 -1
  140. package/dist/core/tools/bash.js +7 -3
  141. package/dist/core/tools/bash.js.map +1 -1
  142. package/dist/core/tools/edit.js +1 -1
  143. package/dist/core/tools/edit.js.map +1 -1
  144. package/dist/extensions/codemode/execute.d.ts.map +1 -1
  145. package/dist/extensions/codemode/execute.js +55 -7
  146. package/dist/extensions/codemode/execute.js.map +1 -1
  147. package/dist/extensions/codemode/index.d.ts.map +1 -1
  148. package/dist/extensions/codemode/index.js +7 -0
  149. package/dist/extensions/codemode/index.js.map +1 -1
  150. package/dist/extensions/codemode/tool.d.ts +2 -0
  151. package/dist/extensions/codemode/tool.d.ts.map +1 -1
  152. package/dist/extensions/codemode/tool.js +2 -0
  153. package/dist/extensions/codemode/tool.js.map +1 -1
  154. package/dist/extensions/herdr/index.d.ts.map +1 -1
  155. package/dist/extensions/herdr/index.js +20 -2
  156. package/dist/extensions/herdr/index.js.map +1 -1
  157. package/dist/extensions/herdr/pane-owner.d.ts +7 -0
  158. package/dist/extensions/herdr/pane-owner.d.ts.map +1 -1
  159. package/dist/extensions/herdr/pane-owner.js +53 -11
  160. package/dist/extensions/herdr/pane-owner.js.map +1 -1
  161. package/dist/index.d.ts +1 -1
  162. package/dist/index.d.ts.map +1 -1
  163. package/dist/index.js.map +1 -1
  164. package/dist/main-deferred-startup.d.ts +8 -0
  165. package/dist/main-deferred-startup.d.ts.map +1 -1
  166. package/dist/main-deferred-startup.js +6 -0
  167. package/dist/main-deferred-startup.js.map +1 -1
  168. package/dist/main.d.ts.map +1 -1
  169. package/dist/main.js +11 -3
  170. package/dist/main.js.map +1 -1
  171. package/dist/modes/interactive/components/bash-execution.d.ts +5 -1
  172. package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -1
  173. package/dist/modes/interactive/components/bash-execution.js +17 -14
  174. package/dist/modes/interactive/components/bash-execution.js.map +1 -1
  175. package/dist/modes/interactive/components/branch-summary-message.d.ts +2 -1
  176. package/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -1
  177. package/dist/modes/interactive/components/branch-summary-message.js +5 -2
  178. package/dist/modes/interactive/components/branch-summary-message.js.map +1 -1
  179. package/dist/modes/interactive/components/chat-message-renderer.d.ts +1 -0
  180. package/dist/modes/interactive/components/chat-message-renderer.d.ts.map +1 -1
  181. package/dist/modes/interactive/components/chat-message-renderer.js +19 -8
  182. package/dist/modes/interactive/components/chat-message-renderer.js.map +1 -1
  183. package/dist/modes/interactive/components/compaction-boundary-message.d.ts +3 -2
  184. package/dist/modes/interactive/components/compaction-boundary-message.d.ts.map +1 -1
  185. package/dist/modes/interactive/components/compaction-boundary-message.js +7 -4
  186. package/dist/modes/interactive/components/compaction-boundary-message.js.map +1 -1
  187. package/dist/modes/interactive/components/custom-entry.d.ts +3 -1
  188. package/dist/modes/interactive/components/custom-entry.d.ts.map +1 -1
  189. package/dist/modes/interactive/components/custom-entry.js +8 -2
  190. package/dist/modes/interactive/components/custom-entry.js.map +1 -1
  191. package/dist/modes/interactive/components/custom-message.d.ts.map +1 -1
  192. package/dist/modes/interactive/components/custom-message.js +1 -0
  193. package/dist/modes/interactive/components/custom-message.js.map +1 -1
  194. package/dist/modes/interactive/components/settings-selector-items.js +1 -1
  195. package/dist/modes/interactive/components/settings-selector-items.js.map +1 -1
  196. package/dist/modes/interactive/components/skill-invocation-message.d.ts +2 -1
  197. package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -1
  198. package/dist/modes/interactive/components/skill-invocation-message.js +5 -2
  199. package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -1
  200. package/dist/modes/interactive/components/tool-execution.d.ts +4 -0
  201. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  202. package/dist/modes/interactive/components/tool-execution.js +10 -0
  203. package/dist/modes/interactive/components/tool-execution.js.map +1 -1
  204. package/dist/modes/interactive/interactive-agent-events.js +3 -1
  205. package/dist/modes/interactive/interactive-agent-events.js.map +1 -1
  206. package/dist/modes/interactive/interactive-auth-login.js +6 -0
  207. package/dist/modes/interactive/interactive-auth-login.js.map +1 -1
  208. package/dist/modes/interactive/interactive-auth-routing.js +2 -2
  209. package/dist/modes/interactive/interactive-auth-routing.js.map +1 -1
  210. package/dist/modes/interactive/interactive-bash-compact.js +2 -2
  211. package/dist/modes/interactive/interactive-bash-compact.js.map +1 -1
  212. package/dist/modes/interactive/interactive-extension-dialogs.js +19 -2
  213. package/dist/modes/interactive/interactive-extension-dialogs.js.map +1 -1
  214. package/dist/modes/interactive/interactive-mode-base.d.ts +4 -0
  215. package/dist/modes/interactive/interactive-mode-base.d.ts.map +1 -1
  216. package/dist/modes/interactive/interactive-mode-base.js +7 -0
  217. package/dist/modes/interactive/interactive-mode-base.js.map +1 -1
  218. package/dist/modes/interactive/interactive-mode-helpers.js +1 -1
  219. package/dist/modes/interactive/interactive-mode-helpers.js.map +1 -1
  220. package/dist/modes/interactive/interactive-mode-surface.d.ts +2 -1
  221. package/dist/modes/interactive/interactive-mode-surface.d.ts.map +1 -1
  222. package/dist/modes/interactive/interactive-mode-surface.js.map +1 -1
  223. package/dist/modes/interactive/interactive-mode-types.d.ts +1 -0
  224. package/dist/modes/interactive/interactive-mode-types.d.ts.map +1 -1
  225. package/dist/modes/interactive/interactive-mode-types.js.map +1 -1
  226. package/dist/modes/interactive/interactive-process-lifecycle.js +1 -1
  227. package/dist/modes/interactive/interactive-process-lifecycle.js.map +1 -1
  228. package/dist/modes/interactive/interactive-render-chat.js +7 -5
  229. package/dist/modes/interactive/interactive-render-chat.js.map +1 -1
  230. package/dist/modes/interactive/interactive-selectors.js +8 -1
  231. package/dist/modes/interactive/interactive-selectors.js.map +1 -1
  232. package/dist/modes/interactive/interactive-session-runtime.js +1 -0
  233. package/dist/modes/interactive/interactive-session-runtime.js.map +1 -1
  234. package/dist/modes/interactive/interactive-startup-trust.d.ts +6 -0
  235. package/dist/modes/interactive/interactive-startup-trust.d.ts.map +1 -0
  236. package/dist/modes/interactive/interactive-startup-trust.js +15 -0
  237. package/dist/modes/interactive/interactive-startup-trust.js.map +1 -0
  238. package/dist/modes/interactive/interactive-startup.d.ts.map +1 -1
  239. package/dist/modes/interactive/interactive-startup.js +4 -0
  240. package/dist/modes/interactive/interactive-startup.js.map +1 -1
  241. package/dist/modes/interactive/program-status-reporter.d.ts +24 -0
  242. package/dist/modes/interactive/program-status-reporter.d.ts.map +1 -0
  243. package/dist/modes/interactive/program-status-reporter.js +96 -0
  244. package/dist/modes/interactive/program-status-reporter.js.map +1 -0
  245. package/dist/modes/interactive-engine/engine-child-liveness.d.ts +1 -0
  246. package/dist/modes/interactive-engine/engine-child-liveness.d.ts.map +1 -1
  247. package/dist/modes/interactive-engine/engine-child-liveness.js +15 -1
  248. package/dist/modes/interactive-engine/engine-child-liveness.js.map +1 -1
  249. package/dist/modes/interactive-engine/engine-custom-ui.d.ts.map +1 -1
  250. package/dist/modes/interactive-engine/engine-custom-ui.js +1 -0
  251. package/dist/modes/interactive-engine/engine-custom-ui.js.map +1 -1
  252. package/dist/modes/interactive-engine/engine-monitor.d.ts +4 -0
  253. package/dist/modes/interactive-engine/engine-monitor.d.ts.map +1 -1
  254. package/dist/modes/interactive-engine/engine-monitor.js +17 -0
  255. package/dist/modes/interactive-engine/engine-monitor.js.map +1 -1
  256. package/dist/modes/interactive-engine/engine-quit-intent.d.ts +16 -0
  257. package/dist/modes/interactive-engine/engine-quit-intent.d.ts.map +1 -0
  258. package/dist/modes/interactive-engine/engine-quit-intent.js +27 -0
  259. package/dist/modes/interactive-engine/engine-quit-intent.js.map +1 -0
  260. package/dist/modes/interactive-engine/engine-render-service.d.ts.map +1 -1
  261. package/dist/modes/interactive-engine/engine-render-service.js +3 -1
  262. package/dist/modes/interactive-engine/engine-render-service.js.map +1 -1
  263. package/dist/modes/interactive-engine/extension-ui-bridge.d.ts +1 -0
  264. package/dist/modes/interactive-engine/extension-ui-bridge.d.ts.map +1 -1
  265. package/dist/modes/interactive-engine/extension-ui-bridge.js +5 -0
  266. package/dist/modes/interactive-engine/extension-ui-bridge.js.map +1 -1
  267. package/dist/modes/interactive-engine/isolated-runtime.d.ts +4 -1
  268. package/dist/modes/interactive-engine/isolated-runtime.d.ts.map +1 -1
  269. package/dist/modes/interactive-engine/isolated-runtime.js +19 -2
  270. package/dist/modes/interactive-engine/isolated-runtime.js.map +1 -1
  271. package/dist/modes/interactive-engine/protocol.d.ts +19 -1
  272. package/dist/modes/interactive-engine/protocol.d.ts.map +1 -1
  273. package/dist/modes/interactive-engine/protocol.js +7 -0
  274. package/dist/modes/interactive-engine/protocol.js.map +1 -1
  275. package/dist/modes/interactive-engine/remote-renderer.d.ts +3 -0
  276. package/dist/modes/interactive-engine/remote-renderer.d.ts.map +1 -1
  277. package/dist/modes/interactive-engine/remote-renderer.js +7 -0
  278. package/dist/modes/interactive-engine/remote-renderer.js.map +1 -1
  279. package/dist/modes/rpc/rpc-client.d.ts +11 -0
  280. package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
  281. package/dist/modes/rpc/rpc-client.js +42 -0
  282. package/dist/modes/rpc/rpc-client.js.map +1 -1
  283. package/dist/modes/rpc/rpc-input-scheduler.js +2 -2
  284. package/dist/modes/rpc/rpc-input-scheduler.js.map +1 -1
  285. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  286. package/dist/modes/rpc/rpc-mode.js +23 -6
  287. package/dist/modes/rpc/rpc-mode.js.map +1 -1
  288. package/dist/modes/rpc/rpc-provider-auth.js +1 -1
  289. package/dist/modes/rpc/rpc-provider-auth.js.map +1 -1
  290. package/docs/codemode.md +10 -6
  291. package/docs/compaction.md +1 -1
  292. package/docs/computer-use.md +9 -9
  293. package/docs/custom-provider/streaming.md +4 -0
  294. package/docs/environment-variables.md +2 -0
  295. package/docs/extensions/api-reference.md +1 -1
  296. package/docs/extensions/authoring.md +2 -0
  297. package/docs/extensions/events.md +8 -1
  298. package/docs/getting-started/first-session.md +1 -1
  299. package/docs/herdr.md +11 -2
  300. package/docs/json.md +6 -1
  301. package/docs/models/evals.md +34 -3
  302. package/docs/models.md +1 -1
  303. package/docs/providers.md +10 -0
  304. package/docs/sdk.md +8 -2
  305. package/docs/settings.md +2 -2
  306. package/docs/skills.md +1 -1
  307. package/docs/terminal-setup.md +14 -0
  308. package/docs/workflows/authoring.md +3 -3
  309. package/examples/extensions/sandbox/package-lock.json +3 -3
  310. package/npm-shrinkwrap.json +67 -67
  311. package/package.json +8 -8
@@ -1 +1 @@
1
- {"version":3,"file":"interactive-startup.js","sourceRoot":"","sources":["../../../src/modes/interactive/interactive-startup.ts"],"names":[],"mappings":"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","sourcesContent":["import { ScrollView, VStack } from \"@earendil-works/pi-tui\";\nimport { markLifecycleTiming } from \"../../core/lifecycle-timings.ts\";\nimport { isOfflineModeEnabled } from \"../../core/package-manager-env.ts\";\nimport { createChildProcessEnvironment } from \"../../utils/child-process.ts\";\nimport { ensurePngTranscoder } from \"../../utils/image-convert.ts\";\nimport { setMarkitDiagnosticSink } from \"../../utils/markit.js\";\nimport type { ToolStatus } from \"../../utils/tools-manager.ts\";\nimport { renderDiagnosticStatus } from \"../interactive-engine/engine-diagnostic-view.js\";\nimport {\n\tonInteractiveEngineRemoteCommandsChanged,\n\tonInteractiveEngineResourceExtensionsChanged,\n\tonInteractiveEngineSessionStatsChanged,\n\twaitForInteractiveEngineBound,\n} from \"../interactive-engine/extension-ui-bridge.ts\";\nimport {\n\tatomicWordmark,\n\trenderAtomicAssemblyBanner,\n\trenderStartupManifesto,\n\tsupportsAtomicBanner,\n} from \"./components/atomic-banner.ts\";\nimport { StartupIdentityComponent } from \"./components/startup-identity.ts\";\nimport { ThemedText } from \"./components/themed-text.js\";\nimport { bindInitialEagerSession } from \"./interactive-initial-session-binding.ts\";\nimport { InteractiveModeBase, seedStartupInput } from \"./interactive-mode-base.ts\";\nimport {\n\tAPP_NAME,\n\tAPP_TITLE,\n\ttype Container,\n\tcheckForNewPiVersion,\n\tcomposeStartupIdentity,\n\tDefaultPackageManager,\n\tDynamicBorder,\n\tENV_OFFLINE,\n\tensureTool,\n\tgetAgentDir,\n\tgetChangelogPath,\n\tgetCwdRelativePath,\n\tgetEntriesForVersion,\n\tgetEnvValue,\n\tgetMarkdownTheme,\n\tgetNewEntries,\n\tgetPiUserAgent,\n\tisInstallTelemetryEnabled,\n\tMarkdown,\n\ttype MarkdownTheme,\n\tnormalizeChangelogLinks,\n\tonThemeChange,\n\tos,\n\tparseChangelog,\n\tpath,\n\trecordTimeSinceReset,\n\tSpacer,\n\tspawn,\n\tText,\n\ttheme,\n\tVERSION,\n\tVERSION_ADOPTION_ENDPOINT,\n\tvisibleWidth,\n} from \"./interactive-mode-deps.ts\";\nimport {\n\trefreshCatalogsAfterTuiStartup,\n\tupdateProviderCountFromSnapshot,\n} from \"./interactive-model-catalog-startup.ts\";\nimport { ONBOARDING_COPY } from \"./interactive-onboarding.ts\";\nimport { restoreTerminalTitleAfterPackageCheck } from \"./interactive-terminal-title.ts\";\n\nexport const shouldRefreshCatalogsOnStartup = (): boolean => !isOfflineModeEnabled();\n\nfunction prepareStartupNotices(mode: InteractiveModeBase): void {\n\tif (mode.startupNoticesPrepared) return;\n\tmode.startupNoticesPrepared = true;\n\tmode.hadLastChangelogVersionAtStartup = Boolean(mode.settingsManager.getLastChangelogVersion?.());\n\tif (mode.changelogMarkdown === undefined) {\n\t\tmode.changelogMarkdown = mode.getChangelogForDisplay?.();\n\t}\n\tmode.initializeFirstRunOnboardingMarkers?.();\n\tif (!mode.firstRunNoticeVisible) {\n\t\tmode.firstRunNoticeVisible = mode.isFirstRunOnboardingEligible?.() ?? false;\n\t}\n}\n\n/**\n * Show non-fatal model-catalog warnings — today, a derived `-fast` variant suppressed because\n * something already owns that exact model ID.\n *\n * Called unconditionally at startup and again after deferred extension loading, because an extension\n * provider can introduce a collision that did not exist at startup. The last reported text is kept so\n * the second read only speaks when the diagnostic set actually changed.\n */\nInteractiveModeBase.prototype.reportModelCatalogWarning = function (\n\tthis: InteractiveModeBase,\n\ttargetContainer: Container = this.chatContainer,\n): void {\n\tconst warning = this.session.modelRuntime.getWarning?.();\n\tif (!warning || warning === this.reportedModelCatalogWarning) {\n\t\treturn;\n\t}\n\tthis.reportedModelCatalogWarning = warning;\n\tthis.showWarning(warning, targetContainer);\n};\n\nInteractiveModeBase.prototype.showStartupNoticesIfNeeded = function (\n\tthis: InteractiveModeBase,\n\ttargetContainer: Container = this.chatContainer,\n): void {\n\tif (this.startupNoticesShown) {\n\t\treturn;\n\t}\n\tprepareStartupNotices(this);\n\tthis.startupNoticesShown = true;\n\n\tconst changelogMarkdown = this.changelogMarkdown;\n\tif (!changelogMarkdown && !this.firstRunNoticeVisible) {\n\t\treturn;\n\t}\n\n\tif (changelogMarkdown) {\n\t\tif (targetContainer.children.length > 0) {\n\t\t\ttargetContainer.addChild(new Spacer(1));\n\t\t}\n\t\ttargetContainer.addChild(new DynamicBorder());\n\t\tif (this.settingsManager.getCollapseChangelog()) {\n\t\t\tconst versionMatch = changelogMarkdown.match(\n\t\t\t\t/##\\s+\\[?((?:0|[1-9]\\d*)\\.(?:0|[1-9]\\d*)\\.(?:0|[1-9]\\d*)(?:-(?:alpha\\.)?(?:0|[1-9]\\d*))?)\\]?/,\n\t\t\t);\n\t\t\tconst latestVersion = versionMatch ? versionMatch[1] : this.version;\n\t\t\tconst condensedText = `Updated to v${latestVersion}. Use ${theme.bold(\"/changelog\")} to view full changelog.`;\n\t\t\ttargetContainer.addChild(new Text(condensedText, 1, 0));\n\t\t} else {\n\t\t\ttargetContainer.addChild(new ThemedText(() => theme.bold(theme.fg(\"accent\", \"What's New\")), 1, 0));\n\t\t\ttargetContainer.addChild(new Spacer(1));\n\t\t\ttargetContainer.addChild(new Markdown(changelogMarkdown.trim(), 1, 0, this.getMarkdownThemeWithSettings()));\n\t\t\ttargetContainer.addChild(new Spacer(1));\n\t\t}\n\t\ttargetContainer.addChild(new DynamicBorder());\n\t}\n\n\tif (this.firstRunNoticeVisible) {\n\t\tthis.firstRunOnboardingNoticeComponents = [];\n\t\tif (targetContainer.children.length > 0) {\n\t\t\tthis.firstRunOnboardingNoticeComponents.push(new Spacer(1));\n\t\t}\n\t\tthis.firstRunOnboardingNoticeComponents.push(\n\t\t\tnew DynamicBorder(),\n\t\t\tnew Text(ONBOARDING_COPY, 1, 0),\n\t\t\tnew DynamicBorder(),\n\t\t\tnew Spacer(1),\n\t\t);\n\t\tfor (const component of this.firstRunOnboardingNoticeComponents) {\n\t\t\ttargetContainer.addChild(component);\n\t\t}\n\t\t// Mark completion only after queueing the notice in the chat canvas so\n\t\t// launches that skip rendering retry the first-run notice next time.\n\t\tthis.settingsManager.setOnboardedVersion(this.version);\n\t}\n\n\tthis.ui.requestRender();\n};\n\n/** Bring fd and rg to readiness, reporting progress into the transcript. */\nInteractiveModeBase.prototype.ensureManagedToolsReady = function (this: InteractiveModeBase): Promise<void> {\n\tconst statusGeneration = ++this.managedToolStatusGeneration;\n\tconst reportStatus = (status: ToolStatus): void => {\n\t\tif (this.managedToolStatusGeneration === statusGeneration) this.showManagedToolStatus(status);\n\t};\n\treturn Promise.all([ensureTool(\"fd\", reportStatus), ensureTool(\"rg\", reportStatus)])\n\t\t.then(([fdPath]) => {\n\t\t\tthis.fdPath = fdPath;\n\t\t\tthis.setupAutocompleteProvider();\n\t\t})\n\t\t.catch((error) => {\n\t\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\t\treportStatus({ type: \"warning\", message: `Tool readiness check failed: ${message}` });\n\t\t});\n};\n\n/** Show a managed-tool status update in the chat, never on the console. */\nInteractiveModeBase.prototype.showManagedToolStatus = function (this: InteractiveModeBase, status: ToolStatus): void {\n\tif (!this.managedToolStatusStarted) {\n\t\tthis.chatContainer.addChild(new Spacer(1));\n\t\tthis.managedToolStatusStarted = true;\n\t}\n\tconst message = status.type === \"warning\" ? `Warning: ${status.message}` : status.message;\n\tconst color = status.type === \"warning\" ? \"warning\" : \"dim\";\n\tthis.chatContainer.addChild(new ThemedText(() => theme.fg(color, message), 1, 0));\n\tthis.lastStatusSpacer = undefined;\n\tthis.lastStatusText = undefined;\n\tthis.ui.requestRender();\n};\n\nexport function attachInteractiveEngineResourceExtensionRefresh(mode: InteractiveModeBase): () => void {\n\treturn onInteractiveEngineResourceExtensionsChanged(mode.runtimeHost, () => {\n\t\tif (mode.resourceDisclosureContainer.children.length === 0) return;\n\t\tmode.showLoadedResources({\n\t\t\tforce: true,\n\t\t\tshowDiagnosticsWhenQuiet: true,\n\t\t\ttargetContainer: mode.resourceDisclosureContainer,\n\t\t});\n\t\tmode.ui.requestRender();\n\t});\n}\n\nInteractiveModeBase.prototype.init = async function (this: InteractiveModeBase): Promise<void> {\n\tif (this.isInitialized) return;\n\n\tthis.registerSignalHandlers();\n\n\t// Keep the transcript in its own viewport and reserve the bottom chrome in a\n\t// fixed dock for the fullscreen renderer. The same components also feed the\n\t// internal main-screen fallback used for guarded terminal paths.\n\tthis.renderWidgets(); // Initialize with default spacer\n\tthis.transcriptScrollView = new ScrollView(this.documentContainer, {\n\t\tfollow: \"end\",\n\t\tprimary: true,\n\t\toverscroll: \"chain\",\n\t\tscrollbar: this.settingsManager.getFullscreenScrollbar(),\n\t\tscrollbarThumbStyle: (text) => theme.bg(\"scrollbarThumb\", text),\n\t});\n\tconst dock = new VStack([\n\t\t{ component: this.pendingMessagesContainer, shrink: 1, minSize: 0 },\n\t\t{ component: this.statusContainer, shrink: 1, minSize: 0 },\n\t\t{ component: this.widgetContainerAbove, shrink: 1, minSize: 0 },\n\t\t{ component: this.usageMeter, shrink: 1, minSize: 1 },\n\t\t{ component: this.editorContainer, shrink: 1, minSize: 3 },\n\t\t{ component: this.footerContainer, shrink: 1, minSize: 1 },\n\t\t// Keep widgetContainerBelow after the footer for #1109's stable dock order.\n\t\t{ component: this.widgetContainerBelow, shrink: 1, minSize: 0 },\n\t]);\n\tthis.fullscreenLayoutRoot = new VStack([\n\t\t{ component: this.transcriptScrollView, basis: 0, grow: 1, shrink: 1, minSize: 1 },\n\t\t{ component: dock, basis: \"auto\", grow: 0, shrink: 1, minSize: 1 },\n\t]);\n\tthis.mountInteractiveTui(this.ui, [\n\t\tthis.documentContainer,\n\t\tthis.pendingMessagesContainer,\n\t\tthis.statusContainer,\n\t\tthis.widgetContainerAbove,\n\t\tthis.usageMeter,\n\t\tthis.editorContainer,\n\t\tthis.footerContainer,\n\t\tthis.widgetContainerBelow,\n\t]);\n\tthis.ui.setFocus(this.extensionSelector ?? this.extensionInput ?? this.extensionEditor ?? this.editor);\n\n\tthis.setupKeyHandlers();\n\tthis.setupEditorSubmitHandler();\n\t// Rebuild autocomplete whenever the engine child's command catalog arrives or\n\t// changes (initial bind, engine restart, reload, new/resume/fork). Subscribed\n\t// before bind so the first async catalog fetch can never be missed. No-op when\n\t// the host is not isolated.\n\tonInteractiveEngineRemoteCommandsChanged(this.runtimeHost, () => {\n\t\tthis.setupAutocompleteProvider();\n\t});\n\tattachInteractiveEngineResourceExtensionRefresh(this);\n\t// Engine stats can land after the last event of a run; repaint so the idle footer shows them.\n\tonInteractiveEngineSessionStatsChanged(this.runtimeHost, () => {\n\t\tthis.ui.requestRender();\n\t});\n\n\tseedStartupInput(\n\t\tthis.pendingUserInputs,\n\t\tthis.defaultEditor,\n\t\tthis.options.startupInputCapture?.consume(),\n\t\tthis.startupReplayInputs,\n\t\t(text) => {\n\t\t\tthis.startupDraftText = text;\n\t\t},\n\t\t(text) => {\n\t\t\tthis.startupReplayActiveInput = text;\n\t\t},\n\t);\n\n\t// Start and paint the host-owned TUI before waiting for the isolated engine.\n\t// The editor remains local and responsive; session binding and provider work\n\t// still stay behind the engine-bound gate below.\n\tmarkLifecycleTiming(\"tui-start\");\n\tthis.ui.start();\n\tensurePngTranscoder(() => {\n\t\tthis.ui.invalidate();\n\t\tthis.ui.requestRender();\n\t});\n\tthis.disposeMarkitDiagnosticSink = setMarkitDiagnosticSink((message) => renderDiagnosticStatus(message, this));\n\tthis.footerDataProvider.onBranchChange(() => {\n\t\tthis.ui.requestRender();\n\t});\n\n\tawait this.themeController.applyFromSettings();\n\n\t// Add the quiet startup identity unless silenced.\n\tif (this.shouldShowStartupHeader()) {\n\t\tthis.builtInHeader = new StartupIdentityComponent(this.ui, (width, state) =>\n\t\t\tthis.getStartupIdentityText(width, state.gap, state.manifestoPhase),\n\t\t);\n\n\t\tthis.headerContainer.addChild(new Spacer(1));\n\t\tthis.headerContainer.addChild(this.builtInHeader);\n\t\tthis.headerContainer.addChild(new Spacer(1));\n\t} else {\n\t\t// Minimal header when silenced\n\t\tthis.builtInHeader = new Text(\"\", 0, 0);\n\t\tthis.headerContainer.addChild(this.builtInHeader);\n\t}\n\tmarkLifecycleTiming(\"header-mounted\");\n\tthis.ui.requestRender();\n\t// This legacy mark now means the first requested identity frame. The settled\n\t// animation frame remains the external benchmark's startup-complete mark.\n\trecordTimeSinceReset(\"time-to-first-frame\");\n\n\tawait waitForInteractiveEngineBound(this.runtimeHost);\n\tif (this.isShuttingDown) return;\n\tthis.isInitialized = true;\n\t// The isolated engine may have replaced the preliminary model/provider view.\n\tthis.ui.requestRender();\n\n\t// fd/rg readiness runs after first paint so slow downloads never make\n\t// startup appear frozen. Progress reports land in the transcript: a console\n\t// write here lands in the alternate screen and corrupts the frame.\n\tvoid this.ensureManagedToolsReady();\n\n\t// When startup resources are deferred, keep the already-painted editor responsive.\n\t// Extension UI bindings are installed at the deferred reload boundary, not here,\n\t// so no post-paint resource work can block visible typing.\n\tif (this.deferredStartupPending) {\n\t\tthis.applyRuntimeSettings();\n\t\tthis.subscribeToAgent();\n\t\tthis.updateEditorBorderColor();\n\t\tthis.updateTerminalTitle();\n\t} else {\n\t\tawait bindInitialEagerSession(this);\n\t}\n\n\tthis.attachStartupNoticesContainer();\n\t// Render initial messages AFTER the initial session binding is in place.\n\tthis.renderInitialMessages();\n\t// Set up theme file watcher\n\tonThemeChange(() => {\n\t\tthis.ui.invalidate();\n\t\tthis.updateEditorBorderColor();\n\t\tthis.ui.requestRender();\n\t});\n\n\tupdateProviderCountFromSnapshot(this);\n};\n\nInteractiveModeBase.prototype.updateTerminalTitle = function (this: InteractiveModeBase): void {\n\tconst cwdBasename = path.basename(this.sessionManager.getCwd());\n\tconst sessionName = this.sessionManager.getSessionName();\n\tif (sessionName) {\n\t\tthis.ui.terminal.setTitle(`${APP_TITLE} - ${sessionName} - ${cwdBasename}`);\n\t} else {\n\t\tthis.ui.terminal.setTitle(`${APP_TITLE} - ${cwdBasename}`);\n\t}\n};\n\nInteractiveModeBase.prototype.run = async function (this: InteractiveModeBase): Promise<void> {\n\tawait this.init();\n\tif (this.isShuttingDown) return;\n\n\tif (shouldRefreshCatalogsOnStartup()) void refreshCatalogsAfterTuiStartup(this);\n\n\tsetTimeout(() => {\n\t\tconst startupNoticesContainer = this.startupNoticesContainer;\n\t\tcheckForNewPiVersion(this.version).then((newVersion) => {\n\t\t\tif (newVersion) this.showNewVersionNotification(newVersion, startupNoticesContainer);\n\t\t});\n\t\trestoreTerminalTitleAfterPackageCheck(this.checkForPackageUpdates(), {\n\t\t\tinitialized: () => this.isInitialized,\n\t\t\trestore: () => this.updateTerminalTitle(),\n\t\t}).then((updates) => {\n\t\t\tif (updates.length > 0) this.showPackageUpdateNotification(updates, startupNoticesContainer);\n\t\t});\n\t\tthis.checkTmuxKeyboardSetup().then((warning) => {\n\t\t\tif (warning) this.showWarning(warning, startupNoticesContainer);\n\t\t});\n\t\t// Deferred startup releases chat output immediately after rendering the\n\t\t// disclosure, so wait only while that startup work remains in flight.\n\t\tif (!this.deferredStartupPending && !this.deferredStartupPromise) {\n\t\t\tvoid this.maybeWarnAboutAnthropicSubscriptionAuth(undefined, startupNoticesContainer);\n\t\t}\n\t}, 500);\n\n\t// Show startup warnings\n\tconst { migratedProviders, startupDiagnostics, initialMessage, initialImages, initialMessages } = this.options;\n\n\tfor (const diagnostic of startupDiagnostics ?? []) {\n\t\tif (diagnostic.type === \"error\") this.showError(diagnostic.message);\n\t\telse if (diagnostic.type === \"warning\") this.showWarning(diagnostic.message);\n\t\telse this.showStatus(diagnostic.message);\n\t}\n\n\tif (migratedProviders && migratedProviders.length > 0) {\n\t\tthis.showWarning(`Migrated credentials to auth.json: ${migratedProviders.join(\", \")}`);\n\t}\n\n\tconst modelsJsonError = this.session.modelRuntime.getError();\n\tif (modelsJsonError) {\n\t\tthis.showError(`models.json error: ${modelsJsonError}`);\n\t}\n\n\tconst modelFallbackMessage = this.runtimeHost.modelFallbackMessage;\n\tif (modelFallbackMessage && !this.deferredStartupPending) {\n\t\tthis.showWarning(modelFallbackMessage, this.startupNoticesContainer);\n\t}\n\n\t// CLI-provided startup prompts need extension tools/resources; wait before sending them,\n\t// but do not block the normal no-prompt input loop from becoming ready.\n\tif (this.deferredStartupPending && (initialMessage || (initialMessages && initialMessages.length > 0))) {\n\t\tawait this.ensureDeferredStartupComplete();\n\t}\n\n\t// Process initial messages\n\tif (initialMessage) {\n\t\ttry {\n\t\t\tawait this.session.prompt(initialMessage, { images: initialImages });\n\t\t} catch (error: unknown) {\n\t\t\tconst errorMessage = error instanceof Error ? error.message : \"Unknown error occurred\";\n\t\t\tthis.showError(errorMessage);\n\t\t}\n\t}\n\n\tif (initialMessages) {\n\t\tfor (const message of initialMessages) {\n\t\t\ttry {\n\t\t\t\tawait this.session.prompt(message);\n\t\t\t} catch (error: unknown) {\n\t\t\t\tconst errorMessage = error instanceof Error ? error.message : \"Unknown error occurred\";\n\t\t\t\tthis.showError(errorMessage);\n\t\t\t}\n\t\t}\n\t}\n\n\t// Main interactive loop\n\twhile (true) {\n\t\tconst userInput = await this.getUserInput();\n\t\tawait this.runUserPromptTurn(userInput);\n\t}\n};\n\nInteractiveModeBase.prototype.checkForPackageUpdates = async function (this: InteractiveModeBase): Promise<string[]> {\n\tif (getEnvValue(ENV_OFFLINE)) {\n\t\treturn [];\n\t}\n\n\ttry {\n\t\tconst packageManager = new DefaultPackageManager({\n\t\t\tcwd: this.sessionManager.getCwd(),\n\t\t\tagentDir: getAgentDir(),\n\t\t\tsettingsManager: this.settingsManager,\n\t\t});\n\t\tconst updates = await packageManager.checkForAvailableUpdates();\n\t\treturn updates.map((update) => update.displayName);\n\t} catch {\n\t\treturn [];\n\t}\n};\n\nInteractiveModeBase.prototype.checkTmuxKeyboardSetup = async function (\n\tthis: InteractiveModeBase,\n): Promise<string | undefined> {\n\tif (!process.env.TMUX) return undefined;\n\n\tconst runTmuxShow = (option: string): Promise<string | undefined> => {\n\t\treturn new Promise((resolve) => {\n\t\t\tconst proc = spawn(\"tmux\", [\"show\", \"-gv\", option], {\n\t\t\t\tstdio: [\"ignore\", \"pipe\", \"ignore\"],\n\t\t\t\tenv: createChildProcessEnvironment(),\n\t\t\t});\n\t\t\tlet stdout = \"\";\n\t\t\tconst timer = setTimeout(() => {\n\t\t\t\tproc.kill();\n\t\t\t\tresolve(undefined);\n\t\t\t}, 2000);\n\n\t\t\tproc.stdout?.on(\"data\", (data) => {\n\t\t\t\tstdout += data.toString();\n\t\t\t});\n\t\t\tproc.on(\"error\", () => {\n\t\t\t\tclearTimeout(timer);\n\t\t\t\tresolve(undefined);\n\t\t\t});\n\t\t\tproc.on(\"close\", (code) => {\n\t\t\t\tclearTimeout(timer);\n\t\t\t\tresolve(code === 0 ? stdout.trim() : undefined);\n\t\t\t});\n\t\t});\n\t};\n\n\tconst [extendedKeys, extendedKeysFormat] = await Promise.all([\n\t\trunTmuxShow(\"extended-keys\"),\n\t\trunTmuxShow(\"extended-keys-format\"),\n\t]);\n\n\t// If we couldn't query tmux (timeout, sandbox, etc.), don't warn\n\tif (extendedKeys === undefined) return undefined;\n\n\tif (extendedKeys !== \"on\" && extendedKeys !== \"always\") {\n\t\treturn \"tmux extended-keys is off. Modified enter keys may not work. Add `set -g extended-keys on` to ~/.tmux.conf and restart tmux.\";\n\t}\n\n\tif (extendedKeysFormat === \"xterm\") {\n\t\treturn `tmux extended-keys-format is xterm. ${APP_TITLE} works best with csi-u. Add \\`set -g extended-keys-format csi-u\\` to ~/.tmux.conf and restart tmux.`;\n\t}\n\n\treturn undefined;\n};\n\nInteractiveModeBase.prototype.getChangelogForDisplay = function (this: InteractiveModeBase): string | undefined {\n\t// Skip changelog for resumed/continued sessions (already have messages)\n\tif (this.session.state.messages.length > 0) {\n\t\treturn undefined;\n\t}\n\n\tconst lastVersion = this.settingsManager.getLastChangelogVersion();\n\tconst changelogPath = getChangelogPath();\n\tconst entries = parseChangelog(changelogPath);\n\n\tif (!lastVersion) {\n\t\t// Fresh install - record the version, send telemetry, don't show changelog\n\t\tthis.settingsManager.setLastChangelogVersion(VERSION);\n\t\tthis.reportInstallTelemetry(VERSION);\n\t\treturn undefined;\n\t}\n\n\tconst newEntries = getNewEntries(entries, lastVersion, VERSION);\n\tconst currentEntries = getEntriesForVersion(newEntries, VERSION);\n\tif (currentEntries.length > 0) {\n\t\tthis.settingsManager.setLastChangelogVersion(VERSION);\n\t\tthis.reportInstallTelemetry(VERSION);\n\t\treturn currentEntries.map((e) => normalizeChangelogLinks(e.content, e)).join(\"\\n\\n\");\n\t}\n\n\treturn undefined;\n};\n\nInteractiveModeBase.prototype.reportInstallTelemetry = function (this: InteractiveModeBase, version: string): void {\n\tif (getEnvValue(ENV_OFFLINE)) {\n\t\treturn;\n\t}\n\n\tif (!isInstallTelemetryEnabled(this.settingsManager)) {\n\t\treturn;\n\t}\n\n\tvoid fetch(`${VERSION_ADOPTION_ENDPOINT}?version=${encodeURIComponent(version)}`, {\n\t\theaders: {\n\t\t\t\"User-Agent\": getPiUserAgent(version),\n\t\t},\n\t\tsignal: AbortSignal.timeout(5000),\n\t})\n\t\t.then(() => undefined)\n\t\t.catch(() => undefined);\n};\n\nInteractiveModeBase.prototype.getMarkdownThemeWithSettings = function (this: InteractiveModeBase): MarkdownTheme {\n\treturn {\n\t\t...getMarkdownTheme(),\n\t\tcodeBlockIndent: this.settingsManager.getCodeBlockIndent(),\n\t};\n};\n\nInteractiveModeBase.prototype.formatDisplayPath = function (this: InteractiveModeBase, p: string): string {\n\tconst home = os.homedir();\n\tlet result = p;\n\n\t// Replace home directory with ~\n\tif (result.startsWith(home)) {\n\t\tresult = `~${result.slice(home.length)}`;\n\t}\n\n\treturn result;\n};\n\nInteractiveModeBase.prototype.formatExtensionDisplayPath = function (this: InteractiveModeBase, path: string): string {\n\treturn this.formatDisplayPath(path).replace(/[\\\\/]index\\.(?:ts|js)$/, \"\");\n};\n\nInteractiveModeBase.prototype.formatContextPath = function (this: InteractiveModeBase, p: string): string {\n\tconst cwd = path.resolve(this.sessionManager.getCwd());\n\tconst absolutePath = path.isAbsolute(p) ? path.resolve(p) : path.resolve(cwd, p);\n\tconst relativePath = getCwdRelativePath(absolutePath, cwd);\n\tif (relativePath !== undefined) {\n\t\treturn relativePath;\n\t}\n\n\treturn this.formatDisplayPath(absolutePath);\n};\n\nInteractiveModeBase.prototype.getStartupModelLabel = function (this: InteractiveModeBase): string {\n\tconst model = this.session.state.model;\n\tlet modelLabel = model?.id ?? \"no-model\";\n\n\tif (model?.reasoning) {\n\t\tmodelLabel = `${modelLabel} ${this.session.thinkingLevel || \"off\"}`;\n\t}\n\n\treturn modelLabel;\n};\n\nInteractiveModeBase.prototype.getStartupIdentityText = function (\n\tthis: InteractiveModeBase,\n\tmaxWidth?: number,\n\tgap = 0,\n\tmanifestoPhase = 4,\n): string {\n\tconst appLabel = APP_NAME.length > 0 ? `${APP_NAME[0]!.toUpperCase()}${APP_NAME.slice(1)}` : \"Atomic\";\n\tconst noColor = process.env.NO_COLOR !== undefined;\n\tconst fg = (role: \"text\" | \"muted\" | \"dim\", text: string): string => (noColor ? text : theme.fg(role, text));\n\tconst showMark = supportsAtomicBanner();\n\tconst wordmark = showMark ? \"\" : `${atomicWordmark()} `;\n\tconst title = `${wordmark}${theme.bold(fg(\"text\", appLabel))} ${fg(\"muted\", `v${this.version}`)}`;\n\tconst model = this.session.state.model;\n\tconst provider = model ? fg(\"dim\", `(${model.provider})`) : fg(\"dim\", \"(no-provider)\");\n\tconst modelLine = `${provider} ${fg(\"muted\", this.getStartupModelLabel())}`;\n\tconst markLines = showMark ? this.getAtomicAnsiMarkLines(gap) : [];\n\tconst markWidth = Math.max(0, ...markLines.map(visibleWidth));\n\tconst showMeta = gap === 0 || (maxWidth !== undefined && maxWidth < markWidth);\n\tconst metaLines = showMeta\n\t\t? [title, modelLine, fg(\"muted\", this.formatDisplayPath(this.sessionManager.getCwd()))]\n\t\t: [];\n\treturn composeStartupIdentity(\n\t\tmarkLines,\n\t\tmetaLines,\n\t\tmaxWidth,\n\t\tgap === 0 ? renderStartupManifesto(manifestoPhase) : [],\n\t);\n};\n\nInteractiveModeBase.prototype.getAtomicAnsiMarkLines = function (this: InteractiveModeBase, gap = 0): string[] {\n\treturn renderAtomicAssemblyBanner(gap, theme, this.session.thinkingLevel || \"off\");\n};\n\nInteractiveModeBase.prototype.getStartupExpansionState = function (this: InteractiveModeBase): boolean {\n\treturn this.options.verbose || this.toolOutputExpanded;\n};\n\nInteractiveModeBase.prototype.shouldShowStartupHeader = function (this: InteractiveModeBase): boolean {\n\treturn this.options.verbose === true || this.settingsManager.getQuietStartup() !== true;\n};\n\nInteractiveModeBase.prototype.shouldShowStartupDetails = function (this: InteractiveModeBase): boolean {\n\treturn this.options.verbose === true || this.settingsManager.getQuietStartup() === false;\n};\n"]}
1
+ {"version":3,"file":"interactive-startup.js","sourceRoot":"","sources":["../../../src/modes/interactive/interactive-startup.ts"],"names":[],"mappings":"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","sourcesContent":["import { ScrollView, VStack } from \"@earendil-works/pi-tui\";\nimport { markLifecycleTiming } from \"../../core/lifecycle-timings.ts\";\nimport { isOfflineModeEnabled } from \"../../core/package-manager-env.ts\";\nimport { createChildProcessEnvironment } from \"../../utils/child-process.ts\";\nimport { ensurePngTranscoder } from \"../../utils/image-convert.ts\";\nimport { setMarkitDiagnosticSink } from \"../../utils/markit.js\";\nimport type { ToolStatus } from \"../../utils/tools-manager.ts\";\nimport { renderDiagnosticStatus } from \"../interactive-engine/engine-diagnostic-view.js\";\nimport {\n\tonInteractiveEngineRemoteCommandsChanged,\n\tonInteractiveEngineResourceExtensionsChanged,\n\tonInteractiveEngineSessionStatsChanged,\n\twaitForInteractiveEngineBound,\n} from \"../interactive-engine/extension-ui-bridge.ts\";\nimport {\n\tatomicWordmark,\n\trenderAtomicAssemblyBanner,\n\trenderStartupManifesto,\n\tsupportsAtomicBanner,\n} from \"./components/atomic-banner.ts\";\nimport { StartupIdentityComponent } from \"./components/startup-identity.ts\";\nimport { ThemedText } from \"./components/themed-text.js\";\nimport { bindInitialEagerSession } from \"./interactive-initial-session-binding.ts\";\nimport { InteractiveModeBase, seedStartupInput } from \"./interactive-mode-base.ts\";\nimport {\n\tAPP_NAME,\n\tAPP_TITLE,\n\ttype Container,\n\tcheckForNewPiVersion,\n\tcomposeStartupIdentity,\n\tDefaultPackageManager,\n\tDynamicBorder,\n\tENV_OFFLINE,\n\tensureTool,\n\tgetAgentDir,\n\tgetChangelogPath,\n\tgetCwdRelativePath,\n\tgetEntriesForVersion,\n\tgetEnvValue,\n\tgetMarkdownTheme,\n\tgetNewEntries,\n\tgetPiUserAgent,\n\tisInstallTelemetryEnabled,\n\tMarkdown,\n\ttype MarkdownTheme,\n\tnormalizeChangelogLinks,\n\tonThemeChange,\n\tos,\n\tparseChangelog,\n\tpath,\n\trecordTimeSinceReset,\n\tSpacer,\n\tspawn,\n\tText,\n\ttheme,\n\tVERSION,\n\tVERSION_ADOPTION_ENDPOINT,\n\tvisibleWidth,\n} from \"./interactive-mode-deps.ts\";\nimport {\n\trefreshCatalogsAfterTuiStartup,\n\tupdateProviderCountFromSnapshot,\n} from \"./interactive-model-catalog-startup.ts\";\nimport { ONBOARDING_COPY } from \"./interactive-onboarding.ts\";\nimport { holdTuiForStartupTrust } from \"./interactive-startup-trust.ts\";\nimport { restoreTerminalTitleAfterPackageCheck } from \"./interactive-terminal-title.ts\";\n\nexport const shouldRefreshCatalogsOnStartup = (): boolean => !isOfflineModeEnabled();\n\nfunction prepareStartupNotices(mode: InteractiveModeBase): void {\n\tif (mode.startupNoticesPrepared) return;\n\tmode.startupNoticesPrepared = true;\n\tmode.hadLastChangelogVersionAtStartup = Boolean(mode.settingsManager.getLastChangelogVersion?.());\n\tif (mode.changelogMarkdown === undefined) {\n\t\tmode.changelogMarkdown = mode.getChangelogForDisplay?.();\n\t}\n\tmode.initializeFirstRunOnboardingMarkers?.();\n\tif (!mode.firstRunNoticeVisible) {\n\t\tmode.firstRunNoticeVisible = mode.isFirstRunOnboardingEligible?.() ?? false;\n\t}\n}\n\n/**\n * Show non-fatal model-catalog warnings — today, a derived `-fast` variant suppressed because\n * something already owns that exact model ID.\n *\n * Called unconditionally at startup and again after deferred extension loading, because an extension\n * provider can introduce a collision that did not exist at startup. The last reported text is kept so\n * the second read only speaks when the diagnostic set actually changed.\n */\nInteractiveModeBase.prototype.reportModelCatalogWarning = function (\n\tthis: InteractiveModeBase,\n\ttargetContainer: Container = this.chatContainer,\n): void {\n\tconst warning = this.session.modelRuntime.getWarning?.();\n\tif (!warning || warning === this.reportedModelCatalogWarning) {\n\t\treturn;\n\t}\n\tthis.reportedModelCatalogWarning = warning;\n\tthis.showWarning(warning, targetContainer);\n};\n\nInteractiveModeBase.prototype.showStartupNoticesIfNeeded = function (\n\tthis: InteractiveModeBase,\n\ttargetContainer: Container = this.chatContainer,\n): void {\n\tif (this.startupNoticesShown) {\n\t\treturn;\n\t}\n\tprepareStartupNotices(this);\n\tthis.startupNoticesShown = true;\n\n\tconst changelogMarkdown = this.changelogMarkdown;\n\tif (!changelogMarkdown && !this.firstRunNoticeVisible) {\n\t\treturn;\n\t}\n\n\tif (changelogMarkdown) {\n\t\tif (targetContainer.children.length > 0) {\n\t\t\ttargetContainer.addChild(new Spacer(1));\n\t\t}\n\t\ttargetContainer.addChild(new DynamicBorder());\n\t\tif (this.settingsManager.getCollapseChangelog()) {\n\t\t\tconst versionMatch = changelogMarkdown.match(\n\t\t\t\t/##\\s+\\[?((?:0|[1-9]\\d*)\\.(?:0|[1-9]\\d*)\\.(?:0|[1-9]\\d*)(?:-(?:alpha\\.)?(?:0|[1-9]\\d*))?)\\]?/,\n\t\t\t);\n\t\t\tconst latestVersion = versionMatch ? versionMatch[1] : this.version;\n\t\t\tconst condensedText = `Updated to v${latestVersion}. Use ${theme.bold(\"/changelog\")} to view full changelog.`;\n\t\t\ttargetContainer.addChild(new Text(condensedText, 1, 0));\n\t\t} else {\n\t\t\ttargetContainer.addChild(new ThemedText(() => theme.bold(theme.fg(\"accent\", \"What's New\")), 1, 0));\n\t\t\ttargetContainer.addChild(new Spacer(1));\n\t\t\ttargetContainer.addChild(new Markdown(changelogMarkdown.trim(), 1, 0, this.getMarkdownThemeWithSettings()));\n\t\t\ttargetContainer.addChild(new Spacer(1));\n\t\t}\n\t\ttargetContainer.addChild(new DynamicBorder());\n\t}\n\n\tif (this.firstRunNoticeVisible) {\n\t\tthis.firstRunOnboardingNoticeComponents = [];\n\t\tif (targetContainer.children.length > 0) {\n\t\t\tthis.firstRunOnboardingNoticeComponents.push(new Spacer(1));\n\t\t}\n\t\tthis.firstRunOnboardingNoticeComponents.push(\n\t\t\tnew DynamicBorder(),\n\t\t\tnew Text(ONBOARDING_COPY, 1, 0),\n\t\t\tnew DynamicBorder(),\n\t\t\tnew Spacer(1),\n\t\t);\n\t\tfor (const component of this.firstRunOnboardingNoticeComponents) {\n\t\t\ttargetContainer.addChild(component);\n\t\t}\n\t\t// Mark completion only after queueing the notice in the chat canvas so\n\t\t// launches that skip rendering retry the first-run notice next time.\n\t\tthis.settingsManager.setOnboardedVersion(this.version);\n\t}\n\n\tthis.ui.requestRender();\n};\n\n/** Bring fd and rg to readiness, reporting progress into the transcript. */\nInteractiveModeBase.prototype.ensureManagedToolsReady = function (this: InteractiveModeBase): Promise<void> {\n\tconst statusGeneration = ++this.managedToolStatusGeneration;\n\tconst reportStatus = (status: ToolStatus): void => {\n\t\tif (this.managedToolStatusGeneration === statusGeneration) this.showManagedToolStatus(status);\n\t};\n\treturn Promise.all([ensureTool(\"fd\", reportStatus), ensureTool(\"rg\", reportStatus)])\n\t\t.then(([fdPath]) => {\n\t\t\tthis.fdPath = fdPath;\n\t\t\tthis.setupAutocompleteProvider();\n\t\t})\n\t\t.catch((error) => {\n\t\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\t\treportStatus({ type: \"warning\", message: `Tool readiness check failed: ${message}` });\n\t\t});\n};\n\n/** Show a managed-tool status update in the chat, never on the console. */\nInteractiveModeBase.prototype.showManagedToolStatus = function (this: InteractiveModeBase, status: ToolStatus): void {\n\tif (!this.managedToolStatusStarted) {\n\t\tthis.chatContainer.addChild(new Spacer(1));\n\t\tthis.managedToolStatusStarted = true;\n\t}\n\tconst message = status.type === \"warning\" ? `Warning: ${status.message}` : status.message;\n\tconst color = status.type === \"warning\" ? \"warning\" : \"dim\";\n\tthis.chatContainer.addChild(new ThemedText(() => theme.fg(color, message), 1, 0));\n\tthis.lastStatusSpacer = undefined;\n\tthis.lastStatusText = undefined;\n\tthis.ui.requestRender();\n};\n\nexport function attachInteractiveEngineResourceExtensionRefresh(mode: InteractiveModeBase): () => void {\n\treturn onInteractiveEngineResourceExtensionsChanged(mode.runtimeHost, () => {\n\t\tif (mode.resourceDisclosureContainer.children.length === 0) return;\n\t\tmode.showLoadedResources({\n\t\t\tforce: true,\n\t\t\tshowDiagnosticsWhenQuiet: true,\n\t\t\ttargetContainer: mode.resourceDisclosureContainer,\n\t\t});\n\t\tmode.ui.requestRender();\n\t});\n}\n\nInteractiveModeBase.prototype.init = async function (this: InteractiveModeBase): Promise<void> {\n\tif (this.isInitialized) return;\n\n\tif (this.options.holdTuiForStartupTrust) await holdTuiForStartupTrust(this);\n\tthis.registerSignalHandlers();\n\n\t// Keep the transcript in its own viewport and reserve the bottom chrome in a\n\t// fixed dock for the fullscreen renderer. The same components also feed the\n\t// internal main-screen fallback used for guarded terminal paths.\n\tthis.renderWidgets(); // Initialize with default spacer\n\tthis.transcriptScrollView = new ScrollView(this.documentContainer, {\n\t\tfollow: \"end\",\n\t\tprimary: true,\n\t\toverscroll: \"chain\",\n\t\tscrollbar: this.settingsManager.getFullscreenScrollbar(),\n\t\tscrollbarThumbStyle: (text) => theme.bg(\"scrollbarThumb\", text),\n\t});\n\tconst dock = new VStack([\n\t\t{ component: this.pendingMessagesContainer, shrink: 1, minSize: 0 },\n\t\t{ component: this.statusContainer, shrink: 1, minSize: 0 },\n\t\t{ component: this.widgetContainerAbove, shrink: 1, minSize: 0 },\n\t\t{ component: this.usageMeter, shrink: 1, minSize: 1 },\n\t\t{ component: this.editorContainer, shrink: 1, minSize: 3 },\n\t\t{ component: this.footerContainer, shrink: 1, minSize: 1 },\n\t\t// Keep widgetContainerBelow after the footer for #1109's stable dock order.\n\t\t{ component: this.widgetContainerBelow, shrink: 1, minSize: 0 },\n\t]);\n\tthis.fullscreenLayoutRoot = new VStack([\n\t\t{ component: this.transcriptScrollView, basis: 0, grow: 1, shrink: 1, minSize: 1 },\n\t\t{ component: dock, basis: \"auto\", grow: 0, shrink: 1, minSize: 1 },\n\t]);\n\tthis.mountInteractiveTui(this.ui, [\n\t\tthis.documentContainer,\n\t\tthis.pendingMessagesContainer,\n\t\tthis.statusContainer,\n\t\tthis.widgetContainerAbove,\n\t\tthis.usageMeter,\n\t\tthis.editorContainer,\n\t\tthis.footerContainer,\n\t\tthis.widgetContainerBelow,\n\t]);\n\tthis.ui.setFocus(this.extensionSelector ?? this.extensionInput ?? this.extensionEditor ?? this.editor);\n\n\tthis.setupKeyHandlers();\n\tthis.setupEditorSubmitHandler();\n\t// Rebuild autocomplete whenever the engine child's command catalog arrives or\n\t// changes (initial bind, engine restart, reload, new/resume/fork). Subscribed\n\t// before bind so the first async catalog fetch can never be missed. No-op when\n\t// the host is not isolated.\n\tonInteractiveEngineRemoteCommandsChanged(this.runtimeHost, () => {\n\t\tthis.setupAutocompleteProvider();\n\t});\n\tattachInteractiveEngineResourceExtensionRefresh(this);\n\t// Engine stats can land after the last event of a run; repaint so the idle footer shows them.\n\tonInteractiveEngineSessionStatsChanged(this.runtimeHost, () => {\n\t\tthis.ui.requestRender();\n\t});\n\n\tseedStartupInput(\n\t\tthis.pendingUserInputs,\n\t\tthis.defaultEditor,\n\t\tthis.options.startupInputCapture?.consume(),\n\t\tthis.startupReplayInputs,\n\t\t(text) => {\n\t\t\tthis.startupDraftText = text;\n\t\t},\n\t\t(text) => {\n\t\t\tthis.startupReplayActiveInput = text;\n\t\t},\n\t);\n\n\t// Start and paint the host-owned TUI before waiting for the isolated engine.\n\t// The editor remains local and responsive; session binding and provider work\n\t// still stay behind the engine-bound gate below.\n\tmarkLifecycleTiming(\"tui-start\");\n\tthis.ui.start();\n\tthis.programStatus.report();\n\tensurePngTranscoder(() => {\n\t\tthis.ui.invalidate();\n\t\tthis.ui.requestRender();\n\t});\n\tthis.disposeMarkitDiagnosticSink = setMarkitDiagnosticSink((message) => renderDiagnosticStatus(message, this));\n\tthis.footerDataProvider.onBranchChange(() => {\n\t\tthis.ui.requestRender();\n\t});\n\n\tawait this.themeController.applyFromSettings();\n\n\t// Add the quiet startup identity unless silenced.\n\tif (this.shouldShowStartupHeader()) {\n\t\tthis.builtInHeader = new StartupIdentityComponent(this.ui, (width, state) =>\n\t\t\tthis.getStartupIdentityText(width, state.gap, state.manifestoPhase),\n\t\t);\n\n\t\tthis.headerContainer.addChild(new Spacer(1));\n\t\tthis.headerContainer.addChild(this.builtInHeader);\n\t\tthis.headerContainer.addChild(new Spacer(1));\n\t} else {\n\t\t// Minimal header when silenced\n\t\tthis.builtInHeader = new Text(\"\", 0, 0);\n\t\tthis.headerContainer.addChild(this.builtInHeader);\n\t}\n\tmarkLifecycleTiming(\"header-mounted\");\n\tthis.ui.requestRender();\n\t// This legacy mark now means the first requested identity frame. The settled\n\t// animation frame remains the external benchmark's startup-complete mark.\n\trecordTimeSinceReset(\"time-to-first-frame\");\n\n\tawait waitForInteractiveEngineBound(this.runtimeHost);\n\tif (this.isShuttingDown) return;\n\tthis.isInitialized = true;\n\t// The isolated engine may have replaced the preliminary model/provider view.\n\tthis.ui.requestRender();\n\n\t// fd/rg readiness runs after first paint so slow downloads never make\n\t// startup appear frozen. Progress reports land in the transcript: a console\n\t// write here lands in the alternate screen and corrupts the frame.\n\tvoid this.ensureManagedToolsReady();\n\n\t// When startup resources are deferred, keep the already-painted editor responsive.\n\t// Extension UI bindings are installed at the deferred reload boundary, not here,\n\t// so no post-paint resource work can block visible typing.\n\tif (this.deferredStartupPending) {\n\t\tthis.applyRuntimeSettings();\n\t\tthis.subscribeToAgent();\n\t\tthis.updateEditorBorderColor();\n\t\tthis.updateTerminalTitle();\n\t} else {\n\t\tawait bindInitialEagerSession(this);\n\t}\n\n\tthis.attachStartupNoticesContainer();\n\t// Render initial messages AFTER the initial session binding is in place.\n\tthis.renderInitialMessages();\n\t// Set up theme file watcher\n\tonThemeChange(() => {\n\t\tthis.ui.invalidate();\n\t\tthis.updateEditorBorderColor();\n\t\tthis.ui.requestRender();\n\t});\n\n\tupdateProviderCountFromSnapshot(this);\n};\n\nInteractiveModeBase.prototype.updateTerminalTitle = function (this: InteractiveModeBase): void {\n\tconst cwdBasename = path.basename(this.sessionManager.getCwd());\n\tconst sessionName = this.sessionManager.getSessionName();\n\tif (sessionName) {\n\t\tthis.ui.terminal.setTitle(`${APP_TITLE} - ${sessionName} - ${cwdBasename}`);\n\t} else {\n\t\tthis.ui.terminal.setTitle(`${APP_TITLE} - ${cwdBasename}`);\n\t}\n};\n\nInteractiveModeBase.prototype.run = async function (this: InteractiveModeBase): Promise<void> {\n\tawait this.init();\n\tif (this.isShuttingDown) return;\n\n\tif (shouldRefreshCatalogsOnStartup()) void refreshCatalogsAfterTuiStartup(this);\n\n\tsetTimeout(() => {\n\t\tconst startupNoticesContainer = this.startupNoticesContainer;\n\t\tcheckForNewPiVersion(this.version).then((newVersion) => {\n\t\t\tif (newVersion) this.showNewVersionNotification(newVersion, startupNoticesContainer);\n\t\t});\n\t\trestoreTerminalTitleAfterPackageCheck(this.checkForPackageUpdates(), {\n\t\t\tinitialized: () => this.isInitialized,\n\t\t\trestore: () => this.updateTerminalTitle(),\n\t\t}).then((updates) => {\n\t\t\tif (updates.length > 0) this.showPackageUpdateNotification(updates, startupNoticesContainer);\n\t\t});\n\t\tthis.checkTmuxKeyboardSetup().then((warning) => {\n\t\t\tif (warning) this.showWarning(warning, startupNoticesContainer);\n\t\t});\n\t\t// Deferred startup releases chat output immediately after rendering the\n\t\t// disclosure, so wait only while that startup work remains in flight.\n\t\tif (!this.deferredStartupPending && !this.deferredStartupPromise) {\n\t\t\tvoid this.maybeWarnAboutAnthropicSubscriptionAuth(undefined, startupNoticesContainer);\n\t\t}\n\t}, 500);\n\n\t// Show startup warnings\n\tconst { migratedProviders, startupDiagnostics, initialMessage, initialImages, initialMessages } = this.options;\n\n\tfor (const diagnostic of startupDiagnostics ?? []) {\n\t\tif (diagnostic.type === \"error\") this.showError(diagnostic.message);\n\t\telse if (diagnostic.type === \"warning\") this.showWarning(diagnostic.message);\n\t\telse this.showStatus(diagnostic.message);\n\t}\n\n\tif (migratedProviders && migratedProviders.length > 0) {\n\t\tthis.showWarning(`Migrated credentials to auth.json: ${migratedProviders.join(\", \")}`);\n\t}\n\n\tconst modelsJsonError = this.session.modelRuntime.getError();\n\tif (modelsJsonError) {\n\t\tthis.showError(`models.json error: ${modelsJsonError}`);\n\t}\n\n\tconst modelFallbackMessage = this.runtimeHost.modelFallbackMessage;\n\tif (modelFallbackMessage && !this.deferredStartupPending) {\n\t\tthis.showWarning(modelFallbackMessage, this.startupNoticesContainer);\n\t}\n\n\t// CLI-provided startup prompts need extension tools/resources; wait before sending them,\n\t// but do not block the normal no-prompt input loop from becoming ready.\n\tif (this.deferredStartupPending && (initialMessage || (initialMessages && initialMessages.length > 0))) {\n\t\tawait this.ensureDeferredStartupComplete();\n\t}\n\n\t// Process initial messages\n\tif (initialMessage) {\n\t\ttry {\n\t\t\tawait this.session.prompt(initialMessage, { images: initialImages });\n\t\t} catch (error: unknown) {\n\t\t\tconst errorMessage = error instanceof Error ? error.message : \"Unknown error occurred\";\n\t\t\tthis.showError(errorMessage);\n\t\t}\n\t}\n\n\tif (initialMessages) {\n\t\tfor (const message of initialMessages) {\n\t\t\ttry {\n\t\t\t\tawait this.session.prompt(message);\n\t\t\t} catch (error: unknown) {\n\t\t\t\tconst errorMessage = error instanceof Error ? error.message : \"Unknown error occurred\";\n\t\t\t\tthis.showError(errorMessage);\n\t\t\t}\n\t\t}\n\t}\n\n\t// Main interactive loop\n\twhile (true) {\n\t\tconst userInput = await this.getUserInput();\n\t\tawait this.runUserPromptTurn(userInput);\n\t}\n};\n\nInteractiveModeBase.prototype.checkForPackageUpdates = async function (this: InteractiveModeBase): Promise<string[]> {\n\tif (getEnvValue(ENV_OFFLINE)) {\n\t\treturn [];\n\t}\n\n\ttry {\n\t\tconst packageManager = new DefaultPackageManager({\n\t\t\tcwd: this.sessionManager.getCwd(),\n\t\t\tagentDir: getAgentDir(),\n\t\t\tsettingsManager: this.settingsManager,\n\t\t});\n\t\tconst updates = await packageManager.checkForAvailableUpdates();\n\t\treturn updates.map((update) => update.displayName);\n\t} catch {\n\t\treturn [];\n\t}\n};\n\nInteractiveModeBase.prototype.checkTmuxKeyboardSetup = async function (\n\tthis: InteractiveModeBase,\n): Promise<string | undefined> {\n\tif (!process.env.TMUX) return undefined;\n\n\tconst runTmuxShow = (option: string): Promise<string | undefined> => {\n\t\treturn new Promise((resolve) => {\n\t\t\tconst proc = spawn(\"tmux\", [\"show\", \"-gv\", option], {\n\t\t\t\tstdio: [\"ignore\", \"pipe\", \"ignore\"],\n\t\t\t\tenv: createChildProcessEnvironment(),\n\t\t\t});\n\t\t\tlet stdout = \"\";\n\t\t\tconst timer = setTimeout(() => {\n\t\t\t\tproc.kill();\n\t\t\t\tresolve(undefined);\n\t\t\t}, 2000);\n\n\t\t\tproc.stdout?.on(\"data\", (data) => {\n\t\t\t\tstdout += data.toString();\n\t\t\t});\n\t\t\tproc.on(\"error\", () => {\n\t\t\t\tclearTimeout(timer);\n\t\t\t\tresolve(undefined);\n\t\t\t});\n\t\t\tproc.on(\"close\", (code) => {\n\t\t\t\tclearTimeout(timer);\n\t\t\t\tresolve(code === 0 ? stdout.trim() : undefined);\n\t\t\t});\n\t\t});\n\t};\n\n\tconst [extendedKeys, extendedKeysFormat] = await Promise.all([\n\t\trunTmuxShow(\"extended-keys\"),\n\t\trunTmuxShow(\"extended-keys-format\"),\n\t]);\n\n\t// If we couldn't query tmux (timeout, sandbox, etc.), don't warn\n\tif (extendedKeys === undefined) return undefined;\n\n\tif (extendedKeys !== \"on\" && extendedKeys !== \"always\") {\n\t\treturn \"tmux extended-keys is off. Modified enter keys may not work. Add `set -g extended-keys on` to ~/.tmux.conf and restart tmux.\";\n\t}\n\n\tif (extendedKeysFormat === \"xterm\") {\n\t\treturn `tmux extended-keys-format is xterm. ${APP_TITLE} works best with csi-u. Add \\`set -g extended-keys-format csi-u\\` to ~/.tmux.conf and restart tmux.`;\n\t}\n\n\treturn undefined;\n};\n\nInteractiveModeBase.prototype.getChangelogForDisplay = function (this: InteractiveModeBase): string | undefined {\n\t// Skip changelog for resumed/continued sessions (already have messages)\n\tif (this.session.state.messages.length > 0) {\n\t\treturn undefined;\n\t}\n\n\tconst lastVersion = this.settingsManager.getLastChangelogVersion();\n\tconst changelogPath = getChangelogPath();\n\tconst entries = parseChangelog(changelogPath);\n\n\tif (!lastVersion) {\n\t\t// Fresh install - record the version, send telemetry, don't show changelog\n\t\tthis.settingsManager.setLastChangelogVersion(VERSION);\n\t\tthis.reportInstallTelemetry(VERSION);\n\t\treturn undefined;\n\t}\n\n\tconst newEntries = getNewEntries(entries, lastVersion, VERSION);\n\tconst currentEntries = getEntriesForVersion(newEntries, VERSION);\n\tif (currentEntries.length > 0) {\n\t\tthis.settingsManager.setLastChangelogVersion(VERSION);\n\t\tthis.reportInstallTelemetry(VERSION);\n\t\treturn currentEntries.map((e) => normalizeChangelogLinks(e.content, e)).join(\"\\n\\n\");\n\t}\n\n\treturn undefined;\n};\n\nInteractiveModeBase.prototype.reportInstallTelemetry = function (this: InteractiveModeBase, version: string): void {\n\tif (getEnvValue(ENV_OFFLINE)) {\n\t\treturn;\n\t}\n\n\tif (!isInstallTelemetryEnabled(this.settingsManager)) {\n\t\treturn;\n\t}\n\n\tvoid fetch(`${VERSION_ADOPTION_ENDPOINT}?version=${encodeURIComponent(version)}`, {\n\t\theaders: {\n\t\t\t\"User-Agent\": getPiUserAgent(version),\n\t\t},\n\t\tsignal: AbortSignal.timeout(5000),\n\t})\n\t\t.then(() => undefined)\n\t\t.catch(() => undefined);\n};\n\nInteractiveModeBase.prototype.getMarkdownThemeWithSettings = function (this: InteractiveModeBase): MarkdownTheme {\n\treturn {\n\t\t...getMarkdownTheme(),\n\t\tcodeBlockIndent: this.settingsManager.getCodeBlockIndent(),\n\t};\n};\n\nInteractiveModeBase.prototype.formatDisplayPath = function (this: InteractiveModeBase, p: string): string {\n\tconst home = os.homedir();\n\tlet result = p;\n\n\t// Replace home directory with ~\n\tif (result.startsWith(home)) {\n\t\tresult = `~${result.slice(home.length)}`;\n\t}\n\n\treturn result;\n};\n\nInteractiveModeBase.prototype.formatExtensionDisplayPath = function (this: InteractiveModeBase, path: string): string {\n\treturn this.formatDisplayPath(path).replace(/[\\\\/]index\\.(?:ts|js)$/, \"\");\n};\n\nInteractiveModeBase.prototype.formatContextPath = function (this: InteractiveModeBase, p: string): string {\n\tconst cwd = path.resolve(this.sessionManager.getCwd());\n\tconst absolutePath = path.isAbsolute(p) ? path.resolve(p) : path.resolve(cwd, p);\n\tconst relativePath = getCwdRelativePath(absolutePath, cwd);\n\tif (relativePath !== undefined) {\n\t\treturn relativePath;\n\t}\n\n\treturn this.formatDisplayPath(absolutePath);\n};\n\nInteractiveModeBase.prototype.getStartupModelLabel = function (this: InteractiveModeBase): string {\n\tconst model = this.session.state.model;\n\tlet modelLabel = model?.id ?? \"no-model\";\n\n\tif (model?.reasoning) {\n\t\tmodelLabel = `${modelLabel} ${this.session.thinkingLevel || \"off\"}`;\n\t}\n\n\treturn modelLabel;\n};\n\nInteractiveModeBase.prototype.getStartupIdentityText = function (\n\tthis: InteractiveModeBase,\n\tmaxWidth?: number,\n\tgap = 0,\n\tmanifestoPhase = 4,\n): string {\n\tconst appLabel = APP_NAME.length > 0 ? `${APP_NAME[0]!.toUpperCase()}${APP_NAME.slice(1)}` : \"Atomic\";\n\tconst noColor = process.env.NO_COLOR !== undefined;\n\tconst fg = (role: \"text\" | \"muted\" | \"dim\", text: string): string => (noColor ? text : theme.fg(role, text));\n\tconst showMark = supportsAtomicBanner();\n\tconst wordmark = showMark ? \"\" : `${atomicWordmark()} `;\n\tconst title = `${wordmark}${theme.bold(fg(\"text\", appLabel))} ${fg(\"muted\", `v${this.version}`)}`;\n\tconst model = this.session.state.model;\n\tconst provider = model ? fg(\"dim\", `(${model.provider})`) : fg(\"dim\", \"(no-provider)\");\n\tconst modelLine = `${provider} ${fg(\"muted\", this.getStartupModelLabel())}`;\n\tconst markLines = showMark ? this.getAtomicAnsiMarkLines(gap) : [];\n\tconst markWidth = Math.max(0, ...markLines.map(visibleWidth));\n\tconst showMeta = gap === 0 || (maxWidth !== undefined && maxWidth < markWidth);\n\tconst metaLines = showMeta\n\t\t? [title, modelLine, fg(\"muted\", this.formatDisplayPath(this.sessionManager.getCwd()))]\n\t\t: [];\n\treturn composeStartupIdentity(\n\t\tmarkLines,\n\t\tmetaLines,\n\t\tmaxWidth,\n\t\tgap === 0 ? renderStartupManifesto(manifestoPhase) : [],\n\t);\n};\n\nInteractiveModeBase.prototype.getAtomicAnsiMarkLines = function (this: InteractiveModeBase, gap = 0): string[] {\n\treturn renderAtomicAssemblyBanner(gap, theme, this.session.thinkingLevel || \"off\");\n};\n\nInteractiveModeBase.prototype.getStartupExpansionState = function (this: InteractiveModeBase): boolean {\n\treturn this.options.verbose || this.toolOutputExpanded;\n};\n\nInteractiveModeBase.prototype.shouldShowStartupHeader = function (this: InteractiveModeBase): boolean {\n\treturn this.options.verbose === true || this.settingsManager.getQuietStartup() !== true;\n};\n\nInteractiveModeBase.prototype.shouldShowStartupDetails = function (this: InteractiveModeBase): boolean {\n\treturn this.options.verbose === true || this.settingsManager.getQuietStartup() === false;\n};\n"]}
@@ -0,0 +1,24 @@
1
+ import type { ProgramStatus, Terminal } from "@earendil-works/pi-tui";
2
+ import type { AgentSessionEvent } from "../../core/agent-session.js";
3
+ import type { JsonAgentSessionEvent } from "../json-event.ts";
4
+ export type BlockedStatus = {
5
+ kind: NonNullable<ProgramStatus["kind"]>;
6
+ message: string;
7
+ };
8
+ export declare class ProgramStatusReporter {
9
+ private runActive;
10
+ private compacting;
11
+ private runResult;
12
+ private restingStatus;
13
+ private readonly blocked;
14
+ private lastReport;
15
+ private readonly getTerminal;
16
+ private readonly getSessionName;
17
+ constructor(getTerminal: () => Terminal, getSessionName: () => string | undefined);
18
+ handleEvent(event: AgentSessionEvent | JsonAgentSessionEvent): void;
19
+ setBlocked(source: string, status: BlockedStatus | undefined): void;
20
+ reset(): void;
21
+ report(): void;
22
+ private currentStatus;
23
+ }
24
+ //# sourceMappingURL=program-status-reporter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"program-status-reporter.d.ts","sourceRoot":"","sources":["../../../src/modes/interactive/program-status-reporter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAEtE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAE9D,MAAM,MAAM,aAAa,GAAG;IAAE,IAAI,EAAE,WAAW,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAM1F,qBAAa,qBAAqB;IACjC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,SAAS,CAAoC;IACrD,OAAO,CAAC,aAAa,CAAoC;IACzD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoC;IAC5D,OAAO,CAAC,UAAU,CAAqB;IAEvC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAiB;IAC7C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA2B;IAE1D,YAAY,WAAW,EAAE,MAAM,QAAQ,EAAE,cAAc,EAAE,MAAM,MAAM,GAAG,SAAS,EAGhF;IAED,WAAW,CAAC,KAAK,EAAE,iBAAiB,GAAG,qBAAqB,GAAG,IAAI,CAuClE;IAED,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,SAAS,GAAG,IAAI,CAIlE;IAED,KAAK,IAAI,IAAI,CAMZ;IAED,MAAM,IAAI,IAAI,CAMb;IAED,OAAO,CAAC,aAAa;CAQrB"}
@@ -0,0 +1,96 @@
1
+ import { APP_NAME } from "../../config.js";
2
+ function firstLine(text) {
3
+ return text?.split(/\r?\n/, 1)[0]?.trim() || "Error";
4
+ }
5
+ export class ProgramStatusReporter {
6
+ runActive = false;
7
+ compacting = false;
8
+ runResult = { state: "done" };
9
+ restingStatus = { state: "idle" };
10
+ blocked = new Map();
11
+ lastReport;
12
+ getTerminal;
13
+ getSessionName;
14
+ constructor(getTerminal, getSessionName) {
15
+ this.getTerminal = getTerminal;
16
+ this.getSessionName = getSessionName;
17
+ }
18
+ handleEvent(event) {
19
+ switch (event.type) {
20
+ case "agent_start":
21
+ this.runActive = true;
22
+ this.runResult = { state: "done" };
23
+ break;
24
+ case "message_end":
25
+ if (event.message.role !== "assistant")
26
+ return;
27
+ this.runResult =
28
+ event.message.stopReason === "error"
29
+ ? { state: "error", message: firstLine(event.message.errorMessage) }
30
+ : { state: "done" };
31
+ break;
32
+ case "compaction_start":
33
+ this.compacting = true;
34
+ break;
35
+ case "compaction_end":
36
+ this.compacting = false;
37
+ if (this.runActive) {
38
+ if (event.aborted)
39
+ this.runResult = { state: "idle" };
40
+ else if (event.errorMessage)
41
+ this.runResult = { state: "error", message: firstLine(event.errorMessage) };
42
+ }
43
+ else if (event.aborted) {
44
+ this.restingStatus = { state: "idle" };
45
+ }
46
+ else if (event.reason === "manual") {
47
+ this.restingStatus = event.errorMessage
48
+ ? { state: "error", message: firstLine(event.errorMessage) }
49
+ : { state: "done" };
50
+ }
51
+ break;
52
+ case "agent_settled":
53
+ this.runActive = false;
54
+ this.restingStatus = event.aborted ? { state: "idle" } : this.runResult;
55
+ break;
56
+ case "session_info_changed":
57
+ break;
58
+ default:
59
+ return;
60
+ }
61
+ this.report();
62
+ }
63
+ setBlocked(source, status) {
64
+ this.blocked.delete(source);
65
+ if (status)
66
+ this.blocked.set(source, status);
67
+ this.report();
68
+ }
69
+ reset() {
70
+ this.runActive = false;
71
+ this.compacting = false;
72
+ this.runResult = { state: "done" };
73
+ this.restingStatus = { state: "idle" };
74
+ this.report();
75
+ }
76
+ report() {
77
+ const status = { ...this.currentStatus(), app: APP_NAME };
78
+ const key = JSON.stringify(status);
79
+ if (key === this.lastReport)
80
+ return;
81
+ this.lastReport = key;
82
+ this.getTerminal().setProgramStatus(status);
83
+ }
84
+ currentStatus() {
85
+ const blocked = [...this.blocked.values()].at(-1);
86
+ if (blocked)
87
+ return { state: "blocked", ...blocked };
88
+ if (this.compacting)
89
+ return { state: "working", message: "Compacting context" };
90
+ const status = this.runActive ? { state: "working" } : this.restingStatus;
91
+ if (status.state === "working" || status.state === "done")
92
+ return { ...status, message: this.getSessionName() };
93
+ return status;
94
+ }
95
+ }
96
+ //# sourceMappingURL=program-status-reporter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"program-status-reporter.js","sourceRoot":"","sources":["../../../src/modes/interactive/program-status-reporter.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ProgramStatus, Terminal } from \"@earendil-works/pi-tui\";\nimport { APP_NAME } from \"../../config.js\";\nimport type { AgentSessionEvent } from \"../../core/agent-session.js\";\nimport type { JsonAgentSessionEvent } from \"../json-event.ts\";\n\nexport type BlockedStatus = { kind: NonNullable<ProgramStatus[\"kind\"]>; message: string };\n\nfunction firstLine(text: string | undefined): string {\n\treturn text?.split(/\\r?\\n/, 1)[0]?.trim() || \"Error\";\n}\n\nexport class ProgramStatusReporter {\n\tprivate runActive = false;\n\tprivate compacting = false;\n\tprivate runResult: ProgramStatus = { state: \"done\" };\n\tprivate restingStatus: ProgramStatus = { state: \"idle\" };\n\tprivate readonly blocked = new Map<string, BlockedStatus>();\n\tprivate lastReport: string | undefined;\n\n\tprivate readonly getTerminal: () => Terminal;\n\tprivate readonly getSessionName: () => string | undefined;\n\n\tconstructor(getTerminal: () => Terminal, getSessionName: () => string | undefined) {\n\t\tthis.getTerminal = getTerminal;\n\t\tthis.getSessionName = getSessionName;\n\t}\n\n\thandleEvent(event: AgentSessionEvent | JsonAgentSessionEvent): void {\n\t\tswitch (event.type) {\n\t\t\tcase \"agent_start\":\n\t\t\t\tthis.runActive = true;\n\t\t\t\tthis.runResult = { state: \"done\" };\n\t\t\t\tbreak;\n\t\t\tcase \"message_end\":\n\t\t\t\tif (event.message.role !== \"assistant\") return;\n\t\t\t\tthis.runResult =\n\t\t\t\t\tevent.message.stopReason === \"error\"\n\t\t\t\t\t\t? { state: \"error\", message: firstLine(event.message.errorMessage) }\n\t\t\t\t\t\t: { state: \"done\" };\n\t\t\t\tbreak;\n\t\t\tcase \"compaction_start\":\n\t\t\t\tthis.compacting = true;\n\t\t\t\tbreak;\n\t\t\tcase \"compaction_end\":\n\t\t\t\tthis.compacting = false;\n\t\t\t\tif (this.runActive) {\n\t\t\t\t\tif (event.aborted) this.runResult = { state: \"idle\" };\n\t\t\t\t\telse if (event.errorMessage) this.runResult = { state: \"error\", message: firstLine(event.errorMessage) };\n\t\t\t\t} else if (event.aborted) {\n\t\t\t\t\tthis.restingStatus = { state: \"idle\" };\n\t\t\t\t} else if (event.reason === \"manual\") {\n\t\t\t\t\tthis.restingStatus = event.errorMessage\n\t\t\t\t\t\t? { state: \"error\", message: firstLine(event.errorMessage) }\n\t\t\t\t\t\t: { state: \"done\" };\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"agent_settled\":\n\t\t\t\tthis.runActive = false;\n\t\t\t\tthis.restingStatus = event.aborted ? { state: \"idle\" } : this.runResult;\n\t\t\t\tbreak;\n\t\t\tcase \"session_info_changed\":\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\treturn;\n\t\t}\n\t\tthis.report();\n\t}\n\n\tsetBlocked(source: string, status: BlockedStatus | undefined): void {\n\t\tthis.blocked.delete(source);\n\t\tif (status) this.blocked.set(source, status);\n\t\tthis.report();\n\t}\n\n\treset(): void {\n\t\tthis.runActive = false;\n\t\tthis.compacting = false;\n\t\tthis.runResult = { state: \"done\" };\n\t\tthis.restingStatus = { state: \"idle\" };\n\t\tthis.report();\n\t}\n\n\treport(): void {\n\t\tconst status: ProgramStatus = { ...this.currentStatus(), app: APP_NAME };\n\t\tconst key = JSON.stringify(status);\n\t\tif (key === this.lastReport) return;\n\t\tthis.lastReport = key;\n\t\tthis.getTerminal().setProgramStatus(status);\n\t}\n\n\tprivate currentStatus(): ProgramStatus {\n\t\tconst blocked = [...this.blocked.values()].at(-1);\n\t\tif (blocked) return { state: \"blocked\", ...blocked };\n\t\tif (this.compacting) return { state: \"working\", message: \"Compacting context\" };\n\t\tconst status = this.runActive ? { state: \"working\" as const } : this.restingStatus;\n\t\tif (status.state === \"working\" || status.state === \"done\") return { ...status, message: this.getSessionName() };\n\t\treturn status;\n\t}\n}\n"]}
@@ -1,6 +1,7 @@
1
1
  export interface InteractiveEngineLiveness {
2
2
  ready(): void;
3
3
  bound(): void;
4
+ projectTrustResolved(): void;
4
5
  resourcesReady(): void;
5
6
  resourcesFailed(error: Error): void;
6
7
  stop(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"engine-child-liveness.d.ts","sourceRoot":"","sources":["../../../src/modes/interactive-engine/engine-child-liveness.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,yBAAyB;IACzC,KAAK,IAAI,IAAI,CAAC;IACd,KAAK,IAAI,IAAI,CAAC;IACd,cAAc,IAAI,IAAI,CAAC;IACvB,eAAe,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpC,IAAI,IAAI,IAAI,CAAC;CACb;AAID,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,yBAAyB,CAsDvG"}
1
+ {"version":3,"file":"engine-child-liveness.d.ts","sourceRoot":"","sources":["../../../src/modes/interactive-engine/engine-child-liveness.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,yBAAyB;IACzC,KAAK,IAAI,IAAI,CAAC;IACd,KAAK,IAAI,IAAI,CAAC;IACd,oBAAoB,IAAI,IAAI,CAAC;IAC7B,cAAc,IAAI,IAAI,CAAC;IACvB,eAAe,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpC,IAAI,IAAI,IAAI,CAAC;CACb;AAID,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,yBAAyB,CAmEvG"}
@@ -9,7 +9,14 @@ export function startInteractiveEngineLiveness(write) {
9
9
  return activeLiveness;
10
10
  const engineEnv = interactiveEngineStartupEnv();
11
11
  if (engineEnv.child !== "1") {
12
- return { ready: () => { }, bound: () => { }, resourcesReady: () => { }, resourcesFailed: () => { }, stop: () => { } };
12
+ return {
13
+ ready: () => { },
14
+ bound: () => { },
15
+ projectTrustResolved: () => { },
16
+ resourcesReady: () => { },
17
+ resourcesFailed: () => { },
18
+ stop: () => { },
19
+ };
13
20
  }
14
21
  const hostPid = Number.parseInt(engineEnv.hostPid ?? "", 10);
15
22
  const stopGuardian = Number.isSafeInteger(hostPid) && hostPid > 0
@@ -26,6 +33,7 @@ export function startInteractiveEngineLiveness(write) {
26
33
  heartbeat.unref?.();
27
34
  let readySent = false;
28
35
  let boundSent = false;
36
+ let projectTrustResolvedSent = false;
29
37
  let resourceState = "pending";
30
38
  const liveness = {
31
39
  ready: () => {
@@ -40,6 +48,12 @@ export function startInteractiveEngineLiveness(write) {
40
48
  boundSent = true;
41
49
  send({ type: "engine_bound" });
42
50
  },
51
+ projectTrustResolved: () => {
52
+ if (projectTrustResolvedSent)
53
+ return;
54
+ projectTrustResolvedSent = true;
55
+ send({ type: "engine_project_trust_resolved" });
56
+ },
43
57
  resourcesReady: () => {
44
58
  if (resourceState === "ready")
45
59
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"engine-child-liveness.js","sourceRoot":"","sources":["../../../src/modes/interactive-engine/engine-child-liveness.ts"],"names":[],"mappings":"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","sourcesContent":["import { setCallbackActivityReporter } from \"../../core/callback-activity.ts\";\nimport { writeRawStdoutControl } from \"../../core/output-guard.ts\";\nimport { interactiveEngineStartupEnv } from \"../../utils/interactive-engine-env.ts\";\nimport { startParentProcessGuardian } from \"../../utils/shell.ts\";\nimport { INTERACTIVE_ENGINE_PROTOCOL_VERSION, serializeInteractiveEngineMessage } from \"./protocol.ts\";\n\nexport interface InteractiveEngineLiveness {\n\tready(): void;\n\tbound(): void;\n\tresourcesReady(): void;\n\tresourcesFailed(error: Error): void;\n\tstop(): void;\n}\n\nlet activeLiveness: InteractiveEngineLiveness | undefined;\n\nexport function startInteractiveEngineLiveness(write: (line: string) => void): InteractiveEngineLiveness {\n\tif (activeLiveness) return activeLiveness;\n\tconst engineEnv = interactiveEngineStartupEnv();\n\tif (engineEnv.child !== \"1\") {\n\t\treturn { ready: () => {}, bound: () => {}, resourcesReady: () => {}, resourcesFailed: () => {}, stop: () => {} };\n\t}\n\tconst hostPid = Number.parseInt(engineEnv.hostPid ?? \"\", 10);\n\tconst stopGuardian =\n\t\tNumber.isSafeInteger(hostPid) && hostPid > 0\n\t\t\t? startParentProcessGuardian(hostPid, engineEnv.guardFile)\n\t\t\t: async () => {};\n\tconst send = (message: Parameters<typeof serializeInteractiveEngineMessage>[0]) => {\n\t\twrite(serializeInteractiveEngineMessage(message));\n\t};\n\tsetCallbackActivityReporter({\n\t\tstarted: (activity) =>\n\t\t\twriteRawStdoutControl(serializeInteractiveEngineMessage({ type: \"engine_activity_started\", activity })),\n\t\tfinished: (activityId) => send({ type: \"engine_activity_finished\", activityId }),\n\t});\n\tconst heartbeat = setInterval(() => send({ type: \"engine_heartbeat\", at: performance.now() }), 50);\n\theartbeat.unref?.();\n\tlet readySent = false;\n\tlet boundSent = false;\n\tlet resourceState: \"pending\" | \"ready\" | \"failed\" = \"pending\";\n\tconst liveness: InteractiveEngineLiveness = {\n\t\tready: () => {\n\t\t\tif (readySent) return;\n\t\t\treadySent = true;\n\t\t\tsend({ type: \"engine_ready\", protocolVersion: INTERACTIVE_ENGINE_PROTOCOL_VERSION, pid: process.pid });\n\t\t},\n\t\tbound: () => {\n\t\t\tif (boundSent) return;\n\t\t\tboundSent = true;\n\t\t\tsend({ type: \"engine_bound\" });\n\t\t},\n\t\tresourcesReady: () => {\n\t\t\tif (resourceState === \"ready\") return;\n\t\t\tresourceState = \"ready\";\n\t\t\tsend({ type: \"engine_resources_ready\" });\n\t\t},\n\t\tresourcesFailed: (error) => {\n\t\t\tif (resourceState === \"failed\") return;\n\t\t\tresourceState = \"failed\";\n\t\t\tsend({ type: \"engine_resources_failed\", message: error.message });\n\t\t},\n\t\tstop: () => {\n\t\t\tclearInterval(heartbeat);\n\t\t\tsetCallbackActivityReporter(undefined);\n\t\t\tvoid stopGuardian();\n\t\t\tif (activeLiveness === liveness) activeLiveness = undefined;\n\t\t},\n\t};\n\tactiveLiveness = liveness;\n\treturn liveness;\n}\n"]}
1
+ {"version":3,"file":"engine-child-liveness.js","sourceRoot":"","sources":["../../../src/modes/interactive-engine/engine-child-liveness.ts"],"names":[],"mappings":"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","sourcesContent":["import { setCallbackActivityReporter } from \"../../core/callback-activity.ts\";\nimport { writeRawStdoutControl } from \"../../core/output-guard.ts\";\nimport { interactiveEngineStartupEnv } from \"../../utils/interactive-engine-env.ts\";\nimport { startParentProcessGuardian } from \"../../utils/shell.ts\";\nimport { INTERACTIVE_ENGINE_PROTOCOL_VERSION, serializeInteractiveEngineMessage } from \"./protocol.ts\";\n\nexport interface InteractiveEngineLiveness {\n\tready(): void;\n\tbound(): void;\n\tprojectTrustResolved(): void;\n\tresourcesReady(): void;\n\tresourcesFailed(error: Error): void;\n\tstop(): void;\n}\n\nlet activeLiveness: InteractiveEngineLiveness | undefined;\n\nexport function startInteractiveEngineLiveness(write: (line: string) => void): InteractiveEngineLiveness {\n\tif (activeLiveness) return activeLiveness;\n\tconst engineEnv = interactiveEngineStartupEnv();\n\tif (engineEnv.child !== \"1\") {\n\t\treturn {\n\t\t\tready: () => {},\n\t\t\tbound: () => {},\n\t\t\tprojectTrustResolved: () => {},\n\t\t\tresourcesReady: () => {},\n\t\t\tresourcesFailed: () => {},\n\t\t\tstop: () => {},\n\t\t};\n\t}\n\tconst hostPid = Number.parseInt(engineEnv.hostPid ?? \"\", 10);\n\tconst stopGuardian =\n\t\tNumber.isSafeInteger(hostPid) && hostPid > 0\n\t\t\t? startParentProcessGuardian(hostPid, engineEnv.guardFile)\n\t\t\t: async () => {};\n\tconst send = (message: Parameters<typeof serializeInteractiveEngineMessage>[0]) => {\n\t\twrite(serializeInteractiveEngineMessage(message));\n\t};\n\tsetCallbackActivityReporter({\n\t\tstarted: (activity) =>\n\t\t\twriteRawStdoutControl(serializeInteractiveEngineMessage({ type: \"engine_activity_started\", activity })),\n\t\tfinished: (activityId) => send({ type: \"engine_activity_finished\", activityId }),\n\t});\n\tconst heartbeat = setInterval(() => send({ type: \"engine_heartbeat\", at: performance.now() }), 50);\n\theartbeat.unref?.();\n\tlet readySent = false;\n\tlet boundSent = false;\n\tlet projectTrustResolvedSent = false;\n\tlet resourceState: \"pending\" | \"ready\" | \"failed\" = \"pending\";\n\tconst liveness: InteractiveEngineLiveness = {\n\t\tready: () => {\n\t\t\tif (readySent) return;\n\t\t\treadySent = true;\n\t\t\tsend({ type: \"engine_ready\", protocolVersion: INTERACTIVE_ENGINE_PROTOCOL_VERSION, pid: process.pid });\n\t\t},\n\t\tbound: () => {\n\t\t\tif (boundSent) return;\n\t\t\tboundSent = true;\n\t\t\tsend({ type: \"engine_bound\" });\n\t\t},\n\t\tprojectTrustResolved: () => {\n\t\t\tif (projectTrustResolvedSent) return;\n\t\t\tprojectTrustResolvedSent = true;\n\t\t\tsend({ type: \"engine_project_trust_resolved\" });\n\t\t},\n\t\tresourcesReady: () => {\n\t\t\tif (resourceState === \"ready\") return;\n\t\t\tresourceState = \"ready\";\n\t\t\tsend({ type: \"engine_resources_ready\" });\n\t\t},\n\t\tresourcesFailed: (error) => {\n\t\t\tif (resourceState === \"failed\") return;\n\t\t\tresourceState = \"failed\";\n\t\t\tsend({ type: \"engine_resources_failed\", message: error.message });\n\t\t},\n\t\tstop: () => {\n\t\t\tclearInterval(heartbeat);\n\t\t\tsetCallbackActivityReporter(undefined);\n\t\t\tvoid stopGuardian();\n\t\t\tif (activeLiveness === liveness) activeLiveness = undefined;\n\t\t},\n\t};\n\tactiveLiveness = liveness;\n\treturn liveness;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"engine-custom-ui.d.ts","sourceRoot":"","sources":["../../../src/modes/interactive-engine/engine-custom-ui.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,KAAK,SAAS,EAEd,KAAK,aAAa,EAClB,KAAK,cAAc,EAEnB,KAAK,GAAG,EAER,MAAM,wBAAwB,CAAC;AAGhC,OAAO,KAAK,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAEnG,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,+BAA+B,CAAC;AAY3D,UAAU,eAAe;IACxB,OAAO,CAAC,EAAE,QAAQ,GAAG,YAAY,CAAC;IAClC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,gFAAgF;IAChF,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,+EAA+E;IAC/E,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,2EAA2E;IAC3E,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,cAAc,CAAC,EAAE,cAAc,GAAG,CAAC,MAAM,cAAc,CAAC,CAAC;IACzD,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,IAAI,CAAC;IAC3C,MAAM,CAAC,EAAE,WAAW,CAAC;CACrB;AAqGD,qBAAa,qBAAqB;IACjC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA6B;IACvD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAsC;IAC7D,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAyB;IAC/C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAqB;IACjD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAwC;IACvE,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAsC;IAE7E,SAAS,CACR,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,KAAK,SAAS,GAAG;QAAE,OAAO,CAAC,IAAI,IAAI,CAAA;KAAE,CAAC,GAAG,SAAS,EACnF,SAAS,CAAC,EAAE,aAAa,GAAG,aAAa,EACzC,MAAM,CAAC,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,iBAAiB,CAAC,EAAE,MAAM,CAAA;KAAE,GACxD,IAAI,CAgDN;IACD,YAAY,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,EAAE,WAAW,EAAE,kBAAkB,EAGzE;IAEK,MAAM,CAAC,CAAC,EACb,OAAO,EAAE,CACR,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,kBAAkB,EAC/B,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,IAAI,KACrB,CAAC,SAAS,GAAG;QAAE,OAAO,CAAC,IAAI,IAAI,CAAA;KAAE,CAAC,GAAG,OAAO,CAAC,SAAS,GAAG;QAAE,OAAO,CAAC,IAAI,IAAI,CAAA;KAAE,CAAC,EACnF,OAAO,CAAC,EAAE,eAAe,GACvB,OAAO,CAAC,CAAC,CAAC,CA8DZ;IACD,oBAAoB,IAAI,iBAAiB,CAQxC;IAED,yBAAyB,CAAC,QAAQ,EAAE,yBAAyB,GAAG,MAAM,IAAI,CAGzE;IACD,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAQ7D;IAED,uBAAuB,IAAI,OAAO,CAEjC;IAED,aAAa,IAAI,IAAI,CAKpB;IAED,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CA2EhC;IAED,OAAO,IAAI,IAAI,CAEd;IACD,OAAO,CAAC,gBAAgB;IAgBxB,OAAO,CAAC,mBAAmB;IAS3B,OAAO,CAAC,WAAW;IAKnB,OAAO,CAAC,YAAY;IA6BpB,OAAO,CAAC,QAAQ;IAQhB,OAAO,CAAC,IAAI;CAGZ"}
1
+ {"version":3,"file":"engine-custom-ui.d.ts","sourceRoot":"","sources":["../../../src/modes/interactive-engine/engine-custom-ui.ts"],"names":[],"mappings":"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"}
@@ -60,6 +60,7 @@ class RemoteTerminal {
60
60
  clearScreen() { }
61
61
  setTitle() { }
62
62
  setProgress() { }
63
+ setProgramStatus() { }
63
64
  /** Ask the host to toggle host-TTY autowrap (DECAWM) for this component. */
64
65
  setAutowrap(enabled) {
65
66
  this.control?.({ kind: "autowrap", enabled });