@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,195 +0,0 @@
1
- const MAX_FRAME_BYTES = 2 * 1024 * 1024;
2
- const MAX_DEPTH = 64;
3
- /** Generation-1 MessagePack named-map codec. It intentionally supports only bridge-safe values. */
4
- export function encodeResidentFrame(value) {
5
- const payload = Buffer.from(encodeValue(value, 0));
6
- if (payload.length > MAX_FRAME_BYTES)
7
- throw new Error("resident frame exceeds 2 MiB");
8
- const frame = Buffer.allocUnsafe(payload.length + 4);
9
- frame.writeUInt32LE(payload.length, 0);
10
- payload.copy(frame, 4);
11
- return frame;
12
- }
13
- export function decodeResidentPayload(payload) {
14
- if (payload.byteLength > MAX_FRAME_BYTES)
15
- throw new Error("resident frame exceeds 2 MiB");
16
- const state = { bytes: payload, offset: 0 };
17
- const value = decodeValue(state, 0);
18
- if (state.offset !== payload.byteLength || !isRecord(value) || typeof value.type !== "string" || !isRecord(value.body)) {
19
- throw new Error("invalid resident envelope");
20
- }
21
- return value;
22
- }
23
- export class ResidentFrameDecoder {
24
- #buffer = Buffer.alloc(0);
25
- push(chunk) {
26
- this.#buffer = Buffer.concat([this.#buffer, chunk]);
27
- const messages = [];
28
- while (this.#buffer.length >= 4) {
29
- const length = this.#buffer.readUInt32LE(0);
30
- if (length > MAX_FRAME_BYTES)
31
- throw new Error("resident frame exceeds 2 MiB");
32
- if (this.#buffer.length < length + 4)
33
- break;
34
- messages.push(decodeResidentPayload(this.#buffer.subarray(4, length + 4)));
35
- this.#buffer = this.#buffer.subarray(length + 4);
36
- }
37
- return messages;
38
- }
39
- }
40
- function encodeValue(value, depth) {
41
- if (depth > MAX_DEPTH)
42
- throw new Error("resident value exceeds nesting limit");
43
- if (value === null)
44
- return [0xc0];
45
- if (value === false)
46
- return [0xc2];
47
- if (value === true)
48
- return [0xc3];
49
- if (typeof value === "number" && Number.isSafeInteger(value))
50
- return encodeInteger(value);
51
- if (typeof value === "string") {
52
- const bytes = [...Buffer.from(value, "utf8")];
53
- if (bytes.length < 32)
54
- return [0xa0 | bytes.length, ...bytes];
55
- if (bytes.length <= 0xff)
56
- return [0xd9, bytes.length, ...bytes];
57
- if (bytes.length <= 0xffff)
58
- return [0xda, bytes.length >>> 8, bytes.length & 0xff, ...bytes];
59
- return [0xdb, ...u32(bytes.length), ...bytes];
60
- }
61
- if (value instanceof Uint8Array) {
62
- const bytes = [...value];
63
- if (bytes.length <= 0xff)
64
- return [0xc4, bytes.length, ...bytes];
65
- if (bytes.length <= 0xffff)
66
- return [0xc5, bytes.length >>> 8, bytes.length & 0xff, ...bytes];
67
- return [0xc6, ...u32(bytes.length), ...bytes];
68
- }
69
- if (Array.isArray(value)) {
70
- const head = value.length < 16 ? [0x90 | value.length] : value.length <= 0xffff ? [0xdc, value.length >>> 8, value.length & 0xff] : [0xdd, ...u32(value.length)];
71
- return [...head, ...value.flatMap(entry => encodeValue(entry, depth + 1))];
72
- }
73
- if (isRecord(value)) {
74
- const entries = Object.entries(value).filter(([, child]) => child !== undefined);
75
- const head = entries.length < 16 ? [0x80 | entries.length] : entries.length <= 0xffff ? [0xde, entries.length >>> 8, entries.length & 0xff] : [0xdf, ...u32(entries.length)];
76
- return [...head, ...entries.flatMap(([key, child]) => [...encodeValue(key, depth + 1), ...encodeValue(child, depth + 1)])];
77
- }
78
- throw new Error(`unsupported resident value: ${typeof value}`);
79
- }
80
- function encodeInteger(value) {
81
- if (value >= 0 && value <= 0x7f)
82
- return [value];
83
- if (value < 0 && value >= -32)
84
- return [0x100 + value];
85
- if (value >= 0 && value <= 0xff)
86
- return [0xcc, value];
87
- if (value >= 0 && value <= 0xffff)
88
- return [0xcd, value >>> 8, value & 0xff];
89
- if (value >= -0x80 && value < 0)
90
- return [0xd0, value & 0xff];
91
- if (value >= -0x8000 && value < 0)
92
- return [0xd1, (value >>> 8) & 0xff, value & 0xff];
93
- if (value >= 0 && value <= 0xffffffff)
94
- return [0xce, ...u32(value)];
95
- return [0xd3, ...i64(value)];
96
- }
97
- function decodeValue(state, depth) {
98
- if (depth > MAX_DEPTH)
99
- throw new Error("resident value exceeds nesting limit");
100
- const marker = byte(state);
101
- if (marker <= 0x7f)
102
- return marker;
103
- if (marker >= 0xe0)
104
- return marker - 0x100;
105
- if ((marker & 0xe0) === 0xa0)
106
- return string(state, marker & 0x1f);
107
- if ((marker & 0xf0) === 0x90)
108
- return array(state, marker & 0x0f, depth);
109
- if ((marker & 0xf0) === 0x80)
110
- return map(state, marker & 0x0f, depth);
111
- switch (marker) {
112
- case 0xc0: return null;
113
- case 0xc2: return false;
114
- case 0xc3: return true;
115
- case 0xc4: return binary(state, uint(state, 1));
116
- case 0xc5: return binary(state, uint(state, 2));
117
- case 0xc6: return binary(state, uint(state, 4));
118
- case 0xcc: return uint(state, 1);
119
- case 0xcd: return uint(state, 2);
120
- case 0xce: return uint(state, 4);
121
- case 0xcf: return safeInteger(state, false);
122
- case 0xd0: return signed(state, 1);
123
- case 0xd1: return signed(state, 2);
124
- case 0xd2: return signed(state, 4);
125
- case 0xd3: return safeInteger(state, true);
126
- case 0xd9: return string(state, uint(state, 1));
127
- case 0xda: return string(state, uint(state, 2));
128
- case 0xdb: return string(state, uint(state, 4));
129
- case 0xdc: return array(state, uint(state, 2), depth);
130
- case 0xdd: return array(state, uint(state, 4), depth);
131
- case 0xde: return map(state, uint(state, 2), depth);
132
- case 0xdf: return map(state, uint(state, 4), depth);
133
- default: throw new Error(`unsupported resident MessagePack marker 0x${marker.toString(16)}`);
134
- }
135
- }
136
- function byte(state) {
137
- const value = state.bytes[state.offset++];
138
- if (value === undefined)
139
- throw new Error("incomplete resident value");
140
- return value;
141
- }
142
- function uint(state, width) {
143
- let value = 0;
144
- for (let index = 0; index < width; index++)
145
- value = value * 256 + byte(state);
146
- return value;
147
- }
148
- function signed(state, width) {
149
- const value = uint(state, width);
150
- return value >= 2 ** (width * 8 - 1) ? value - 2 ** (width * 8) : value;
151
- }
152
- function safeInteger(state, signedValue) {
153
- const high = uint(state, 4);
154
- const low = uint(state, 4);
155
- const value = high * 0x1_0000_0000 + low;
156
- const resolved = signedValue && high >= 0x80000000 ? value - 0x1_0000_0000_0000_0000 : value;
157
- if (!Number.isSafeInteger(resolved))
158
- throw new Error("resident integer exceeds JavaScript safe range");
159
- return resolved;
160
- }
161
- function string(state, length) {
162
- return Buffer.from(binary(state, length)).toString("utf8");
163
- }
164
- function binary(state, length) {
165
- const end = state.offset + length;
166
- if (end > state.bytes.byteLength)
167
- throw new Error("incomplete resident value");
168
- const value = state.bytes.slice(state.offset, end);
169
- state.offset = end;
170
- return value;
171
- }
172
- function array(state, length, depth) {
173
- if (length > 65_536)
174
- throw new Error("resident collection exceeds limit");
175
- return Array.from({ length }, () => decodeValue(state, depth + 1));
176
- }
177
- function map(state, length, depth) {
178
- if (length > 65_536)
179
- throw new Error("resident collection exceeds limit");
180
- const value = {};
181
- for (let index = 0; index < length; index++) {
182
- const key = decodeValue(state, depth + 1);
183
- if (typeof key !== "string" || Object.hasOwn(value, key))
184
- throw new Error("invalid resident map key");
185
- value[key] = decodeValue(state, depth + 1);
186
- }
187
- return value;
188
- }
189
- function u32(value) { return [(value >>> 24) & 0xff, (value >>> 16) & 0xff, (value >>> 8) & 0xff, value & 0xff]; }
190
- function i64(value) {
191
- const integer = BigInt(value);
192
- const encoded = integer < 0 ? (1n << 64n) + integer : integer;
193
- return Array.from({ length: 8 }, (_, index) => Number((encoded >> BigInt((7 - index) * 8)) & 0xffn));
194
- }
195
- function isRecord(value) { return typeof value === "object" && value !== null && !Array.isArray(value); }
@@ -1,26 +0,0 @@
1
- import { ResidentTabFaultInjection } from "./fault-injection.js";
2
- import { type PromptSubmission, type SessionJournalEntry, type SubmittedPromptRecord } from "./prompt-journal.js";
3
- export interface ResidentTabRecoveredInput {
4
- readonly prompts: readonly SubmittedPromptRecord[];
5
- readonly draft: string | null;
6
- }
7
- export interface ResidentTabAdmission extends Omit<PromptSubmission, "fileExisted" | "incarnation"> {
8
- readonly incarnation: number;
9
- }
10
- export declare class ResidentTabRecovery {
11
- #private;
12
- constructor(dataDir: string, options?: {
13
- readonly faults?: ResidentTabFaultInjection;
14
- readonly onDegraded?: (degraded: boolean) => void;
15
- });
16
- get recovered(): ResidentTabRecoveredInput;
17
- initialize(currentSessionFile?: string | null, currentSessionId?: string | null): Promise<ResidentTabRecoveredInput>;
18
- admit(input: ResidentTabAdmission, timeoutMs?: number): Promise<SubmittedPromptRecord>;
19
- dispatched(): void;
20
- correlated(submissionId: string, entryId: string): Promise<void>;
21
- checkpoint(text: string): void;
22
- settled(sessionFile: string | null): Promise<void>;
23
- gracefulStop(sessionFile: string | null): Promise<void>;
24
- }
25
- /** Reconcile only durable user/assistant ancestry; a torn final JSONL record is not authority. */
26
- export declare function readSessionJournal(path: string): Promise<readonly SessionJournalEntry[]>;
@@ -1,205 +0,0 @@
1
- import { readFile, readdir, stat } from "node:fs/promises";
2
- import { dirname, join, resolve } from "node:path";
3
- import { DraftCheckpointer } from "./draft-checkpoint.js";
4
- import { ResidentTabFaultInjection } from "./fault-injection.js";
5
- import { PromptJournal } from "./prompt-journal.js";
6
- import { SettledTurnSynchronizer, synchronizeSessionFile } from "./session-sync.js";
7
- export class ResidentTabRecovery {
8
- #journal;
9
- #draft;
10
- #synchronizer;
11
- #faults;
12
- #onDegraded;
13
- #active = [];
14
- #recovered = { prompts: [], draft: null };
15
- constructor(dataDir, options = {}) {
16
- const faults = options.faults ?? new ResidentTabFaultInjection();
17
- this.#faults = faults;
18
- this.#onDegraded = options.onDegraded ?? (() => { });
19
- this.#journal = new PromptJournal(join(dataDir, "journal.jsonl"), { faults });
20
- this.#draft = new DraftCheckpointer(join(dataDir, "draft.json"), { faults, onDegraded: this.#onDegraded });
21
- this.#synchronizer = new SettledTurnSynchronizer(this.#journal, faults);
22
- }
23
- get recovered() { return this.#recovered; }
24
- async initialize(currentSessionFile = null, currentSessionId = null) {
25
- await this.#journal.initialize();
26
- await adoptHistoricalJournals(dirname(dirname(this.#journal.path)), this.#journal, currentSessionFile, currentSessionId);
27
- const records = await this.#journal.read();
28
- const sessionFiles = new Set(records.flatMap(record => record.type === "submitted" && record.sessionFile !== null ? [record.sessionFile] : []));
29
- if (currentSessionFile !== null)
30
- sessionFiles.add(currentSessionFile);
31
- const sessionEntries = (await Promise.all([...sessionFiles].map(readSessionJournal))).flat();
32
- const [pending, draft] = await Promise.all([
33
- this.#journal.pending(sessionEntries),
34
- this.#draft.restore(),
35
- ]);
36
- this.#recovered = { prompts: pending.map(value => value.submitted), draft: draft?.text ?? null };
37
- return this.#recovered;
38
- }
39
- async admit(input, timeoutMs = 2_000) {
40
- const fileExisted = input.sessionFile === null ? false : await stat(input.sessionFile).then(() => true, error => {
41
- if (error.code === "ENOENT")
42
- return false;
43
- throw error;
44
- });
45
- let timer;
46
- try {
47
- return await Promise.race([
48
- this.#journal.submit({ ...input, fileExisted }),
49
- new Promise((_, reject) => {
50
- timer = setTimeout(() => reject(new Error("resident prompt journal admission timed out")), timeoutMs);
51
- timer.unref();
52
- }),
53
- ]);
54
- }
55
- finally {
56
- if (timer !== undefined)
57
- clearTimeout(timer);
58
- }
59
- }
60
- dispatched() { this.#faults.at("journal-after-dispatch"); }
61
- async correlated(submissionId, entryId) {
62
- await this.#journal.correlate(submissionId, entryId);
63
- this.#active.push({ id: submissionId, entryId });
64
- }
65
- checkpoint(text) { this.#draft.change(text); }
66
- async settled(sessionFile) {
67
- const active = this.#active.splice(0);
68
- if (active.length === 0 || sessionFile === null)
69
- return;
70
- await this.#synchronizer.settleMany(sessionFile, active);
71
- for (const entry of active)
72
- await this.#journal.retire(entry.id);
73
- await this.#journal.compactIfRetired();
74
- }
75
- async gracefulStop(sessionFile) {
76
- await this.#draft.flush();
77
- if (sessionFile !== null)
78
- await synchronizeSessionFile(sessionFile);
79
- await this.#synchronizer.flush();
80
- }
81
- }
82
- const MAX_SESSION_RECONCILE_BYTES = 64 * 1024 * 1024;
83
- const MAX_ADOPTION_AGE_MS = 7 * 24 * 60 * 60 * 1_000;
84
- async function adoptHistoricalJournals(profileTabsRoot, target, currentSessionFile, currentSessionId) {
85
- if (currentSessionFile === null && currentSessionId === null)
86
- return;
87
- const history = join(profileTabsRoot, "registry-history");
88
- const names = await readdir(history).catch(() => []);
89
- for (const name of names.filter(value => /^tabset-.+\.json$/.test(value)).sort().reverse()) {
90
- const path = join(history, name);
91
- const metadata = await stat(path).catch(() => null);
92
- if (metadata === null || Date.now() - metadata.mtimeMs > MAX_ADOPTION_AGE_MS)
93
- continue;
94
- let document;
95
- try {
96
- document = JSON.parse(await readFile(path, "utf8"));
97
- }
98
- catch {
99
- continue;
100
- }
101
- const tabs = typeof document === "object" && document !== null && Array.isArray(document.tabs)
102
- ? document.tabs : [];
103
- for (const value of tabs) {
104
- if (typeof value !== "object" || value === null)
105
- continue;
106
- const tab = value;
107
- if (typeof tab.tabId !== "string")
108
- continue;
109
- const fileMatches = currentSessionFile !== null && typeof tab.sessionFile === "string"
110
- && resolve(tab.sessionFile) === resolve(currentSessionFile);
111
- const sourcePath = join(profileTabsRoot, tab.tabId, "journal.jsonl");
112
- if (resolve(sourcePath) === resolve(target.path))
113
- continue;
114
- if (!await stat(sourcePath).then(() => true, () => false))
115
- continue;
116
- const source = new PromptJournal(sourcePath);
117
- await source.initialize();
118
- const records = await source.read();
119
- const submitted = records.filter((record) => record.type === "submitted");
120
- const idMatches = currentSessionId !== null && submitted.some(record => record.sessionId === currentSessionId);
121
- if (!fileMatches && !idMatches)
122
- continue;
123
- const pending = await source.pending(currentSessionFile === null ? [] : await readSessionJournal(currentSessionFile));
124
- for (const entry of pending) {
125
- await target.adopt(entry.submitted);
126
- await source.retire(entry.submitted.id);
127
- }
128
- }
129
- }
130
- }
131
- /** Reconcile only durable user/assistant ancestry; a torn final JSONL record is not authority. */
132
- export async function readSessionJournal(path) {
133
- let text;
134
- try {
135
- const metadata = await stat(path);
136
- if (metadata.size > MAX_SESSION_RECONCILE_BYTES)
137
- throw new Error("resident session exceeds the recovery scan limit");
138
- text = await readFile(path, "utf8");
139
- }
140
- catch (error) {
141
- if (error.code === "ENOENT")
142
- return [];
143
- throw error;
144
- }
145
- const raw = [];
146
- const lines = text.split("\n");
147
- for (let index = 0; index < lines.length; index += 1) {
148
- const line = lines[index];
149
- if (line.length === 0)
150
- continue;
151
- let value;
152
- try {
153
- value = JSON.parse(line);
154
- }
155
- catch (error) {
156
- if (index === lines.length - 1 && !text.endsWith("\n"))
157
- break;
158
- throw error;
159
- }
160
- if (typeof value !== "object" || value === null)
161
- continue;
162
- const record = value;
163
- const message = typeof record.message === "object" && record.message !== null
164
- ? record.message
165
- : null;
166
- if (record.type !== "message" || typeof record.id !== "string" || message === null
167
- || typeof message.role !== "string")
168
- continue;
169
- const content = message.content;
170
- const promptText = typeof content === "string" ? content : Array.isArray(content)
171
- ? content.flatMap(part => typeof part === "object" && part !== null
172
- && part.type === "text"
173
- && typeof part.text === "string"
174
- ? [part.text] : []).join("")
175
- : "";
176
- raw.push({
177
- id: record.id,
178
- parentId: typeof record.parentId === "string" ? record.parentId : null,
179
- role: message.role,
180
- text: promptText,
181
- });
182
- }
183
- const byId = new Map(raw.map(record => [record.id, record]));
184
- const settled = new Set();
185
- for (const record of raw) {
186
- if (record.role !== "assistant")
187
- continue;
188
- let parent = record.parentId;
189
- const visited = new Set();
190
- while (parent !== null && !visited.has(parent)) {
191
- visited.add(parent);
192
- const ancestor = byId.get(parent);
193
- if (ancestor === undefined)
194
- break;
195
- if (ancestor.role === "user") {
196
- settled.add(ancestor.id);
197
- break;
198
- }
199
- parent = ancestor.parentId;
200
- }
201
- }
202
- return raw
203
- .filter(record => record.role === "user")
204
- .map(record => ({ entryId: record.id, text: record.text, settled: settled.has(record.id) }));
205
- }
@@ -1,28 +0,0 @@
1
- import { type TerminalHostCommand } from "./ensure-terminal-host.js";
2
- export interface ResidentReleaseHoldReport {
3
- /** False when any resident record or identity could not be verified; callers then keep every release. */
4
- readonly complete: boolean;
5
- readonly releaseRoots: readonly string[];
6
- readonly uncertain: readonly string[];
7
- }
8
- export interface ResidentReleaseHoldOptions {
9
- readonly dataDir: string;
10
- /** Installed release roots whose terminal host may answer, in preference order. */
11
- readonly releaseRoots: readonly string[];
12
- readonly platform?: NodeJS.Platform;
13
- readonly architecture?: string;
14
- readonly timeoutMs?: number;
15
- readonly verify?: (addon: string, platform: NodeJS.Platform, architecture: string) => Promise<unknown>;
16
- readonly run?: (command: TerminalHostCommand, arguments_: readonly string[], timeoutMs: number) => Promise<{
17
- readonly code: number;
18
- readonly stdout: string;
19
- }>;
20
- }
21
- /**
22
- * Reports the releases that live resident processes run from, read-only. The verified terminal
23
- * host inspects its own records, so pid reuse and identity formats are judged exactly as the
24
- * server judges them. No records means nothing to hold; any doubt yields an incomplete report.
25
- */
26
- export declare function readResidentReleaseHolds(options: ResidentReleaseHoldOptions): Promise<ResidentReleaseHoldReport>;
27
- /** The largest release-hold report accepted from the terminal host. */
28
- export declare const MAX_RELEASE_HOLD_REPORT_BYTES: number;
@@ -1,78 +0,0 @@
1
- import { readdir } from "node:fs/promises";
2
- import { resolve } from "node:path";
3
- import { PRODUCT_IDENTITY } from "../../product-identity.js";
4
- import { runBoundedHostCommand } from "./bounded-host-command.js";
5
- import { resolveTerminalHostEntryPath, resolveTerminalHostPath } from "./ensure-terminal-host.js";
6
- import { verifyTerminalHostArtifact } from "./terminal-host-artifact.js";
7
- const COMPLETE_EMPTY = Object.freeze({ complete: true, releaseRoots: Object.freeze([]), uncertain: Object.freeze([]) });
8
- /**
9
- * Reports the releases that live resident processes run from, read-only. The verified terminal
10
- * host inspects its own records, so pid reuse and identity formats are judged exactly as the
11
- * server judges them. No records means nothing to hold; any doubt yields an incomplete report.
12
- */
13
- export async function readResidentReleaseHolds(options) {
14
- if (!await hasResidentRecords(options.dataDir))
15
- return COMPLETE_EMPTY;
16
- const platform = options.platform ?? process.platform;
17
- const architecture = options.architecture ?? process.arch;
18
- const verify = options.verify ?? verifyTerminalHostArtifact;
19
- let command;
20
- for (const root of options.releaseRoots) {
21
- const candidate = resolveTerminalHostPath(root, {}, platform, architecture);
22
- try {
23
- await verify(candidate, platform, architecture);
24
- command = { executable: process.execPath, entry: resolveTerminalHostEntryPath(root) };
25
- break;
26
- }
27
- catch {
28
- // Rationale: an older release may predate the packaged host; another retained release may still carry it.
29
- }
30
- }
31
- if (!command)
32
- return incomplete("no verified terminal host is installed to inspect resident records");
33
- try {
34
- const result = await (options.run ?? runHost)(command, ["release-holds", "--data-dir", options.dataDir], options.timeoutMs ?? 5_000);
35
- const report = JSON.parse(result.stdout.trim().split(/\r?\n/u).at(-1) ?? "");
36
- if (result.code !== 0 || report.schema !== "a1-resident-release-holds-v1" || typeof report.complete !== "boolean"
37
- || !isStringArray(report.releaseRoots) || !isStringArray(report.uncertain)) {
38
- return incomplete("terminal host returned no valid release-hold report");
39
- }
40
- return { complete: report.complete, releaseRoots: report.releaseRoots, uncertain: report.uncertain };
41
- }
42
- catch {
43
- return incomplete("terminal host release-hold inspection failed");
44
- }
45
- }
46
- async function hasResidentRecords(dataDir) {
47
- for (const directory of ["tabs", "resident-workspaces"]) {
48
- try {
49
- // Invariant: native inspection, not a following stat, judges unknown or linked entries.
50
- if ((await readdir(resolve(dataDir, directory))).length > 0)
51
- return true;
52
- }
53
- catch (error) {
54
- if (!(error instanceof Error && "code" in error && error.code === "ENOENT"))
55
- return true;
56
- }
57
- }
58
- return false;
59
- }
60
- function incomplete(reason) {
61
- return { complete: false, releaseRoots: [], uncertain: [reason] };
62
- }
63
- function isStringArray(value) {
64
- return Array.isArray(value) && value.every(item => typeof item === "string");
65
- }
66
- /** The largest release-hold report accepted from the terminal host. */
67
- export const MAX_RELEASE_HOLD_REPORT_BYTES = 1024 * 1024;
68
- async function runHost(command, arguments_, timeoutMs) {
69
- const environment = { ...process.env };
70
- delete environment[PRODUCT_IDENTITY.environment.developmentInstanceId];
71
- delete environment[PRODUCT_IDENTITY.environment.terminalHostPath];
72
- return await runBoundedHostCommand(command, arguments_, {
73
- environment,
74
- maxStdoutBytes: MAX_RELEASE_HOLD_REPORT_BYTES,
75
- timeoutMs,
76
- label: "terminal host release-hold inspection",
77
- });
78
- }
@@ -1,5 +0,0 @@
1
- /** The owned screens the server opens in a utility tab; each names its tab id stem, `<route>-…`. */
2
- export type ResidentTabRoute = "settings" | "changelog";
3
- export declare const RESIDENT_TAB_ROUTES: readonly ResidentTabRoute[];
4
- /** The utility route whose screen is the resident tab `tabId`, or `null` for an Agent tab. */
5
- export declare function residentUtilityRoute(tabId: string): ResidentTabRoute | null;
@@ -1,5 +0,0 @@
1
- export const RESIDENT_TAB_ROUTES = ["settings", "changelog"];
2
- /** The utility route whose screen is the resident tab `tabId`, or `null` for an Agent tab. */
3
- export function residentUtilityRoute(tabId) {
4
- return RESIDENT_TAB_ROUTES.find(route => tabId.startsWith(`${route}-`)) ?? null;
5
- }
@@ -1,11 +0,0 @@
1
- import type { EnsureTerminalHostResult } from "./ensure-terminal-host.js";
2
- export interface ResidentHostSelectionOptions {
3
- readonly profileId: "a1" | "pi";
4
- readonly currentLaunchContract: boolean;
5
- readonly solo: boolean;
6
- /** Both standard input and standard output are terminals the attach client can own. */
7
- readonly interactive: boolean;
8
- readonly ensureHost: () => Promise<EnsureTerminalHostResult>;
9
- }
10
- /** Invariant: comparison, solo, and superseded launches stay outside resident discovery and startup. */
11
- export declare function selectResidentHost(options: ResidentHostSelectionOptions): Promise<EnsureTerminalHostResult | null>;
@@ -1,10 +0,0 @@
1
- /** Invariant: comparison, solo, and superseded launches stay outside resident discovery and startup. */
2
- export async function selectResidentHost(options) {
3
- if (options.profileId !== "a1" || options.solo || !options.currentLaunchContract)
4
- return null;
5
- // Platform: the attach client reads the outer terminal's size and owns its raw input, so piped
6
- // or redirected launches run the direct UI, which already serves non-terminal streams.
7
- if (!options.interactive)
8
- return { status: "fallback", reason: "no interactive terminal" };
9
- return await options.ensureHost();
10
- }
@@ -1,38 +0,0 @@
1
- import { type MaintenanceOptions, type MaintenanceReport } from "./maintenance.js";
2
- /** Mandatory native control semantics; optional methods never establish source authority. */
3
- export declare const RUNTIME_CONTROL_API = "resident-control-v1";
4
- export declare const RUNTIME_CONTROL_CORE: readonly ["attach", "tab.list", "tab.view", "input", "resize", "detach", "controller-boundary"];
5
- export interface RuntimeControlIdentity {
6
- readonly releaseId: string;
7
- readonly scope: string;
8
- readonly epoch: number;
9
- readonly bootId: string;
10
- readonly osSessionId: string;
11
- }
12
- export interface RuntimeControlDescription extends RuntimeControlIdentity {
13
- readonly api: typeof RUNTIME_CONTROL_API;
14
- readonly generation: 1;
15
- readonly core: readonly string[];
16
- readonly frameLimit: number;
17
- readonly inputLimit: number;
18
- readonly retryInput: false;
19
- }
20
- export type RuntimeControlVerdict = {
21
- readonly status: "compatible";
22
- readonly contract: RuntimeControlDescription;
23
- } | {
24
- readonly status: "blocked";
25
- readonly reason: "unavailable" | "invalid-contract" | "unsupported-api" | "source-mismatch" | "stale-epoch" | "missing-core";
26
- };
27
- /**
28
- * Validates an authenticated source's descriptor against separately verified source custody.
29
- * This is not an activation verdict: the caller must also reconcile every live tab and fence
30
- * changes to that topology before committing a client selection.
31
- */
32
- export declare function assessRuntimeControl(value: unknown, expected: RuntimeControlIdentity): RuntimeControlVerdict;
33
- export interface ReadRuntimeControlOptions extends Omit<MaintenanceOptions, "action" | "tabId"> {
34
- readonly expected: RuntimeControlIdentity;
35
- readonly maintain?: (options: MaintenanceOptions) => Promise<MaintenanceReport>;
36
- }
37
- /** A bounded read-only authenticated exchange; it never starts a host or substitutes a release. */
38
- export declare function readRuntimeControl(options: ReadRuntimeControlOptions): Promise<RuntimeControlVerdict>;