@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,12 +1,12 @@
1
- import type { PiTuiPointerSurface } from "../../integrations/pi/tui-runtime/contracts.js";
1
+ import type { OwnedUiShellEditorPort } from "../../contracts/owned-ui/index.js";
2
+ import type { TerminalPointerSurface } from "../../contracts/presentation/index.js";
2
3
  import type { OwnedUiViewportSettings } from "../../contracts/owned-ui/index.js";
3
4
  import { type TranscriptViewportFrame, type TranscriptViewportFrameInput } from "../../ui/components/transcript-viewport.js";
4
5
  import type { SelectionCopySnapshot } from "../../ui/components/selection-copy.js";
5
- import type { PiShellEditorPort } from "../../integrations/pi/components/shell-shared-facade.js";
6
6
  import type { PasteEvent } from "./paste-protocol.js";
7
- export interface SessionViewportControllerOptions {
7
+ interface SessionViewportControllerOptions {
8
8
  readonly enabled: boolean;
9
- readonly editor: PiShellEditorPort;
9
+ readonly editor: OwnedUiShellEditorPort;
10
10
  readonly requestRender: (force?: boolean) => void;
11
11
  readonly requestHyperlinkCleanup?: (rows?: readonly number[]) => void;
12
12
  /** Whether mutable editor URL chips need targeted link-cell cleanup on deletion. */
@@ -61,8 +61,8 @@ export declare class SessionViewportController {
61
61
  tailControlHovered(target: TailControlRegion | undefined): boolean;
62
62
  /** Replacement input changed before its new bounds have been painted. */
63
63
  invalidateInputSurface(): void;
64
- setInputSurfaceFrame(surface: PiTuiPointerSurface | undefined): void;
65
- setOverlaySurfaces(surfaces: readonly PiTuiPointerSurface[] | null): void;
64
+ setInputSurfaceFrame(surface: TerminalPointerSurface | undefined): void;
65
+ setOverlaySurfaces(surfaces: readonly TerminalPointerSurface[] | null): void;
66
66
  get inputGeometryReady(): boolean;
67
67
  compose(input: Omit<TranscriptViewportFrameInput, "pointerPosition">): TranscriptViewportFrame;
68
68
  composeDockOnly(dockRows: readonly string[], width: number, height: number, copyableDockRows?: TranscriptViewportFrameInput["copyableDockRows"]): TranscriptViewportFrame | null;
@@ -74,3 +74,4 @@ export declare class SessionViewportController {
74
74
  clearPointerState(): void;
75
75
  handlePreInput(data: string, allowWheel?: boolean, now?: number, editorActive?: boolean): SessionViewportInputResult;
76
76
  }
77
+ export {};
@@ -1,4 +1,4 @@
1
- import { samePointerSurfaces } from "../../integrations/pi/tui-runtime/overlay-geometry.js";
1
+ import { samePointerSurfaces } from "../../contracts/presentation/index.js";
2
2
  import { TranscriptViewport } from "../../ui/components/transcript-viewport.js";
3
3
  import { readVisibleHyperlinks } from "../../ui/components/visible-hyperlinks.js";
4
4
  import { routeMouseInput } from "../../ui/components/mouse.js";
@@ -22,7 +22,6 @@ export class SessionViewportController {
22
22
  #pasteDiagnosticRequest = 0;
23
23
  #viewport = new TranscriptViewport();
24
24
  #config = {
25
- timeFormat: "8:00 PM",
26
25
  scrollbarAppearance: "auto",
27
26
  scrollbarStyle: "thin",
28
27
  scrollbarSpeed: "normal",
@@ -171,11 +170,9 @@ export class SessionViewportController {
171
170
  }
172
171
  /** Returns true when document wrapping may have changed. */
173
172
  setConfig(config) {
174
- const normalized = { ...config, timeFormat: config.timeFormat ?? "8:00 PM" };
175
- const layoutChanged = normalized.scrollbarAppearance !== this.#config.scrollbarAppearance
176
- || normalized.timeFormat !== this.#config.timeFormat;
177
- this.#config = normalized;
178
- this.#viewport.setConfig(normalized);
173
+ const layoutChanged = config.scrollbarAppearance !== this.#config.scrollbarAppearance;
174
+ this.#config = config;
175
+ this.#viewport.setConfig(config);
179
176
  this.#requestRender();
180
177
  return layoutChanged;
181
178
  }
@@ -660,6 +657,6 @@ export class SessionViewportController {
660
657
  const SELECTION_AUTO_SCROLL_INTERVAL_MS = 30;
661
658
  const EDITOR_LINK_DELETION_INPUTS = new Set(["\b", "\u007f", "\u001b[3~"]);
662
659
  // Platform: Windows Terminal may consume Shift+Arrow for native selection. Ctrl+Arrow matches
663
- // solo A1's Windows binding while retaining Shift+Arrow whenever the terminal delivers it.
660
+ // A1's Windows binding while retaining Shift+Arrow whenever the terminal delivers it.
664
661
  const PROMPT_UP_INPUTS = new Set(["\u001b[1;2A", "\u001b[1;5A"]);
665
662
  const PROMPT_DOWN_INPUTS = new Set(["\u001b[1;2B", "\u001b[1;5B"]);
@@ -1,8 +1,8 @@
1
- import type { OwnedUiSessionSettingsPort, OwnedUiSessionSettingsSnapshot } from "../../contracts/owned-ui/index.js";
1
+ import type { OwnedUiSessionSettingsPort, OwnedUiSessionSettingsSnapshot, OwnedUiViewportSettingsPort } from "../../contracts/owned-ui/index.js";
2
2
  import type { OwnedUiPresenterTerminal } from "./shell-host.js";
3
3
  import type { OwnedUiSessionShellRoot } from "./session-shell-root.js";
4
4
  /** What the session's live setting effects reach: terminal modes, root presentation, and the presenter's progress flag. */
5
- export interface SessionSettingsTargets {
5
+ interface SessionSettingsTargets {
6
6
  readonly terminal: Pick<OwnedUiPresenterTerminal, "setHardwareCursor" | "setClearOnShrink" | "setWheelScrollLines">;
7
7
  readonly root: Pick<OwnedUiSessionShellRoot, "setEditorPaddingX" | "setAutocompleteMaxVisible" | "setOutputPad" | "setHideThinkingBlock" | "setMermaidRenderingMode" | "setImagePresentation" | "setFullscreenCopyOnSelect">;
8
8
  setTerminalProgress(enabled: boolean): void;
@@ -15,3 +15,25 @@ export interface SessionSettingsTargets {
15
15
  export declare function bindSessionSettings(settings: Pick<OwnedUiSessionSettingsPort, "bindOwner" | "productMode">, snapshot: OwnedUiSessionSettingsSnapshot, targets: SessionSettingsTargets, options: {
16
16
  readonly customViewport: boolean;
17
17
  }): () => void;
18
+ /** The shell's own live setting sources besides the session settings; absent sources bind nothing. */
19
+ export interface ShellSettingSources {
20
+ readonly customViewport: boolean;
21
+ readonly promptImages: {
22
+ onChange(listener: () => void): () => void;
23
+ } | null;
24
+ readonly skills: {
25
+ onChange(listener: () => void): () => void;
26
+ } | null;
27
+ readonly viewport: OwnedUiViewportSettingsPort | undefined;
28
+ readonly historyScope: ((listener: (scope: "unique" | "shared") => void) => () => void) | undefined;
29
+ }
30
+ /** What those sources change: the prompt-image notice, the command menu, the viewport, and the transcript binding. */
31
+ export interface ShellSettingEffects {
32
+ readonly root: Pick<OwnedUiSessionShellRoot, "setViewportConfig">;
33
+ promptImageLimitChanged(): void;
34
+ skillsChanged(): void;
35
+ historyScopeChanged(scope: "unique" | "shared"): void;
36
+ }
37
+ /** Seeds the viewport and subscribes every shell setting source; the returned release undoes all of them. */
38
+ export declare function bindShellSettings(sources: ShellSettingSources, effects: ShellSettingEffects): () => void;
39
+ export {};
@@ -89,3 +89,27 @@ export function bindSessionSettings(settings, snapshot, targets, options) {
89
89
  }
90
90
  return release;
91
91
  }
92
+ /** Seeds the viewport and subscribes every shell setting source; the returned release undoes all of them. */
93
+ export function bindShellSettings(sources, effects) {
94
+ const releases = [];
95
+ const release = () => { for (const unbind of releases.splice(0).reverse())
96
+ unbind(); };
97
+ try {
98
+ if (sources.promptImages !== null)
99
+ releases.push(sources.promptImages.onChange(() => effects.promptImageLimitChanged()));
100
+ // Rationale: the same listener refreshes the menu for the A1 presentation choice and for the engine's
101
+ // skill-command registration, both of which the owned settings manager reports through one change.
102
+ if (sources.skills !== null)
103
+ releases.push(sources.skills.onChange(() => effects.skillsChanged()));
104
+ effects.root.setViewportConfig(sources.viewport?.snapshot() ?? { scrollbarAppearance: "auto", scrollbarStyle: "thin", scrollbarSpeed: "normal" });
105
+ if (sources.customViewport && sources.viewport !== undefined)
106
+ releases.push(sources.viewport.onChange(settings => effects.root.setViewportConfig(settings)));
107
+ if (sources.customViewport && sources.historyScope !== undefined)
108
+ releases.push(sources.historyScope(scope => effects.historyScopeChanged(scope)));
109
+ }
110
+ catch (error) {
111
+ release();
112
+ throw error;
113
+ }
114
+ return release;
115
+ }
@@ -1,3 +1,3 @@
1
- import { createPiShellOperationLoader, createPiShellShareOperationDialog } from "../../integrations/pi/components/index.js";
2
- export { createPiShellOperationLoader, createPiShellShareOperationDialog };
3
- export declare function renderPiShellShareResult(message: string, gistUrl: string): string;
1
+ import type { UiTheme } from "../../contracts/presentation/index.js";
2
+ /** The completed share result in bare A1: dim labels with the share and gist URLs made clickable. */
3
+ export declare function renderShellShareResult(message: string, gistUrl: string, theme: UiTheme, hyperlink: (url: string) => string): string;
@@ -1,11 +1,9 @@
1
- import { createPiShellOperationLoader, createPiShellShareOperationDialog, piShellHyperlink, piTheme, } from "../../integrations/pi/components/index.js";
2
1
  import { nativeHyperlinkStyle } from "../../ui/components/index.js";
3
- export { createPiShellOperationLoader, createPiShellShareOperationDialog };
4
- export function renderPiShellShareResult(message, gistUrl) {
5
- const theme = piTheme();
2
+ /** The completed share result in bare A1: dim labels with the share and gist URLs made clickable. */
3
+ export function renderShellShareResult(message, gistUrl, theme, hyperlink) {
6
4
  const match = /^Share URL: (\S+)$/u.exec(message);
7
5
  const linked = match === null
8
6
  ? theme.fg("dim", message)
9
- : `${theme.fg("dim", "Share URL: ")}${piShellHyperlink(match[1])}`;
10
- return nativeHyperlinkStyle(`${linked}\n${theme.fg("dim", "Gist: ")}${piShellHyperlink(gistUrl)}`, text => theme.fg("mdLink", text));
7
+ : `${theme.fg("dim", "Share URL: ")}${hyperlink(match[1])}`;
8
+ return nativeHyperlinkStyle(`${linked}\n${theme.fg("dim", "Gist: ")}${hyperlink(gistUrl)}`, text => theme.fg("mdLink", text));
11
9
  }
@@ -0,0 +1,59 @@
1
+ import { type OwnedUiShellClipboardContent } from "../../contracts/owned-ui/index.js";
2
+ import type { OwnedUiClipboardServices } from "./clipboard-services.js";
3
+ import type { PastePreparationClientOptions } from "./paste-preparation-client.js";
4
+ import type { PasteSource } from "./paste-protocol.js";
5
+ import { ResponseCopyCoordinator } from "./response-copy-coordinator.js";
6
+ import type { SelectionCopySnapshot } from "../../ui/components/index.js";
7
+ import { type CopyResult, type ResponseCopyEvent } from "./response-copy-protocol.js";
8
+ import { type ResponseCopyExecutor } from "./response-copy-transport.js";
9
+ /** A platform clipboard seam; production reads and writes through A1's system clipboard adapter. */
10
+ export interface OwnedUiClipboardPort {
11
+ readText(signal?: AbortSignal): Promise<string | null>;
12
+ readImage?(signal?: AbortSignal): Promise<{
13
+ readonly data: string;
14
+ readonly mimeType: string;
15
+ } | null>;
16
+ writeText?(text: string, signal?: AbortSignal): Promise<void>;
17
+ }
18
+ /** What one shell's clipboard needs: the borrowed process-wide helpers, its terminal, and optional test seams. */
19
+ export interface ShellClipboardOptions {
20
+ /** Bare A1 owns response copy; comparison profiles keep the terminal-control write. */
21
+ readonly ownedCopy: boolean;
22
+ readonly shared?: OwnedUiClipboardServices;
23
+ readonly clipboard?: OwnedUiClipboardPort;
24
+ readonly responseCopy?: {
25
+ readonly execute?: ResponseCopyExecutor;
26
+ readonly onEvent?: (event: ResponseCopyEvent) => void;
27
+ };
28
+ readonly pastePreparation?: Omit<PastePreparationClientOptions, "onEvent" | "spareIdleMs">;
29
+ /** True when a test terminal stands in for the process terminal. */
30
+ readonly substituteTerminal: boolean;
31
+ readonly disposed: () => boolean;
32
+ /** Whether the shell's terminal is running and attached. */
33
+ readonly terminalAttached: () => boolean;
34
+ readonly writeControl: (control: string) => void;
35
+ }
36
+ /**
37
+ * One shell's clipboard: response copy, the comparison write path, clipboard reads, and paste capture. It
38
+ * borrows the process-wide helper pools from composition and never disposes them.
39
+ */
40
+ export declare class ShellClipboard {
41
+ #private;
42
+ /** Null in comparison profiles, which keep the pinned terminal-control write. */
43
+ readonly responseCopy: ResponseCopyCoordinator | null;
44
+ constructor(options: ShellClipboardOptions);
45
+ /** Paste-preparation options carrying the shared paste pool, or undefined when neither is supplied. */
46
+ pastePreparation(): Omit<PastePreparationClientOptions, "onEvent" | "spareIdleMs"> | undefined;
47
+ /** Copies text: through owned response copy when present, otherwise the comparison terminal-control write. */
48
+ copyText(text: string): Promise<CopyResult> | undefined;
49
+ /** Copies a selection after any pending comparison write has settled. */
50
+ copySelection(snapshot: SelectionCopySnapshot): Promise<CopyResult> | undefined;
51
+ /** Reads the clipboard once any write this shell started has settled. */
52
+ readContent(signal?: AbortSignal): Promise<OwnedUiShellClipboardContent | null>;
53
+ capturePaste(): PasteSource;
54
+ /** The extension clipboard writer: true once delivered, false when submitted without confirmation. */
55
+ writeForExtension(text: string): Promise<boolean>;
56
+ warm(): void;
57
+ reset(): void;
58
+ dispose(): void;
59
+ }
@@ -0,0 +1,119 @@
1
+ import { ImageAttachmentError } from "../../contracts/owned-ui/index.js";
2
+ import { runImageWorker } from "./image-preparation-client.js";
3
+ import { ResponseCopyCoordinator } from "./response-copy-coordinator.js";
4
+ import { MAX_COPY_CONTROL_BYTES } from "./response-copy-protocol.js";
5
+ import { createResponseCopyExecutor, responseCopyDestination } from "./response-copy-transport.js";
6
+ import { writeSystemClipboardText } from "./system-clipboard.js";
7
+ /**
8
+ * One shell's clipboard: response copy, the comparison write path, clipboard reads, and paste capture. It
9
+ * borrows the process-wide helper pools from composition and never disposes them.
10
+ */
11
+ export class ShellClipboard {
12
+ /** Null in comparison profiles, which keep the pinned terminal-control write. */
13
+ responseCopy;
14
+ #options;
15
+ #executor;
16
+ #pendingWrite = Promise.resolve();
17
+ constructor(options) {
18
+ this.#options = options;
19
+ const { clipboard, shared, responseCopy } = options;
20
+ this.#executor = !options.ownedCopy || responseCopy?.execute !== undefined ? undefined : createResponseCopyExecutor({
21
+ ...(shared === undefined ? {} : { pool: shared.copy }),
22
+ ...(!options.substituteTerminal && clipboard === undefined ? {} : { destination: "terminal" }),
23
+ ...(clipboard?.writeText === undefined ? {} : { writeText: (text, signal) => clipboard.writeText(text, signal) }),
24
+ // Invariant: the owned host is the route contract. Pseudoterminal children must not infer
25
+ // clipboard reachability from Node's view of stdout, and inactive shells are fenced here.
26
+ terminal: { submit: async (control, signal) => {
27
+ if (signal.aborted || options.disposed() || !options.terminalAttached())
28
+ throw new Error("Copy canceled");
29
+ // Performance: never grow the real terminal's pending buffer with another clipboard payload.
30
+ if (!options.substituteTerminal && process.stdout.writableLength + control.length > MAX_COPY_CONTROL_BYTES) {
31
+ throw new Error("Clipboard terminal is busy");
32
+ }
33
+ options.writeControl(control);
34
+ } },
35
+ });
36
+ this.responseCopy = !options.ownedCopy ? null : new ResponseCopyCoordinator({
37
+ execute: responseCopy?.execute ?? this.#executor,
38
+ ...(responseCopy?.onEvent === undefined ? {} : { onEvent: responseCopy.onEvent }),
39
+ });
40
+ }
41
+ /** Paste-preparation options carrying the shared paste pool, or undefined when neither is supplied. */
42
+ pastePreparation() {
43
+ const { pastePreparation, shared } = this.#options;
44
+ if (pastePreparation === undefined && shared === undefined)
45
+ return undefined;
46
+ return { ...pastePreparation, ...(shared === undefined ? {} : { pool: shared.paste }) };
47
+ }
48
+ /** Copies text: through owned response copy when present, otherwise the comparison terminal-control write. */
49
+ copyText(text) {
50
+ if (this.responseCopy !== null)
51
+ return this.responseCopy.submitText(text);
52
+ const { clipboard } = this.#options;
53
+ const write = () => {
54
+ if (this.#options.disposed())
55
+ return Promise.resolve();
56
+ this.#options.writeControl(`\u001b]52;c;${Buffer.from(text, "utf8").toString("base64")}\u0007`);
57
+ return clipboard === undefined ? writeSystemClipboardText(text) : clipboard.writeText?.(text) ?? Promise.resolve();
58
+ };
59
+ // Compatibility: comparison profiles retain their existing clipboard path.
60
+ this.#pendingWrite = write().catch(() => { });
61
+ return undefined;
62
+ }
63
+ /** Copies a selection after any pending comparison write has settled. */
64
+ copySelection(snapshot) {
65
+ return this.responseCopy?.submit(snapshot, this.#pendingWrite);
66
+ }
67
+ /** Reads the clipboard once any write this shell started has settled. */
68
+ async readContent(signal = new AbortController().signal) {
69
+ await this.#pendingWrite;
70
+ return this.#read(signal);
71
+ }
72
+ capturePaste() {
73
+ const before = this.responseCopy?.capturePasteBarrier() ?? (async () => true);
74
+ if (this.#options.clipboard !== undefined)
75
+ return { kind: "provided", read: signal => this.#read(signal), before };
76
+ if (responseCopyDestination(process.env) === "terminal")
77
+ return {
78
+ kind: "provided", before, read: async () => { throw new ImageAttachmentError("paste-unavailable"); },
79
+ };
80
+ return { kind: "native", before };
81
+ }
82
+ /** The extension clipboard writer: true once delivered, false when submitted without confirmation. */
83
+ async writeForExtension(text) {
84
+ const result = await this.responseCopy.submitText(text);
85
+ if (result.outcome === "delivered")
86
+ return true;
87
+ if (result.outcome === "submitted-unverified")
88
+ return false;
89
+ throw new Error(result.outcome === "timed-out" ? "Clipboard delivery timed out" : "Clipboard delivery could not be completed");
90
+ }
91
+ warm() { this.#executor?.warm(); }
92
+ reset() { this.responseCopy?.reset(); }
93
+ dispose() {
94
+ this.responseCopy?.dispose();
95
+ this.#executor?.dispose();
96
+ }
97
+ async #read(signal) {
98
+ if (signal.aborted)
99
+ throw new ImageAttachmentError("image-canceled");
100
+ const { clipboard } = this.#options;
101
+ if (clipboard === undefined)
102
+ return runImageWorker({ kind: "clipboard" }, signal);
103
+ try {
104
+ const image = await clipboard.readImage?.(signal);
105
+ if (image !== null && image !== undefined) {
106
+ const canonical = await runImageWorker({ kind: "canonicalize", source: image }, signal);
107
+ if (canonical !== null)
108
+ return { kind: "image", ...canonical };
109
+ }
110
+ }
111
+ catch (error) {
112
+ if (error instanceof ImageAttachmentError)
113
+ throw error;
114
+ // Compatibility: an unavailable image reader can still provide text.
115
+ }
116
+ const text = await clipboard.readText(signal);
117
+ return text === null ? null : { kind: "text", text };
118
+ }
119
+ }
@@ -1,14 +1,17 @@
1
- import { type PiShellEditorOptions, type PiShellEditorPort } from "../../integrations/pi/components/shell-shared-facade.js";
1
+ import type { OwnedUiShellComponents, OwnedUiShellEditorOptions, OwnedUiShellEditorPort } from "../../contracts/owned-ui/index.js";
2
+ import type { ThemeSource } from "../../contracts/presentation/index.js";
2
3
  import type { PasteEvent, PasteSource } from "./paste-protocol.js";
3
4
  import type { PromptChipStore } from "./prompt-chips.js";
4
5
  /** The shell callbacks the editor is wired to; the editor receives the whole object as its own options. */
5
- export type ShellEditorHandlers = Omit<PiShellEditorOptions, "onChange" | "onToolsExpand" | "keybindingProfile"> & {
6
+ type ShellEditorHandlers = Omit<OwnedUiShellEditorOptions, "onChange" | "onToolsExpand" | "keybindingProfile"> & {
6
7
  readonly requestRender: (force?: boolean) => void;
7
8
  readonly onEditorChange?: (text: string) => void;
8
9
  readonly captureClipboardPaste?: () => PasteSource;
9
10
  readonly pasteDiagnostics?: (event: PasteEvent) => void;
10
11
  };
11
- export interface ShellEditorPorts {
12
+ interface ShellEditorPorts {
13
+ readonly theme: ThemeSource;
14
+ readonly components: Pick<OwnedUiShellComponents, "editor" | "text">;
12
15
  readonly handlers: ShellEditorHandlers;
13
16
  readonly customViewport: boolean;
14
17
  readonly cwd: string;
@@ -24,4 +27,5 @@ export interface ShellEditorPorts {
24
27
  * Builds the session's prompt editor: chip-aware paste, selection, and hyperlink decoration over
25
28
  * the Pi editor, plus bare A1's prompt presentation and terminal paste diagnostics.
26
29
  */
27
- export declare function createShellEditor(ports: ShellEditorPorts): PiShellEditorPort;
30
+ export declare function createShellEditor(ports: ShellEditorPorts): OwnedUiShellEditorPort;
31
+ export {};
@@ -3,9 +3,6 @@ import { PromptInput } from "../../ui/components/prompt-input.js";
3
3
  import { backgroundSgrSpan, hyperlinkSgrSpan } from "../../ui/components/spans.js";
4
4
  import { faint, stripAnsi } from "../../ui/components/text.js";
5
5
  import { paintTextSelection } from "../../ui/components/text-selection.js";
6
- import { createPiShellEditor } from "../../integrations/pi/components/shell-editor-autocomplete.js";
7
- import { piTheme } from "../../integrations/pi/components/upstream/theme/theme.js";
8
- import { piShellTruncateToWidth, piShellVisibleWidth, } from "../../integrations/pi/components/shell-shared-facade.js";
9
6
  import { EditorHyperlinkBudget } from "./editor-hyperlink-budget.js";
10
7
  import { canPreparePasteInline } from "./paste-text-preparation.js";
11
8
  /**
@@ -15,13 +12,14 @@ import { canPreparePasteInline } from "./paste-text-preparation.js";
15
12
  export function createShellEditor(ports) {
16
13
  const { handlers, customViewport, promptChips } = ports;
17
14
  let terminalPasteDiagnosticRequest;
18
- const editor = createPiShellEditor({
15
+ const { visibleWidth, truncateToWidth } = ports.components.text;
16
+ const editor = ports.components.editor.create({
19
17
  ...handlers,
20
18
  keybindingProfile: customViewport ? "a1" : "pi",
21
19
  ...(handlers.keybindings === undefined ? {} : { keybindings: handlers.keybindings }),
22
20
  paintEditorSelection: (line, from, to, atomic) => atomic
23
- ? backgroundSgrSpan(line, from, to, "\u001b[7m", "\u001b[27m", piShellVisibleWidth)
24
- : paintTextSelection(line, from, to, piShellVisibleWidth, true),
21
+ ? backgroundSgrSpan(line, from, to, "\u001b[7m", "\u001b[27m", visibleWidth)
22
+ : paintTextSelection(line, from, to, visibleWidth, true),
25
23
  transformPastedContent: content => {
26
24
  try {
27
25
  return promptChips.transformPastedContent(content, editor.getText());
@@ -50,16 +48,16 @@ export function createShellEditor(ports) {
50
48
  } : {}),
51
49
  editorAtomicRanges: line => promptChips.atomicRanges(line),
52
50
  editorHiddenRanges: line => promptChips.hiddenRanges(line),
53
- decorateEditorRow: editorRowDecorator(promptChips, ports.editorPointerSelecting),
51
+ decorateEditorRow: editorRowDecorator(promptChips, ports.editorPointerSelecting, visibleWidth),
54
52
  expandCopiedEditorText: text => promptChips.expandCopiedText(text),
55
53
  cwd: ports.cwd,
56
54
  ...(ports.agentDir === undefined ? {} : { agentDir: ports.agentDir }),
57
55
  onToolsExpand: () => ports.toggleToolsExpanded(),
58
56
  ...(customViewport ? {
59
57
  promptPresentation: {
60
- input: new PromptInput({ fg: (token, text) => piTheme().fg(token, text) }, {
61
- measure: piShellVisibleWidth,
62
- truncate: piShellTruncateToWidth,
58
+ input: new PromptInput({ fg: (token, text) => ports.theme.current().fg(token, text) }, {
59
+ measure: visibleWidth,
60
+ truncate: truncateToWidth,
63
61
  }),
64
62
  styleSuggestion: faint,
65
63
  styleSuggestionCaret: caretCell,
@@ -78,17 +76,17 @@ export function createShellEditor(ports) {
78
76
  * Dims unsent chips and turns the draft's URLs into terminal hyperlinks, each target once per
79
77
  * decoration pass; while a pointer drag selects, links paint as plain underlines instead.
80
78
  */
81
- function editorRowDecorator(promptChips, editorPointerSelecting) {
79
+ function editorRowDecorator(promptChips, editorPointerSelecting, visibleWidth) {
82
80
  const editorHyperlinks = new EditorHyperlinkBudget();
83
81
  return (row, width, rowIndex) => {
84
82
  if (rowIndex === 0)
85
83
  editorHyperlinks.reset();
86
84
  const plain = stripAnsi(row);
87
- const dimmed = promptChips.unsentRanges(plain).reduce((result, range) => backgroundSgrSpan(result, piShellVisibleWidth(plain.slice(0, range.start)), piShellVisibleWidth(plain.slice(0, range.end)), "\u001b[2m", "\u001b[22m", piShellVisibleWidth), row);
85
+ const dimmed = promptChips.unsentRanges(plain).reduce((result, range) => backgroundSgrSpan(result, visibleWidth(plain.slice(0, range.start)), visibleWidth(plain.slice(0, range.end)), "\u001b[2m", "\u001b[22m", visibleWidth), row);
88
86
  const ranges = promptChips.hyperlinkRanges(plain);
89
87
  if (ranges.length === 0 || !editorHyperlinks.takeCleanup())
90
88
  return dimmed;
91
- const linkResetAndTail = `\u001b]8;;\u001b\\\u001b[24m${" ".repeat(Math.max(0, width - piShellVisibleWidth(dimmed)))}`;
89
+ const linkResetAndTail = `\u001b]8;;\u001b\\\u001b[24m${" ".repeat(Math.max(0, width - visibleWidth(dimmed)))}`;
92
90
  // Platform: VS15 is zero-column and default-ignorable. It breaks Windows Terminal's
93
91
  // plain-text URL detector only in the held-button paint; semantic text stays exact.
94
92
  const selecting = editorPointerSelecting();
@@ -96,8 +94,8 @@ function editorRowDecorator(promptChips, editorPointerSelecting) {
96
94
  ? dimmed.replaceAll("https://", "https:︎//").replaceAll("http://", "http:︎//")
97
95
  : dimmed;
98
96
  const decorated = selecting
99
- ? ranges.reduce((result, range) => backgroundSgrSpan(result, piShellVisibleWidth(plain.slice(0, range.start)), piShellVisibleWidth(plain.slice(0, range.end)), "\u001b[4:4m", "\u001b[24m", piShellVisibleWidth), paintRow)
100
- : ranges.filter(range => editorHyperlinks.take(range.target)).reduce((result, range) => hyperlinkSgrSpan(result, piShellVisibleWidth(plain.slice(0, range.start)), piShellVisibleWidth(plain.slice(0, range.end)), range.target, piShellVisibleWidth), dimmed);
97
+ ? ranges.reduce((result, range) => backgroundSgrSpan(result, visibleWidth(plain.slice(0, range.start)), visibleWidth(plain.slice(0, range.end)), "\u001b[4:4m", "\u001b[24m", visibleWidth), paintRow)
98
+ : ranges.filter(range => editorHyperlinks.take(range.target)).reduce((result, range) => hyperlinkSgrSpan(result, visibleWidth(plain.slice(0, range.start)), visibleWidth(plain.slice(0, range.end)), range.target, visibleWidth), dimmed);
101
99
  // Platform: Windows Terminal can retain stale native dotted-link cells when a mutable
102
100
  // prompt replaces a longer URL. Explicit non-link spaces overwrite that tail.
103
101
  return `${decorated}${linkResetAndTail}`;
@@ -1,20 +1,18 @@
1
+ import type { TerminalComponentPort, TerminalInputListener, TerminalInputListenerResult, TerminalInputSurfaceKind, TerminalOverlayHandle, TerminalOverlayOptions, TerminalPointerSurface, TerminalPort } from "../../contracts/presentation/index.js";
1
2
  import type { OwnedUiBackgroundSettingsPort, OwnedUiPresenterHost, OwnedUiSessionPresenter, OwnedUiTerminalHost as OwnedUiTerminalHostContract } from "../../contracts/owned-ui/index.js";
2
3
  import type { UiRouteSurface } from "../../ui/apps/contracts.js";
3
- import { type PiTuiDamageDecision, type PiTuiDamageFrameDescriptor, type PiTuiDamageFrameSafety } from "../../integrations/pi/tui-runtime/damage-aware-terminal.js";
4
- import { PiTuiRuntimeAdapter } from "../../integrations/pi/tui-runtime/adapter.js";
5
- import type { PiTuiInputSurfaceKind } from "../../integrations/pi/tui-runtime/input-presentation-coordinator.js";
6
- import type { PiTuiComponentPort, PiTuiInputListener, PiTuiInputListenerResult, PiTuiOverlayHandle, PiTuiOverlayOptions, PiTuiPointerSurface, PiTuiTerminalPort } from "../../integrations/pi/tui-runtime/contracts.js";
4
+ import type { ShellPresentationPorts, TerminalDamageDecision, TerminalDamageFrameDescriptor, TerminalDamageFrameSafety, TerminalProgramStatus, TerminalRuntimePort, TerminalWheelScrollLines } from "../../contracts/presentation/index.js";
7
5
  import { type OwnedUiSessionShellOptions, type OwnedUiShellPresentationOptions, type PinnedLayoutPart } from "./session-shell-root.js";
8
- type ProgramStatus = Parameters<PiTuiRuntimeAdapter["setProgramStatus"]>[0];
9
- type WheelScrollLines = Parameters<PiTuiRuntimeAdapter["setWheelScrollLines"]>[0];
6
+ type ProgramStatus = TerminalProgramStatus;
7
+ type WheelScrollLines = TerminalWheelScrollLines;
10
8
  /** What the terminal host needs from a presenter beyond the neutral contract: the Pi runtime's per-session seams. */
11
9
  export interface OwnedUiHostedPresenter extends OwnedUiSessionPresenter {
12
- inputCoordinationSurface(): PiTuiInputSurfaceKind;
13
- setOverlaySurfaces(surfaces: readonly PiTuiPointerSurface[] | null): void;
10
+ inputCoordinationSurface(): TerminalInputSurfaceKind;
11
+ setOverlaySurfaces(surfaces: readonly TerminalPointerSurface[] | null): void;
14
12
  noteImmediatePresentation(): void;
15
13
  /** The bare-A1 viewport's pre-input routing; returns what the runtime's pre-input listener returns. */
16
- handleViewportInput(data: string): PiTuiInputListenerResult | undefined;
17
- layoutPart(part: PinnedLayoutPart): PiTuiComponentPort;
14
+ handleViewportInput(data: string): TerminalInputListenerResult | undefined;
15
+ layoutPart(part: PinnedLayoutPart): TerminalComponentPort;
18
16
  /** Called after the host makes this presenter active, to republish its terminal-wide state. */
19
17
  activated(): void;
20
18
  /**
@@ -45,9 +43,9 @@ export interface OwnedUiPresenterTerminal extends OwnedUiPresenterHost {
45
43
  writeControl(data: string): void;
46
44
  hasOverlay(): boolean;
47
45
  hasFocusedOverlay(): boolean;
48
- showOverlay(component: PiTuiComponentPort, options?: PiTuiOverlayOptions): PiTuiOverlayHandle;
49
- addInputListener(listener: PiTuiInputListener): () => void;
50
- armFrame(descriptor: PiTuiDamageFrameDescriptor, safety: PiTuiDamageFrameSafety): void;
46
+ showOverlay(component: TerminalComponentPort, options?: TerminalOverlayOptions): TerminalOverlayHandle;
47
+ addInputListener(listener: TerminalInputListener): () => void;
48
+ armFrame(descriptor: TerminalDamageFrameDescriptor, safety: TerminalDamageFrameSafety): void;
51
49
  requestHyperlinkCleanup(rows?: readonly number[]): void;
52
50
  openRoute(surface: UiRouteSurface, callbacks: OwnedUiRouteCallbacks): {
53
51
  hide(): void;
@@ -61,19 +59,20 @@ export interface OwnedUiPresenterTerminal extends OwnedUiPresenterHost {
61
59
  setClearOnShrink(enabled: boolean): void;
62
60
  setWheelScrollLines(lines: WheelScrollLines): void;
63
61
  }
64
- export interface OwnedUiRouteCallbacks {
62
+ interface OwnedUiRouteCallbacks {
65
63
  /** The route, or the interrupt chord over it, asked to leave A1. */
66
64
  exit(): void;
67
65
  /** The route closed itself; `rendered` is true when it was ever painted. */
68
66
  closed(rendered: boolean): void;
69
67
  }
70
68
  export interface OwnedUiTerminalHostOptions {
69
+ readonly presentation: ShellPresentationPorts;
71
70
  /** Bare A1 owns a bounded custom viewport; comparison profiles keep the pinned layout. */
72
71
  readonly layout: "pinned" | "custom-viewport";
73
72
  readonly mode: "regular" | "fullscreen";
74
73
  readonly hardwareCursor: boolean;
75
74
  readonly wheelScrollLines?: WheelScrollLines;
76
- readonly terminal?: PiTuiTerminalPort;
75
+ readonly terminal?: TerminalPort;
77
76
  readonly input?: OwnedUiShellPresentationOptions["input"];
78
77
  readonly backgroundSettings?: OwnedUiBackgroundSettingsPort;
79
78
  readonly quitOutro?: OwnedUiShellPresentationOptions["quitOutro"];
@@ -93,9 +92,9 @@ export declare function sessionTerminalHostOptions(options: OwnedUiSessionShellO
93
92
  */
94
93
  export declare class OwnedUiTerminalHost implements OwnedUiTerminalHostContract<OwnedUiHostedPresenter> {
95
94
  #private;
96
- readonly runtime: PiTuiRuntimeAdapter;
95
+ readonly runtime: TerminalRuntimePort;
97
96
  constructor(options: OwnedUiTerminalHostOptions);
98
- get damagePresentationDecision(): PiTuiDamageDecision | null;
97
+ get damagePresentationDecision(): TerminalDamageDecision | null;
99
98
  /** Registers a presenter and returns its terminal handle. The presenter paints only once attached. */
100
99
  connect(presenter: OwnedUiHostedPresenter): OwnedUiPresenterTerminal;
101
100
  /** Forgets a presenter whose construction failed before it could be attached or released. */