@timurproko/a1 0.2.7-dev.1249 → 0.2.7-dev.1255

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 (524) hide show
  1. package/README.md +11 -36
  2. package/bin/cli.js +2 -17
  3. package/bin/ui.js +10 -51
  4. package/dist/app/session-shell/clipboard-diagnostics.d.ts +2 -2
  5. package/dist/app/session-shell/clipboard-image.d.ts +0 -1
  6. package/dist/app/session-shell/clipboard-image.js +1 -1
  7. package/dist/app/session-shell/dialog-coordinator.d.ts +6 -5
  8. package/dist/app/session-shell/dialog-coordinator.js +3 -4
  9. package/dist/app/session-shell/dock-chrome.d.ts +11 -6
  10. package/dist/app/session-shell/dock-chrome.js +5 -8
  11. package/dist/app/session-shell/editor-hyperlink-budget.d.ts +0 -2
  12. package/dist/app/session-shell/editor-hyperlink-budget.js +1 -1
  13. package/dist/app/session-shell/exit-notice.d.ts +3 -3
  14. package/dist/app/session-shell/exit-notice.js +10 -10
  15. package/dist/app/session-shell/extension-surface.d.ts +8 -7
  16. package/dist/app/session-shell/helper-pool.d.ts +3 -4
  17. package/dist/app/session-shell/helper-pool.js +1 -1
  18. package/dist/app/session-shell/image-preparation-client.d.ts +4 -3
  19. package/dist/app/session-shell/image-preparation.d.ts +0 -2
  20. package/dist/app/session-shell/image-preparation.js +2 -2
  21. package/dist/app/session-shell/image-source.d.ts +2 -3
  22. package/dist/app/session-shell/image-source.js +2 -2
  23. package/dist/app/session-shell/input-surface-switch.d.ts +9 -7
  24. package/dist/app/session-shell/input-surface-switch.js +1 -2
  25. package/dist/app/session-shell/login-interaction.d.ts +5 -4
  26. package/dist/app/session-shell/login-interaction.js +2 -3
  27. package/dist/app/session-shell/paste-executor.d.ts +4 -8
  28. package/dist/app/session-shell/paste-executor.js +2 -2
  29. package/dist/app/session-shell/paste-protocol.d.ts +2 -2
  30. package/dist/app/session-shell/path-chip-presentation.d.ts +0 -5
  31. package/dist/app/session-shell/path-chip-presentation.js +3 -3
  32. package/dist/app/session-shell/prompt-chips.d.ts +8 -7
  33. package/dist/app/session-shell/prompt-history-controller.d.ts +3 -3
  34. package/dist/app/session-shell/prompt-submission.d.ts +7 -6
  35. package/dist/app/session-shell/prompt-submission.js +7 -28
  36. package/dist/app/session-shell/quit-outro-effects.d.ts +3 -3
  37. package/dist/app/session-shell/quit-outro-effects.js +1 -4
  38. package/dist/app/session-shell/quit-outro.d.ts +9 -12
  39. package/dist/app/session-shell/quit-outro.js +11 -11
  40. package/dist/app/session-shell/response-copy-protocol.d.ts +3 -2
  41. package/dist/app/session-shell/response-copy-transport.d.ts +2 -14
  42. package/dist/app/session-shell/response-copy-transport.js +2 -3
  43. package/dist/app/session-shell/session-lifecycle.d.ts +3 -3
  44. package/dist/app/session-shell/session-lifecycle.js +2 -4
  45. package/dist/app/session-shell/session-shell-root.d.ts +74 -120
  46. package/dist/app/session-shell/session-shell-root.js +82 -115
  47. package/dist/app/session-shell/session-shell.d.ts +13 -16
  48. package/dist/app/session-shell/session-shell.js +149 -314
  49. package/dist/app/session-shell/session-viewport-controller.d.ts +7 -6
  50. package/dist/app/session-shell/session-viewport-controller.js +5 -8
  51. package/dist/app/session-shell/settings-bindings.d.ts +24 -2
  52. package/dist/app/session-shell/settings-bindings.js +24 -0
  53. package/dist/app/session-shell/share-operation.d.ts +3 -3
  54. package/dist/app/session-shell/share-operation.js +4 -6
  55. package/dist/app/session-shell/shell-clipboard.d.ts +59 -0
  56. package/dist/app/session-shell/shell-clipboard.js +119 -0
  57. package/dist/app/session-shell/shell-editor-factory.d.ts +8 -4
  58. package/dist/app/session-shell/shell-editor-factory.js +13 -15
  59. package/dist/app/session-shell/shell-host.d.ts +16 -17
  60. package/dist/app/session-shell/shell-host.js +20 -37
  61. package/dist/app/session-shell/shell-layout.d.ts +2 -2
  62. package/dist/app/session-shell/shell-prompt-suggestions.d.ts +26 -0
  63. package/dist/app/session-shell/shell-prompt-suggestions.js +48 -0
  64. package/dist/app/session-shell/suggestion-surface.d.ts +1 -6
  65. package/dist/app/session-shell/suggestion-surface.js +1 -1
  66. package/dist/app/session-shell/system-clipboard.d.ts +2 -14
  67. package/dist/app/session-shell/system-clipboard.js +2 -7
  68. package/dist/app/session-shell/transcript-document.d.ts +12 -10
  69. package/dist/app/session-shell/transcript-document.js +15 -41
  70. package/dist/app/session-shell/viewport-layout.d.ts +2 -2
  71. package/dist/app/session-shell/workflow-output.d.ts +5 -3
  72. package/dist/app/session-shell/workflow-output.js +13 -15
  73. package/dist/app/session-shell/workflow-router.d.ts +1 -3
  74. package/dist/app/session-shell/workflow-router.js +1 -4
  75. package/dist/cli/dispatch.d.ts +1 -11
  76. package/dist/cli/dispatch.js +5 -92
  77. package/dist/cli/package-messages.d.ts +0 -1
  78. package/dist/cli/package-messages.js +1 -1
  79. package/dist/cli/session-context.d.ts +1 -1
  80. package/dist/cli/session-context.js +5 -7
  81. package/dist/cli/uninstall.d.ts +4 -7
  82. package/dist/cli/uninstall.js +6 -35
  83. package/dist/cli/version-stats.js +4 -7
  84. package/dist/composition/owned-settings.d.ts +2 -2
  85. package/dist/composition/owned-settings.js +0 -4
  86. package/dist/composition/owned-ui.d.ts +3 -25
  87. package/dist/composition/owned-ui.js +37 -113
  88. package/dist/composition/reference-selection-options.d.ts +1 -1
  89. package/dist/composition/reference-selection-options.js +1 -1
  90. package/dist/composition/release-update-observation.d.ts +4 -4
  91. package/dist/composition/release-update-observation.js +17 -47
  92. package/dist/composition/session-backend.d.ts +0 -1
  93. package/dist/composition/session-runtime-registry.d.ts +5 -4
  94. package/dist/composition/settings-route-host.d.ts +0 -7
  95. package/dist/composition/settings-route-host.js +7 -20
  96. package/dist/composition/settings-search-input.d.ts +2 -1
  97. package/dist/composition/startup-route.d.ts +2 -3
  98. package/dist/composition/startup-route.js +2 -3
  99. package/dist/contracts/owned-ui/extension-ui.d.ts +2 -1
  100. package/dist/contracts/owned-ui/index.d.ts +2 -1
  101. package/dist/contracts/owned-ui/model.d.ts +0 -3
  102. package/dist/contracts/owned-ui/session-presenters.d.ts +3 -0
  103. package/dist/contracts/owned-ui/session-workflows.d.ts +1 -4
  104. package/dist/contracts/owned-ui/shell-components.d.ts +543 -0
  105. package/dist/contracts/presentation/component.d.ts +17 -0
  106. package/dist/contracts/presentation/component.js +8 -0
  107. package/dist/contracts/presentation/index.d.ts +6 -15
  108. package/dist/contracts/presentation/index.js +2 -0
  109. package/dist/contracts/presentation/terminal.d.ts +290 -0
  110. package/dist/contracts/presentation/theme.d.ts +46 -0
  111. package/dist/features/launch/development-launch.js +1 -2
  112. package/dist/features/launch/index.d.ts +1 -1
  113. package/dist/features/launch/intent.d.ts +1 -3
  114. package/dist/features/launch/intent.js +2 -4
  115. package/dist/features/launch/runtime-selection.d.ts +2 -2
  116. package/dist/features/launch/runtime-selection.js +2 -2
  117. package/dist/features/launch/session-context.d.ts +2 -2
  118. package/dist/features/owned-ui/project-trust-prompt.d.ts +2 -2
  119. package/dist/features/owned-ui/project-trust-prompt.js +1 -1
  120. package/dist/features/owned-ui/reference-screen-app.d.ts +0 -2
  121. package/dist/features/owned-ui/reference-screen-app.js +2 -9
  122. package/dist/features/owned-ui/release-note-state.d.ts +2 -1
  123. package/dist/features/owned-ui/settings-app.d.ts +0 -6
  124. package/dist/features/owned-ui/settings-app.js +42 -254
  125. package/dist/features/owned-ui/settings-edits.d.ts +31 -0
  126. package/dist/features/owned-ui/settings-edits.js +139 -0
  127. package/dist/features/owned-ui/settings-scroll-rail.d.ts +29 -0
  128. package/dist/features/owned-ui/settings-scroll-rail.js +79 -0
  129. package/dist/features/owned-ui/settings-search-input.d.ts +2 -1
  130. package/dist/features/prompt-history/service.d.ts +3 -2
  131. package/dist/foundation/launch-context/index.d.ts +0 -12
  132. package/dist/foundation/launch-context/index.js +0 -26
  133. package/dist/foundation/lifecycle/claim-gate.d.ts +9 -0
  134. package/dist/foundation/lifecycle/claim-gate.js +37 -0
  135. package/dist/foundation/lifecycle/index.d.ts +5 -9
  136. package/dist/foundation/lifecycle/index.js +3 -4
  137. package/dist/foundation/lifecycle/model.d.ts +2 -59
  138. package/dist/foundation/lifecycle/model.js +0 -35
  139. package/dist/foundation/lifecycle/paths.d.ts +0 -24
  140. package/dist/foundation/lifecycle/paths.js +0 -40
  141. package/dist/foundation/lifecycle/process-liveness.d.ts +8 -0
  142. package/dist/foundation/lifecycle/process-liveness.js +18 -0
  143. package/dist/foundation/lifecycle/session-claim-lock.d.ts +1 -1
  144. package/dist/foundation/lifecycle/session-claim-lock.js +2 -2
  145. package/dist/foundation/lifecycle/session-repository-context.d.ts +6 -6
  146. package/dist/foundation/lifecycle/session-repository-context.js +2 -3
  147. package/dist/foundation/release/automatic-update.d.ts +6 -17
  148. package/dist/foundation/release/automatic-update.js +23 -44
  149. package/dist/foundation/release/bootstrap.d.ts +2 -25
  150. package/dist/foundation/release/bootstrap.js +37 -348
  151. package/dist/foundation/release/dependency-certification.d.ts +1 -2
  152. package/dist/foundation/release/dependency-certification.js +1 -1
  153. package/dist/foundation/release/early-accent.d.ts +2 -2
  154. package/dist/foundation/release/early-accent.js +1 -1
  155. package/dist/foundation/release/index.d.ts +10 -17
  156. package/dist/foundation/release/index.js +7 -11
  157. package/dist/foundation/release/latest-release.d.ts +3 -19
  158. package/dist/foundation/release/latest-release.js +11 -12
  159. package/dist/foundation/release/ordinary-launch-selection.d.ts +1 -1
  160. package/dist/foundation/release/ordinary-launch-selection.js +1 -1
  161. package/dist/foundation/release/process-liveness.d.ts +2 -0
  162. package/dist/foundation/release/process-liveness.js +12 -0
  163. package/dist/foundation/release/release-gc.d.ts +13 -10
  164. package/dist/foundation/release/release-gc.js +37 -101
  165. package/dist/foundation/release/{cohort-state.d.ts → release-state.d.ts} +44 -69
  166. package/dist/foundation/release/{cohort-state.js → release-state.js} +38 -70
  167. package/dist/foundation/release/release-store.d.ts +2 -2
  168. package/dist/foundation/release/release-store.js +2 -2
  169. package/dist/foundation/release/restart-certification.js +1 -1
  170. package/dist/foundation/release/update-activation.d.ts +2 -9
  171. package/dist/foundation/release/update-activation.js +30 -45
  172. package/dist/foundation/release/update-execution-lease.d.ts +2 -3
  173. package/dist/foundation/release/update-execution-lease.js +2 -2
  174. package/dist/foundation/release/update-launch.d.ts +2 -4
  175. package/dist/foundation/release/update-launch.js +0 -7
  176. package/dist/foundation/release/update-recovery.js +1 -1
  177. package/dist/foundation/release/update-transaction.d.ts +1 -1
  178. package/dist/foundation/release/update-transaction.js +5 -2
  179. package/dist/foundation/release/update.d.ts +2 -12
  180. package/dist/foundation/release/update.js +37 -214
  181. package/dist/foundation/session-writer-lock/index.d.ts +14 -6
  182. package/dist/foundation/session-writer-lock/index.js +48 -103
  183. package/dist/foundation/startup/startup-budget.d.ts +5 -5
  184. package/dist/foundation/startup/startup-budget.js +2 -2
  185. package/dist/foundation/startup/startup-runtime.d.ts +1 -1
  186. package/dist/foundation/terminal-cleanup/exit-notice.d.ts +6 -0
  187. package/dist/foundation/terminal-cleanup/exit-notice.js +36 -0
  188. package/dist/foundation/terminal-cleanup/index.d.ts +2 -1
  189. package/dist/foundation/terminal-cleanup/index.js +2 -1
  190. package/dist/foundation/terminal-cleanup/terminal-reset.d.ts +0 -5
  191. package/dist/foundation/terminal-cleanup/terminal-reset.js +0 -5
  192. package/dist/integrations/pi/components/editor-interaction.d.ts +4 -12
  193. package/dist/integrations/pi/components/index.d.ts +15 -9
  194. package/dist/integrations/pi/components/index.js +9 -5
  195. package/dist/integrations/pi/components/lazy-selectors.d.ts +2 -10
  196. package/dist/integrations/pi/components/lazy-selectors.js +1 -1
  197. package/dist/integrations/pi/components/modal-frame.d.ts +5 -22
  198. package/dist/integrations/pi/components/modal-frame.js +3 -23
  199. package/dist/integrations/pi/components/owned-editor-ux.d.ts +4 -3
  200. package/dist/integrations/pi/components/prompt-input-port.d.ts +2 -19
  201. package/dist/integrations/pi/components/resources/builtin-themes.d.ts +2 -1
  202. package/dist/integrations/pi/components/shell-editor-autocomplete.d.ts +3 -2
  203. package/dist/integrations/pi/components/shell-editor-autocomplete.js +1 -4
  204. package/dist/integrations/pi/components/shell-footer-status.d.ts +3 -3
  205. package/dist/integrations/pi/components/shell-footer-status.js +5 -4
  206. package/dist/integrations/pi/components/shell-hotkey-sections.js +1 -1
  207. package/dist/integrations/pi/components/shell-presenters-info.d.ts +6 -8
  208. package/dist/integrations/pi/components/shell-presenters-info.js +6 -19
  209. package/dist/integrations/pi/components/shell-presenters-transcript.d.ts +1 -1
  210. package/dist/integrations/pi/components/shell-presenters-transcript.js +1 -1
  211. package/dist/integrations/pi/components/shell-session-info-reference.d.ts +2 -1
  212. package/dist/integrations/pi/components/shell-shared-facade.d.ts +33 -229
  213. package/dist/integrations/pi/components/shell-shared-facade.js +8 -1
  214. package/dist/integrations/pi/components/skills-command.d.ts +1 -9
  215. package/dist/integrations/pi/components/skills-command.js +5 -5
  216. package/dist/integrations/pi/components/submitted-prompt-adapter.d.ts +2 -5
  217. package/dist/integrations/pi/components/submitted-prompt-adapter.js +2 -16
  218. package/dist/integrations/pi/components/theme.d.ts +9 -2
  219. package/dist/integrations/pi/components/theme.js +17 -2
  220. package/dist/integrations/pi/components/thinking-selector-dialog.d.ts +2 -1
  221. package/dist/integrations/pi/components/upstream/adjacent/core/keybindings.d.ts +2 -2
  222. package/dist/integrations/pi/components/upstream/components/session-footer.d.ts +1 -2
  223. package/dist/integrations/pi/components/upstream/components/session-footer.js +6 -8
  224. package/dist/integrations/pi/engine/adapter.d.ts +3 -6
  225. package/dist/integrations/pi/engine/adapter.js +4 -28
  226. package/dist/integrations/pi/engine/changelog.d.ts +2 -2
  227. package/dist/integrations/pi/engine/changelog.js +3 -3
  228. package/dist/integrations/pi/engine/compaction-progress.d.ts +2 -3
  229. package/dist/integrations/pi/engine/compaction-progress.js +1 -1
  230. package/dist/integrations/pi/engine/conformance.d.ts +2 -1
  231. package/dist/integrations/pi/engine/default-model-setting.d.ts +0 -2
  232. package/dist/integrations/pi/engine/default-model-setting.js +1 -2
  233. package/dist/integrations/pi/engine/diagnostics-state.d.ts +0 -1
  234. package/dist/integrations/pi/engine/diagnostics-state.js +0 -14
  235. package/dist/integrations/pi/engine/event-delivery.d.ts +2 -1
  236. package/dist/integrations/pi/engine/extension-ui-binding.d.ts +2 -1
  237. package/dist/integrations/pi/engine/host.js +2 -2
  238. package/dist/integrations/pi/engine/message-values.d.ts +0 -1
  239. package/dist/integrations/pi/engine/message-values.js +1 -1
  240. package/dist/integrations/pi/engine/pending-delivery.d.ts +0 -4
  241. package/dist/integrations/pi/engine/pending-delivery.js +3 -3
  242. package/dist/integrations/pi/engine/ports.d.ts +7 -1
  243. package/dist/integrations/pi/engine/ports.js +4 -0
  244. package/dist/integrations/pi/engine/project-trust-preflight.d.ts +2 -1
  245. package/dist/integrations/pi/engine/prompt-suggestions.d.ts +3 -3
  246. package/dist/integrations/pi/engine/prompt-suggestions.js +0 -40
  247. package/dist/integrations/pi/engine/provider-authentication.d.ts +1 -1
  248. package/dist/integrations/pi/engine/public-main-entry.d.ts +1 -5
  249. package/dist/integrations/pi/engine/public-main-entry.js +1 -1
  250. package/dist/integrations/pi/engine/repository-pr-rest.d.ts +1 -9
  251. package/dist/integrations/pi/engine/repository-pr-rest.js +2 -2
  252. package/dist/integrations/pi/engine/repository-pr.d.ts +1 -3
  253. package/dist/integrations/pi/engine/repository-pr.js +1 -1
  254. package/dist/integrations/pi/engine/resource-catalog.d.ts +2 -1
  255. package/dist/integrations/pi/engine/session-integration.d.ts +1 -1
  256. package/dist/integrations/pi/engine/session-runtime.d.ts +4 -3
  257. package/dist/integrations/pi/engine/session-runtime.js +0 -2
  258. package/dist/integrations/pi/engine/settings-bridge.d.ts +0 -2
  259. package/dist/integrations/pi/engine/settings-bridge.js +1 -1
  260. package/dist/integrations/pi/engine/settings-port.d.ts +3 -2
  261. package/dist/integrations/pi/engine/transcript-projection.d.ts +2 -1
  262. package/dist/integrations/pi/engine/workflow-contexts.d.ts +1 -1
  263. package/dist/integrations/pi/engine/workflow-runner.d.ts +1 -1
  264. package/dist/integrations/pi/engine/workflow-runner.js +1 -1
  265. package/dist/integrations/pi/engine/workflow-support.d.ts +0 -6
  266. package/dist/integrations/pi/engine/workflow-support.js +4 -18
  267. package/dist/integrations/pi/engine/workflows.d.ts +5 -5
  268. package/dist/integrations/pi/session-presenters/components.d.ts +3 -0
  269. package/dist/integrations/pi/session-presenters/components.js +75 -0
  270. package/dist/integrations/pi/session-presenters/index.d.ts +1 -0
  271. package/dist/integrations/pi/session-presenters/index.js +1 -0
  272. package/dist/integrations/pi/session-presenters/presentation.d.ts +3 -0
  273. package/dist/integrations/pi/session-presenters/presentation.js +10 -0
  274. package/dist/integrations/pi/session-presenters/presenters.d.ts +2 -1
  275. package/dist/integrations/pi/session-presenters/presenters.js +3 -1
  276. package/dist/integrations/pi/tui-runtime/adapter.d.ts +2 -2
  277. package/dist/integrations/pi/tui-runtime/adapter.js +23 -32
  278. package/dist/integrations/pi/tui-runtime/contracts.d.ts +22 -166
  279. package/dist/integrations/pi/tui-runtime/damage-aware-terminal.d.ts +5 -40
  280. package/dist/integrations/pi/tui-runtime/index.d.ts +1 -0
  281. package/dist/integrations/pi/tui-runtime/index.js +1 -0
  282. package/dist/integrations/pi/tui-runtime/input-presentation-coordinator.d.ts +4 -6
  283. package/dist/integrations/pi/tui-runtime/overlay-geometry.d.ts +2 -8
  284. package/dist/integrations/pi/tui-runtime/overlay-geometry.js +3 -9
  285. package/dist/integrations/pi/tui-runtime/runtime-factory.d.ts +3 -0
  286. package/dist/integrations/pi/tui-runtime/runtime-factory.js +11 -0
  287. package/dist/product-identity.d.ts +4 -6
  288. package/dist/product-identity.js +6 -11
  289. package/dist/product-identity.json +1 -40
  290. package/dist/runtime-payload-inventory.json +0 -3
  291. package/dist/ui/components/index.d.ts +4 -4
  292. package/dist/ui/components/index.js +2 -2
  293. package/dist/ui/components/selection-copy.d.ts +0 -1
  294. package/dist/ui/components/selection-copy.js +0 -12
  295. package/dist/ui/components/submitted-prompt.d.ts +3 -13
  296. package/dist/ui/components/submitted-prompt.js +8 -41
  297. package/dist/ui/components/theme.d.ts +4 -19
  298. package/dist/ui/components/theme.js +6 -0
  299. package/dist/ui/components/transcript-viewport.d.ts +1 -3
  300. package/dist/ui/components/transcript-viewport.js +1 -4
  301. package/dist/ui/settings/declarations.d.ts +2 -97
  302. package/dist/ui/settings/declarations.js +2 -78
  303. package/dist/ui/settings/early-accent.js +1 -1
  304. package/dist/ui/settings/index.d.ts +3 -5
  305. package/dist/ui/settings/index.js +2 -3
  306. package/dist/ui/settings/manager.d.ts +0 -4
  307. package/dist/ui/settings/manager.js +6 -62
  308. package/dist/ui/settings/resolution.d.ts +6 -18
  309. package/dist/ui/settings/resolution.js +4 -103
  310. package/dist/ui/settings/sections.d.ts +0 -4
  311. package/dist/ui/settings/sections.js +1 -1
  312. package/docs/architecture/boundaries.md +23 -40
  313. package/docs/architecture/code-documentation.md +2 -2
  314. package/docs/architecture/internal-naming.md +11 -17
  315. package/docs/architecture/project-structure.md +13 -16
  316. package/docs/architecture/resource-and-data-policy.md +16 -31
  317. package/docs/architecture/toolchain.md +14 -19
  318. package/docs/architecture/ui-reference-provenance.md +2 -2
  319. package/docs/ci-release-runbook.md +5 -5
  320. package/docs/features/launch-profiles.md +11 -17
  321. package/docs/features/prompt-history.md +10 -11
  322. package/docs/local-worktree-cleanup.md +28 -1
  323. package/docs/manual-owned-ui-checkpoint.md +0 -1
  324. package/docs/validation.md +5 -11
  325. package/docs/worktree-link-recovery.md +6 -6
  326. package/package.json +7 -20
  327. package/bin/guardian.js +0 -42
  328. package/bin/supervisor.js +0 -7
  329. package/bin/tab-launch-context.d.ts +0 -27
  330. package/bin/tab-launch-context.js +0 -94
  331. package/dist/app/session-shell/resident-tab-coordinator.d.ts +0 -38
  332. package/dist/app/session-shell/resident-tab-coordinator.js +0 -77
  333. package/dist/cli/tabs-request.d.ts +0 -7
  334. package/dist/cli/tabs.d.ts +0 -14
  335. package/dist/cli/tabs.js +0 -151
  336. package/dist/composition/resident-tab-bridge.d.ts +0 -41
  337. package/dist/composition/resident-tab-bridge.js +0 -209
  338. package/dist/composition/utility-tab.d.ts +0 -28
  339. package/dist/composition/utility-tab.js +0 -244
  340. package/dist/features/owned-ui/plus-menu-dialog.d.ts +0 -28
  341. package/dist/features/owned-ui/plus-menu-dialog.js +0 -89
  342. package/dist/features/resident-tab/auto-name.d.ts +0 -11
  343. package/dist/features/resident-tab/auto-name.js +0 -44
  344. package/dist/features/resident-tab/index.d.ts +0 -5
  345. package/dist/features/resident-tab/index.js +0 -7
  346. package/dist/features/resident-tab/shortcut-bindings-file.d.ts +0 -8
  347. package/dist/features/resident-tab/shortcut-bindings-file.js +0 -40
  348. package/dist/features/resident-tab/shortcut-declarations.d.ts +0 -13
  349. package/dist/features/resident-tab/shortcut-declarations.js +0 -26
  350. package/dist/features/resident-tab/shortcut-projection.d.ts +0 -29
  351. package/dist/features/resident-tab/shortcut-projection.js +0 -64
  352. package/dist/features/resident-tab/status-deriver.d.ts +0 -10
  353. package/dist/features/resident-tab/status-deriver.js +0 -12
  354. package/dist/foundation/launch-guardian/exit-watcher.d.ts +0 -14
  355. package/dist/foundation/launch-guardian/exit-watcher.js +0 -103
  356. package/dist/foundation/launch-guardian/index.d.ts +0 -2
  357. package/dist/foundation/launch-guardian/index.js +0 -1
  358. package/dist/foundation/launch-guardian/main.d.ts +0 -39
  359. package/dist/foundation/launch-guardian/main.js +0 -232
  360. package/dist/foundation/lifecycle/commands.d.ts +0 -40
  361. package/dist/foundation/lifecycle/launch-instance.d.ts +0 -46
  362. package/dist/foundation/lifecycle/launch-instance.js +0 -134
  363. package/dist/foundation/lifecycle/native-claim-gate.d.ts +0 -5
  364. package/dist/foundation/lifecycle/native-claim-gate.js +0 -41
  365. package/dist/foundation/lifecycle/supervisor-startup.d.ts +0 -30
  366. package/dist/foundation/lifecycle/supervisor-startup.js +0 -106
  367. package/dist/foundation/process-containment/addon-containment.d.ts +0 -20
  368. package/dist/foundation/process-containment/addon-containment.js +0 -139
  369. package/dist/foundation/process-containment/addon-process-inspector.d.ts +0 -11
  370. package/dist/foundation/process-containment/addon-process-inspector.js +0 -36
  371. package/dist/foundation/process-containment/addon.d.ts +0 -47
  372. package/dist/foundation/process-containment/addon.js +0 -57
  373. package/dist/foundation/process-containment/artifact.d.ts +0 -1
  374. package/dist/foundation/process-containment/artifact.js +0 -35
  375. package/dist/foundation/process-containment/contracts.d.ts +0 -33
  376. package/dist/foundation/process-containment/contracts.js +0 -35
  377. package/dist/foundation/process-containment/index.d.ts +0 -9
  378. package/dist/foundation/process-containment/index.js +0 -7
  379. package/dist/foundation/process-containment/linux-process-inspector.d.ts +0 -7
  380. package/dist/foundation/process-containment/linux-process-inspector.js +0 -27
  381. package/dist/foundation/process-containment/native-process-inspector.d.ts +0 -4
  382. package/dist/foundation/process-containment/native-process-inspector.js +0 -21
  383. package/dist/foundation/protocol/client.d.ts +0 -18
  384. package/dist/foundation/protocol/client.js +0 -130
  385. package/dist/foundation/protocol/index.d.ts +0 -3
  386. package/dist/foundation/protocol/index.js +0 -2
  387. package/dist/foundation/protocol/messages.d.ts +0 -90
  388. package/dist/foundation/protocol/messages.js +0 -100
  389. package/dist/foundation/release/cohort-selection.d.ts +0 -33
  390. package/dist/foundation/release/cohort-selection.js +0 -67
  391. package/dist/foundation/release/endpoint-lock.d.ts +0 -2
  392. package/dist/foundation/release/endpoint-lock.js +0 -37
  393. package/dist/foundation/release/endpoint-recovery.d.ts +0 -10
  394. package/dist/foundation/release/endpoint-recovery.js +0 -45
  395. package/dist/foundation/release/endpoints.d.ts +0 -32
  396. package/dist/foundation/release/endpoints.js +0 -152
  397. package/dist/foundation/release/prepared-update-activation.d.ts +0 -3
  398. package/dist/foundation/release/prepared-update-activation.js +0 -27
  399. package/dist/foundation/release/process-cleanup.d.ts +0 -14
  400. package/dist/foundation/release/process-cleanup.js +0 -76
  401. package/dist/foundation/release/supervisor-identity.d.ts +0 -15
  402. package/dist/foundation/release/supervisor-identity.js +0 -63
  403. package/dist/foundation/resident-tabs/boot-identity.d.ts +0 -6
  404. package/dist/foundation/resident-tabs/boot-identity.js +0 -16
  405. package/dist/foundation/resident-tabs/bounded-host-command.d.ts +0 -20
  406. package/dist/foundation/resident-tabs/bounded-host-command.js +0 -62
  407. package/dist/foundation/resident-tabs/bridge-client.d.ts +0 -73
  408. package/dist/foundation/resident-tabs/bridge-client.js +0 -327
  409. package/dist/foundation/resident-tabs/continuity.d.ts +0 -12
  410. package/dist/foundation/resident-tabs/continuity.js +0 -63
  411. package/dist/foundation/resident-tabs/doctor.d.ts +0 -28
  412. package/dist/foundation/resident-tabs/doctor.js +0 -166
  413. package/dist/foundation/resident-tabs/draft-checkpoint.d.ts +0 -27
  414. package/dist/foundation/resident-tabs/draft-checkpoint.js +0 -145
  415. package/dist/foundation/resident-tabs/ensure-terminal-host.d.ts +0 -36
  416. package/dist/foundation/resident-tabs/ensure-terminal-host.js +0 -151
  417. package/dist/foundation/resident-tabs/fault-injection.d.ts +0 -8
  418. package/dist/foundation/resident-tabs/fault-injection.js +0 -26
  419. package/dist/foundation/resident-tabs/fixture-control.d.ts +0 -7
  420. package/dist/foundation/resident-tabs/fixture-control.js +0 -35
  421. package/dist/foundation/resident-tabs/host-entry.js +0 -17
  422. package/dist/foundation/resident-tabs/index.d.ts +0 -15
  423. package/dist/foundation/resident-tabs/index.js +0 -10
  424. package/dist/foundation/resident-tabs/maintenance.d.ts +0 -39
  425. package/dist/foundation/resident-tabs/maintenance.js +0 -75
  426. package/dist/foundation/resident-tabs/progress-observation-schema.d.ts +0 -34
  427. package/dist/foundation/resident-tabs/progress-observation-schema.js +0 -1
  428. package/dist/foundation/resident-tabs/progress-observation.d.ts +0 -4
  429. package/dist/foundation/resident-tabs/progress-observation.js +0 -150
  430. package/dist/foundation/resident-tabs/prompt-journal.d.ts +0 -63
  431. package/dist/foundation/resident-tabs/prompt-journal.js +0 -213
  432. package/dist/foundation/resident-tabs/protocol.d.ts +0 -12
  433. package/dist/foundation/resident-tabs/protocol.js +0 -195
  434. package/dist/foundation/resident-tabs/recovery.d.ts +0 -26
  435. package/dist/foundation/resident-tabs/recovery.js +0 -205
  436. package/dist/foundation/resident-tabs/release-holds.d.ts +0 -28
  437. package/dist/foundation/resident-tabs/release-holds.js +0 -78
  438. package/dist/foundation/resident-tabs/routes.d.ts +0 -5
  439. package/dist/foundation/resident-tabs/routes.js +0 -5
  440. package/dist/foundation/resident-tabs/routing.d.ts +0 -11
  441. package/dist/foundation/resident-tabs/routing.js +0 -10
  442. package/dist/foundation/resident-tabs/runtime-control.d.ts +0 -38
  443. package/dist/foundation/resident-tabs/runtime-control.js +0 -74
  444. package/dist/foundation/resident-tabs/session-sync.d.ts +0 -14
  445. package/dist/foundation/resident-tabs/session-sync.js +0 -37
  446. package/dist/foundation/resident-tabs/settings.d.ts +0 -16
  447. package/dist/foundation/resident-tabs/settings.js +0 -60
  448. package/dist/foundation/resident-tabs/terminal-host-artifact.d.ts +0 -14
  449. package/dist/foundation/resident-tabs/terminal-host-artifact.js +0 -78
  450. package/dist/foundation/resident-tabs/zip-archive.d.ts +0 -9
  451. package/dist/foundation/resident-tabs/zip-archive.js +0 -56
  452. package/dist/foundation/storage/control-store.d.ts +0 -20
  453. package/dist/foundation/storage/control-store.js +0 -331
  454. package/dist/foundation/storage/index.d.ts +0 -1
  455. package/dist/foundation/storage/index.js +0 -1
  456. package/dist/foundation/supervision/index.d.ts +0 -3
  457. package/dist/foundation/supervision/index.js +0 -3
  458. package/dist/foundation/supervision/main.d.ts +0 -1
  459. package/dist/foundation/supervision/main.js +0 -86
  460. package/dist/foundation/supervision/paths.d.ts +0 -1
  461. package/dist/foundation/supervision/paths.js +0 -1
  462. package/dist/foundation/supervision/server.d.ts +0 -46
  463. package/dist/foundation/supervision/server.js +0 -611
  464. package/dist/integrations/pi/components/components.d.ts +0 -4
  465. package/dist/integrations/pi/components/components.js +0 -48
  466. package/dist/integrations/pi/components/conformance.d.ts +0 -18
  467. package/dist/integrations/pi/components/conformance.js +0 -70
  468. package/dist/integrations/pi/components/shell-components.d.ts +0 -7
  469. package/dist/integrations/pi/components/shell-components.js +0 -7
  470. package/dist/integrations/pi/components/upstream/theme/theme-controller.d.ts +0 -33
  471. package/dist/integrations/pi/components/upstream/theme/theme-controller.js +0 -114
  472. package/dist/integrations/pi/engine/offline-settings-port.d.ts +0 -23
  473. package/dist/integrations/pi/engine/offline-settings-port.js +0 -54
  474. package/dist/native/darwin-arm64/manifest.json +0 -23
  475. package/dist/native/darwin-arm64/process-guardian.node +0 -0
  476. package/dist/native/darwin-arm64/terminal-host-THIRD-PARTY-NOTICES.txt +0 -10500
  477. package/dist/native/darwin-arm64/terminal-host.manifest.json +0 -46
  478. package/dist/native/darwin-arm64/terminal-host.node +0 -0
  479. package/dist/native/darwin-x64/manifest.json +0 -23
  480. package/dist/native/darwin-x64/process-guardian.node +0 -0
  481. package/dist/native/darwin-x64/terminal-host-THIRD-PARTY-NOTICES.txt +0 -10737
  482. package/dist/native/darwin-x64/terminal-host.manifest.json +0 -46
  483. package/dist/native/darwin-x64/terminal-host.node +0 -0
  484. package/dist/native/linux-x64/manifest.json +0 -23
  485. package/dist/native/linux-x64/process-guardian.node +0 -0
  486. package/dist/native/linux-x64/terminal-host-THIRD-PARTY-NOTICES.txt +0 -11226
  487. package/dist/native/linux-x64/terminal-host.manifest.json +0 -46
  488. package/dist/native/linux-x64/terminal-host.node +0 -0
  489. package/dist/native/win32-x64/manifest.json +0 -23
  490. package/dist/native/win32-x64/process-guardian.node +0 -0
  491. package/dist/native/win32-x64/terminal-host-THIRD-PARTY-NOTICES.txt +0 -10757
  492. package/dist/native/win32-x64/terminal-host.manifest.json +0 -46
  493. package/dist/native/win32-x64/terminal-host.node +0 -0
  494. package/dist/ui/settings/migrations.d.ts +0 -19
  495. package/dist/ui/settings/migrations.js +0 -209
  496. package/dist/ui/settings/progress-palette.generated.d.ts +0 -139
  497. package/dist/ui/settings/progress-palette.generated.js +0 -139
  498. package/docs/architecture/evidence/resident-tabs/linux-x64.md +0 -37
  499. package/docs/architecture/evidence/resident-tabs/macos-arm64.md +0 -36
  500. package/docs/architecture/evidence/resident-tabs/macos-x64.md +0 -35
  501. package/docs/architecture/evidence/resident-tabs/windows-x64.md +0 -36
  502. package/docs/architecture/evidence/terminal-host-spike/manual-one-pane-terminal-host.md +0 -70
  503. package/docs/architecture/evidence/terminal-host-spike/manual-two-by-two-basic-terminal-host.md +0 -32
  504. package/docs/architecture/evidence/terminal-host-spike/milestone-baseline.json +0 -115
  505. package/docs/architecture/evidence/terminal-host-spike/owned-ui-foundation-prerequisite.json +0 -48
  506. package/docs/architecture/evidence/terminal-host-spike/terminal-host-provenance.json +0 -125
  507. package/docs/architecture/evidence/terminal-host-spike/terminal-host-task-5-1.json +0 -56
  508. package/docs/architecture/evidence/terminal-host-spike/terminal-host-task-5-3.json +0 -174
  509. package/docs/architecture/evidence/terminal-host-spike/terminal-spike-acceptance-record.json +0 -18
  510. package/docs/architecture/native-fixture-isolation.md +0 -23
  511. package/docs/architecture/process-guardian-provenance.md +0 -36
  512. package/docs/architecture/resident-tabs-requirements.md +0 -18
  513. package/docs/architecture/resident-tabs.md +0 -668
  514. package/docs/architecture/terminal-host-proof-gate.md +0 -34
  515. package/docs/architecture/terminal-host-provenance.md +0 -81
  516. package/docs/architecture/terminal-host-spike-evidence.md +0 -39
  517. package/docs/launch-recovery.md +0 -23
  518. package/docs/manual-launch-instance-acceptance.md +0 -43
  519. package/docs/manual-resident-tabs-acceptance.md +0 -51
  520. /package/dist/{cli/tabs-request.js → contracts/owned-ui/shell-components.js} +0 -0
  521. /package/dist/{foundation/release → contracts/presentation}/progress-palette.generated.d.ts +0 -0
  522. /package/dist/{foundation/release → contracts/presentation}/progress-palette.generated.js +0 -0
  523. /package/dist/{foundation/lifecycle/commands.js → contracts/presentation/terminal.js} +0 -0
  524. /package/dist/{foundation/resident-tabs/host-entry.d.ts → contracts/presentation/theme.js} +0 -0
@@ -1,11 +1,5 @@
1
1
  import { MOUSE_TRACKING_OFF, MOUSE_TRACKING_ON, parseMouseInput } from "../../ui/components/mouse.js";
2
2
  import { readVisibleHyperlinks } from "../../ui/components/visible-hyperlinks.js";
3
- import { piCanvasBackgroundAnsi } from "../../integrations/pi/components/theme.js";
4
- import { residentFixtureControl } from "../../foundation/resident-tabs/fixture-control.js";
5
- import { residentProgressObserver } from "../../foundation/resident-tabs/progress-observation.js";
6
- import { DamageAwareTerminalAdapter, } from "../../integrations/pi/tui-runtime/damage-aware-terminal.js";
7
- import { PiTuiRuntimeAdapter, legacyKeyInput } from "../../integrations/pi/tui-runtime/adapter.js";
8
- import { classifyPiTuiInput } from "../../integrations/pi/tui-runtime/input-presentation-coordinator.js";
9
3
  import { pinnedLayoutRoot, } from "./session-shell-root.js";
10
4
  /** The size and render request a Pi component reads from the terminal it is shown on, read on every call. */
11
5
  export function componentRuntime(terminal) {
@@ -22,6 +16,7 @@ export function sessionTerminalHostOptions(options) {
22
16
  const customViewport = sessionLayout === "custom-viewport";
23
17
  const settings = backend.settings.snapshot();
24
18
  return {
19
+ presentation: options.presenters,
25
20
  layout: customViewport ? "custom-viewport" : "pinned",
26
21
  // Invariant: bare A1 owns a bounded viewport and therefore always runs on the alternate
27
22
  // fullscreen surface. The pinned comparison profiles still honor Pi's mode.
@@ -42,12 +37,13 @@ export function sessionTerminalHostOptions(options) {
42
37
  export class OwnedUiTerminalHost {
43
38
  runtime;
44
39
  #customViewport;
40
+ #runtimeFactory;
45
41
  #damageTerminal;
46
42
  #quitOutro;
47
43
  #presenters = new Set();
48
44
  #overlays = new Map();
49
- #removeViewportPreInput;
50
- #unsubscribeBackground;
45
+ // Invariant: one release removes both the viewport pre-input listener and the background subscription.
46
+ #release;
51
47
  #active = null;
52
48
  #focused = false;
53
49
  #pointerReporting = false;
@@ -55,10 +51,9 @@ export class OwnedUiTerminalHost {
55
51
  #ending;
56
52
  constructor(options) {
57
53
  this.#customViewport = options.layout === "custom-viewport";
54
+ this.#runtimeFactory = options.presentation.terminalRuntime;
58
55
  this.#quitOutro = options.quitOutro;
59
56
  const input = options.input;
60
- const fixtureControl = residentFixtureControl();
61
- const progressObserver = residentProgressObserver();
62
57
  let damageTerminal;
63
58
  const surface = {
64
59
  render: width => this.#active?.render(width) ?? [],
@@ -79,35 +74,25 @@ export class OwnedUiTerminalHost {
79
74
  consumeUnhandledMouse: true,
80
75
  onOverlayGeometry: surfaces => this.#active?.setOverlaySurfaces(surfaces),
81
76
  decorateTerminal: (terminal) => {
82
- damageTerminal = new DamageAwareTerminalAdapter(terminal, {
77
+ damageTerminal = this.#runtimeFactory.createDamageTerminal(terminal, {
83
78
  regionalScroll: process.env.TERM !== "dumb",
84
79
  inspectHyperlinks: readVisibleHyperlinks,
85
80
  onResize: () => this.#active?.noteImmediatePresentation(),
86
81
  onHyperlinkCleanupRequired: () => this.runtime?.requestRender(true),
87
- ...(fixtureControl === null ? {} : {
88
- allowWrite: () => !fixtureControl.stopped("child-render-write"),
89
- writeChunks: data => fixtureControl.fragmentChildWrite(data),
90
- }),
91
- ...(progressObserver === null ? {} : {
92
- onWrite: ({ bytes, fragments, transaction, frameId, cause }) => progressObserver.childRenderWrite(bytes, fragments, transaction, frameId, cause),
93
- }),
94
82
  });
95
83
  return damageTerminal;
96
84
  },
97
85
  ...(input?.coordination === false ? {} : {
98
86
  inputCoordination: {
99
- classify: (data, focusedOverlay) => classifyPiTuiInput(data, focusedOverlay ?? this.#active?.inputCoordinationSurface() ?? "opaque"),
87
+ classify: (data, focusedOverlay) => this.#runtimeFactory.classifyInput(data, focusedOverlay ?? this.#active?.inputCoordinationSurface() ?? "opaque"),
100
88
  onReceipt: () => this.#active?.noteImmediatePresentation(),
101
89
  ...(input?.scheduler === undefined ? {} : { scheduler: input.scheduler }),
102
90
  },
103
91
  }),
104
- } : { layoutRoot: pinnedLayoutRoot(this.#delegatingLayoutParts()) }),
105
- ...(input?.onEvent === undefined && progressObserver === null ? {} : {
92
+ } : { layoutRoot: pinnedLayoutRoot(this.#delegatingLayoutParts(), options.presentation.theme) }),
93
+ ...(input?.onEvent === undefined ? {} : {
106
94
  inputDiagnostics: {
107
- onEvent: event => {
108
- input?.onEvent?.(event);
109
- progressObserver?.inputPhase?.(event.phase, event.revision);
110
- },
95
+ onEvent: input.onEvent,
111
96
  ...(input?.now === undefined ? {} : { now: input.now }),
112
97
  },
113
98
  }),
@@ -115,18 +100,19 @@ export class OwnedUiTerminalHost {
115
100
  hardwareCursor: options.hardwareCursor,
116
101
  ...(options.wheelScrollLines === undefined ? {} : { wheelScrollLines: options.wheelScrollLines }),
117
102
  };
118
- this.runtime = new PiTuiRuntimeAdapter(runtimeOptions);
103
+ this.runtime = this.#runtimeFactory.createRuntime(runtimeOptions);
119
104
  this.#damageTerminal = damageTerminal ?? null;
120
105
  const background = this.#customViewport ? options.backgroundSettings : undefined;
121
106
  if (background !== undefined)
122
- this.#damageTerminal?.setCanvasBackground(piCanvasBackgroundAnsi(background.snapshot()));
123
- this.#unsubscribeBackground = background === undefined || this.#damageTerminal === null ? () => { } : background.onChange(style => {
124
- if (this.#damageTerminal?.setCanvasBackground(piCanvasBackgroundAnsi(style)))
107
+ this.#damageTerminal?.setCanvasBackground(options.presentation.canvasBackground(background.snapshot()));
108
+ const unsubscribeBackground = background === undefined || this.#damageTerminal === null ? () => { } : background.onChange(style => {
109
+ if (this.#damageTerminal?.setCanvasBackground(options.presentation.canvasBackground(style)))
125
110
  this.runtime.requestRender(true);
126
111
  });
127
- this.#removeViewportPreInput = this.#customViewport
112
+ const removeViewportPreInput = this.#customViewport
128
113
  ? this.runtime.addPreInputListener(data => this.#active?.handleViewportInput(data))
129
114
  : () => { };
115
+ this.#release = () => { removeViewportPreInput(); unsubscribeBackground(); };
130
116
  }
131
117
  get damagePresentationDecision() {
132
118
  return this.#damageTerminal?.lastDecision ?? null;
@@ -168,8 +154,6 @@ export class OwnedUiTerminalHost {
168
154
  active() {
169
155
  return this.#active;
170
156
  }
171
- // Invariant: resident tab visibility never gates rendering here; a hidden tab keeps painting into its
172
- // resident terminal, and the native holder alone withholds inactive surfaces from attach clients.
173
157
  requestRender(from, force = false) {
174
158
  if (from === this.#active)
175
159
  this.runtime.requestRender(force);
@@ -215,8 +199,7 @@ export class OwnedUiTerminalHost {
215
199
  // Invariant: the outro frame is what the terminal shows now, before any cleanup writes.
216
200
  const outroFrame = this.#captureQuitOutroFrame();
217
201
  attempt(() => this.#setPointerReporting(false, true));
218
- attempt(() => this.#removeViewportPreInput());
219
- attempt(() => this.#unsubscribeBackground());
202
+ attempt(() => this.#release());
220
203
  const terminal = { mode: this.runtime.mode, columns: this.runtime.viewport().columns };
221
204
  const active = this.#active;
222
205
  const releases = [];
@@ -360,7 +343,7 @@ export class OwnedUiTerminalHost {
360
343
  };
361
344
  removeInterruptWatch = runtime.addInputListener(data => {
362
345
  // Compatibility: a kitty-keyboard child reports Ctrl+C as a CSI-u sequence rather than the byte.
363
- if (!attached() || !data.includes(INTERRUPT) && legacyKeyInput(data) !== INTERRUPT)
346
+ if (!attached() || !data.includes(INTERRUPT) && this.#runtimeFactory.legacyKeyInput(data) !== INTERRUPT)
364
347
  return undefined;
365
348
  // Protocol: route hosts decide whether one interrupt closes their app. Raw-input forwarding
366
349
  // is required because Pi handles Ctrl+C before the fullscreen overlay receives normal input.
@@ -419,7 +402,7 @@ export class OwnedUiTerminalHost {
419
402
  for (const event of events)
420
403
  surface.handleMouse(event);
421
404
  // Invariant: owned screens see legacy key bytes whether the terminal reports legacy or kitty keys.
422
- const key = rest.length > 0 ? legacyKeyInput(rest) : "";
405
+ const key = rest.length > 0 ? this.#runtimeFactory.legacyKeyInput(rest) : "";
423
406
  if (key.length > 0)
424
407
  surface.handleInput(key);
425
408
  if (surface.isClosed()) {
@@ -487,7 +470,7 @@ export class OwnedUiTerminalHost {
487
470
  write: data => this.runtime.writeControl(data),
488
471
  ...(capture.settings.canvasBackgroundAnsi === null
489
472
  ? {}
490
- : { canvasBackgroundAnsi: capture.settings.canvasBackgroundAnsi }),
473
+ : { canvas: { ansi: capture.settings.canvasBackgroundAnsi, rebase: this.#runtimeFactory.rebaseDefaultBackground } }),
491
474
  ...(outro.now === undefined ? {} : { now: outro.now }),
492
475
  ...(outro.sleep === undefined ? {} : { sleep: outro.sleep }),
493
476
  ...(outro.seed === undefined ? {} : { seed: outro.seed }),
@@ -1,6 +1,6 @@
1
+ import type { OwnedUiShellEditorPort } from "../../contracts/owned-ui/index.js";
1
2
  import type { OwnedUiSessionViewModel } from "../../contracts/owned-ui/index.js";
2
3
  import type { TranscriptViewportFrame, TranscriptViewportFrameInput, TranscriptViewportTheme } from "../../ui/components/transcript-viewport.js";
3
- import type { PiShellEditorPort } from "../../integrations/pi/components/shell-shared-facade.js";
4
4
  import type { DockChrome } from "./dock-chrome.js";
5
5
  import type { InputSurfaceSwitch } from "./input-surface-switch.js";
6
6
  import type { PromptChipStore } from "./prompt-chips.js";
@@ -20,7 +20,7 @@ export interface DockLayout {
20
20
  export interface ShellLayoutPorts {
21
21
  readonly viewport: SessionViewportController;
22
22
  readonly input: InputSurfaceSwitch;
23
- readonly editor: Pick<PiShellEditorPort, "getText">;
23
+ readonly editor: Pick<OwnedUiShellEditorPort, "getText">;
24
24
  readonly promptChips: Pick<PromptChipStore, "atomicRanges">;
25
25
  readonly dockChrome: Pick<DockChrome, "renderPromptOverlay" | "renderReleaseBanner" | "locateReleaseClose">;
26
26
  readonly theme: TranscriptViewportTheme;
@@ -0,0 +1,26 @@
1
+ import type { OwnedUiEvent, OwnedUiSessionViewModel, SuggestionDecision } from "../../contracts/owned-ui/index.js";
2
+ import { type ContextualPromptSuggestionSurface } from "./prompt-suggestion-controller.js";
3
+ import type { SessionConcern } from "./session-concern.js";
4
+ import type { OwnedUiShellSuggestionOptions } from "./session-shell-root.js";
5
+ type ResponseEvent = Extract<OwnedUiEvent, {
6
+ readonly type: "assistant-message-completed" | "agent-run-settled";
7
+ }>;
8
+ /**
9
+ * One shell's contextual prompt suggestions: the controller, its live enablement, and the model key that
10
+ * invalidates a pending suggestion. Without suggestion options every call is a no-op.
11
+ */
12
+ export declare class ShellPromptSuggestions implements SessionConcern {
13
+ #private;
14
+ constructor(options: OwnedUiShellSuggestionOptions | undefined, surface: ContextualPromptSuggestionSurface, view: OwnedUiSessionViewModel);
15
+ invalidate(): void;
16
+ abortPending(): void;
17
+ accept(): void;
18
+ restoreAvailable(): void;
19
+ /** Hands a completed or settled response to the controller. */
20
+ route(event: ResponseEvent, prepareBlockReason: () => SuggestionDecision): void;
21
+ /** Invalidates a pending suggestion when the session was replaced or the active model changed. */
22
+ noteView(view: OwnedUiSessionViewModel, sessionReplaced: boolean): void;
23
+ onSessionReplaced(): void;
24
+ dispose(): void;
25
+ }
26
+ export {};
@@ -0,0 +1,48 @@
1
+ import { ContextualPromptSuggestionController } from "./prompt-suggestion-controller.js";
2
+ import { routeResponseToSuggestions, suggestionModelKey } from "./suggestion-surface.js";
3
+ /**
4
+ * One shell's contextual prompt suggestions: the controller, its live enablement, and the model key that
5
+ * invalidates a pending suggestion. Without suggestion options every call is a no-op.
6
+ */
7
+ export class ShellPromptSuggestions {
8
+ #controller;
9
+ #unsubscribe;
10
+ #modelKey;
11
+ constructor(options, surface, view) {
12
+ this.#modelKey = suggestionModelKey(view);
13
+ this.#controller = options === undefined ? null : new ContextualPromptSuggestionController({
14
+ generator: options.generator,
15
+ enabled: options.enabled(),
16
+ ...(options.diagnostics === undefined ? {} : { diagnostics: options.diagnostics }),
17
+ surface,
18
+ });
19
+ try {
20
+ this.#unsubscribe = options === undefined ? () => { } : options.onChange(enabled => this.#controller?.setEnabled(enabled));
21
+ }
22
+ catch (error) {
23
+ this.#controller?.dispose();
24
+ throw error;
25
+ }
26
+ }
27
+ invalidate() { this.#controller?.invalidate(); }
28
+ abortPending() { this.#controller?.abortPending(); }
29
+ accept() { this.#controller?.accept(); }
30
+ restoreAvailable() { this.#controller?.restoreAvailable(); }
31
+ /** Hands a completed or settled response to the controller. */
32
+ route(event, prepareBlockReason) {
33
+ routeResponseToSuggestions(this.#controller, event, prepareBlockReason);
34
+ }
35
+ /** Invalidates a pending suggestion when the session was replaced or the active model changed. */
36
+ noteView(view, sessionReplaced) {
37
+ const key = suggestionModelKey(view);
38
+ if (!sessionReplaced && key === this.#modelKey)
39
+ return;
40
+ this.#controller?.invalidate();
41
+ this.#modelKey = key;
42
+ }
43
+ onSessionReplaced() { this.invalidate(); }
44
+ dispose() {
45
+ this.#controller?.dispose();
46
+ this.#unsubscribe();
47
+ }
48
+ }
@@ -6,14 +6,9 @@ type ResponseEvent = Extract<OwnedUiEvent, {
6
6
  }>;
7
7
  /** The provider/model key a suggestion identity and the session view are compared by; empty without a model. */
8
8
  export declare function suggestionModelKey(view: Pick<OwnedUiSessionViewModel, "activeModel">): string;
9
- /**
10
- * Why a completed response cannot seed a suggestion, checked in order; `prepareBlockReason` is asked
11
- * only when the response itself qualifies.
12
- */
13
- export declare function responseSuggestionDecision(event: ResponseEvent, prepareBlockReason: () => SuggestionDecision): SuggestionDecision;
14
9
  /** Hands one completed or settled response to the controller: skipped without a model, otherwise considered or settled. */
15
10
  export declare function routeResponseToSuggestions(controller: Pick<ContextualPromptSuggestionController, "skip" | "consider" | "settle"> | null, event: ResponseEvent, prepareBlockReason: () => SuggestionDecision): void;
16
- export interface SuggestionPresentationState {
11
+ interface SuggestionPresentationState {
17
12
  readonly disposed: boolean;
18
13
  readonly view: Pick<OwnedUiSessionViewModel, "sessionId" | "activeModel">;
19
14
  readonly sessionGeneration: number;
@@ -6,7 +6,7 @@ export function suggestionModelKey(view) {
6
6
  * Why a completed response cannot seed a suggestion, checked in order; `prepareBlockReason` is asked
7
7
  * only when the response itself qualifies.
8
8
  */
9
- export function responseSuggestionDecision(event, prepareBlockReason) {
9
+ function responseSuggestionDecision(event, prepareBlockReason) {
10
10
  if (!event.successful)
11
11
  return "failed-response";
12
12
  if (event.toolContinuation || event.stopReason === "toolUse")
@@ -1,20 +1,8 @@
1
- import type { PiShellClipboardContent } from "../../integrations/pi/components/shell-shared-facade.js";
2
- export interface SystemClipboardImageReader {
3
- hasImage(): boolean;
4
- getImageBinary?(): Promise<readonly number[]>;
5
- getImageBase64?(): Promise<string>;
6
- }
7
- /** Load the native adapter during shell startup so the first paste is warm. */
8
- export declare function preloadSystemClipboard(): void;
1
+ import type { OwnedUiShellClipboardContent } from "../../contracts/owned-ui/index.js";
9
2
  /**
10
3
  * Reads plain text through platform clipboard commands without importing Pi's
11
4
  * private clipboard module. Failures are deliberately non-fatal: a denied or
12
5
  * unavailable clipboard simply makes the paste action a no-op.
13
6
  */
14
- export declare function readSystemClipboardContent(signal?: AbortSignal, strict?: boolean): Promise<PiShellClipboardContent | null>;
15
- export declare function readSystemClipboardImage(reader: SystemClipboardImageReader): Promise<{
16
- readonly data: string;
17
- readonly mimeType: string;
18
- } | null>;
19
- export declare function readSystemClipboardText(signal?: AbortSignal, strict?: boolean): Promise<string | null>;
7
+ export declare function readSystemClipboardContent(signal?: AbortSignal, strict?: boolean): Promise<OwnedUiShellClipboardContent | null>;
20
8
  export declare function writeSystemClipboardText(text: string): Promise<void>;
@@ -5,11 +5,6 @@ import { assertSourceBytes } from "./image-source.js";
5
5
  const MAX_CLIPBOARD_BYTES = 16 * 1024 * 1024;
6
6
  let nativeClipboardPromise;
7
7
  let pendingClipboardWrite = Promise.resolve();
8
- /** Load the native adapter during shell startup so the first paste is warm. */
9
- export function preloadSystemClipboard() {
10
- if (process.platform === "win32" || process.platform === "darwin")
11
- void nativeClipboard();
12
- }
13
8
  /**
14
9
  * Reads plain text through platform clipboard commands without importing Pi's
15
10
  * private clipboard module. Failures are deliberately non-fatal: a denied or
@@ -38,7 +33,7 @@ export async function readSystemClipboardContent(signal, strict = false) {
38
33
  const text = await readSystemClipboardText(signal, strict);
39
34
  return text === null ? null : { kind: "text", text };
40
35
  }
41
- export async function readSystemClipboardImage(reader) {
36
+ async function readSystemClipboardImage(reader) {
42
37
  if (!reader.hasImage())
43
38
  return null;
44
39
  if (reader.getImageBinary !== undefined) {
@@ -74,7 +69,7 @@ export async function readSystemClipboardImage(reader) {
74
69
  }
75
70
  return null;
76
71
  }
77
- export async function readSystemClipboardText(signal, strict = false) {
72
+ async function readSystemClipboardText(signal, strict = false) {
78
73
  // Concurrency: Ctrl+C/Ctrl+X and Ctrl+V can arrive in adjacent input turns. Serialize the
79
74
  // read behind our native write so paste never observes the previous value.
80
75
  await pendingClipboardWrite;
@@ -1,6 +1,7 @@
1
- import type { OwnedUiSessionViewModel, OwnedUiViewportSettings } from "../../contracts/owned-ui/index.js";
1
+ import type { OwnedUiShellComponents, OwnedUiShellTranscriptComponentPort } from "../../contracts/owned-ui/index.js";
2
+ import type { OwnedUiSessionViewModel } from "../../contracts/owned-ui/index.js";
3
+ import type { ThemeSource } from "../../contracts/presentation/index.js";
2
4
  import type { TranscriptPromptAnchor } from "../../ui/components/transcript-viewport.js";
3
- import type { PiShellTranscriptComponentPort } from "../../integrations/pi/components/shell-shared-facade.js";
4
5
  type TranscriptBlock = OwnedUiSessionViewModel["transcript"][number];
5
6
  export interface TranscriptDocumentLayout {
6
7
  readonly rows: readonly string[];
@@ -13,7 +14,7 @@ export interface TranscriptDocumentLayout {
13
14
  */
14
15
  export type TranscriptInvalidation = "editor-padding" | "diagnostics" | "workflow-status" | "extension-header" | "viewport-config" | "extension-renderers" | "block-presentation" | "tools-expanded" | "repaint";
15
16
  /** What the document reads from the shell around it on every uncached layout. */
16
- export interface TranscriptDocumentChrome {
17
+ interface TranscriptDocumentChrome {
17
18
  diagnostics(): OwnedUiSessionViewModel["diagnostics"];
18
19
  /** The extension header's rows when one is set, else the built-in header's rows for this layout. */
19
20
  headerRows(width: number): readonly string[];
@@ -22,13 +23,14 @@ export interface TranscriptDocumentChrome {
22
23
  /** An extension header may animate, so a document under one is never cached. */
23
24
  hasExtensionHeader(): boolean;
24
25
  thinkingVisible(): boolean;
25
- timeFormat(): OwnedUiViewportSettings["timeFormat"];
26
26
  }
27
- export interface TranscriptDocumentOptions {
27
+ interface TranscriptDocumentOptions {
28
+ readonly theme: ThemeSource;
29
+ readonly components: Pick<OwnedUiShellComponents, "info" | "transcript">;
28
30
  readonly customViewport: boolean;
29
31
  readonly cwd: string;
30
32
  /** Creates the component for a newly seen block; its change callback should call `blockChanged`. */
31
- mount(block: TranscriptBlock): PiShellTranscriptComponentPort;
33
+ mount(block: TranscriptBlock): OwnedUiShellTranscriptComponentPort;
32
34
  readonly chrome: TranscriptDocumentChrome;
33
35
  }
34
36
  /**
@@ -41,8 +43,8 @@ export declare class TranscriptDocument {
41
43
  /** Block component renders since construction, for rendering evidence. */
42
44
  get renderCount(): number;
43
45
  get lastId(): string | undefined;
44
- component(id: string): PiShellTranscriptComponentPort | undefined;
45
- components(): IterableIterator<PiShellTranscriptComponentPort>;
46
+ component(id: string): OwnedUiShellTranscriptComponentPort | undefined;
47
+ components(): IterableIterator<OwnedUiShellTranscriptComponentPort>;
46
48
  anchorOf(id: string): number | undefined;
47
49
  /**
48
50
  * Applies one block: its component is created or updated in place and the order grows
@@ -53,7 +55,7 @@ export declare class TranscriptDocument {
53
55
  /** Replaces the whole transcript with the view's blocks, keeping anchored workflow output in place. */
54
56
  sync(blocks: OwnedUiSessionViewModel["transcript"]): void;
55
57
  /** Appends workflow output anchored after the transcript's first `anchor` blocks. */
56
- appendAnchored(id: string, component: PiShellTranscriptComponentPort, anchor: number): void;
58
+ appendAnchored(id: string, component: OwnedUiShellTranscriptComponentPort, anchor: number): void;
57
59
  /** Disposes every anchored workflow output and drops it from the order. */
58
60
  removeAnchored(): void;
59
61
  /** One block's component drew something new: drop its rows and every layout that contains them. */
@@ -74,5 +76,5 @@ export declare function parseReleaseUpdateDiagnostic(message: string): {
74
76
  changelogUrl: string | null;
75
77
  } | null;
76
78
  /** Web URLs use link blue; file targets retain A1's cyan interactive accent. */
77
- export declare function nativeTranscriptLinkColor(text: string, target: string): string;
79
+ export declare function transcriptLinkColor(theme: ThemeSource): (text: string, target: string) => string;
78
80
  export {};
@@ -1,10 +1,5 @@
1
1
  import { acceptsTranscriptUpdate } from "../../contracts/owned-ui/index.js";
2
- import { formatSubmittedPromptTime, submittedPromptLayout } from "../../ui/components/submitted-prompt.js";
3
- import { nativeHyperlinkStyle, overlaySpan } from "../../ui/components/spans.js";
4
- import { displayWidth } from "../../ui/components/text.js";
5
- import { createPiShellChangelog, createPiShellCollapsedChangelog, renderPiShellPackageUpdateNotice, renderPiShellReleaseUpdateNotice, } from "../../integrations/pi/components/shell-presenters-info.js";
6
- import { isPiPromptStyleCompaction, paintPiSubmittedPromptTimestamp, renderPiShellStartupDiagnostic, renderPiShellTranscriptBlock, } from "../../integrations/pi/components/shell-presenters-transcript.js";
7
- import { piTheme } from "../../integrations/pi/components/upstream/theme/theme.js";
2
+ import { nativeHyperlinkStyle } from "../../ui/components/spans.js";
8
3
  const LAYOUT_ONLY = new Set(["editor-padding", "diagnostics", "workflow-status", "extension-header"]);
9
4
  const WORKFLOW_STATUS_PREFIX = "workflow-status-";
10
5
  /**
@@ -21,8 +16,10 @@ export class TranscriptDocument {
21
16
  // Performance: document layouts are shared by wheel, rail, jump, and selection frames.
22
17
  #layouts = new Map();
23
18
  #renders = 0;
19
+ #linkColor;
24
20
  constructor(options) {
25
21
  this.#options = options;
22
+ this.#linkColor = transcriptLinkColor(options.theme);
26
23
  }
27
24
  /** Block component renders since construction, for rendering evidence. */
28
25
  get renderCount() {
@@ -173,7 +170,7 @@ export class TranscriptDocument {
173
170
  // bare A1 presents them in its prompt-adjacent notice dock instead.
174
171
  .filter(diagnostic => diagnostic.code === "engine-startup"
175
172
  || !customViewport && diagnostic.code === "project-trust")
176
- .flatMap(diagnostic => renderPiShellStartupDiagnostic(diagnostic, width));
173
+ .flatMap(diagnostic => this.#options.components.transcript.renderStartupDiagnostic(diagnostic, width));
177
174
  const resourceRows = [...chrome.resourceRows(width)];
178
175
  if (resourceRows.at(-1) === "")
179
176
  resourceRows.pop();
@@ -193,7 +190,7 @@ export class TranscriptDocument {
193
190
  if (!thinkingVisible && block?.kind === "thinking")
194
191
  continue;
195
192
  const promptLike = block !== undefined
196
- && (block.kind === "user" || customViewport && isPiPromptStyleCompaction(block));
193
+ && (block.kind === "user" || customViewport && this.#options.components.transcript.isPromptStyleCompaction(block));
197
194
  // Invariant: the custom viewport has already removed its rail gutter from this width.
198
195
  // Prompt-like and ordinary blocks therefore share one right content edge.
199
196
  const blockWidth = width;
@@ -213,13 +210,11 @@ export class TranscriptDocument {
213
210
  }
214
211
  rows.push(...blockRows);
215
212
  if (promptLike && blockRows[0] !== undefined) {
216
- const source = pinnedPromptSource(block, blockRows[0], blockWidth, chrome.timeFormat());
217
213
  promptAnchors.push({
218
214
  id: block.id,
219
215
  firstRow,
220
216
  lastRow: Math.max(firstRow, rows.length - 1),
221
- sourceRow: source.row,
222
- copySuffixWidth: source.copySuffixWidth,
217
+ sourceRow: blockRows[0],
223
218
  prominentSourceRow: blockRows[0],
224
219
  });
225
220
  }
@@ -244,11 +239,11 @@ export class TranscriptDocument {
244
239
  .filter(diagnostic => !customViewport && diagnostic.code === "release-update")
245
240
  .flatMap(diagnostic => {
246
241
  const release = parseReleaseUpdateDiagnostic(diagnostic.message);
247
- return release === null ? [] : renderPiShellReleaseUpdateNotice(release, width);
242
+ return release === null ? [] : this.#options.components.info.releaseUpdateNotice(release, width);
248
243
  }));
249
244
  rows.push(...diagnostics
250
245
  .filter(diagnostic => diagnostic.code === "package-updates")
251
- .flatMap(diagnostic => renderPiShellPackageUpdateNotice(diagnostic.message.split("\n").filter(line => line.startsWith("- ")).map(line => line.slice(2)), width)));
246
+ .flatMap(diagnostic => this.#options.components.info.packageUpdateNotice(diagnostic.message.split("\n").filter(line => line.startsWith("- ")).map(line => line.slice(2)), width)));
252
247
  rows.push(...diagnostics
253
248
  .filter(diagnostic => diagnostic.code === "changelog-collapsed" || diagnostic.code === "changelog-expanded")
254
249
  // Rationale: bare A1 translates either startup diagnostic into transient dock chrome;
@@ -256,8 +251,8 @@ export class TranscriptDocument {
256
251
  .flatMap(diagnostic => customViewport
257
252
  ? []
258
253
  : diagnostic.code === "changelog-collapsed"
259
- ? createPiShellCollapsedChangelog().render(width)
260
- : createPiShellChangelog(diagnostic.message).render(width)));
254
+ ? this.#options.components.info.collapsedChangelog().render(width)
255
+ : this.#options.components.info.changelog(diagnostic.message).render(width)));
261
256
  rows.push(...diagnostics
262
257
  .filter(diagnostic => diagnostic.code !== "engine-startup" && diagnostic.code !== "project-trust"
263
258
  && diagnostic.code !== "release-update" && diagnostic.code !== "release-update-installed"
@@ -265,7 +260,7 @@ export class TranscriptDocument {
265
260
  && diagnostic.code !== "package-updates" && diagnostic.code !== "changelog-collapsed"
266
261
  && diagnostic.code !== "changelog-expanded")
267
262
  .slice(-3)
268
- .flatMap(diagnostic => renderPiShellTranscriptBlock({
263
+ .flatMap(diagnostic => this.#options.components.transcript.renderBlock({
269
264
  id: `diagnostic-${diagnostic.sequence}`,
270
265
  kind: diagnostic.severity === "error" ? "error" : "system",
271
266
  status: "finalized",
@@ -284,7 +279,7 @@ export class TranscriptDocument {
284
279
  const block = this.#blocks.get(id);
285
280
  if (block === undefined || (!thinkingVisible && block.kind === "thinking"))
286
281
  continue;
287
- if (rows.length > 0 && (block.kind === "user" || this.#options.customViewport && isPiPromptStyleCompaction(block)))
282
+ if (rows.length > 0 && (block.kind === "user" || this.#options.customViewport && this.#options.components.transcript.isPromptStyleCompaction(block)))
288
283
  rows.push("");
289
284
  rows.push(...this.#blockRows(id, block, width).map(sanitizeExitTranscriptRow));
290
285
  }
@@ -302,7 +297,7 @@ export class TranscriptDocument {
302
297
  const rows = component.render(width);
303
298
  if (!this.#options.customViewport || block?.kind === "user")
304
299
  return rows;
305
- return rows.map(row => nativeHyperlinkStyle(row, nativeTranscriptLinkColor));
300
+ return rows.map(row => nativeHyperlinkStyle(row, this.#linkColor));
306
301
  };
307
302
  if (block === undefined || block.status !== "finalized")
308
303
  return render();
@@ -340,27 +335,6 @@ function sanitizeExitTranscriptRow(row) {
340
335
  return row.replace(KITTY_IMAGE_CONTROL, "").replace(ITERM_IMAGE_CONTROL, "");
341
336
  }
342
337
  /** Web URLs use link blue; file targets retain A1's cyan interactive accent. */
343
- export function nativeTranscriptLinkColor(text, target) {
344
- return piTheme().fg(/^file:/iu.test(target) ? "accent" : "mdLink", text);
345
- }
346
- /** Preserve the stable metadata-grey foreground for every pinned timestamp state. */
347
- function pinnedPromptSource(block, sourceRow, width, timeFormat) {
348
- const unchanged = { row: sourceRow, copySuffixWidth: 0 };
349
- if (typeof block.payload !== "object" || block.payload === null)
350
- return unchanged;
351
- const value = block.payload.timestamp;
352
- if (typeof value !== "number" || !Number.isFinite(value))
353
- return unchanged;
354
- const format = timeFormat ?? "8:00 PM";
355
- const timestamp = formatSubmittedPromptTime(value, format);
356
- if (timestamp === null || submittedPromptLayout(width, value, format).timestamp === null)
357
- return unchanged;
358
- const rowWidth = displayWidth(sourceRow);
359
- const timestampWidth = displayWidth(timestamp);
360
- if (rowWidth < timestampWidth)
361
- return unchanged;
362
- return {
363
- row: overlaySpan(sourceRow, rowWidth - timestampWidth, rowWidth, paintPiSubmittedPromptTimestamp(timestamp)),
364
- copySuffixWidth: timestampWidth,
365
- };
338
+ export function transcriptLinkColor(theme) {
339
+ return (text, target) => theme.current().fg(/^file:/iu.test(target) ? "accent" : "mdLink", text);
366
340
  }
@@ -1,5 +1,5 @@
1
+ import type { OwnedUiShellComponentPort } from "../../contracts/owned-ui/index.js";
1
2
  import type { TranscriptPromptAnchor, TranscriptViewportFrameInput } from "../../ui/components/transcript-viewport.js";
2
- import type { PiShellComponentPort } from "../../integrations/pi/components/shell-shared-facade.js";
3
3
  import type { ShellLayout, ShellLayoutPorts } from "./shell-layout.js";
4
4
  interface VisibleViewportSnapshot {
5
5
  readonly width: number;
@@ -8,7 +8,7 @@ interface VisibleViewportSnapshot {
8
8
  readonly transientSignature: string;
9
9
  readonly promptAnchors: readonly TranscriptPromptAnchor[];
10
10
  readonly dockLength: number;
11
- readonly inputSurface: PiShellComponentPort;
11
+ readonly inputSurface: OwnedUiShellComponentPort;
12
12
  readonly viewportRevision: number;
13
13
  readonly selectionRevision: number;
14
14
  readonly pointerPosition: TranscriptViewportFrameInput["pointerPosition"];
@@ -1,15 +1,16 @@
1
+ import type { OwnedUiShellComponents, OwnedUiShellHotkeysPresentation } from "../../contracts/owned-ui/index.js";
1
2
  import type { ImageAttachmentError, OwnedUiWorkflowMessage, OwnedUiWorkflowResult } from "../../contracts/owned-ui/index.js";
2
- import { type PiShellHotkeysPresentation } from "../../integrations/pi/components/shell-presenters-info.js";
3
3
  import type { DockChrome } from "./dock-chrome.js";
4
4
  import type { TranscriptDocument } from "./transcript-document.js";
5
- export interface WorkflowOutputPorts {
5
+ interface WorkflowOutputPorts {
6
6
  readonly customViewport: boolean;
7
+ readonly components: Pick<OwnedUiShellComponents, "info" | "text">;
7
8
  readonly document: Pick<TranscriptDocument, "lastId" | "anchorOf" | "invalidate" | "appendAnchored" | "removeAnchored">;
8
9
  readonly dock: Pick<DockChrome, "setNotice" | "dismissNotice">;
9
10
  /** How many semantic transcript blocks precede new output; workflow output anchors after them. */
10
11
  transcriptLength(): number;
11
12
  outputPad(): 0 | 1;
12
- hotkeysPresentation(): PiShellHotkeysPresentation;
13
+ hotkeysPresentation(): OwnedUiShellHotkeysPresentation;
13
14
  readonly componentRuntime: {
14
15
  getColumns(): number;
15
16
  getRows(): number;
@@ -31,3 +32,4 @@ export declare class WorkflowOutput {
31
32
  /** Drops every anchored output and the status-replacement chain. */
32
33
  reset(): void;
33
34
  }
35
+ export {};