@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,17 +1,11 @@
1
1
  import { spawn } from "node:child_process";
2
- import { RESIDENT_DETACH_INTERVAL_MS, restoreAfterOwnedExit } from "../terminal-cleanup/index.js";
3
- import { chmod, mkdir, readFile, rm, writeFile } from "node:fs/promises";
4
- import { connect } from "node:net";
2
+ import { randomUUID } from "node:crypto";
3
+ import { deliverExitNotice, restoreAfterOwnedExit } from "../terminal-cleanup/index.js";
4
+ import { chmod, mkdir, readFile, writeFile } from "node:fs/promises";
5
5
  import { resolve } from "node:path";
6
- import { selectCohortLaunch } from "./cohort-selection.js";
7
- import { recoverSupervisorEndpoint } from "./endpoint-recovery.js";
8
6
  import { selectOrdinaryLaunchReleaseId } from "./ordinary-launch-selection.js";
9
- import { releaseChannelOf } from "./latest-release.js";
10
- import { CohortStateStore } from "./cohort-state.js";
11
- import { assertLaunchProfileId, createSupervisorStartupAttempt, readSupervisorStartupResult, resolveCohortEndpoint, resolveProductPaths, sessionSelectionArguments } from "../lifecycle/index.js";
12
- import { encodeFrame, LineFrameDecoder } from "../protocol/index.js";
13
- import { cleanupProvenIdleOwner, processIsAlive } from "./process-cleanup.js";
14
- import { probeOwnership, readEndpointMetadata, removeEndpointArtifacts, sweepDeadEndpoints } from "./endpoints.js";
7
+ import { ReleaseStateStore } from "./release-state.js";
8
+ import { assertLaunchProfileId, resolveProductPaths, sessionSelectionArguments } from "../lifecycle/index.js";
15
9
  import { UpdateTransactionStore } from "./update-transaction.js";
16
10
  import { selectUpdateLaunchRelease } from "./update-launch.js";
17
11
  import { assertCertifiedFilesPresent, consumeMaterializationProof, materializeRelease, readCertifiedReleaseManifest, readMaterializedRelease, repairMaterializedRelease, resolveReleaseEntryPoint, verifyMaterializedRelease } from "./release-store.js";
@@ -19,25 +13,14 @@ import { scheduleReleaseCleanup } from "./release-gc.js";
19
13
  import { createRestartSeal, readRestartCertifiedRelease, releaseCertificationDocument } from "./restart-certification.js";
20
14
  import { PRODUCT_IDENTITY, PRODUCT_TEXT } from "../../product-identity.js";
21
15
  import { markStartupPhase } from "../startup/index.js";
22
- import { PRIVATE_ENVIRONMENT, isCurrentLaunchContract, launchContractTarget, readLaunchContext, withLaunchContext } from "../launch-context/index.js";
23
- import { assertResidentContinuity, ensureTerminalHost, readResidentTabLaunchSettings, selectResidentHost } from "../resident-tabs/index.js";
16
+ import { launchContractTarget, readLaunchContext, withLaunchContext } from "../launch-context/index.js";
24
17
  const RELEASE_RESELECTION_MESSAGE = "a1-release-reselection";
25
18
  export async function runBootstrap(options) {
26
- try {
27
- return await runBootstrapAttempt(options, 1);
28
- }
29
- catch (error) {
30
- if (!(error instanceof Error && "code" in error && typeof error.code === "string" && error.code.startsWith("SUPERVISOR_RECOVERY_")))
31
- throw error;
32
- // Rationale: actionable recovery failures are a single line, not an uncaught Node stack trace.
33
- (options.output ?? process.stderr).write(`${PRODUCT_TEXT.diagnostic(error.message)}\n`);
34
- return 1;
35
- }
19
+ return await runBootstrapAttempt(options, 1);
36
20
  }
37
21
  async function runBootstrapAttempt(options, retriesRemaining) {
38
22
  const launchProfileId = options.launchIntent?.profileId ?? "a1";
39
- const launchMode = options.launchIntent?.launchMode ?? (launchProfileId === "a1" ? "tabs" : "solo");
40
- const environment = withLaunchContext(options.environment ?? process.env, { launchProfile: launchProfileId, launchMode });
23
+ const environment = withLaunchContext(options.environment ?? process.env, { launchProfile: launchProfileId });
41
24
  await markStartupPhase(environment, "bootstrap-start");
42
25
  assertLaunchProfileId(launchProfileId);
43
26
  const sessionArgs = sessionSelectionArguments(options.launchIntent?.sessionSelection);
@@ -48,8 +31,7 @@ async function runBootstrapAttempt(options, retriesRemaining) {
48
31
  const paths = resolveProductPaths(environment);
49
32
  await mkdir(paths.runtimeDir, { recursive: true, mode: 0o700 });
50
33
  const launchSelected = async (release) => {
51
- const residentContext = await residentLaunchContext(options, release, environment);
52
- const result = await launchUi(release, environment, sessionArgs, residentContext);
34
+ const result = await launchUi(release, environment, sessionArgs, paths.runtimeDir);
53
35
  if (!result.releaseSuperseded)
54
36
  return result.code;
55
37
  if (retriesRemaining > 0)
@@ -57,7 +39,7 @@ async function runBootstrapAttempt(options, retriesRemaining) {
57
39
  output.write(`${PRODUCT_TEXT.diagnostic("active release changed repeatedly during startup; launch could not converge")}\n`);
58
40
  return 1;
59
41
  };
60
- const stateStore = new CohortStateStore(paths.dataDir);
42
+ const stateStore = new ReleaseStateStore(paths.dataDir);
61
43
  let state = await stateStore.read();
62
44
  const launchDuringUpdate = async () => {
63
45
  // Concurrency: read the journal before touching npm's mutable tree, including package.json.
@@ -68,41 +50,16 @@ async function runBootstrapAttempt(options, retriesRemaining) {
68
50
  if (!prior)
69
51
  return null;
70
52
  const retained = await readCertifiedReleaseManifest(prior, resolve(paths.dataDir, "releases"));
71
- await ensureSupervisor(retained, environment);
72
53
  return await launchSelected(retained);
73
54
  };
74
55
  const duringUpdate = await launchDuringUpdate();
75
56
  if (duringUpdate !== null)
76
57
  return duringUpdate;
77
- // Invariant: records left by cohorts whose processes are gone say nothing about ownership, and there
78
- // can now be several of them. Clearing them first keeps the decision below about what is
79
- // actually running.
80
- await sweepDeadEndpoints(paths).catch(() => []);
81
- // Performance: reconciliation is serialized by cohort state, but launch never awaits a physical
58
+ // Performance: reconciliation is serialized by the release state lock, but launch never awaits a physical
82
59
  // backlog. The scheduler commits a plan and starts a detached bounded worker.
83
60
  const scheduleMaintenance = options.scheduleMaintenance ?? scheduleReleaseCleanup;
84
61
  void scheduleMaintenance(paths.dataDir, paths).catch(() => { });
85
- // Protocol: each cohort keeps its own endpoint, so a launch looks for the endpoint of the release it
86
- // is about to run rather than for the one endpoint the runtime directory used to have.
87
- const activeReleaseId = state.references.active;
88
- let endpointPaths = activeReleaseId === null
89
- ? { endpoint: paths.endpoint, endpointMetadataPath: paths.endpointMetadataPath }
90
- : resolveCohortEndpoint(paths, activeReleaseId, environment);
91
- let endpoint = await readEndpointMetadata(endpointPaths.endpointMetadataPath);
92
- if (endpoint === null) {
93
- // Compatibility: a release that predates cohort-scoped endpoints published one endpoint for the whole
94
- // runtime directory. Recognizing it is what lets a session started by that release keep
95
- // working through the first launch that knows about cohorts.
96
- const legacy = await readEndpointMetadata(paths.endpointMetadataPath);
97
- if (legacy !== null) {
98
- endpoint = legacy;
99
- endpointPaths = { endpoint: paths.endpoint, endpointMetadataPath: paths.endpointMetadataPath };
100
- }
101
- }
102
- let probe = endpoint ? await probeOwnership(endpoint) : "dead";
103
62
  const installedVersion = await readInstalledVersion(options.packageRoot);
104
- if (releaseChannelOf(installedVersion) !== null)
105
- environment[PRIVATE_ENVIRONMENT.updateVersion] = installedVersion;
106
63
  const activeId = state.references.active;
107
64
  const active = activeId === null ? undefined : state.releases[activeId];
108
65
  let activeIsLaunchable = active === undefined || (options.releaseIsLaunchable?.(active.releaseRoot) ?? true);
@@ -123,16 +80,7 @@ async function runBootstrapAttempt(options, retriesRemaining) {
123
80
  }
124
81
  }
125
82
  if (activeIsLaunchable && active?.approval === "approved" && active.packageVersion === installedVersion) {
126
- const endpointMatches = endpoint?.releaseId === active.releaseId
127
- && endpoint.releaseRoot === active.releaseRoot
128
- && endpoint.contentDigest === active.contentDigest;
129
- if (endpointMatches && probe === "live-verified") {
130
- const retained = await readCertifiedReleaseManifest(active, resolve(paths.dataDir, "releases"));
131
- return await launchSelected(retained);
132
- }
133
- if (endpoint === null || probe === "dead") {
134
- if (endpoint)
135
- await removeEndpointArtifacts(endpointPaths.endpointMetadataPath, endpointPaths.endpoint, endpoint);
83
+ {
136
84
  await markStartupPhase(environment, "durable-validation-start");
137
85
  const retained = await readRestartCertifiedRelease(active, paths.dataDir).catch(async () => {
138
86
  let verified;
@@ -149,9 +97,6 @@ async function runBootstrapAttempt(options, retriesRemaining) {
149
97
  }).catch(() => null);
150
98
  if (retained !== null) {
151
99
  await markStartupPhase(environment, "durable-validation-complete");
152
- await markStartupPhase(environment, "replacement-supervisor-start");
153
- await ensureSupervisor(retained, environment);
154
- await markStartupPhase(environment, "replacement-supervisor-ready");
155
100
  return await launchSelected(retained);
156
101
  }
157
102
  activeIsLaunchable = false;
@@ -167,7 +112,7 @@ async function runBootstrapAttempt(options, retriesRemaining) {
167
112
  candidate = await materializeRelease(options.packageRoot, paths.dataDir);
168
113
  }
169
114
  catch (error) {
170
- const fallback = await launchRetainedActive(state, paths, environment, launchSelected, excludedRetainedReleaseId);
115
+ const fallback = await launchRetainedActive(state, paths, launchSelected, excludedRetainedReleaseId);
171
116
  if (fallback === null)
172
117
  throw error;
173
118
  return fallback;
@@ -185,7 +130,6 @@ async function runBootstrapAttempt(options, retriesRemaining) {
185
130
  if (!retainedRecord || retainedRecord.approval !== "approved")
186
131
  throw new Error("selected active release is not approved");
187
132
  const retained = await readCertifiedReleaseManifest(retainedRecord, resolve(paths.dataDir, "releases"));
188
- await ensureSupervisor(retained, environment);
189
133
  return await launchSelected(retained);
190
134
  }
191
135
  await stateStore.recordCandidate(candidate);
@@ -194,148 +138,29 @@ async function runBootstrapAttempt(options, retriesRemaining) {
194
138
  const diagnosticsPath = await certifyMaterializedRelease(candidate, paths.dataDir);
195
139
  await stateStore.approve(candidate.releaseId, diagnosticsPath);
196
140
  }
197
- try {
198
- await assertResidentContinuity({ releaseRoot: candidate.releaseRoot, dataDir: paths.dataDir, environment,
199
- profileRoot: environment[PRODUCT_IDENTITY.environment.profileHome] ?? paths.configDir, runtimeDir: paths.runtimeDir });
200
- }
201
- catch (error) {
202
- const fallback = await launchRetainedActive(await stateStore.read(), paths, environment, launchSelected, excludedRetainedReleaseId);
203
- if (fallback !== null)
204
- return fallback;
205
- throw error;
206
- }
207
141
  state = await stateStore.activateForLaunch(candidate.releaseId, !activeIsLaunchable ? activeId ?? undefined : undefined);
208
142
  if (state.references.active !== candidate.releaseId) {
209
143
  const retainedRecord = state.references.active === null ? undefined : state.releases[state.references.active];
210
144
  if (!retainedRecord || retainedRecord.approval !== "approved")
211
145
  throw new Error("ordinary launch has no approved active release");
212
146
  const retained = await readCertifiedReleaseManifest(retainedRecord, resolve(paths.dataDir, "releases"));
213
- await ensureSupervisor(retained, environment);
214
147
  return await launchSelected(retained);
215
148
  }
216
- // Protocol: the candidate's own endpoint decides whether this launch attaches or starts a supervisor.
217
- // A cohort other than this one is not in the way: it listens somewhere else.
218
- endpointPaths = resolveCohortEndpoint(paths, candidate.releaseId, environment);
219
- endpoint = await readEndpointMetadata(endpointPaths.endpointMetadataPath);
220
- if (endpoint === null) {
221
- const legacy = await readEndpointMetadata(paths.endpointMetadataPath);
222
- if (legacy?.releaseId === candidate.releaseId) {
223
- endpoint = legacy;
224
- endpointPaths = { endpoint: paths.endpoint, endpointMetadataPath: paths.endpointMetadataPath };
225
- }
226
- }
227
- probe = endpoint ? await probeOwnership(endpoint) : "dead";
228
- let decision = selectCohortLaunch(candidate, state, endpoint, probe);
229
- if (decision.action === "blocked") {
230
- // Concurrency: reread through the common recovery path rather than fail on an old snapshot.
231
- await ensureSupervisor(candidate, environment);
232
- return await launchSelected(candidate);
233
- }
234
- if (endpoint && probe === "dead") {
235
- await removeEndpointArtifacts(endpointPaths.endpointMetadataPath, endpointPaths.endpoint, endpoint);
236
- }
237
- if (decision.action === "launch-retained-ui") {
238
- const retainedRecord = state.releases[decision.releaseId];
239
- const retained = retainedRecord?.approval === "approved"
240
- ? await readCertifiedReleaseManifest(retainedRecord, resolve(paths.dataDir, "releases"))
241
- : await verifyMaterializedRelease(decision.releaseRoot, undefined, resolve(paths.dataDir, "releases"));
242
- if (decision.recordPending && endpoint) {
243
- await stateStore.blockPending("candidate activation deferred by live non-resumable instances", endpoint.ownership.nonResumableInstanceIds);
244
- }
245
- const code = await launchSelected(retained);
246
- if (decision.recordPending)
247
- await activatePendingAfterBlockerExit(candidate, stateStore, paths, environment);
248
- return code;
249
- }
250
- if (decision.action === "replace-idle-cohort" && endpoint) {
251
- const diagnosticsPath = await certifyMaterializedRelease(candidate, paths.dataDir);
252
- await stateStore.approve(candidate.releaseId, diagnosticsPath);
253
- const released = await requestIdleOwnershipRelease(endpoint, candidate.releaseId, 2_000);
254
- if (!released) {
255
- await stateStore.blockPending("idle supervisor did not verify ownership release", endpoint.ownership.liveInstanceIds);
256
- output.write(`${PRODUCT_TEXT.diagnostic("could not verify idle cohort ownership release; the retained release remains selected.")}\n`);
257
- return 1;
258
- }
259
- if (!await releaseVerifiedIdleOwner(endpoint, paths.dataDir)) {
260
- await stateStore.blockPending("idle supervisor acknowledged release but did not terminate", endpoint.ownership.liveInstanceIds);
261
- output.write(`${PRODUCT_TEXT.diagnostic("could not complete bounded idle cohort shutdown; the candidate remains pending.")}\n`);
262
- return 1;
263
- }
264
- await removeEndpointArtifacts(endpointPaths.endpointMetadataPath, endpointPaths.endpoint, endpoint);
265
- await stateStore.activate(candidate.releaseId);
266
- decision = { action: "activate-candidate", releaseId: candidate.releaseId, releaseRoot: candidate.releaseRoot, reason: "idle cohort released ownership" };
267
- }
268
- let selected;
269
- if (decision.action === "activate-candidate") {
270
- const current = await stateStore.read();
271
- if (current.releases[candidate.releaseId]?.approval !== "approved") {
272
- const diagnosticsPath = await certifyMaterializedRelease(candidate, paths.dataDir);
273
- await stateStore.approve(candidate.releaseId, diagnosticsPath);
274
- }
275
- const activated = (await stateStore.read()).references.active === candidate.releaseId
276
- ? await stateStore.read()
277
- : await stateStore.activateForLaunch(candidate.releaseId);
278
- if (activated.references.active === candidate.releaseId)
279
- selected = candidate;
280
- else {
281
- const retainedRecord = activated.references.active === null ? undefined : activated.releases[activated.references.active];
282
- if (!retainedRecord || retainedRecord.approval !== "approved")
283
- throw new Error("ordinary launch has no approved active release");
284
- selected = await readCertifiedReleaseManifest(retainedRecord, resolve(paths.dataDir, "releases"));
285
- }
286
- }
287
- else {
288
- selected = await readMaterializedRelease(decision.releaseRoot);
289
- }
290
- await ensureSupervisor(selected, environment);
291
- return await launchSelected(selected);
292
- }
293
- /** Select only client routing; a resident reconnect never asks execution to restart. */
294
- async function residentLaunchContext(options, release, environment) {
295
- const paths = resolveProductPaths(environment);
296
- const profileId = options.launchIntent?.profileId ?? "a1";
297
- const mode = options.launchIntent?.launchMode ?? (profileId === "a1" ? "tabs" : "solo");
298
- const agentProfileDir = environment.PI_CODING_AGENT_DIR ?? paths.configDir;
299
- const residentLaunchSettings = profileId === "a1" ? readResidentTabLaunchSettings(agentProfileDir, PRODUCT_IDENTITY.commandName, paths.configDir, profileId) : null;
300
- const resident = await selectResidentHost({
301
- profileId, currentLaunchContract: isCurrentLaunchContract(release), solo: mode === "solo",
302
- interactive: options.interactiveTerminal ?? (process.stdin.isTTY === true && process.stdout.isTTY === true),
303
- ensureHost: async () => (options.ensureTerminalHost ?? ensureTerminalHost)({
304
- releaseRoot: release.releaseRoot, profileRoot: environment[PRODUCT_IDENTITY.environment.profileHome] ?? paths.configDir,
305
- dataDir: paths.dataDir, runtimeDir: paths.runtimeDir, environment,
306
- maxConcurrentStarts: (await residentLaunchSettings).maxConcurrentStarts, unresponsiveRestartSeconds: (await residentLaunchSettings).unresponsiveRestartSeconds,
307
- }),
308
- });
309
- if (resident === null)
310
- return {};
311
- if (resident.status !== "ready")
312
- return { residentFallback: resident.reason };
313
- return {
314
- residentRootExecutable: resident.executable.executable,
315
- residentRootArguments: JSON.stringify([
316
- resident.executable.entry, "attach", "--workspace", "--endpoint", resident.endpoint,
317
- "--cwd", process.cwd(), "--clear-exit-ms", String(RESIDENT_DETACH_INTERVAL_MS),
318
- "--profile", environment[PRODUCT_IDENTITY.environment.profileHome] ?? paths.configDir,
319
- "--settings-file", resolve(agentProfileDir, "settings.json"), "--accent-color", (await residentLaunchSettings).accentColor,
320
- "--data-dir", paths.dataDir, "--runtime-dir", paths.runtimeDir,
321
- "--release-root", release.releaseRoot, "--node-executable", process.execPath,
322
- ]),
323
- };
149
+ return await launchSelected(candidate);
324
150
  }
325
151
  /**
326
- * Start the retained active cohort when the installed payload cannot be taken. The
152
+ * Start the retained active release when the installed payload cannot be taken. The
327
153
  * release already carries certified evidence, so this reuses it rather than
328
154
  * certifying anything new, and reports no selection when there is nothing safe
329
155
  * to fall back to.
330
156
  */
331
- async function launchRetainedActive(state, paths, environment, launch, excludedReleaseId) {
157
+ async function launchRetainedActive(state, paths, launch, excludedReleaseId) {
332
158
  const activeId = state.references.active;
333
159
  const active = activeId === null ? undefined : state.releases[activeId];
334
160
  if (!active || active.approval !== "approved" || active.releaseId === excludedReleaseId)
335
161
  return null;
336
162
  try {
337
163
  const retained = await readCertifiedReleaseManifest(active, resolve(paths.dataDir, "releases"));
338
- await ensureSupervisor(retained, environment);
339
164
  return await launch(retained);
340
165
  }
341
166
  catch {
@@ -376,50 +201,23 @@ export async function recordParentCertifiedRelease(release, dataDir) {
376
201
  await chmod(path, 0o400);
377
202
  return path;
378
203
  }
379
- /** Reuse a verified owner, or join the winner if another launch starts the same cohort first. */
380
- export async function ensureSupervisor(release, environment) {
381
- const paths = resolveCohortEndpoint(resolveProductPaths(environment), release.releaseId, environment);
382
- await recoverSupervisorEndpoint({
383
- metadataPath: paths.endpointMetadataPath,
384
- endpoint: paths.endpoint,
385
- matches: metadata => endpointMatchesRelease(metadata, release),
386
- startAndWait: async () => {
387
- const startup = await startSupervisor(release, environment);
388
- await waitForVerifiedEndpoint(paths.endpointMetadataPath, release, 8_000, startup);
389
- },
390
- });
391
- }
392
- function endpointMatchesRelease(metadata, release) {
393
- return metadata.releaseId === release.releaseId && metadata.releaseRoot === release.releaseRoot
394
- && metadata.contentDigest === release.contentDigest;
395
- }
396
- export async function startSupervisor(release, environment) {
397
- const entry = await resolveReleaseEntryPoint(release, "bin/supervisor.js");
398
- const paths = resolveProductPaths(environment);
399
- const attempt = await createSupervisorStartupAttempt(paths.runtimeDir, release.releaseId);
400
- const child = spawn(process.execPath, [entry, "--startup-attempt", attempt.attemptId], {
401
- detached: true,
402
- env: releaseEnvironment(environment, release),
403
- stdio: "ignore",
404
- windowsHide: true,
405
- });
406
- const childOutcome = new Promise(resolvePromise => {
407
- child.once("close", (exitCode, signal) => resolvePromise({ exitCode, signal }));
408
- });
409
- await new Promise((resolvePromise, rejectPromise) => {
410
- child.once("spawn", resolvePromise);
411
- child.once("error", rejectPromise);
412
- });
413
- child.unref();
414
- return { ...attempt, childOutcome };
415
- }
416
- async function launchUi(release, environment, sessionArgs, residentContext = {}) {
204
+ /**
205
+ * Run the selected release's UI as the one attached child. The launcher still owns the terminal,
206
+ * so when the child ends uncleanly it restores the terminal and prints any notice the UI left armed.
207
+ */
208
+ async function launchUi(release, environment, sessionArgs, runtimeDir) {
417
209
  await markStartupPhase(environment, "bootstrap-selected");
418
- const entry = await resolveReleaseEntryPoint(release, "bin/guardian.js");
210
+ const entry = await resolveReleaseEntryPoint(release, "bin/ui.js");
211
+ const ownsTerminal = readLaunchContext(environment).launchProfile === "a1";
212
+ const noticeDirectory = resolve(runtimeDir, "exit-notices");
213
+ const noticePath = resolve(noticeDirectory, `${randomUUID()}.notice`);
214
+ if (ownsTerminal)
215
+ await mkdir(noticeDirectory, { recursive: true, mode: 0o700 });
216
+ const launchEnvironment = releaseEnvironment(environment, release, readLaunchContext(environment, "profile").launchProfile);
217
+ if (ownsTerminal)
218
+ launchEnvironment[PRODUCT_IDENTITY.environment.exitNoticePath] = noticePath;
419
219
  return await new Promise((resolvePromise, rejectPromise) => {
420
220
  let releaseSuperseded = false;
421
- const releaseEnv = releaseEnvironment(environment, release, readLaunchContext(environment, "profile").launchProfile);
422
- const launchEnvironment = Object.keys(residentContext).length === 0 ? releaseEnv : withLaunchContext(releaseEnv, { ...readLaunchContext(releaseEnv), ...residentContext }, process.platform, launchContractTarget(release));
423
221
  const child = spawn(process.execPath, [entry, ...sessionArgs], {
424
222
  env: launchEnvironment,
425
223
  stdio: ["inherit", "inherit", "inherit", "ipc"],
@@ -431,12 +229,13 @@ async function launchUi(release, environment, sessionArgs, residentContext = {})
431
229
  }
432
230
  });
433
231
  child.once("error", rejectPromise);
434
- child.once("close", (code, signal) => resolvePromise({
435
- code: releaseSuperseded
436
- ? code ?? 1
437
- : restoreAfterOwnedExit(readLaunchContext(environment).launchProfile === "a1", code, signal),
438
- releaseSuperseded,
439
- }));
232
+ child.once("close", (code, signal) => {
233
+ const outcome = releaseSuperseded ? code ?? 1 : restoreAfterOwnedExit(ownsTerminal, code, signal);
234
+ // Invariant: the UI removes its notice on a clean exit; one still armed means the UI died.
235
+ if (ownsTerminal)
236
+ deliverExitNotice(noticePath, message => process.stderr.write(message));
237
+ resolvePromise({ code: outcome, releaseSuperseded });
238
+ });
440
239
  });
441
240
  }
442
241
  /**
@@ -445,121 +244,11 @@ async function launchUi(release, environment, sessionArgs, residentContext = {})
445
244
  * version instead of failing while an installation is being replaced.
446
245
  */
447
246
  export function releaseEnvironment(environment, release, profile) {
448
- const context = readLaunchContext(environment);
449
247
  return withLaunchContext(environment, {
450
248
  releaseId: release.releaseId,
451
249
  releaseLayers: (release.dependencyLayers ?? []).map(layer => layer.layerId).join(","),
452
250
  releaseRoot: release.releaseRoot,
453
251
  releaseDigest: release.contentDigest,
454
252
  ...(profile === undefined ? {} : { launchProfile: profile }),
455
- ...(context.launchMode === undefined ? {} : { launchMode: context.launchMode }),
456
- ...(context.updateVersion === undefined ? {} : { updateVersion: context.updateVersion }),
457
253
  }, process.platform, launchContractTarget(release));
458
254
  }
459
- export async function waitForVerifiedEndpoint(path, release, timeoutMs, startup) {
460
- const deadline = Date.now() + timeoutMs;
461
- let childOutcome = null;
462
- let collision = null;
463
- void startup?.childOutcome.then(outcome => { childOutcome = outcome; });
464
- while (Date.now() < deadline) {
465
- const metadata = await readEndpointMetadata(path);
466
- if (metadata && endpointMatchesRelease(metadata, release) && await probeOwnership(metadata, { attempts: 1 }) === "live-verified") {
467
- if (startup)
468
- await rm(startup.resultPath, { force: true });
469
- return;
470
- }
471
- if (startup) {
472
- const result = await readSupervisorStartupResult(startup.resultPath, startup.attemptId, startup.releaseId);
473
- if (result?.outcome === "failure") {
474
- const error = Object.assign(new Error(PRODUCT_TEXT.diagnostic(`supervisor startup failed at ${result.stage}: ${result.message}`)), {
475
- code: result.code ?? "SUPERVISOR_STARTUP_FAILED",
476
- });
477
- if (result.code !== "EADDRINUSE")
478
- throw error;
479
- // Concurrency: the winning process may not have published its authenticated metadata yet.
480
- collision = error;
481
- }
482
- }
483
- if (childOutcome && !collision)
484
- throw new Error(PRODUCT_TEXT.diagnostic(`supervisor exited before readiness: ${JSON.stringify(childOutcome)}`));
485
- await new Promise(resolvePromise => setTimeout(resolvePromise, 40));
486
- }
487
- if (collision)
488
- throw collision;
489
- throw new Error(PRODUCT_TEXT.diagnostic(`supervisor did not publish verified endpoint metadata within ${timeoutMs}ms`));
490
- }
491
- async function activatePendingAfterBlockerExit(candidate, stateStore, paths, environment) {
492
- const deadline = Date.now() + 2_000;
493
- let endpoint = null;
494
- while (Date.now() < deadline) {
495
- endpoint = await readEndpointMetadata(paths.endpointMetadataPath);
496
- if (!endpoint || endpoint.ownership.liveInstanceIds.length === 0)
497
- break;
498
- await new Promise(resolvePromise => setTimeout(resolvePromise, 40));
499
- }
500
- if (!endpoint || endpoint.ownership.liveInstanceIds.length > 0 || await probeOwnership(endpoint) !== "live-verified")
501
- return;
502
- const diagnosticsPath = await certifyMaterializedRelease(candidate, paths.dataDir);
503
- await stateStore.approve(candidate.releaseId, diagnosticsPath);
504
- await assertResidentContinuity({ releaseRoot: candidate.releaseRoot, dataDir: paths.dataDir, environment,
505
- profileRoot: environment[PRODUCT_IDENTITY.environment.profileHome] ?? paths.configDir, runtimeDir: paths.runtimeDir });
506
- if (!await requestIdleOwnershipRelease(endpoint, candidate.releaseId, 2_000))
507
- return;
508
- if (!await releaseVerifiedIdleOwner(endpoint, paths.dataDir))
509
- return;
510
- await removeEndpointArtifacts(paths.endpointMetadataPath, paths.endpoint, endpoint);
511
- await stateStore.activate(candidate.releaseId);
512
- await ensureSupervisor(candidate, environment);
513
- }
514
- export async function releaseVerifiedIdleOwner(metadata, dataDir, operations = {}) {
515
- try {
516
- // Protocol: the owner rechecks its boot nonce and live instances before cooperative exit.
517
- // A durable idle snapshot alone never authorizes a signal to a still-live process.
518
- await requestIdleOwnershipRelease(metadata, metadata.releaseId, 2_000);
519
- await (operations.waitForExit ?? waitForProcessExit)(metadata.pid, 3_000);
520
- return true;
521
- }
522
- catch {
523
- // Security: a lingering Windows handle can keep numeric PID probes positive after exit.
524
- // Native observation may retire that exact dead boot, but never signals a still-live owner.
525
- const diagnostics = await (operations.cleanup ?? cleanupProvenIdleOwner)(metadata);
526
- await writeFile(resolve(dataDir, `cleanup-${Date.now()}.json`), JSON.stringify(diagnostics, null, 2));
527
- return diagnostics.terminated;
528
- }
529
- }
530
- async function requestIdleOwnershipRelease(metadata, candidateReleaseId, timeoutMs) {
531
- return await new Promise(resolvePromise => {
532
- const socket = connect(metadata.endpoint);
533
- const decoder = new LineFrameDecoder();
534
- let settled = false;
535
- const finish = (released) => {
536
- if (settled)
537
- return;
538
- settled = true;
539
- socket.destroy();
540
- resolvePromise(released);
541
- };
542
- socket.once("error", () => finish(false));
543
- socket.once("connect", () => socket.write(encodeFrame({ type: "release-idle-ownership", bootNonce: metadata.bootNonce, candidateReleaseId })));
544
- socket.on("data", chunk => {
545
- try {
546
- const message = decoder.push(chunk)[0];
547
- if (message?.type === "release-ownership-result")
548
- finish(message.released === true);
549
- }
550
- catch {
551
- finish(false);
552
- }
553
- });
554
- setTimeout(() => finish(false), timeoutMs).unref();
555
- });
556
- }
557
- export async function waitForProcessExit(pid, timeoutMs) {
558
- const deadline = Date.now() + timeoutMs;
559
- while (Date.now() < deadline) {
560
- if (!processIsAlive(pid))
561
- return;
562
- await new Promise(resolvePromise => setTimeout(resolvePromise, 25));
563
- }
564
- throw new Error(PRODUCT_TEXT.diagnostic(`supervisor ${pid} did not release process ownership within ${timeoutMs}ms`));
565
- }
@@ -1,10 +1,9 @@
1
- export declare const DEPENDENCY_CERTIFICATIONS_DIRECTORY = "dependency-certifications";
2
1
  type LayerIdentity = {
3
2
  readonly layerId: string;
4
3
  readonly contentDigest: string;
5
4
  };
6
5
  export interface ReadDependencyCertificationOptions {
7
- /** Only authenticated parent-started supervisors may upgrade missing platform evidence. */
6
+ /** Only an authenticated parent certifying the exact release may upgrade missing platform evidence. */
8
7
  readonly allowLegacyParentCertification?: boolean;
9
8
  /** Cleanup must validate canonical evidence without migrating or falling back. */
10
9
  readonly canonicalOnly?: boolean;
@@ -3,7 +3,7 @@ import { chmod, lstat, mkdir, readFile, readdir, realpath, rename, rm, writeFile
3
3
  import { basename, dirname, resolve } from "node:path";
4
4
  import { PRODUCT_IDENTITY } from "../../product-identity.js";
5
5
  import { immutablePlatformPolicy } from "./immutable-platform.js";
6
- export const DEPENDENCY_CERTIFICATIONS_DIRECTORY = "dependency-certifications";
6
+ const DEPENDENCY_CERTIFICATIONS_DIRECTORY = "dependency-certifications";
7
7
  /** Derive the canonical record path without accepting path components as layer identities. */
8
8
  export function dependencyLayerCertificationPath(dataDir, layerId) {
9
9
  assertLayerId(layerId);
@@ -1,6 +1,6 @@
1
1
  type UiAccentColor = "blue" | "purple" | "cyan" | "green" | "orange" | "pink";
2
- export type EarlyAccentAppearance = "dark" | "light";
3
- export type EarlyAccentMode = "truecolor" | "256color";
2
+ type EarlyAccentAppearance = "dark" | "light";
3
+ type EarlyAccentMode = "truecolor" | "256color";
4
4
  /** Read only global profile data, never project settings or the interactive resource pipeline. */
5
5
  export declare function resolveEarlyAccentColor(environment?: NodeJS.ProcessEnv, home?: () => string): UiAccentColor;
6
6
  export declare function earlyAccentPalette(color: UiAccentColor, appearance?: EarlyAccentAppearance, mode?: EarlyAccentMode): {
@@ -2,7 +2,7 @@ import { readFileSync, statSync } from "node:fs";
2
2
  import { homedir } from "node:os";
3
3
  import { isAbsolute, join } from "node:path";
4
4
  import { PRODUCT_IDENTITY } from "../../product-identity.js";
5
- import { SHARED_PROGRESS_PALETTE } from "./progress-palette.generated.js";
5
+ import { SHARED_PROGRESS_PALETTE } from "../../contracts/presentation/index.js";
6
6
  const MAX_SETTINGS_BYTES = 256 * 1024;
7
7
  /** Read only global profile data, never project settings or the interactive resource pipeline. */
8
8
  export function resolveEarlyAccentColor(environment = process.env, home = homedir) {
@@ -1,21 +1,14 @@
1
- export { certifyMaterializedRelease, ensureSupervisor, recordParentCertifiedRelease, releaseEnvironment, releaseVerifiedIdleOwner, runBootstrap, startSupervisor, waitForProcessExit, waitForVerifiedEndpoint, } from "./bootstrap.js";
2
- export type { BootstrapOptions, SupervisorStartupAttempt } from "./bootstrap.js";
3
- export { selectCohortLaunch } from "./cohort-selection.js";
1
+ export { certifyMaterializedRelease, recordParentCertifiedRelease, releaseEnvironment, runBootstrap, } from "./bootstrap.js";
2
+ export type { BootstrapOptions } from "./bootstrap.js";
4
3
  export { selectOrdinaryLaunchReleaseId } from "./ordinary-launch-selection.js";
5
- export type { CohortLaunchDecision, OwnershipProbe } from "./cohort-selection.js";
6
- export { CohortStateStore, RELEASE_COHORT_SCHEMA, emptyState, planProtectedReleases } from "./cohort-state.js";
7
- export type { ActiveReleaseTransactionReference, CohortState, EndpointOwnership, ExternalReleaseHold, ExternalReleaseHoldAuthority, OrphanReleaseDisposition, ProtectedReleaseInputs, ProtectedReleasePlan, ReleaseApproval, ReleaseCleanupDiagnostic, ReleaseCleanupDisposition, ReleaseCleanupStage, ReleaseCleanupState, ReleaseCleanupWorkerRun, ReleaseCleanupWorkerStatus, ReleaseCleanupWorkerSummary, ReleaseRecord, ReleaseReferences, ReleaseRetentionReconciliation, SupervisorEndpointMetadata, } from "./cohort-state.js";
4
+ export { ReleaseStateStore, RELEASE_STATE_SCHEMA, RELEASE_RETENTION_MS, emptyState, planProtectedReleases, withinRetention } from "./release-state.js";
5
+ export type { ActiveReleaseTransactionReference, ReleaseState, OrphanReleaseDisposition, ProtectedReleaseInputs, ProtectedReleasePlan, ReleaseApproval, ReleaseCleanupDiagnostic, ReleaseCleanupDisposition, ReleaseCleanupStage, ReleaseCleanupState, ReleaseCleanupWorkerRun, ReleaseCleanupWorkerStatus, ReleaseCleanupWorkerSummary, ReleaseRecord, ReleaseReferences, ReleaseRetentionReconciliation, } from "./release-state.js";
8
6
  export { DEPENDENCY_LAYER_MANIFEST, DEPENDENCY_LAYER_SCHEMA, RUNTIME_PAYLOAD_INVENTORY, dependencyLayerCertificationPath, dependencyReference, generateDependencyRuntimePayload, legacyDependencyLayerCertificationPath, materializeDependencyLayer, readCertifiedDependencyLayer, selectDependencyRuntimePayload, selectPublishedDependencyRuntimePayload, verifyDependencyLayer, } from "./dependency-layer.js";
9
7
  export type { DependencyLayerIdentity, DependencyLayerOperationEvent, DependencyLayerReference, GeneratedRuntimePayload, MaterializeDependencyLayerOptions, MaterializedDependencyLayer, PublishedRuntimeFileClassification, PublishedRuntimePayload, ReadCertifiedDependencyLayerOptions, RuntimePayloadExclusion, RuntimePayloadInventory, SelectedRuntimePayload, } from "./dependency-layer.js";
10
- export { listRecordedEndpoints, liveReleaseIds, probeOwnership, readEndpointMetadata, removeEndpointArtifacts, sweepDeadEndpoints } from "./endpoints.js";
11
- export { currentSupervisorStartIdentity, observeSupervisorProcess, supervisorProcessState } from "./supervisor-identity.js";
12
- export { withEndpointLock } from "./endpoint-lock.js";
13
- export type { RecordedEndpoint } from "./endpoints.js";
14
- export { cleanupProvenIdleOwner, cleanupVerifiedOwner, processIsAlive } from "./process-cleanup.js";
15
- export type { CleanupDiagnostics } from "./process-cleanup.js";
8
+ export { processIsAlive } from "./process-liveness.js";
16
9
  export { PRODUCT_PACKAGE_NAME, createReleaseIdentity, deriveReleaseIdentity, digestManifestFiles, discoverReleasePayload, packageRootFromModule, releaseFileIdentity, resolveWithin, } from "./release.js";
17
10
  export type { DiscoverReleasePayloadOptions, DiscoveredReleasePayload, ReleaseFileIdentity, ReleaseIdentity } from "./release.js";
18
- export { collectRelease, prepareReleaseCleanup, runBoundedReleaseCleanup, runReleaseCleanupWorker, scheduleReleaseCleanup } from "./release-gc.js";
11
+ export { prepareReleaseCleanup, runBoundedReleaseCleanup, runReleaseCleanupWorker, scheduleReleaseCleanup } from "./release-gc.js";
19
12
  export type { ReleaseCleanupLimits, ReleaseCleanupOperations, ReleaseCleanupOptions, ReleaseCleanupResult, ReleaseCleanupWorkerOptions } from "./release-gc.js";
20
13
  export { RELEASE_MANIFEST_FILENAME, ReleaseRepairUnavailableError, assertCertifiedFilesPresent, assertImmutableExecutionRoot, consumeMaterializationProof, materializeRelease, readCertifiedReleaseManifest, readMaterializedRelease, repairMaterializedRelease, resolveReleaseEntryPoint, verifyMaterializedRelease, } from "./release-store.js";
21
14
  export type { CertifiedReleaseRecord, MaterializeReleaseOptions, MaterializedRelease, ReadCertifiedReleaseManifestOptions, ReleaseContentOperation, ReleaseContentOperationEvent, VerifyMaterializedReleaseOptions, } from "./release-store.js";
@@ -23,11 +16,11 @@ export { createRestartSeal, readRestartCertifiedRelease, releaseCertificationDoc
23
16
  export type { RestartSeal, RestartValidationEvent } from "./restart-certification.js";
24
17
  export { STABLE_RELEASE_SCHEMA, createStableReleaseEvidence, verifyStableRegistry } from "./stable-release.js";
25
18
  export type { StableRegistryState, StableRegistryVerificationOptions, StableReleaseEvidence, StableReleaseEvidenceInput } from "./stable-release.js";
26
- export { PACKAGE_UNLOCK_PATIENCE_MS, UPDATE_ACTIVATION_BLOCKED_EXIT_CODE, UPDATE_ALREADY_RUNNING_EXIT_CODE, PRODUCT_PACKAGE, assertUpdatePerformanceBudget, createNpmProcessRunner, createUpdateLifecycleCoordinator, isPackageLockError, lockedPackageDiagnostic, planUpdateOwnership, renderUpdateProgressBar, runSelfUpdate, } from "./update.js";
27
- export type { ProcessRequest, ProcessResult, SelfUpdateOptions, UpdateActivationPhase, UpdateChannel, UpdateFileMetadata, UpdateFileSystem, UpdateLifecycleCoordinator, UpdateMaterializationProgress, UpdateMeasuredPhase, UpdateOutput, UpdateOwnershipAction, UpdatePackageReplacementInput, UpdatePerformanceEvidence, UpdatePhaseTimingEvent, UpdateProcessRunner, UpdateTransactionJournal, UpdateUnlockPatience, } from "./update.js";
28
- export { UPDATE_ACTIVATION_CONTRACT, UPDATE_ACTIVATION_ENTRY, UPDATE_ACTIVATION_MANIFEST_FIELD, UpdateActivationBlockedError, activateInstalledRelease, delegateActivation, readActivationContracts, runActivationEntry, } from "./update-activation.js";
19
+ export { PACKAGE_UNLOCK_PATIENCE_MS, UPDATE_ALREADY_RUNNING_EXIT_CODE, PRODUCT_PACKAGE, assertUpdatePerformanceBudget, createNpmProcessRunner, createUpdateLifecycleCoordinator, isPackageLockError, lockedPackageDiagnostic, renderUpdateProgressBar, runSelfUpdate, } from "./update.js";
20
+ export type { ProcessRequest, ProcessResult, SelfUpdateOptions, UpdateActivationPhase, UpdateChannel, UpdateFileMetadata, UpdateFileSystem, UpdateLifecycleCoordinator, UpdateMaterializationProgress, UpdateMeasuredPhase, UpdateOutput, UpdatePackageReplacementInput, UpdatePerformanceEvidence, UpdatePhaseTimingEvent, UpdateProcessRunner, UpdateTransactionJournal, UpdateUnlockPatience, } from "./update.js";
21
+ export { UPDATE_ACTIVATION_CONTRACT, UPDATE_ACTIVATION_ENTRY, UPDATE_ACTIVATION_MANIFEST_FIELD, activateInstalledRelease, delegateActivation, readActivationContracts, runActivationEntry, } from "./update-activation.js";
29
22
  export type { UpdateActivationCallbacks, UpdateActivationEvent, UpdateActivationRequest } from "./update-activation.js";
30
- export { selectSupervisorLaunchReleaseId, selectUpdateLaunchRelease } from "./update-launch.js";
23
+ export { selectUpdateLaunchRelease } from "./update-launch.js";
31
24
  export { UPDATE_RECOVERY_SCHEMA, cleanupUpdateRecoveryCapsules, inspectUpdateLauncherSet, npmPrefixForGlobalRoot, prepareUpdateRecoveryCapsule, readUpdateRecoveryCapsule, removeUpdateRecoveryCapsule, resolveNpmCli, runProtectedPackageReplacement, updateLauncherPaths, updateNpmInstallArguments, } from "./update-recovery.js";
32
25
  export type { ProtectedPackageReplacementOptions, ProtectedPackageReplacementResult, UpdateRecoveryCapsule, UpdateRecoveryResult } from "./update-recovery.js";
33
26
  export { UPDATE_JOURNAL_SCHEMA, UpdateTransactionStore } from "./update-transaction.js";