@timurproko/a1 0.1.8-dev.de7821a → 0.2.0

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 (916) hide show
  1. package/README.md +104 -65
  2. package/bin/activate.js +8 -0
  3. package/bin/cli.js +37 -11
  4. package/bin/guardian.js +21 -6
  5. package/bin/module-identity.js +76 -69
  6. package/bin/module-resolver.js +138 -0
  7. package/bin/pinned-pi-public.d.ts +3 -0
  8. package/bin/pinned-pi-public.js +93 -0
  9. package/bin/release-cleanup.js +8 -0
  10. package/bin/supervisor.js +2 -2
  11. package/bin/sync-pi-tui-proxy.js +7 -0
  12. package/bin/ui.js +67 -22
  13. package/bin/update-recovery.js +365 -0
  14. package/bin/warmup.js +28 -0
  15. package/dist/app/session-shell/clipboard-diagnostics.d.ts +16 -0
  16. package/dist/app/session-shell/clipboard-diagnostics.js +65 -0
  17. package/dist/app/session-shell/clipboard-image.d.ts +11 -0
  18. package/dist/app/session-shell/clipboard-image.js +38 -0
  19. package/dist/app/session-shell/editor-hyperlink-budget.d.ts +9 -0
  20. package/dist/app/session-shell/editor-hyperlink-budget.js +23 -0
  21. package/dist/app/session-shell/helper-pool.d.ts +33 -0
  22. package/dist/app/session-shell/helper-pool.js +98 -0
  23. package/dist/app/session-shell/image-preparation-client.d.ts +20 -0
  24. package/dist/app/session-shell/image-preparation-client.js +145 -0
  25. package/dist/app/session-shell/image-preparation.d.ts +18 -0
  26. package/dist/app/session-shell/image-preparation.js +126 -0
  27. package/dist/app/session-shell/image-source.d.ts +13 -0
  28. package/dist/app/session-shell/image-source.js +171 -0
  29. package/dist/app/session-shell/image-worker.d.ts +17 -0
  30. package/dist/app/session-shell/image-worker.js +23 -0
  31. package/dist/app/session-shell/index.d.ts +7 -0
  32. package/dist/app/session-shell/index.js +4 -0
  33. package/dist/app/session-shell/paste-executor.d.ts +18 -0
  34. package/dist/app/session-shell/paste-executor.js +253 -0
  35. package/dist/app/session-shell/paste-helper.js +173 -0
  36. package/dist/app/session-shell/paste-preparation-client.d.ts +31 -0
  37. package/dist/app/session-shell/paste-preparation-client.js +170 -0
  38. package/dist/app/session-shell/paste-protocol.d.ts +78 -0
  39. package/dist/app/session-shell/paste-protocol.js +18 -0
  40. package/dist/app/session-shell/paste-text-preparation.d.ts +6 -0
  41. package/dist/app/session-shell/paste-text-preparation.js +134 -0
  42. package/dist/app/session-shell/paste-text-worker.js +12 -0
  43. package/dist/app/session-shell/paste-types.d.ts +17 -0
  44. package/dist/app/session-shell/path-chip-presentation.d.ts +7 -0
  45. package/dist/app/session-shell/path-chip-presentation.js +24 -0
  46. package/dist/app/session-shell/prompt-chips.d.ts +76 -0
  47. package/dist/app/session-shell/prompt-chips.js +499 -0
  48. package/dist/app/session-shell/prompt-history-controller.d.ts +36 -0
  49. package/dist/app/session-shell/prompt-history-controller.js +170 -0
  50. package/dist/app/session-shell/prompt-suggestion-controller.d.ts +37 -0
  51. package/dist/app/session-shell/prompt-suggestion-controller.js +219 -0
  52. package/dist/app/session-shell/quit-outro-effects.d.ts +29 -0
  53. package/dist/app/session-shell/quit-outro-effects.js +242 -0
  54. package/dist/app/session-shell/quit-outro.d.ts +38 -0
  55. package/dist/app/session-shell/quit-outro.js +98 -0
  56. package/dist/app/session-shell/response-copy-coordinator.d.ts +27 -0
  57. package/dist/app/session-shell/response-copy-coordinator.js +187 -0
  58. package/dist/app/session-shell/response-copy-helper.js +122 -0
  59. package/dist/app/session-shell/response-copy-protocol.d.ts +56 -0
  60. package/dist/app/session-shell/response-copy-protocol.js +5 -0
  61. package/dist/app/session-shell/response-copy-transport.d.ts +39 -0
  62. package/dist/app/session-shell/response-copy-transport.js +217 -0
  63. package/dist/app/session-shell/session-shell-root.d.ts +278 -0
  64. package/dist/app/session-shell/session-shell-root.js +1442 -0
  65. package/dist/app/session-shell/session-shell.d.ts +66 -0
  66. package/dist/app/session-shell/session-shell.js +2151 -0
  67. package/dist/app/session-shell/session-viewport-controller.d.ts +62 -0
  68. package/dist/app/session-shell/session-viewport-controller.js +623 -0
  69. package/dist/app/session-shell/stream-presentation-coalescer.d.ts +29 -0
  70. package/dist/app/session-shell/stream-presentation-coalescer.js +79 -0
  71. package/dist/app/session-shell/system-clipboard.d.ts +20 -0
  72. package/dist/app/session-shell/system-clipboard.js +159 -0
  73. package/dist/app/session-shell/text-paste.d.ts +5 -0
  74. package/dist/app/session-shell/text-paste.js +16 -0
  75. package/dist/cli/capabilities.d.ts +6 -0
  76. package/dist/cli/capabilities.js +7 -0
  77. package/dist/cli/dispatch.d.ts +53 -0
  78. package/dist/cli/dispatch.js +287 -0
  79. package/dist/cli/index.d.ts +8 -0
  80. package/dist/cli/index.js +4 -0
  81. package/dist/cli/package-messages.d.ts +27 -0
  82. package/dist/cli/package-messages.js +83 -0
  83. package/dist/cli/packages.d.ts +32 -0
  84. package/dist/cli/packages.js +81 -0
  85. package/dist/cli/session-context.d.ts +9 -0
  86. package/dist/cli/session-context.js +29 -0
  87. package/dist/cli/version-stats.d.ts +22 -0
  88. package/dist/cli/version-stats.js +112 -0
  89. package/dist/composition/index.d.ts +2 -0
  90. package/dist/composition/index.js +2 -0
  91. package/dist/composition/owned-ui.d.ts +37 -0
  92. package/dist/composition/owned-ui.js +159 -0
  93. package/dist/composition/settings-route-host.d.ts +16 -0
  94. package/dist/composition/settings-route-host.js +141 -0
  95. package/dist/contracts/agent-engine/capability-ports.d.ts +95 -0
  96. package/dist/contracts/agent-engine/domain-validation.js +107 -0
  97. package/dist/contracts/agent-engine/domain.d.ts +138 -0
  98. package/dist/contracts/agent-engine/index.d.ts +11 -0
  99. package/dist/contracts/agent-engine/index.js +6 -0
  100. package/dist/contracts/agent-engine/package-ports.d.ts +60 -0
  101. package/dist/contracts/agent-engine/ports.js +1 -0
  102. package/dist/contracts/owned-ui/extension-ui.d.ts +310 -0
  103. package/dist/contracts/owned-ui/image-attachments.d.ts +36 -0
  104. package/dist/contracts/owned-ui/image-attachments.js +67 -0
  105. package/dist/contracts/owned-ui/index.d.ts +14 -0
  106. package/dist/contracts/owned-ui/index.js +9 -0
  107. package/dist/contracts/owned-ui/model.d.ts +383 -0
  108. package/dist/contracts/owned-ui/prompt-chips.d.ts +15 -0
  109. package/dist/contracts/owned-ui/prompt-chips.js +59 -0
  110. package/dist/contracts/owned-ui/prompt-history.d.ts +55 -0
  111. package/dist/contracts/owned-ui/prompt-history.js +23 -0
  112. package/dist/contracts/owned-ui/prompt-suggestions.d.ts +3 -0
  113. package/dist/contracts/owned-ui/prompt-suggestions.js +44 -0
  114. package/dist/contracts/owned-ui/suggestion-diagnostics.d.ts +22 -0
  115. package/dist/contracts/owned-ui/suggestion-diagnostics.js +9 -0
  116. package/dist/contracts/owned-ui/transcript-lifecycle.d.ts +5 -0
  117. package/dist/contracts/owned-ui/transcript-lifecycle.js +33 -0
  118. package/dist/contracts/owned-ui/validation.d.ts +15 -0
  119. package/dist/contracts/owned-ui/validation.js +554 -0
  120. package/dist/contracts/presentation/index.d.ts +117 -0
  121. package/dist/contracts/presentation/index.js +68 -0
  122. package/dist/features/launch/development-launch.js +36 -0
  123. package/dist/features/launch/index.d.ts +14 -0
  124. package/dist/features/launch/index.js +7 -0
  125. package/dist/features/launch/intent.d.ts +12 -0
  126. package/dist/features/launch/intent.js +8 -0
  127. package/dist/features/launch/prepare-launch.d.ts +11 -0
  128. package/dist/features/launch/prepare-launch.js +14 -0
  129. package/dist/features/launch/profile-paths.d.ts +16 -0
  130. package/dist/features/launch/profile-paths.js +36 -0
  131. package/dist/features/launch/runtime-selection.d.ts +16 -0
  132. package/dist/features/launch/runtime-selection.js +13 -0
  133. package/dist/features/launch/session-context.d.ts +8 -0
  134. package/dist/features/launch/session-context.js +8 -0
  135. package/dist/features/owned-ui/index.d.ts +9 -0
  136. package/dist/features/owned-ui/index.js +6 -0
  137. package/dist/features/owned-ui/project-trust-prompt.d.ts +25 -0
  138. package/dist/features/owned-ui/project-trust-prompt.js +149 -0
  139. package/dist/features/owned-ui/reference-routes.d.ts +6 -0
  140. package/dist/features/owned-ui/reference-routes.js +6 -0
  141. package/dist/features/owned-ui/reference-screen-app.d.ts +43 -0
  142. package/dist/features/owned-ui/reference-screen-app.js +279 -0
  143. package/dist/features/owned-ui/run.d.ts +17 -0
  144. package/dist/features/owned-ui/run.js +64 -0
  145. package/dist/features/owned-ui/session-fork-prompt.d.ts +8 -0
  146. package/dist/features/owned-ui/session-fork-prompt.js +34 -0
  147. package/dist/features/owned-ui/settings-app.d.ts +21 -0
  148. package/dist/features/owned-ui/settings-app.js +851 -0
  149. package/dist/features/owned-ui/settings-route.d.ts +2 -0
  150. package/dist/features/owned-ui/settings-route.js +2 -0
  151. package/dist/features/prompt-history/image-sidecar.d.ts +32 -0
  152. package/dist/features/prompt-history/image-sidecar.js +130 -0
  153. package/dist/features/prompt-history/index.d.ts +4 -0
  154. package/dist/features/prompt-history/index.js +3 -0
  155. package/dist/features/prompt-history/paths.d.ts +5 -0
  156. package/dist/features/prompt-history/paths.js +17 -0
  157. package/dist/features/prompt-history/service.d.ts +54 -0
  158. package/dist/features/prompt-history/service.js +425 -0
  159. package/dist/features/prompt-history/store.d.ts +16 -0
  160. package/dist/features/prompt-history/store.js +219 -0
  161. package/dist/features/prompt-history/worker.d.ts +9 -0
  162. package/dist/features/prompt-history/worker.js +45 -0
  163. package/dist/features/prompt-suggestions/diagnostics.d.ts +18 -0
  164. package/dist/features/prompt-suggestions/diagnostics.js +82 -0
  165. package/dist/features/prompt-suggestions/index.d.ts +2 -0
  166. package/dist/features/prompt-suggestions/index.js +1 -0
  167. package/dist/foundation/launch-context/index.d.ts +59 -0
  168. package/dist/foundation/launch-context/index.js +136 -0
  169. package/dist/foundation/launch-guardian/index.d.ts +2 -0
  170. package/dist/foundation/launch-guardian/index.js +1 -0
  171. package/dist/foundation/launch-guardian/main.d.ts +33 -0
  172. package/dist/foundation/launch-guardian/main.js +179 -0
  173. package/dist/foundation/lifecycle/commands.js +1 -0
  174. package/dist/foundation/lifecycle/index.d.ts +13 -0
  175. package/dist/foundation/lifecycle/index.js +6 -0
  176. package/dist/foundation/lifecycle/model.d.ts +64 -0
  177. package/dist/foundation/lifecycle/model.js +40 -0
  178. package/dist/foundation/lifecycle/paths.d.ts +30 -0
  179. package/dist/foundation/lifecycle/paths.js +70 -0
  180. package/dist/foundation/lifecycle/session-repository-context.d.ts +18 -0
  181. package/dist/foundation/lifecycle/session-repository-context.js +173 -0
  182. package/dist/foundation/lifecycle/session-selection.d.ts +9 -0
  183. package/dist/foundation/lifecycle/session-selection.js +39 -0
  184. package/dist/foundation/lifecycle/supervisor-startup.d.ts +30 -0
  185. package/dist/foundation/lifecycle/supervisor-startup.js +106 -0
  186. package/dist/foundation/process-containment/darwin-process-inspector.d.ts +5 -0
  187. package/dist/foundation/process-containment/darwin-process-inspector.js +7 -0
  188. package/dist/foundation/process-containment/index.d.ts +8 -0
  189. package/dist/foundation/process-containment/index.js +6 -0
  190. package/dist/foundation/process-containment/linux-process-inspector.d.ts +7 -0
  191. package/dist/foundation/process-containment/linux-process-inspector.js +27 -0
  192. package/dist/foundation/process-containment/native-guardian-containment.d.ts +17 -0
  193. package/dist/foundation/process-containment/native-guardian-containment.js +140 -0
  194. package/dist/foundation/process-containment/windows-process-inspector.d.ts +19 -0
  195. package/dist/foundation/process-containment/windows-process-inspector.js +56 -0
  196. package/dist/foundation/protocol/client.d.ts +18 -0
  197. package/dist/foundation/protocol/client.js +130 -0
  198. package/dist/foundation/protocol/index.d.ts +3 -0
  199. package/dist/foundation/protocol/index.js +2 -0
  200. package/dist/foundation/protocol/messages.d.ts +90 -0
  201. package/dist/foundation/protocol/messages.js +100 -0
  202. package/dist/foundation/release/bootstrap.d.ts +51 -0
  203. package/dist/foundation/release/bootstrap.js +470 -0
  204. package/dist/foundation/release/cohort-state.d.ts +159 -0
  205. package/dist/foundation/release/cohort-state.js +507 -0
  206. package/dist/foundation/release/dependency-certification-retention.d.ts +7 -0
  207. package/dist/foundation/release/dependency-certification-retention.js +88 -0
  208. package/dist/foundation/release/dependency-certification.d.ts +24 -0
  209. package/dist/foundation/release/dependency-certification.js +266 -0
  210. package/dist/foundation/release/dependency-layer.d.ts +78 -0
  211. package/dist/foundation/release/dependency-layer.js +466 -0
  212. package/dist/foundation/release/endpoints.d.ts +24 -0
  213. package/dist/foundation/release/endpoints.js +134 -0
  214. package/dist/foundation/release/immutable-platform.d.ts +6 -0
  215. package/dist/foundation/release/immutable-platform.js +13 -0
  216. package/dist/foundation/release/index.d.ts +33 -0
  217. package/dist/foundation/release/index.js +18 -0
  218. package/dist/foundation/release/ordinary-launch-selection.d.ts +14 -0
  219. package/dist/foundation/release/ordinary-launch-selection.js +15 -0
  220. package/dist/foundation/release/release-gc.d.ts +71 -0
  221. package/dist/foundation/release/release-gc.js +764 -0
  222. package/dist/foundation/release/release-store.d.ts +49 -0
  223. package/dist/foundation/release/release-store.js +235 -0
  224. package/dist/foundation/release/release.d.ts +43 -0
  225. package/dist/foundation/release/release.js +215 -0
  226. package/dist/foundation/release/restart-certification.d.ts +68 -0
  227. package/dist/foundation/release/restart-certification.js +227 -0
  228. package/dist/foundation/release/types.d.ts +11 -0
  229. package/dist/foundation/release/types.js +1 -0
  230. package/dist/foundation/release/update-activation.d.ts +72 -0
  231. package/dist/foundation/release/update-activation.js +204 -0
  232. package/dist/foundation/release/update-launch.d.ts +6 -0
  233. package/dist/foundation/release/update-launch.js +17 -0
  234. package/dist/foundation/release/update-recovery.d.ts +82 -0
  235. package/dist/foundation/release/update-recovery.js +386 -0
  236. package/dist/foundation/release/update-transaction.d.ts +42 -0
  237. package/dist/foundation/release/update-transaction.js +101 -0
  238. package/dist/foundation/release/update.d.ts +142 -0
  239. package/dist/foundation/release/update.js +773 -0
  240. package/dist/foundation/release/warmup.d.ts +3 -0
  241. package/dist/foundation/release/warmup.js +47 -0
  242. package/dist/foundation/startup/index.d.ts +4 -0
  243. package/dist/foundation/startup/index.js +2 -0
  244. package/dist/foundation/startup/startup-budget.d.ts +46 -0
  245. package/dist/foundation/startup/startup-budget.js +42 -0
  246. package/dist/foundation/startup/startup-descriptor.js +34 -0
  247. package/dist/foundation/startup/startup-runtime.d.ts +27 -0
  248. package/dist/foundation/startup/startup-runtime.js +128 -0
  249. package/dist/foundation/storage/control-store.d.ts +18 -0
  250. package/dist/foundation/storage/control-store.js +342 -0
  251. package/dist/foundation/storage/index.d.ts +1 -0
  252. package/dist/foundation/storage/index.js +1 -0
  253. package/dist/foundation/supervision/index.d.ts +3 -0
  254. package/dist/foundation/supervision/index.js +3 -0
  255. package/dist/foundation/supervision/main.d.ts +1 -0
  256. package/dist/foundation/supervision/main.js +84 -0
  257. package/dist/foundation/supervision/paths.d.ts +1 -0
  258. package/dist/foundation/supervision/paths.js +1 -0
  259. package/dist/foundation/supervision/server.d.ts +46 -0
  260. package/dist/foundation/supervision/server.js +584 -0
  261. package/dist/foundation/terminal-cleanup/fatal-exit.d.ts +12 -0
  262. package/dist/foundation/terminal-cleanup/fatal-exit.js +87 -0
  263. package/dist/foundation/terminal-cleanup/index.d.ts +3 -0
  264. package/dist/foundation/terminal-cleanup/index.js +2 -0
  265. package/dist/foundation/terminal-cleanup/terminal-reset.d.ts +4 -0
  266. package/dist/foundation/terminal-cleanup/terminal-reset.js +40 -0
  267. package/dist/integrations/pi/components/components.d.ts +4 -0
  268. package/dist/integrations/pi/components/components.js +64 -0
  269. package/dist/integrations/pi/components/conformance.d.ts +18 -0
  270. package/dist/integrations/pi/components/conformance.js +70 -0
  271. package/dist/integrations/pi/components/editor-interaction.d.ts +38 -0
  272. package/dist/integrations/pi/components/editor-interaction.js +1 -0
  273. package/dist/integrations/pi/components/history-editor-loader.d.ts +5 -0
  274. package/dist/integrations/pi/components/history-editor-loader.js +5 -0
  275. package/dist/integrations/pi/components/index.d.ts +26 -0
  276. package/dist/integrations/pi/components/index.js +16 -0
  277. package/dist/integrations/pi/components/modal-frame.d.ts +41 -0
  278. package/dist/integrations/pi/components/modal-frame.js +110 -0
  279. package/dist/integrations/pi/components/models-dialog.d.ts +55 -0
  280. package/dist/integrations/pi/components/models-dialog.js +403 -0
  281. package/dist/integrations/pi/components/owned-editor-ux.d.ts +74 -0
  282. package/dist/integrations/pi/components/owned-editor-ux.js +1094 -0
  283. package/dist/integrations/pi/components/path-word-ranges.d.ts +2 -0
  284. package/dist/integrations/pi/components/path-word-ranges.js +37 -0
  285. package/dist/integrations/pi/components/prompt-input-port.d.ts +18 -0
  286. package/dist/integrations/pi/components/prompt-input-port.js +1 -0
  287. package/dist/integrations/pi/components/resources/builtin-themes.d.ts +167 -0
  288. package/dist/integrations/pi/components/resources/builtin-themes.js +168 -0
  289. package/dist/integrations/pi/components/shell-components.d.ts +7 -0
  290. package/dist/integrations/pi/components/shell-components.js +7 -0
  291. package/dist/integrations/pi/components/shell-editor-autocomplete.d.ts +23 -0
  292. package/dist/integrations/pi/components/shell-editor-autocomplete.js +357 -0
  293. package/dist/integrations/pi/components/shell-extension-ui.d.ts +35 -0
  294. package/dist/integrations/pi/components/shell-extension-ui.js +282 -0
  295. package/dist/integrations/pi/components/shell-footer-status.d.ts +8 -0
  296. package/dist/integrations/pi/components/shell-footer-status.js +287 -0
  297. package/dist/integrations/pi/components/shell-hotkey-sections.d.ts +7 -0
  298. package/dist/integrations/pi/components/shell-hotkey-sections.js +29 -0
  299. package/dist/integrations/pi/components/shell-presenters-info.d.ts +73 -0
  300. package/dist/integrations/pi/components/shell-presenters-info.js +188 -0
  301. package/dist/integrations/pi/components/shell-presenters-transcript.d.ts +29 -0
  302. package/dist/integrations/pi/components/shell-presenters-transcript.js +435 -0
  303. package/dist/integrations/pi/components/shell-selectors-dialogs.d.ts +134 -0
  304. package/dist/integrations/pi/components/shell-selectors-dialogs.js +286 -0
  305. package/dist/integrations/pi/components/shell-shared-facade.d.ts +233 -0
  306. package/dist/integrations/pi/components/shell-shared-facade.js +92 -0
  307. package/dist/integrations/pi/components/skills-command.d.ts +49 -0
  308. package/dist/integrations/pi/components/skills-command.js +119 -0
  309. package/dist/integrations/pi/components/skills-dialog.d.ts +9 -0
  310. package/dist/integrations/pi/components/skills-dialog.js +128 -0
  311. package/dist/integrations/pi/components/submitted-prompt-adapter.d.ts +17 -0
  312. package/dist/integrations/pi/components/submitted-prompt-adapter.js +52 -0
  313. package/dist/integrations/pi/components/theme.d.ts +5 -0
  314. package/dist/integrations/pi/components/theme.js +11 -0
  315. package/dist/integrations/pi/components/thinking-selector-dialog.d.ts +8 -0
  316. package/dist/integrations/pi/components/thinking-selector-dialog.js +22 -0
  317. package/dist/integrations/pi/components/tool-image-presentation.d.ts +21 -0
  318. package/dist/integrations/pi/components/tool-image-presentation.js +83 -0
  319. package/dist/integrations/pi/components/tool-result-adapter.d.ts +6 -0
  320. package/dist/integrations/pi/components/tool-result-adapter.js +27 -0
  321. package/dist/integrations/pi/components/transcript-image-resolver.d.ts +7 -0
  322. package/dist/integrations/pi/components/transcript-image-resolver.js +19 -0
  323. package/dist/integrations/pi/components/upstream/adjacent/core/keybindings.d.ts +445 -0
  324. package/dist/integrations/pi/components/upstream/adjacent/core/keybindings.js +371 -0
  325. package/dist/integrations/pi/components/upstream/assets/earendil-image.json +12 -0
  326. package/dist/integrations/pi/components/upstream/components/countdown-timer.d.ts +13 -0
  327. package/dist/integrations/pi/components/upstream/components/daxnuts.d.ts +29 -0
  328. package/dist/integrations/pi/components/upstream/components/daxnuts.js +146 -0
  329. package/dist/integrations/pi/components/upstream/components/earendil-announcement.d.ts +4 -0
  330. package/dist/integrations/pi/components/upstream/components/earendil-announcement.js +48 -0
  331. package/dist/integrations/pi/components/upstream/components/extension-editor.d.ts +22 -0
  332. package/dist/integrations/pi/components/upstream/components/extension-editor.js +89 -0
  333. package/dist/integrations/pi/components/upstream/components/extension-input.d.ts +17 -0
  334. package/dist/integrations/pi/components/upstream/components/extension-input.js +73 -0
  335. package/dist/integrations/pi/components/upstream/components/extension-selector.d.ts +15 -0
  336. package/dist/integrations/pi/components/upstream/components/extension-selector.js +93 -0
  337. package/dist/integrations/pi/components/upstream/components/mermaid.js +81 -0
  338. package/dist/integrations/pi/components/upstream/components/owned-editor.d.ts +52 -0
  339. package/dist/integrations/pi/components/upstream/components/owned-editor.js +222 -0
  340. package/dist/integrations/pi/components/upstream/components/scoped-models-selector.d.ts +60 -0
  341. package/dist/integrations/pi/components/upstream/components/scoped-models-selector.js +347 -0
  342. package/dist/integrations/pi/components/upstream/components/session-footer.d.ts +12 -0
  343. package/dist/integrations/pi/components/upstream/components/session-footer.js +150 -0
  344. package/dist/integrations/pi/components/upstream/components/session-selector-search.js +161 -0
  345. package/dist/integrations/pi/components/upstream/components/session-selector.d.ts +97 -0
  346. package/dist/integrations/pi/components/upstream/components/session-selector.js +935 -0
  347. package/dist/integrations/pi/components/upstream/components/skill-invocation-message.d.ts +21 -0
  348. package/dist/integrations/pi/components/upstream/components/skill-invocation-message.js +54 -0
  349. package/dist/integrations/pi/components/upstream/components/status-indicator.d.ts +35 -0
  350. package/dist/integrations/pi/components/upstream/components/status-indicator.js +69 -0
  351. package/dist/integrations/pi/components/upstream/components/thinking-selector.d.ts +36 -0
  352. package/dist/integrations/pi/components/upstream/components/thinking-selector.js +153 -0
  353. package/dist/integrations/pi/components/upstream/components/tool-execution.d.ts +67 -0
  354. package/dist/integrations/pi/components/upstream/components/tool-execution.js +365 -0
  355. package/dist/integrations/pi/components/upstream/components/tree-selector.d.ts +102 -0
  356. package/dist/integrations/pi/components/upstream/components/tree-selector.js +1294 -0
  357. package/dist/integrations/pi/components/upstream/components/trust-selector.d.ts +33 -0
  358. package/dist/integrations/pi/components/upstream/components/trust-selector.js +87 -0
  359. package/dist/integrations/pi/components/upstream/external-editor.js +43 -0
  360. package/dist/integrations/pi/components/upstream/history/editor-core.d.ts +289 -0
  361. package/dist/integrations/pi/components/upstream/history/editor-core.js +2145 -0
  362. package/dist/integrations/pi/components/upstream/history/kill-ring.d.ts +35 -0
  363. package/dist/integrations/pi/components/upstream/history/kill-ring.js +51 -0
  364. package/dist/integrations/pi/components/upstream/history/printable-key.d.ts +1 -0
  365. package/dist/integrations/pi/components/upstream/history/printable-key.js +43 -0
  366. package/dist/integrations/pi/components/upstream/history/text-helpers.d.ts +17 -0
  367. package/dist/integrations/pi/components/upstream/history/text-helpers.js +34 -0
  368. package/dist/integrations/pi/components/upstream/history/undo-stack.d.ts +25 -0
  369. package/dist/integrations/pi/components/upstream/history/undo-stack.js +39 -0
  370. package/dist/integrations/pi/components/upstream/history/word-navigation.d.ts +24 -0
  371. package/dist/integrations/pi/components/upstream/history/word-navigation.js +103 -0
  372. package/dist/integrations/pi/components/upstream/model-search.d.ts +18 -0
  373. package/dist/integrations/pi/components/upstream/theme/theme-controller.d.ts +33 -0
  374. package/dist/integrations/pi/components/upstream/theme/theme-controller.js +114 -0
  375. package/dist/integrations/pi/components/upstream/theme/theme.d.ts +61 -0
  376. package/dist/integrations/pi/components/upstream/theme/theme.js +337 -0
  377. package/dist/integrations/pi/engine/adapter.d.ts +140 -0
  378. package/dist/integrations/pi/engine/adapter.js +663 -0
  379. package/dist/integrations/pi/engine/changelog.d.ts +2 -0
  380. package/dist/integrations/pi/engine/changelog.js +63 -0
  381. package/dist/integrations/pi/engine/command-dispatch.d.ts +41 -0
  382. package/dist/integrations/pi/engine/command-dispatch.js +125 -0
  383. package/dist/integrations/pi/engine/compaction-progress.d.ts +24 -0
  384. package/dist/integrations/pi/engine/compaction-progress.js +97 -0
  385. package/dist/integrations/pi/engine/conformance.d.ts +39 -0
  386. package/dist/integrations/pi/engine/conformance.js +140 -0
  387. package/dist/integrations/pi/engine/event-delivery.d.ts +100 -0
  388. package/dist/integrations/pi/engine/event-delivery.js +184 -0
  389. package/dist/integrations/pi/engine/extension-ui-binding.d.ts +35 -0
  390. package/dist/integrations/pi/engine/extension-ui-binding.js +81 -0
  391. package/dist/integrations/pi/engine/http-dispatcher.d.ts +4 -0
  392. package/dist/integrations/pi/engine/http-dispatcher.js +25 -0
  393. package/dist/integrations/pi/engine/index.d.ts +18 -0
  394. package/dist/integrations/pi/engine/index.js +10 -0
  395. package/dist/integrations/pi/engine/message-values.d.ts +29 -0
  396. package/dist/integrations/pi/engine/message-values.js +169 -0
  397. package/dist/integrations/pi/engine/package-integration.d.ts +13 -0
  398. package/dist/integrations/pi/engine/package-integration.js +118 -0
  399. package/dist/integrations/pi/engine/pending-delivery.d.ts +30 -0
  400. package/dist/integrations/pi/engine/pending-delivery.js +156 -0
  401. package/dist/integrations/pi/engine/pi-settings-metadata.json +397 -0
  402. package/dist/integrations/pi/engine/project-trust-preflight.d.ts +22 -0
  403. package/dist/integrations/pi/engine/project-trust-preflight.js +50 -0
  404. package/dist/integrations/pi/engine/prompt-suggestions.d.ts +30 -0
  405. package/dist/integrations/pi/engine/prompt-suggestions.js +102 -0
  406. package/dist/integrations/pi/engine/provider-authentication.d.ts +34 -0
  407. package/dist/integrations/pi/engine/provider-authentication.js +209 -0
  408. package/dist/integrations/pi/engine/repository-pr.d.ts +8 -0
  409. package/dist/integrations/pi/engine/repository-pr.js +62 -0
  410. package/dist/integrations/pi/engine/resource-catalog.d.ts +50 -0
  411. package/dist/integrations/pi/engine/resource-catalog.js +299 -0
  412. package/dist/integrations/pi/engine/resources/changelog.json +12 -0
  413. package/dist/integrations/pi/engine/runtime-integration.d.ts +53 -0
  414. package/dist/integrations/pi/engine/runtime-integration.js +118 -0
  415. package/dist/integrations/pi/engine/session-events.d.ts +48 -0
  416. package/dist/integrations/pi/engine/session-events.js +223 -0
  417. package/dist/integrations/pi/engine/session-integration.d.ts +67 -0
  418. package/dist/integrations/pi/engine/session-integration.js +195 -0
  419. package/dist/integrations/pi/engine/session-runtime.d.ts +98 -0
  420. package/dist/integrations/pi/engine/session-runtime.js +412 -0
  421. package/dist/integrations/pi/engine/session-selection.d.ts +28 -0
  422. package/dist/integrations/pi/engine/session-selection.js +90 -0
  423. package/dist/integrations/pi/engine/settings-bridge.d.ts +121 -0
  424. package/dist/integrations/pi/engine/settings-bridge.js +516 -0
  425. package/dist/integrations/pi/engine/settings-metadata.d.ts +31 -0
  426. package/dist/integrations/pi/engine/settings-metadata.js +67 -0
  427. package/dist/integrations/pi/engine/settings-port.d.ts +42 -0
  428. package/dist/integrations/pi/engine/settings-port.js +363 -0
  429. package/dist/integrations/pi/engine/tool-rendering.d.ts +13 -0
  430. package/dist/integrations/pi/engine/tool-rendering.js +145 -0
  431. package/dist/integrations/pi/engine/transcript-image-assets.d.ts +11 -0
  432. package/dist/integrations/pi/engine/transcript-image-assets.js +86 -0
  433. package/dist/integrations/pi/engine/transcript-projection.d.ts +39 -0
  434. package/dist/integrations/pi/engine/transcript-projection.js +440 -0
  435. package/dist/integrations/pi/engine/usage-view.d.ts +4 -0
  436. package/dist/integrations/pi/engine/usage-view.js +56 -0
  437. package/dist/integrations/pi/engine/windows-filesystem-hygiene.d.ts +21 -0
  438. package/dist/integrations/pi/engine/windows-filesystem-hygiene.js +55 -0
  439. package/dist/integrations/pi/engine/workflow-contexts.d.ts +66 -0
  440. package/dist/integrations/pi/engine/workflow-contexts.js +360 -0
  441. package/dist/integrations/pi/engine/workflow-runner.d.ts +60 -0
  442. package/dist/integrations/pi/engine/workflow-runner.js +536 -0
  443. package/dist/integrations/pi/engine/workflow-support.d.ts +38 -0
  444. package/dist/integrations/pi/engine/workflow-support.js +386 -0
  445. package/dist/integrations/pi/engine/workflows.d.ts +308 -0
  446. package/dist/integrations/pi/engine/workflows.js +81 -0
  447. package/dist/integrations/pi/startup-public.d.ts +2 -0
  448. package/dist/integrations/pi/startup-public.js +2254 -0
  449. package/dist/integrations/pi/startup-public.manifest.json +12679 -0
  450. package/dist/integrations/pi/tui-runtime/adapter.d.ts +58 -0
  451. package/dist/integrations/pi/tui-runtime/adapter.js +792 -0
  452. package/dist/integrations/pi/tui-runtime/contracts.d.ts +158 -0
  453. package/dist/integrations/pi/tui-runtime/contracts.js +1 -0
  454. package/dist/integrations/pi/tui-runtime/damage-aware-terminal.d.ts +88 -0
  455. package/dist/integrations/pi/tui-runtime/damage-aware-terminal.js +439 -0
  456. package/dist/integrations/pi/tui-runtime/index.d.ts +9 -0
  457. package/dist/integrations/pi/tui-runtime/index.js +5 -0
  458. package/dist/integrations/pi/tui-runtime/input-presentation-coordinator.d.ts +39 -0
  459. package/dist/integrations/pi/tui-runtime/input-presentation-coordinator.js +139 -0
  460. package/dist/integrations/pi/tui-runtime/mouse-report-input.d.ts +19 -0
  461. package/dist/integrations/pi/tui-runtime/mouse-report-input.js +91 -0
  462. package/dist/integrations/pi/tui-runtime/overlay-geometry.d.ts +32 -0
  463. package/dist/integrations/pi/tui-runtime/overlay-geometry.js +158 -0
  464. package/dist/integrations/pi/tui-runtime/presentation-adapter.d.ts +4 -0
  465. package/dist/integrations/pi/tui-runtime/presentation-adapter.js +48 -0
  466. package/dist/native/darwin-arm64/manifest.json +4 -4
  467. package/dist/native/darwin-arm64/process-guardian +0 -0
  468. package/dist/native/linux-x64/manifest.json +3 -3
  469. package/dist/native/linux-x64/process-guardian +0 -0
  470. package/dist/native/win32-x64/manifest.json +3 -3
  471. package/dist/native/win32-x64/process-guardian.exe +0 -0
  472. package/dist/product-identity.d.ts +37 -0
  473. package/dist/product-identity.js +119 -0
  474. package/dist/product-identity.json +87 -0
  475. package/dist/runtime-payload-inventory.json +134179 -0
  476. package/dist/ui/apps/contracts.d.ts +72 -0
  477. package/dist/ui/apps/host.d.ts +42 -0
  478. package/dist/ui/apps/host.js +156 -0
  479. package/dist/ui/apps/index.d.ts +5 -0
  480. package/dist/ui/apps/index.js +3 -0
  481. package/dist/ui/apps/registry.d.ts +12 -0
  482. package/dist/ui/apps/registry.js +33 -0
  483. package/dist/ui/components/dialog-panel.d.ts +37 -0
  484. package/dist/ui/components/dialog-panel.js +58 -0
  485. package/dist/ui/components/frame.d.ts +22 -0
  486. package/dist/ui/components/frame.js +55 -0
  487. package/dist/ui/components/index.d.ts +50 -0
  488. package/dist/ui/components/index.js +26 -0
  489. package/dist/ui/components/line-input.d.ts +68 -0
  490. package/dist/ui/components/line-input.js +224 -0
  491. package/dist/ui/components/list-block.d.ts +70 -0
  492. package/dist/ui/components/list-block.js +189 -0
  493. package/dist/ui/components/list-view.d.ts +60 -0
  494. package/dist/ui/components/list-view.js +84 -0
  495. package/dist/ui/components/mouse.d.ts +25 -0
  496. package/dist/ui/components/mouse.js +72 -0
  497. package/dist/ui/components/progress-status.d.ts +9 -0
  498. package/dist/ui/components/progress-status.js +25 -0
  499. package/dist/ui/components/prompt-input.d.ts +32 -0
  500. package/dist/ui/components/prompt-input.js +51 -0
  501. package/dist/ui/components/scrollbar.d.ts +88 -0
  502. package/dist/ui/components/scrollbar.js +137 -0
  503. package/dist/ui/components/selection-copy.d.ts +24 -0
  504. package/dist/ui/components/selection-copy.js +39 -0
  505. package/dist/ui/components/shortcut-hints.d.ts +7 -0
  506. package/dist/ui/components/shortcut-hints.js +12 -0
  507. package/dist/ui/components/shortcuts.d.ts +60 -0
  508. package/dist/ui/components/shortcuts.js +85 -0
  509. package/dist/ui/components/spans.d.ts +28 -0
  510. package/dist/ui/components/spans.js +266 -0
  511. package/dist/ui/components/submitted-prompt.d.ts +23 -0
  512. package/dist/ui/components/submitted-prompt.js +50 -0
  513. package/dist/ui/components/surface.d.ts +20 -0
  514. package/dist/ui/components/surface.js +44 -0
  515. package/dist/ui/components/text-selection.d.ts +62 -0
  516. package/dist/ui/components/text-selection.js +210 -0
  517. package/dist/ui/components/text.d.ts +38 -0
  518. package/dist/ui/components/text.js +185 -0
  519. package/dist/ui/components/theme.d.ts +19 -0
  520. package/dist/ui/components/theme.js +9 -0
  521. package/dist/ui/components/transcript-viewport.d.ts +187 -0
  522. package/dist/ui/components/transcript-viewport.js +886 -0
  523. package/dist/ui/components/value-menu.d.ts +43 -0
  524. package/dist/ui/components/value-menu.js +41 -0
  525. package/dist/ui/components/visible-hyperlinks.d.ts +26 -0
  526. package/dist/ui/components/visible-hyperlinks.js +97 -0
  527. package/dist/ui/settings/declarations.d.ts +127 -0
  528. package/dist/ui/settings/declarations.js +124 -0
  529. package/dist/ui/settings/index.d.ts +10 -0
  530. package/dist/ui/settings/index.js +5 -0
  531. package/dist/ui/settings/manager.d.ts +54 -0
  532. package/dist/ui/settings/manager.js +256 -0
  533. package/dist/ui/settings/migrations.d.ts +13 -0
  534. package/dist/ui/settings/migrations.js +92 -0
  535. package/dist/ui/settings/sections.d.ts +52 -0
  536. package/dist/ui/settings/sections.js +112 -0
  537. package/docs/architecture/boundaries.md +17 -13
  538. package/docs/architecture/code-documentation.md +77 -0
  539. package/docs/architecture/history-editor-provenance.md +100 -0
  540. package/docs/architecture/internal-naming.md +94 -0
  541. package/docs/architecture/process-guardian-provenance.md +3 -1
  542. package/docs/architecture/project-structure.md +72 -30
  543. package/docs/architecture/prompt-suggestions.md +68 -0
  544. package/docs/architecture/resource-and-data-policy.md +28 -2
  545. package/docs/architecture/response-copy-delivery.md +85 -0
  546. package/docs/architecture/terminal-host-proof-gate.md +1 -1
  547. package/docs/architecture/terminal-host-spike-evidence.md +1 -1
  548. package/docs/architecture/tool-image-presentation.md +62 -0
  549. package/docs/architecture/toolchain.md +34 -10
  550. package/docs/architecture/ui-reference-provenance.md +73 -6
  551. package/docs/ci-release-runbook.md +266 -79
  552. package/docs/features/launch-profiles.md +24 -17
  553. package/docs/features/modal-content-interaction.md +38 -0
  554. package/docs/features/prompt-history.md +149 -0
  555. package/docs/local-worktree-cleanup.md +214 -0
  556. package/docs/manual-code-streaming-cleanup.md +88 -0
  557. package/docs/manual-ghost-link-baseline.md +89 -0
  558. package/docs/manual-launch-instance-acceptance.md +12 -35
  559. package/docs/manual-owned-ui-checkpoint.md +79 -0
  560. package/docs/manual-pi-boundary-candidate.md +4 -5
  561. package/docs/manual-terminal-colour-check.md +4 -3
  562. package/docs/openspec-archive-automation.md +269 -0
  563. package/docs/repository-governance-live-acceptance.md +77 -0
  564. package/docs/validation.md +105 -0
  565. package/package.json +53 -34
  566. package/dist/src/cli/capabilities.d.ts +0 -15
  567. package/dist/src/cli/capabilities.js +0 -7
  568. package/dist/src/cli/dispatch.d.ts +0 -32
  569. package/dist/src/cli/dispatch.js +0 -142
  570. package/dist/src/cli/index.d.ts +0 -5
  571. package/dist/src/cli/index.js +0 -5
  572. package/dist/src/cli/packages.d.ts +0 -23
  573. package/dist/src/cli/packages.js +0 -84
  574. package/dist/src/cli/version-stats.d.ts +0 -16
  575. package/dist/src/cli/version-stats.js +0 -72
  576. package/dist/src/cli/version.d.ts +0 -2
  577. package/dist/src/cli/version.js +0 -23
  578. package/dist/src/composition/index.d.ts +0 -48
  579. package/dist/src/composition/index.js +0 -258
  580. package/dist/src/features/launch/development-launch.js +0 -28
  581. package/dist/src/features/launch/index.d.ts +0 -7
  582. package/dist/src/features/launch/index.js +0 -7
  583. package/dist/src/features/launch/intent.d.ts +0 -7
  584. package/dist/src/features/launch/intent.js +0 -4
  585. package/dist/src/features/launch/prepare-launch.d.ts +0 -13
  586. package/dist/src/features/launch/prepare-launch.js +0 -21
  587. package/dist/src/features/launch/profile-paths.d.ts +0 -15
  588. package/dist/src/features/launch/profile-paths.js +0 -31
  589. package/dist/src/features/launch/profiles.d.ts +0 -12
  590. package/dist/src/features/launch/profiles.js +0 -26
  591. package/dist/src/features/launch/runtime-selection.d.ts +0 -19
  592. package/dist/src/features/launch/runtime-selection.js +0 -13
  593. package/dist/src/features/owned-ui/customization.d.ts +0 -38
  594. package/dist/src/features/owned-ui/customization.js +0 -108
  595. package/dist/src/features/owned-ui/diagnostics.d.ts +0 -33
  596. package/dist/src/features/owned-ui/diagnostics.js +0 -94
  597. package/dist/src/features/owned-ui/index.d.ts +0 -4
  598. package/dist/src/features/owned-ui/index.js +0 -4
  599. package/dist/src/features/owned-ui/run.d.ts +0 -11
  600. package/dist/src/features/owned-ui/run.js +0 -15
  601. package/dist/src/features/owned-ui/settings-app.d.ts +0 -22
  602. package/dist/src/features/owned-ui/settings-app.js +0 -633
  603. package/dist/src/features/workspace/capabilities.d.ts +0 -31
  604. package/dist/src/features/workspace/capabilities.js +0 -75
  605. package/dist/src/features/workspace/index.d.ts +0 -6
  606. package/dist/src/features/workspace/index.js +0 -6
  607. package/dist/src/features/workspace/presentation.d.ts +0 -30
  608. package/dist/src/features/workspace/presentation.js +0 -70
  609. package/dist/src/features/workspace/reconciliation.d.ts +0 -15
  610. package/dist/src/features/workspace/reconciliation.js +0 -82
  611. package/dist/src/features/workspace/reducer.d.ts +0 -42
  612. package/dist/src/features/workspace/reducer.js +0 -213
  613. package/dist/src/features/workspace/router.d.ts +0 -31
  614. package/dist/src/features/workspace/router.js +0 -124
  615. package/dist/src/features/workspace/store.d.ts +0 -17
  616. package/dist/src/features/workspace/store.js +0 -54
  617. package/dist/src/foundation/agent-engine-contracts/capability-ports.d.ts +0 -95
  618. package/dist/src/foundation/agent-engine-contracts/domain-validation.js +0 -89
  619. package/dist/src/foundation/agent-engine-contracts/domain.d.ts +0 -116
  620. package/dist/src/foundation/agent-engine-contracts/index.d.ts +0 -8
  621. package/dist/src/foundation/agent-engine-contracts/index.js +0 -8
  622. package/dist/src/foundation/agent-engine-contracts/package-ports.d.ts +0 -54
  623. package/dist/src/foundation/launch-guardian/index.d.ts +0 -1
  624. package/dist/src/foundation/launch-guardian/index.js +0 -1
  625. package/dist/src/foundation/launch-guardian/main.d.ts +0 -31
  626. package/dist/src/foundation/launch-guardian/main.js +0 -165
  627. package/dist/src/foundation/lifecycle/index.d.ts +0 -4
  628. package/dist/src/foundation/lifecycle/index.js +0 -4
  629. package/dist/src/foundation/lifecycle/model.d.ts +0 -64
  630. package/dist/src/foundation/lifecycle/model.js +0 -40
  631. package/dist/src/foundation/lifecycle/paths.d.ts +0 -10
  632. package/dist/src/foundation/lifecycle/paths.js +0 -42
  633. package/dist/src/foundation/native-host-protocol/codec.d.ts +0 -11
  634. package/dist/src/foundation/native-host-protocol/codec.js +0 -56
  635. package/dist/src/foundation/native-host-protocol/evidence.d.ts +0 -67
  636. package/dist/src/foundation/native-host-protocol/evidence.js +0 -141
  637. package/dist/src/foundation/native-host-protocol/index.d.ts +0 -4
  638. package/dist/src/foundation/native-host-protocol/index.js +0 -4
  639. package/dist/src/foundation/native-host-protocol/messages.d.ts +0 -56
  640. package/dist/src/foundation/native-host-protocol/messages.js +0 -149
  641. package/dist/src/foundation/native-host-protocol/proof-gate.d.ts +0 -13
  642. package/dist/src/foundation/native-host-protocol/proof-gate.js +0 -33
  643. package/dist/src/foundation/owned-ui-contracts/extension-ui.d.ts +0 -302
  644. package/dist/src/foundation/owned-ui-contracts/index.d.ts +0 -3
  645. package/dist/src/foundation/owned-ui-contracts/index.js +0 -3
  646. package/dist/src/foundation/owned-ui-contracts/model.d.ts +0 -241
  647. package/dist/src/foundation/owned-ui-contracts/validation.d.ts +0 -11
  648. package/dist/src/foundation/owned-ui-contracts/validation.js +0 -395
  649. package/dist/src/foundation/owned-ui-settings/declarations.d.ts +0 -13
  650. package/dist/src/foundation/owned-ui-settings/declarations.js +0 -39
  651. package/dist/src/foundation/owned-ui-settings/index.d.ts +0 -6
  652. package/dist/src/foundation/owned-ui-settings/index.js +0 -6
  653. package/dist/src/foundation/owned-ui-settings/migrations.d.ts +0 -13
  654. package/dist/src/foundation/owned-ui-settings/migrations.js +0 -28
  655. package/dist/src/foundation/owned-ui-settings/sections.d.ts +0 -70
  656. package/dist/src/foundation/owned-ui-settings/sections.js +0 -93
  657. package/dist/src/foundation/owned-ui-settings/session.d.ts +0 -44
  658. package/dist/src/foundation/owned-ui-settings/session.js +0 -145
  659. package/dist/src/foundation/owned-ui-settings/store.d.ts +0 -28
  660. package/dist/src/foundation/owned-ui-settings/store.js +0 -90
  661. package/dist/src/foundation/pi-component-adapter/components.d.ts +0 -4
  662. package/dist/src/foundation/pi-component-adapter/components.js +0 -64
  663. package/dist/src/foundation/pi-component-adapter/conformance.d.ts +0 -17
  664. package/dist/src/foundation/pi-component-adapter/conformance.js +0 -69
  665. package/dist/src/foundation/pi-component-adapter/index.d.ts +0 -13
  666. package/dist/src/foundation/pi-component-adapter/index.js +0 -13
  667. package/dist/src/foundation/pi-component-adapter/resources/builtin-themes.d.ts +0 -165
  668. package/dist/src/foundation/pi-component-adapter/resources/builtin-themes.js +0 -166
  669. package/dist/src/foundation/pi-component-adapter/shell-components.d.ts +0 -6
  670. package/dist/src/foundation/pi-component-adapter/shell-components.js +0 -6
  671. package/dist/src/foundation/pi-component-adapter/shell-editor-autocomplete.d.ts +0 -11
  672. package/dist/src/foundation/pi-component-adapter/shell-editor-autocomplete.js +0 -162
  673. package/dist/src/foundation/pi-component-adapter/shell-extension-ui.d.ts +0 -35
  674. package/dist/src/foundation/pi-component-adapter/shell-extension-ui.js +0 -279
  675. package/dist/src/foundation/pi-component-adapter/shell-footer-status.d.ts +0 -7
  676. package/dist/src/foundation/pi-component-adapter/shell-footer-status.js +0 -189
  677. package/dist/src/foundation/pi-component-adapter/shell-presenters-transcript.d.ts +0 -57
  678. package/dist/src/foundation/pi-component-adapter/shell-presenters-transcript.js +0 -429
  679. package/dist/src/foundation/pi-component-adapter/shell-selectors-dialogs.d.ts +0 -113
  680. package/dist/src/foundation/pi-component-adapter/shell-selectors-dialogs.js +0 -235
  681. package/dist/src/foundation/pi-component-adapter/shell-shared-facade.d.ts +0 -116
  682. package/dist/src/foundation/pi-component-adapter/shell-shared-facade.js +0 -87
  683. package/dist/src/foundation/pi-component-adapter/theme.d.ts +0 -1
  684. package/dist/src/foundation/pi-component-adapter/theme.js +0 -1
  685. package/dist/src/foundation/pi-component-adapter/upstream/adjacent/core/keybindings.d.ts +0 -422
  686. package/dist/src/foundation/pi-component-adapter/upstream/adjacent/core/keybindings.js +0 -296
  687. package/dist/src/foundation/pi-component-adapter/upstream/components/countdown-timer.d.ts +0 -10
  688. package/dist/src/foundation/pi-component-adapter/upstream/components/custom-entry.d.ts +0 -17
  689. package/dist/src/foundation/pi-component-adapter/upstream/components/custom-entry.js +0 -51
  690. package/dist/src/foundation/pi-component-adapter/upstream/components/daxnuts.d.ts +0 -22
  691. package/dist/src/foundation/pi-component-adapter/upstream/components/daxnuts.js +0 -142
  692. package/dist/src/foundation/pi-component-adapter/upstream/components/earendil-announcement.d.ts +0 -4
  693. package/dist/src/foundation/pi-component-adapter/upstream/components/earendil-announcement.js +0 -19
  694. package/dist/src/foundation/pi-component-adapter/upstream/components/extension-editor.d.ts +0 -17
  695. package/dist/src/foundation/pi-component-adapter/upstream/components/extension-editor.js +0 -81
  696. package/dist/src/foundation/pi-component-adapter/upstream/components/first-time-setup.d.ts +0 -24
  697. package/dist/src/foundation/pi-component-adapter/upstream/components/first-time-setup.js +0 -105
  698. package/dist/src/foundation/pi-component-adapter/upstream/components/markdown-transform.d.ts +0 -2
  699. package/dist/src/foundation/pi-component-adapter/upstream/components/markdown-transform.js +0 -18
  700. package/dist/src/foundation/pi-component-adapter/upstream/components/mermaid.js +0 -77
  701. package/dist/src/foundation/pi-component-adapter/upstream/components/owned-editor.d.ts +0 -18
  702. package/dist/src/foundation/pi-component-adapter/upstream/components/owned-editor.js +0 -55
  703. package/dist/src/foundation/pi-component-adapter/upstream/components/scoped-models-selector.d.ts +0 -55
  704. package/dist/src/foundation/pi-component-adapter/upstream/components/scoped-models-selector.js +0 -342
  705. package/dist/src/foundation/pi-component-adapter/upstream/components/session-footer.d.ts +0 -10
  706. package/dist/src/foundation/pi-component-adapter/upstream/components/session-footer.js +0 -120
  707. package/dist/src/foundation/pi-component-adapter/upstream/components/session-selector-search.js +0 -159
  708. package/dist/src/foundation/pi-component-adapter/upstream/components/session-selector.d.ts +0 -95
  709. package/dist/src/foundation/pi-component-adapter/upstream/components/session-selector.js +0 -889
  710. package/dist/src/foundation/pi-component-adapter/upstream/components/skill-invocation-message.d.ts +0 -19
  711. package/dist/src/foundation/pi-component-adapter/upstream/components/skill-invocation-message.js +0 -44
  712. package/dist/src/foundation/pi-component-adapter/upstream/components/status-indicator.d.ts +0 -30
  713. package/dist/src/foundation/pi-component-adapter/upstream/components/status-indicator.js +0 -59
  714. package/dist/src/foundation/pi-component-adapter/upstream/components/tree-selector.d.ts +0 -98
  715. package/dist/src/foundation/pi-component-adapter/upstream/components/tree-selector.js +0 -1272
  716. package/dist/src/foundation/pi-component-adapter/upstream/components/trust-selector.d.ts +0 -33
  717. package/dist/src/foundation/pi-component-adapter/upstream/components/trust-selector.js +0 -76
  718. package/dist/src/foundation/pi-component-adapter/upstream/external-editor.js +0 -39
  719. package/dist/src/foundation/pi-component-adapter/upstream/model-search.d.ts +0 -15
  720. package/dist/src/foundation/pi-component-adapter/upstream/theme/theme-controller.d.ts +0 -25
  721. package/dist/src/foundation/pi-component-adapter/upstream/theme/theme-controller.js +0 -117
  722. package/dist/src/foundation/pi-component-adapter/upstream/theme/theme.d.ts +0 -61
  723. package/dist/src/foundation/pi-component-adapter/upstream/theme/theme.js +0 -326
  724. package/dist/src/foundation/pi-engine-adapter/adapter.d.ts +0 -164
  725. package/dist/src/foundation/pi-engine-adapter/adapter.js +0 -2367
  726. package/dist/src/foundation/pi-engine-adapter/conformance.d.ts +0 -37
  727. package/dist/src/foundation/pi-engine-adapter/conformance.js +0 -130
  728. package/dist/src/foundation/pi-engine-adapter/index.d.ts +0 -10
  729. package/dist/src/foundation/pi-engine-adapter/index.js +0 -10
  730. package/dist/src/foundation/pi-engine-adapter/model-auth-integration.d.ts +0 -30
  731. package/dist/src/foundation/pi-engine-adapter/model-auth-integration.js +0 -61
  732. package/dist/src/foundation/pi-engine-adapter/package-integration.d.ts +0 -13
  733. package/dist/src/foundation/pi-engine-adapter/package-integration.js +0 -112
  734. package/dist/src/foundation/pi-engine-adapter/pi-settings-metadata.json +0 -374
  735. package/dist/src/foundation/pi-engine-adapter/resource-extension-integration.d.ts +0 -31
  736. package/dist/src/foundation/pi-engine-adapter/resource-extension-integration.js +0 -80
  737. package/dist/src/foundation/pi-engine-adapter/runtime-integration.d.ts +0 -35
  738. package/dist/src/foundation/pi-engine-adapter/runtime-integration.js +0 -67
  739. package/dist/src/foundation/pi-engine-adapter/session-integration.d.ts +0 -43
  740. package/dist/src/foundation/pi-engine-adapter/session-integration.js +0 -97
  741. package/dist/src/foundation/pi-engine-adapter/settings-integration.d.ts +0 -55
  742. package/dist/src/foundation/pi-engine-adapter/settings-integration.js +0 -233
  743. package/dist/src/foundation/pi-engine-adapter/workflow-controllers.d.ts +0 -20
  744. package/dist/src/foundation/pi-engine-adapter/workflow-controllers.js +0 -48
  745. package/dist/src/foundation/pi-engine-adapter/workflows.d.ts +0 -173
  746. package/dist/src/foundation/pi-engine-adapter/workflows.js +0 -60
  747. package/dist/src/foundation/pi-owned-ui-integration/index.d.ts +0 -2
  748. package/dist/src/foundation/pi-owned-ui-integration/index.js +0 -2
  749. package/dist/src/foundation/pi-owned-ui-integration/route-host.d.ts +0 -29
  750. package/dist/src/foundation/pi-owned-ui-integration/session-shell.d.ts +0 -106
  751. package/dist/src/foundation/pi-owned-ui-integration/session-shell.js +0 -1518
  752. package/dist/src/foundation/pi-tui-runtime-adapter/adapter.d.ts +0 -39
  753. package/dist/src/foundation/pi-tui-runtime-adapter/adapter.js +0 -493
  754. package/dist/src/foundation/pi-tui-runtime-adapter/conformance.d.ts +0 -18
  755. package/dist/src/foundation/pi-tui-runtime-adapter/conformance.js +0 -145
  756. package/dist/src/foundation/pi-tui-runtime-adapter/contracts.d.ts +0 -120
  757. package/dist/src/foundation/pi-tui-runtime-adapter/index.d.ts +0 -4
  758. package/dist/src/foundation/pi-tui-runtime-adapter/index.js +0 -4
  759. package/dist/src/foundation/pi-tui-runtime-adapter/presentation-adapter.d.ts +0 -4
  760. package/dist/src/foundation/pi-tui-runtime-adapter/presentation-adapter.js +0 -48
  761. package/dist/src/foundation/presentation-contracts/index.d.ts +0 -96
  762. package/dist/src/foundation/presentation-contracts/index.js +0 -38
  763. package/dist/src/foundation/process-containment/index.d.ts +0 -5
  764. package/dist/src/foundation/process-containment/index.js +0 -5
  765. package/dist/src/foundation/process-containment/linux-process-inspector.d.ts +0 -6
  766. package/dist/src/foundation/process-containment/linux-process-inspector.js +0 -26
  767. package/dist/src/foundation/process-containment/native-guardian-containment.d.ts +0 -16
  768. package/dist/src/foundation/process-containment/native-guardian-containment.js +0 -139
  769. package/dist/src/foundation/process-containment/windows-process-inspector.d.ts +0 -17
  770. package/dist/src/foundation/process-containment/windows-process-inspector.js +0 -53
  771. package/dist/src/foundation/protocol/client.d.ts +0 -17
  772. package/dist/src/foundation/protocol/client.js +0 -129
  773. package/dist/src/foundation/protocol/index.d.ts +0 -2
  774. package/dist/src/foundation/protocol/index.js +0 -2
  775. package/dist/src/foundation/protocol/messages.d.ts +0 -89
  776. package/dist/src/foundation/protocol/messages.js +0 -99
  777. package/dist/src/foundation/release/bootstrap.d.ts +0 -29
  778. package/dist/src/foundation/release/bootstrap.js +0 -335
  779. package/dist/src/foundation/release/cohort-state.d.ts +0 -70
  780. package/dist/src/foundation/release/cohort-state.js +0 -202
  781. package/dist/src/foundation/release/index.d.ts +0 -10
  782. package/dist/src/foundation/release/index.js +0 -10
  783. package/dist/src/foundation/release/release-gc.d.ts +0 -5
  784. package/dist/src/foundation/release/release-gc.js +0 -16
  785. package/dist/src/foundation/release/release-store.d.ts +0 -43
  786. package/dist/src/foundation/release/release-store.js +0 -175
  787. package/dist/src/foundation/release/release.d.ts +0 -38
  788. package/dist/src/foundation/release/release.js +0 -204
  789. package/dist/src/foundation/release/update-transaction.d.ts +0 -31
  790. package/dist/src/foundation/release/update-transaction.js +0 -89
  791. package/dist/src/foundation/release/update.d.ts +0 -82
  792. package/dist/src/foundation/release/update.js +0 -529
  793. package/dist/src/foundation/storage/control-store.d.ts +0 -61
  794. package/dist/src/foundation/storage/control-store.js +0 -530
  795. package/dist/src/foundation/storage/index.d.ts +0 -1
  796. package/dist/src/foundation/storage/index.js +0 -1
  797. package/dist/src/foundation/structured-agent-runtime/backpressure.d.ts +0 -46
  798. package/dist/src/foundation/structured-agent-runtime/backpressure.js +0 -118
  799. package/dist/src/foundation/structured-agent-runtime/commands.d.ts +0 -52
  800. package/dist/src/foundation/structured-agent-runtime/commands.js +0 -164
  801. package/dist/src/foundation/structured-agent-runtime/handshake.d.ts +0 -41
  802. package/dist/src/foundation/structured-agent-runtime/handshake.js +0 -151
  803. package/dist/src/foundation/structured-agent-runtime/index.d.ts +0 -5
  804. package/dist/src/foundation/structured-agent-runtime/index.js +0 -5
  805. package/dist/src/foundation/structured-agent-runtime/reconnection.d.ts +0 -37
  806. package/dist/src/foundation/structured-agent-runtime/reconnection.js +0 -129
  807. package/dist/src/foundation/structured-agent-runtime/state.d.ts +0 -56
  808. package/dist/src/foundation/structured-agent-runtime/state.js +0 -118
  809. package/dist/src/foundation/supervision/index.d.ts +0 -3
  810. package/dist/src/foundation/supervision/index.js +0 -3
  811. package/dist/src/foundation/supervision/main.d.ts +0 -1
  812. package/dist/src/foundation/supervision/main.js +0 -41
  813. package/dist/src/foundation/supervision/paths.d.ts +0 -1
  814. package/dist/src/foundation/supervision/paths.js +0 -1
  815. package/dist/src/foundation/supervision/server.d.ts +0 -22
  816. package/dist/src/foundation/supervision/server.js +0 -451
  817. package/dist/src/foundation/ui-apps/contracts.d.ts +0 -42
  818. package/dist/src/foundation/ui-apps/host.d.ts +0 -42
  819. package/dist/src/foundation/ui-apps/host.js +0 -152
  820. package/dist/src/foundation/ui-apps/index.d.ts +0 -3
  821. package/dist/src/foundation/ui-apps/index.js +0 -3
  822. package/dist/src/foundation/ui-apps/registry.d.ts +0 -11
  823. package/dist/src/foundation/ui-apps/registry.js +0 -32
  824. package/dist/src/foundation/ui-components/dialog-panel.d.ts +0 -36
  825. package/dist/src/foundation/ui-components/dialog-panel.js +0 -47
  826. package/dist/src/foundation/ui-components/frame.d.ts +0 -21
  827. package/dist/src/foundation/ui-components/frame.js +0 -54
  828. package/dist/src/foundation/ui-components/index.d.ts +0 -18
  829. package/dist/src/foundation/ui-components/index.js +0 -18
  830. package/dist/src/foundation/ui-components/line-input.d.ts +0 -74
  831. package/dist/src/foundation/ui-components/line-input.js +0 -245
  832. package/dist/src/foundation/ui-components/list-block.d.ts +0 -66
  833. package/dist/src/foundation/ui-components/list-block.js +0 -176
  834. package/dist/src/foundation/ui-components/list-view.d.ts +0 -66
  835. package/dist/src/foundation/ui-components/list-view.js +0 -76
  836. package/dist/src/foundation/ui-components/mouse.d.ts +0 -15
  837. package/dist/src/foundation/ui-components/mouse.js +0 -46
  838. package/dist/src/foundation/ui-components/scrollbar.d.ts +0 -62
  839. package/dist/src/foundation/ui-components/scrollbar.js +0 -102
  840. package/dist/src/foundation/ui-components/shortcuts.d.ts +0 -57
  841. package/dist/src/foundation/ui-components/shortcuts.js +0 -81
  842. package/dist/src/foundation/ui-components/spans.d.ts +0 -7
  843. package/dist/src/foundation/ui-components/spans.js +0 -59
  844. package/dist/src/foundation/ui-components/surface.d.ts +0 -20
  845. package/dist/src/foundation/ui-components/surface.js +0 -38
  846. package/dist/src/foundation/ui-components/text.d.ts +0 -24
  847. package/dist/src/foundation/ui-components/text.js +0 -123
  848. package/dist/src/foundation/ui-components/theme.d.ts +0 -23
  849. package/dist/src/foundation/ui-components/theme.js +0 -13
  850. package/dist/src/foundation/ui-components/value-menu.d.ts +0 -41
  851. package/dist/src/foundation/ui-components/value-menu.js +0 -33
  852. package/dist/src/foundation/workspace-contracts/index.d.ts +0 -2
  853. package/dist/src/foundation/workspace-contracts/index.js +0 -2
  854. package/dist/src/foundation/workspace-contracts/model.d.ts +0 -248
  855. package/dist/src/foundation/workspace-contracts/model.js +0 -2
  856. package/dist/src/foundation/workspace-contracts/validation.d.ts +0 -13
  857. package/dist/src/foundation/workspace-contracts/validation.js +0 -335
  858. package/dist/src/product-identity.d.ts +0 -37
  859. package/dist/src/product-identity.js +0 -150
  860. package/dist/src/product-identity.json +0 -99
  861. package/docs/manual-transparent-checkpoint.md +0 -53
  862. /package/dist/{src/foundation/agent-engine-contracts/domain.js → app/session-shell/paste-helper.d.ts} +0 -0
  863. /package/dist/{src/foundation/agent-engine-contracts/ports.js → app/session-shell/paste-text-worker.d.ts} +0 -0
  864. /package/dist/{src/foundation/lifecycle/commands.js → app/session-shell/paste-types.js} +0 -0
  865. /package/dist/{src/foundation/pi-owned-ui-integration/route-host.js → app/session-shell/response-copy-helper.d.ts} +0 -0
  866. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/capability-ports.js +0 -0
  867. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/domain-validation.d.ts +0 -0
  868. /package/dist/{src/foundation/pi-tui-runtime-adapter/contracts.js → contracts/agent-engine/domain.js} +0 -0
  869. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/model.d.ts +0 -0
  870. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/model.js +0 -0
  871. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/package-ports.js +0 -0
  872. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/ports.d.ts +0 -0
  873. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/serialization.d.ts +0 -0
  874. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/serialization.js +0 -0
  875. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/validation.d.ts +0 -0
  876. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/validation.js +0 -0
  877. /package/dist/{src/foundation/owned-ui-contracts → contracts/owned-ui}/extension-ui.js +0 -0
  878. /package/dist/{src/foundation/owned-ui-contracts → contracts/owned-ui}/model.js +0 -0
  879. /package/dist/{src/features → features}/launch/development-launch.d.ts +0 -0
  880. /package/dist/{src/features → features}/launch/initialize-profile.d.ts +0 -0
  881. /package/dist/{src/features → features}/launch/initialize-profile.js +0 -0
  882. /package/dist/{src/foundation → foundation}/lifecycle/commands.d.ts +0 -0
  883. /package/dist/{src/foundation → foundation}/lifecycle/launch-instance.d.ts +0 -0
  884. /package/dist/{src/foundation → foundation}/lifecycle/launch-instance.js +0 -0
  885. /package/dist/{src/foundation → foundation}/process-containment/artifact.d.ts +0 -0
  886. /package/dist/{src/foundation → foundation}/process-containment/artifact.js +0 -0
  887. /package/dist/{src/foundation → foundation}/process-containment/contracts.d.ts +0 -0
  888. /package/dist/{src/foundation → foundation}/process-containment/contracts.js +0 -0
  889. /package/dist/{src/foundation → foundation}/release/cohort-selection.d.ts +0 -0
  890. /package/dist/{src/foundation → foundation}/release/cohort-selection.js +0 -0
  891. /package/dist/{src/foundation → foundation}/release/concurrency.d.ts +0 -0
  892. /package/dist/{src/foundation → foundation}/release/concurrency.js +0 -0
  893. /package/dist/{src/foundation → foundation}/release/process-cleanup.d.ts +0 -0
  894. /package/dist/{src/foundation → foundation}/release/process-cleanup.js +0 -0
  895. /package/dist/{src/foundation → foundation}/release/stable-release.d.ts +0 -0
  896. /package/dist/{src/foundation → foundation}/release/stable-release.js +0 -0
  897. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/countdown-timer.js +0 -0
  898. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/mermaid.d.ts +0 -0
  899. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/session-selector-search.d.ts +0 -0
  900. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/external-editor.d.ts +0 -0
  901. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/model-search.js +0 -0
  902. /package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/public-main-entry.d.ts +0 -0
  903. /package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/public-main-entry.js +0 -0
  904. /package/dist/{src/foundation/ui-apps → ui/apps}/contracts.js +0 -0
  905. /package/dist/{src/foundation/ui-components → ui/components}/label.d.ts +0 -0
  906. /package/dist/{src/foundation/ui-components → ui/components}/label.js +0 -0
  907. /package/dist/{src/foundation/ui-components → ui/components}/pane.d.ts +0 -0
  908. /package/dist/{src/foundation/ui-components → ui/components}/pane.js +0 -0
  909. /package/dist/{src/foundation/ui-components → ui/components}/revision.d.ts +0 -0
  910. /package/dist/{src/foundation/ui-components → ui/components}/revision.js +0 -0
  911. /package/dist/{src/foundation/ui-components → ui/components}/status-line.d.ts +0 -0
  912. /package/dist/{src/foundation/ui-components → ui/components}/status-line.js +0 -0
  913. /package/dist/{src/foundation/ui-components → ui/components}/stepper.d.ts +0 -0
  914. /package/dist/{src/foundation/ui-components → ui/components}/stepper.js +0 -0
  915. /package/dist/{src/foundation/owned-ui-settings → ui/settings}/resolution.d.ts +0 -0
  916. /package/dist/{src/foundation/owned-ui-settings → ui/settings}/resolution.js +0 -0
@@ -0,0 +1,227 @@
1
+ import { createHash } from "node:crypto";
2
+ import { lstat, readFile, realpath, stat } from "node:fs/promises";
3
+ import { basename, isAbsolute, relative, resolve, sep } from "node:path";
4
+ import { PRODUCT_IDENTITY } from "../../product-identity.js";
5
+ import { PRIVATE_LAUNCH_CONTRACT, launchContractTarget } from "../launch-context/index.js";
6
+ import { DEPENDENCY_LAYER_MANIFEST, dependencyLayerCertificationPath, legacyDependencyLayerCertificationPath, readCertifiedDependencyLayer } from "./dependency-layer.js";
7
+ import { managedDependencyCertificationPath } from "./dependency-certification.js";
8
+ import { immutablePlatformPolicy } from "./immutable-platform.js";
9
+ import { PRODUCT_PACKAGE_NAME } from "./release.js";
10
+ import { RELEASE_MANIFEST_FILENAME } from "./release-store.js";
11
+ import { UpdateTransactionStore } from "./update-transaction.js";
12
+ const RESTART_SEAL_VERSION = 1;
13
+ const REQUIRED_LAUNCH_ENTRIES = ["bin/supervisor.js", "bin/guardian.js"];
14
+ /** Build compact restart authority after complete content verification established read-only payload files. */
15
+ export async function createRestartSeal(release, dataDir) {
16
+ const policy = immutablePlatformPolicy();
17
+ if (policy === null)
18
+ return null;
19
+ const canonicalData = await realpath(dataDir);
20
+ const releasesRoot = await realpath(resolve(canonicalData, "releases"));
21
+ const releaseRoot = await realpath(release.releaseRoot);
22
+ assertDirectChild(releasesRoot, releaseRoot, release.releaseId, "release");
23
+ const manifestPath = resolve(releaseRoot, RELEASE_MANIFEST_FILENAME);
24
+ const launchEntries = REQUIRED_LAUNCH_ENTRIES.map(path => release.files.find(candidate => candidate.path === path));
25
+ if (launchEntries.some(file => file === undefined))
26
+ return null;
27
+ const certifiedLaunchEntries = launchEntries;
28
+ const layersRoot = release.dependencyLayers?.length ? await realpath(resolve(canonicalData, "dependency-layers")) : null;
29
+ const dependencyLayers = await Promise.all((release.dependencyLayers ?? []).map(async (reference) => {
30
+ if (layersRoot === null)
31
+ throw new Error("restart certification has no dependency-layer root");
32
+ await readCertifiedDependencyLayer(canonicalData, reference.layerId, reference);
33
+ const layerRoot = await realpath(resolve(layersRoot, reference.layerId));
34
+ assertDirectChild(layersRoot, layerRoot, reference.layerId, "dependency layer");
35
+ const bindingPath = resolve(releaseRoot, reference.binding);
36
+ const bindingTarget = await realpath(bindingPath);
37
+ const expectedTarget = await realpath(resolve(layerRoot, "node_modules"));
38
+ if (bindingTarget !== expectedTarget)
39
+ throw new Error(`restart certification dependency binding targets unexpected content: ${bindingPath}`);
40
+ return {
41
+ ...reference,
42
+ layerRoot: await pathEvidence(layerRoot, "directory"),
43
+ manifest: await pathEvidence(resolve(layerRoot, DEPENDENCY_LAYER_MANIFEST), "file"),
44
+ certification: await pathEvidence(dependencyLayerCertificationPath(canonicalData, reference.layerId), "file"),
45
+ bindingEvidence: await pathEvidence(bindingPath, "binding", true),
46
+ bindingTarget,
47
+ };
48
+ }));
49
+ const core = {
50
+ version: RESTART_SEAL_VERSION,
51
+ launchContract: launchContractTarget(release),
52
+ platform: process.platform,
53
+ platformPolicy: policy,
54
+ releaseId: release.releaseId,
55
+ packageVersion: release.packageVersion,
56
+ contentDigest: release.contentDigest,
57
+ packageRoot: release.packageRoot,
58
+ releaseRoot: await pathEvidence(releaseRoot, "directory"),
59
+ manifest: await pathEvidence(manifestPath, "file"),
60
+ launchEntries: certifiedLaunchEntries,
61
+ launchEntryEvidence: await Promise.all(certifiedLaunchEntries.map(file => pathEvidence(resolve(releaseRoot, file.path), "file"))),
62
+ dependencyLayers,
63
+ certifiedAt: new Date().toISOString(),
64
+ };
65
+ return { ...core, sealDigest: restartSealDigest(core) };
66
+ }
67
+ /** Recover an approved release from durable bounded evidence without traversing its payload. */
68
+ export async function readRestartCertifiedRelease(record, dataDir, onEvent) {
69
+ const transaction = await new UpdateTransactionStore(dataDir).read();
70
+ if (transaction?.status === "active")
71
+ throw new Error("restart certification is unavailable during an active update transaction");
72
+ const certificationPath = resolve(dataDir, `certification-${record.releaseId}.json`);
73
+ if (record.diagnosticsPath !== undefined && record.diagnosticsPath !== certificationPath) {
74
+ throw new Error("restart certification path differs from the approved release record");
75
+ }
76
+ const certificationMetadata = await lstat(certificationPath);
77
+ onEvent?.({ operation: "restart-evidence-read", path: certificationPath });
78
+ if (!certificationMetadata.isFile() || certificationMetadata.isSymbolicLink() || (certificationMetadata.mode & 0o222) !== 0) {
79
+ throw new Error("restart certification is not an immutable regular file");
80
+ }
81
+ const certification = await readJson(certificationPath, onEvent);
82
+ if (certification.schema !== PRODUCT_IDENTITY.evidence.releaseCertificationSchema
83
+ || certification.releaseId !== record.releaseId || certification.contentDigest !== record.contentDigest
84
+ || !certification.checks.some(check => check.id === "immutable-content" && check.passed)) {
85
+ throw new Error("restart certification differs from the approved release record");
86
+ }
87
+ const seal = normalizeRestartSeal(certification.restartSeal);
88
+ // Invariant: a seal is restart authority only for a handoff this build can still
89
+ // perform, which is the contract it emits or the pre-cutover one it retains.
90
+ if (seal.launchContract !== PRIVATE_LAUNCH_CONTRACT && seal.launchContract !== "superseded") {
91
+ throw new Error(`restart seal declares an unsupported launch contract: ${String(seal.launchContract)}`);
92
+ }
93
+ if (seal.platform !== process.platform || seal.platformPolicy !== immutablePlatformPolicy()) {
94
+ throw new Error("restart certification platform immutability evidence is unsupported");
95
+ }
96
+ if (seal.releaseId !== record.releaseId || seal.contentDigest !== record.contentDigest
97
+ || resolve(seal.releaseRoot.path) !== resolve(record.releaseRoot)
98
+ || (record.packageVersion !== undefined && seal.packageVersion !== record.packageVersion)) {
99
+ throw new Error("restart seal differs from the approved release identity");
100
+ }
101
+ const { sealDigest, ...core } = seal;
102
+ if (restartSealDigest(core) !== sealDigest)
103
+ throw new Error("restart seal digest is invalid");
104
+ const canonicalData = await observedRealpath(dataDir, onEvent);
105
+ const releasesRoot = await observedRealpath(resolve(canonicalData, "releases"), onEvent);
106
+ const releaseRoot = await observedRealpath(seal.releaseRoot.path, onEvent);
107
+ assertDirectChild(releasesRoot, releaseRoot, seal.releaseId, "release");
108
+ await assertPathEvidence(seal.releaseRoot, onEvent);
109
+ await assertPathEvidence(seal.manifest, onEvent);
110
+ for (let index = 0; index < seal.launchEntries.length; index += 1) {
111
+ const file = seal.launchEntries[index];
112
+ if (!REQUIRED_LAUNCH_ENTRIES.includes(file.path)) {
113
+ throw new Error(`restart seal contains an unexpected launch entry: ${file.path}`);
114
+ }
115
+ const evidence = seal.launchEntryEvidence[index];
116
+ if (!evidence || evidence.path !== resolve(releaseRoot, file.path) || file.bytes !== Number(evidence.size)) {
117
+ throw new Error(`restart launch entry evidence differs: ${file.path}`);
118
+ }
119
+ await assertPathEvidence(evidence, onEvent);
120
+ }
121
+ if (seal.launchEntries.length !== REQUIRED_LAUNCH_ENTRIES.length)
122
+ throw new Error("restart seal launch entries are incomplete");
123
+ const layersRoot = seal.dependencyLayers.length ? await observedRealpath(resolve(canonicalData, "dependency-layers"), onEvent) : null;
124
+ for (const layer of seal.dependencyLayers) {
125
+ if (layersRoot === null)
126
+ throw new Error("restart seal has no dependency-layer root");
127
+ const layerRoot = await observedRealpath(layer.layerRoot.path, onEvent);
128
+ assertDirectChild(layersRoot, layerRoot, layer.layerId, "dependency layer");
129
+ await assertPathEvidence(layer.layerRoot, onEvent);
130
+ await assertPathEvidence(layer.manifest, onEvent);
131
+ const legacyPath = legacyDependencyLayerCertificationPath(canonicalData, layer.layerId);
132
+ const canonicalPath = dependencyLayerCertificationPath(canonicalData, layer.layerId);
133
+ if (layer.certification.path !== legacyPath && layer.certification.path !== canonicalPath) {
134
+ throw new Error("restart dependency certification path is outside managed storage");
135
+ }
136
+ await managedDependencyCertificationPath(canonicalData, layer.layerId, layer.certification.path === legacyPath);
137
+ await assertPathEvidence(layer.certification, onEvent);
138
+ await assertPathEvidence(layer.bindingEvidence, onEvent, true);
139
+ const bindingTarget = await observedRealpath(layer.bindingEvidence.path, onEvent);
140
+ const expectedTarget = await observedRealpath(resolve(layerRoot, "node_modules"), onEvent);
141
+ if (bindingTarget !== layer.bindingTarget || bindingTarget !== expectedTarget) {
142
+ throw new Error(`restart dependency binding targets unexpected content: ${layer.bindingEvidence.path}`);
143
+ }
144
+ }
145
+ return {
146
+ packageName: PRODUCT_PACKAGE_NAME,
147
+ launchContract: seal.launchContract,
148
+ packageVersion: seal.packageVersion,
149
+ contentDigest: seal.contentDigest,
150
+ releaseId: seal.releaseId,
151
+ packageRoot: seal.packageRoot,
152
+ files: seal.launchEntries,
153
+ ...(seal.dependencyLayers.length === 0 ? {} : {
154
+ dependencyLayers: seal.dependencyLayers.map(({ layerId, contentDigest, binding }) => ({ layerId, contentDigest, binding })),
155
+ }),
156
+ releaseRoot,
157
+ };
158
+ }
159
+ export function releaseCertificationDocument(release, restartSeal, verifiedAt = new Date().toISOString()) {
160
+ return {
161
+ schema: PRODUCT_IDENTITY.evidence.releaseCertificationSchema,
162
+ releaseId: release.releaseId,
163
+ contentDigest: release.contentDigest,
164
+ verifiedAt,
165
+ checks: [{ id: "immutable-content", passed: true }],
166
+ restartSeal,
167
+ };
168
+ }
169
+ export function restartSealDigest(core) {
170
+ return createHash("sha256").update(JSON.stringify(core)).digest("hex");
171
+ }
172
+ async function assertPathEvidence(evidence, onEvent, symbolic = false) {
173
+ const actual = await pathEvidence(evidence.path, evidence.kind, symbolic, onEvent);
174
+ if (JSON.stringify(actual) !== JSON.stringify(evidence))
175
+ throw new Error(`restart path evidence changed: ${evidence.path}`);
176
+ }
177
+ async function pathEvidence(path, kind, symbolic = false, onEvent) {
178
+ onEvent?.({ operation: "restart-evidence-read", path });
179
+ const metadata = symbolic ? await lstat(path, { bigint: true }) : await stat(path, { bigint: true });
180
+ if ((kind === "directory") !== metadata.isDirectory())
181
+ throw new Error(`restart evidence kind changed: ${path}`);
182
+ if (kind === "file" && !metadata.isFile())
183
+ throw new Error(`restart evidence file changed: ${path}`);
184
+ if (kind === "binding" && !metadata.isSymbolicLink())
185
+ throw new Error(`restart evidence binding changed: ${path}`);
186
+ if (kind === "file" && (metadata.mode & 146n) !== 0n)
187
+ throw new Error(`restart evidence file is writable: ${path}`);
188
+ return {
189
+ path: resolve(path),
190
+ kind,
191
+ device: metadata.dev.toString(),
192
+ inode: metadata.ino.toString(),
193
+ mode: Number(metadata.mode),
194
+ size: metadata.size.toString(),
195
+ modifiedNs: metadata.mtimeNs.toString(),
196
+ changedNs: metadata.ctimeNs.toString(),
197
+ bornNs: metadata.birthtimeNs.toString(),
198
+ };
199
+ }
200
+ function normalizeRestartSeal(value) {
201
+ if (!value || typeof value !== "object" || Array.isArray(value))
202
+ throw new Error("release certification has no durable restart seal");
203
+ const seal = value;
204
+ if (seal.version !== RESTART_SEAL_VERSION || typeof seal.platform !== "string" || typeof seal.platformPolicy !== "string"
205
+ || typeof seal.releaseId !== "string" || typeof seal.packageVersion !== "string" || typeof seal.contentDigest !== "string"
206
+ || typeof seal.packageRoot !== "string" || typeof seal.certifiedAt !== "string" || typeof seal.sealDigest !== "string"
207
+ || !seal.releaseRoot || !seal.manifest || !Array.isArray(seal.launchEntries) || !Array.isArray(seal.launchEntryEvidence)
208
+ || !Array.isArray(seal.dependencyLayers)) {
209
+ throw new Error("durable restart seal is invalid");
210
+ }
211
+ return seal;
212
+ }
213
+ async function readJson(path, onEvent) {
214
+ onEvent?.({ operation: "restart-evidence-read", path });
215
+ return JSON.parse(await readFile(path, "utf8"));
216
+ }
217
+ async function observedRealpath(path, onEvent) {
218
+ onEvent?.({ operation: "restart-evidence-read", path });
219
+ return await realpath(path);
220
+ }
221
+ function assertDirectChild(parent, child, expectedName, kind) {
222
+ const fromParent = relative(parent, child);
223
+ if (isAbsolute(fromParent) || fromParent === ".." || fromParent.startsWith(`..${sep}`) || fromParent.includes(sep)
224
+ || basename(child) !== expectedName) {
225
+ throw new Error(`restart ${kind} is outside its managed store: ${child}`);
226
+ }
227
+ }
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Leaf types shared across the release subsystem. They live here so that the transaction store,
3
+ * launch selection, and dependency layers can name them without importing the update command or
4
+ * the release reader, which is what closed the subsystem's import cycles.
5
+ */
6
+ export type UpdateChannel = "stable" | "next";
7
+ export interface DependencyLayerReference {
8
+ readonly layerId: string;
9
+ readonly contentDigest: string;
10
+ readonly binding: "node_modules";
11
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,72 @@
1
+ /**
2
+ * The one activation contract an installed tree can offer the updater that installed it.
3
+ * The updater knows nothing else about the tree: the manifest names the contracts the tree
4
+ * serves, and this entry drives its activation with the tree's own release code.
5
+ */
6
+ export declare const UPDATE_ACTIVATION_CONTRACT = "activate-v1";
7
+ export declare const UPDATE_ACTIVATION_ENTRY = "bin/activate.js";
8
+ /** Manifest field listing the activation contracts an installed tree serves. */
9
+ export declare const UPDATE_ACTIVATION_MANIFEST_FIELD = "updateActivationContracts";
10
+ export type UpdateActivationPhase = "materialized" | "certified" | "active-reference-committed";
11
+ /**
12
+ * Copying the release is the longest step with nothing to say for itself, so it
13
+ * reports the files it has written against the files it must write. A caller that
14
+ * shows progress can then move with the work instead of guessing at it.
15
+ */
16
+ export interface UpdateMaterializationProgress {
17
+ readonly completed: number;
18
+ readonly total: number;
19
+ }
20
+ export interface UpdateActivationCallbacks {
21
+ readonly phase: (phase: UpdateActivationPhase) => Promise<void>;
22
+ readonly onMaterializing?: (progress: UpdateMaterializationProgress) => void;
23
+ readonly onWarmup?: (state: "started" | "completed") => void;
24
+ }
25
+ export interface UpdateActivationRequest {
26
+ readonly packageRoot: string;
27
+ readonly dataDir: string;
28
+ readonly targetVersion: string;
29
+ readonly environment: NodeJS.ProcessEnv;
30
+ }
31
+ /** One line of the activator's progress stream; `failed` carries the reason and ends it. */
32
+ export type UpdateActivationEvent = {
33
+ readonly event: "materializing";
34
+ readonly completed: number;
35
+ readonly total: number;
36
+ } | {
37
+ readonly event: "phase";
38
+ readonly phase: UpdateActivationPhase;
39
+ } | {
40
+ readonly event: "warmup";
41
+ readonly state: "started" | "completed";
42
+ } | {
43
+ readonly event: "completed";
44
+ } | {
45
+ readonly event: "failed";
46
+ readonly message: string;
47
+ };
48
+ /**
49
+ * Activate the installed tree at `packageRoot` with this process's own release code:
50
+ * materialize it into the immutable store, certify, warm, verify supervision, and only
51
+ * then move the active reference. This is what the installed tree runs for itself through
52
+ * its activation entry, and what an updater runs in-process for a tree older than the contract.
53
+ */
54
+ export declare function activateInstalledRelease(request: UpdateActivationRequest, callbacks: UpdateActivationCallbacks): Promise<void>;
55
+ /**
56
+ * Which activation contracts the installed tree serves, read from its manifest. A tree
57
+ * without the field, or without a readable manifest, serves none and is activated in-process.
58
+ */
59
+ export declare function readActivationContracts(packageRoot: string, read?: (path: string) => Promise<string>): Promise<readonly string[]>;
60
+ /**
61
+ * Drive the installed tree's own activator and relay its progress. The updater passes
62
+ * the tree what the tree cannot know (the data directory, the target it must match) and
63
+ * learns from it only the phases it reached; every path inside the tree is the tree's business.
64
+ */
65
+ export declare function delegateActivation(request: UpdateActivationRequest, callbacks: UpdateActivationCallbacks): Promise<void>;
66
+ /**
67
+ * Body of the installed tree's activation entry: activate the tree this code ships in,
68
+ * writing one progress event per line so the updater that started it can follow along.
69
+ */
70
+ export declare function runActivationEntry(argv: readonly string[], entryUrl: string, io?: {
71
+ write(line: string): void;
72
+ }, environment?: NodeJS.ProcessEnv): Promise<number>;
@@ -0,0 +1,204 @@
1
+ import { spawn } from "node:child_process";
2
+ import { readFile } from "node:fs/promises";
3
+ import { resolve } from "node:path";
4
+ import { fileURLToPath } from "node:url";
5
+ import { PRODUCT_TEXT } from "../../product-identity.js";
6
+ import { certifyMaterializedRelease, ensureSupervisor } from "./bootstrap.js";
7
+ import { CohortStateStore } from "./cohort-state.js";
8
+ import { encodeFrame, LineFrameDecoder } from "../protocol/index.js";
9
+ import { resolveProductPaths } from "../lifecycle/index.js";
10
+ import { materializeRelease } from "./release-store.js";
11
+ import { warmMaterializedRelease } from "./warmup.js";
12
+ /**
13
+ * The one activation contract an installed tree can offer the updater that installed it.
14
+ * The updater knows nothing else about the tree: the manifest names the contracts the tree
15
+ * serves, and this entry drives its activation with the tree's own release code.
16
+ */
17
+ export const UPDATE_ACTIVATION_CONTRACT = "activate-v1";
18
+ export const UPDATE_ACTIVATION_ENTRY = "bin/activate.js";
19
+ /** Manifest field listing the activation contracts an installed tree serves. */
20
+ export const UPDATE_ACTIVATION_MANIFEST_FIELD = "updateActivationContracts";
21
+ const ACTIVATION_DIAGNOSTIC_LIMIT = 2_000;
22
+ /**
23
+ * Activate the installed tree at `packageRoot` with this process's own release code:
24
+ * materialize it into the immutable store, certify, warm, verify supervision, and only
25
+ * then move the active reference. This is what the installed tree runs for itself through
26
+ * its activation entry, and what an updater runs in-process for a tree older than the contract.
27
+ */
28
+ export async function activateInstalledRelease(request, callbacks) {
29
+ const stateStore = new CohortStateStore(request.dataDir);
30
+ let total = 0;
31
+ let completed = 0;
32
+ const candidate = await materializeRelease(request.packageRoot, request.dataDir, {
33
+ onProgress: event => {
34
+ total = event.fileCount;
35
+ callbacks.onMaterializing?.({ completed, total });
36
+ },
37
+ onOperation: event => {
38
+ if (event.operation !== "candidate-write" && event.operation !== "layer-write")
39
+ return;
40
+ completed += 1;
41
+ callbacks.onMaterializing?.({ completed, total });
42
+ },
43
+ });
44
+ if (candidate.packageVersion !== request.targetVersion)
45
+ throw new Error(`installed ${PRODUCT_TEXT.displayName} version ${candidate.packageVersion} does not match target ${request.targetVersion}`);
46
+ await stateStore.recordCandidate(candidate);
47
+ await callbacks.phase("materialized");
48
+ const diagnostics = await certifyMaterializedRelease(candidate, request.dataDir);
49
+ await stateStore.approve(candidate.releaseId, diagnostics);
50
+ await callbacks.phase("certified");
51
+ callbacks.onWarmup?.("started");
52
+ await warmMaterializedRelease(candidate, request.environment);
53
+ callbacks.onWarmup?.("completed");
54
+ await ensureSupervisor(candidate, request.environment);
55
+ // Invariant: warmup and authenticated readiness precede changing the active reference.
56
+ await stateStore.activate(candidate.releaseId);
57
+ await callbacks.phase("active-reference-committed");
58
+ }
59
+ /**
60
+ * Which activation contracts the installed tree serves, read from its manifest. A tree
61
+ * without the field, or without a readable manifest, serves none and is activated in-process.
62
+ */
63
+ export async function readActivationContracts(packageRoot, read = path => readFile(path, "utf8")) {
64
+ try {
65
+ const manifest = JSON.parse(await read(resolve(packageRoot, "package.json")));
66
+ const declared = manifest[UPDATE_ACTIVATION_MANIFEST_FIELD];
67
+ return Array.isArray(declared) ? declared.filter((value) => typeof value === "string") : [];
68
+ }
69
+ catch {
70
+ return [];
71
+ }
72
+ }
73
+ /**
74
+ * Drive the installed tree's own activator and relay its progress. The updater passes
75
+ * the tree what the tree cannot know (the data directory, the target it must match) and
76
+ * learns from it only the phases it reached; every path inside the tree is the tree's business.
77
+ */
78
+ export async function delegateActivation(request, callbacks) {
79
+ const entry = resolve(request.packageRoot, UPDATE_ACTIVATION_ENTRY);
80
+ const child = spawn(process.execPath, [entry, "--data-dir", request.dataDir, "--target-version", request.targetVersion], {
81
+ env: request.environment,
82
+ stdio: ["ignore", "pipe", "pipe"],
83
+ windowsHide: true,
84
+ });
85
+ const decoder = new LineFrameDecoder();
86
+ let diagnostics = "";
87
+ let failure = null;
88
+ let completed = false;
89
+ // Concurrency: callbacks are awaited in order so a phase is journaled before the next one is read.
90
+ let relay = Promise.resolve();
91
+ child.stderr?.setEncoding("utf8");
92
+ child.stderr?.on("data", chunk => { diagnostics = `${diagnostics}${chunk}`.slice(-ACTIVATION_DIAGNOSTIC_LIMIT); });
93
+ child.stdout?.on("data", chunk => {
94
+ let events;
95
+ try {
96
+ events = decoder.push(chunk);
97
+ }
98
+ catch (error) {
99
+ failure ??= errorMessage(error);
100
+ return;
101
+ }
102
+ for (const event of events) {
103
+ relay = relay.then(async () => {
104
+ const parsed = parseActivationEvent(event);
105
+ if (!parsed) {
106
+ failure ??= `unrecognized activation event ${JSON.stringify(event).slice(0, 200)}`;
107
+ return;
108
+ }
109
+ if (parsed.event === "materializing")
110
+ callbacks.onMaterializing?.({ completed: parsed.completed, total: parsed.total });
111
+ else if (parsed.event === "phase")
112
+ await callbacks.phase(parsed.phase);
113
+ else if (parsed.event === "warmup")
114
+ callbacks.onWarmup?.(parsed.state);
115
+ else if (parsed.event === "completed")
116
+ completed = true;
117
+ else
118
+ failure ??= parsed.message;
119
+ }).catch(error => { failure ??= errorMessage(error); });
120
+ }
121
+ });
122
+ const exit = await new Promise((resolvePromise, rejectPromise) => {
123
+ child.once("error", rejectPromise);
124
+ child.once("close", (code, signal) => resolvePromise({ code, signal }));
125
+ });
126
+ await relay;
127
+ if (failure)
128
+ throw new Error(failure);
129
+ if (exit.code !== 0 || !completed) {
130
+ const status = exit.code === null ? exit.signal ?? "unknown status" : `status ${exit.code}`;
131
+ throw new Error(`installed release activation exited with ${status}${summarize(diagnostics)}`);
132
+ }
133
+ }
134
+ /**
135
+ * Body of the installed tree's activation entry: activate the tree this code ships in,
136
+ * writing one progress event per line so the updater that started it can follow along.
137
+ */
138
+ export async function runActivationEntry(argv, entryUrl, io = { write: line => process.stdout.write(line) }, environment = process.env) {
139
+ const emit = (event) => io.write(encodeFrame(event));
140
+ try {
141
+ const arguments_ = parseEntryArguments(argv);
142
+ const packageRoot = resolve(fileURLToPath(new URL("..", entryUrl)));
143
+ await activateInstalledRelease({
144
+ packageRoot,
145
+ dataDir: arguments_.dataDir ?? resolveProductPaths(environment).dataDir,
146
+ targetVersion: arguments_.targetVersion,
147
+ environment,
148
+ }, {
149
+ phase: async (phase) => emit({ event: "phase", phase }),
150
+ onMaterializing: progress => emit({ event: "materializing", ...progress }),
151
+ onWarmup: state => emit({ event: "warmup", state }),
152
+ });
153
+ emit({ event: "completed" });
154
+ return 0;
155
+ }
156
+ catch (error) {
157
+ emit({ event: "failed", message: errorMessage(error) });
158
+ return 1;
159
+ }
160
+ }
161
+ function parseEntryArguments(argv) {
162
+ let dataDir = null;
163
+ let targetVersion = null;
164
+ for (let index = 0; index < argv.length; index += 1) {
165
+ const value = argv[index + 1];
166
+ if (argv[index] === "--data-dir" && value !== undefined) {
167
+ dataDir = value;
168
+ index += 1;
169
+ }
170
+ else if (argv[index] === "--target-version" && value !== undefined) {
171
+ targetVersion = value;
172
+ index += 1;
173
+ }
174
+ else
175
+ throw new Error(`unexpected activation argument ${argv[index]}`);
176
+ }
177
+ if (targetVersion === null)
178
+ throw new Error("activation requires --target-version");
179
+ return { dataDir, targetVersion };
180
+ }
181
+ function parseActivationEvent(value) {
182
+ if (typeof value !== "object" || value === null || !("event" in value))
183
+ return null;
184
+ const record = value;
185
+ switch (record.event) {
186
+ case "materializing":
187
+ return typeof record.completed === "number" && typeof record.total === "number" ? { event: "materializing", completed: record.completed, total: record.total } : null;
188
+ case "phase":
189
+ return record.phase === "materialized" || record.phase === "certified" || record.phase === "active-reference-committed" ? { event: "phase", phase: record.phase } : null;
190
+ case "warmup":
191
+ return record.state === "started" || record.state === "completed" ? { event: "warmup", state: record.state } : null;
192
+ case "completed":
193
+ return { event: "completed" };
194
+ case "failed":
195
+ return typeof record.message === "string" ? { event: "failed", message: record.message } : null;
196
+ default:
197
+ return null;
198
+ }
199
+ }
200
+ function summarize(text) {
201
+ const lines = text.split(/\r?\n/).map(line => line.trim()).filter(line => line.length > 0);
202
+ return lines.length === 0 ? "" : `: ${lines.slice(0, 4).join(" | ")}`;
203
+ }
204
+ function errorMessage(error) { return error instanceof Error ? error.message : String(error); }
@@ -0,0 +1,6 @@
1
+ import type { CohortState, ReleaseRecord } from "./cohort-state.js";
2
+ import type { UpdateTransaction } from "./update-transaction.js";
3
+ /** Keep interactive launches on the last successful release until the update commits success. */
4
+ export declare function selectUpdateLaunchRelease(state: CohortState, transaction: UpdateTransaction | null): ReleaseRecord | null;
5
+ /** Pause cohort retirement during preparation; afterward only the successful launch release admits new sessions. */
6
+ export declare function selectSupervisorLaunchReleaseId(state: CohortState, transaction: UpdateTransaction | null): string | null;
@@ -0,0 +1,17 @@
1
+ /** Keep interactive launches on the last successful release until the update commits success. */
2
+ export function selectUpdateLaunchRelease(state, transaction) {
3
+ if (transaction === null || transaction.status === "completed")
4
+ return null;
5
+ const prior = transaction.priorActiveReleaseId === null ? undefined : state.releases[transaction.priorActiveReleaseId];
6
+ if (!prior || prior.approval !== "approved") {
7
+ throw new Error("unfinished update has no verified previous release available for launch; resume the update");
8
+ }
9
+ return prior;
10
+ }
11
+ /** Pause cohort retirement during preparation; afterward only the successful launch release admits new sessions. */
12
+ export function selectSupervisorLaunchReleaseId(state, transaction) {
13
+ // Concurrency: both the previous cohort and the warming candidate must remain available until cutover.
14
+ if (transaction?.status === "active")
15
+ return null;
16
+ return selectUpdateLaunchRelease(state, transaction)?.releaseId ?? state.references.active;
17
+ }
@@ -0,0 +1,82 @@
1
+ import { PRIVATE_LAUNCH_CONTRACT } from "../launch-context/index.js";
2
+ import type { UpdateTransaction, UpdateRecoveryState } from "./update-transaction.js";
3
+ export declare const UPDATE_RECOVERY_SCHEMA: "a1-update-recovery-v1";
4
+ export interface UpdateRecoveryCapsule {
5
+ readonly schema: typeof UPDATE_RECOVERY_SCHEMA;
6
+ readonly launchContract: typeof PRIVATE_LAUNCH_CONTRACT;
7
+ readonly transactionId: string;
8
+ readonly packageName: string;
9
+ readonly targetVersion: string;
10
+ readonly packageRoot: string;
11
+ readonly globalRoot: string;
12
+ readonly launcherRoot: string;
13
+ readonly launchers: readonly string[];
14
+ readonly priorReleaseId: string;
15
+ readonly priorReleaseRoot: string;
16
+ readonly priorContentDigest: string;
17
+ readonly releaseManifestName: string;
18
+ readonly recoveryEntry: string;
19
+ readonly recoveryEntryDigest: string;
20
+ readonly nodeExecutable: string;
21
+ readonly npmCli: string;
22
+ readonly npmArguments: readonly string[];
23
+ readonly cancellationPath: string;
24
+ readonly resultPath: string;
25
+ readonly ownerPath: string;
26
+ readonly createdAt: string;
27
+ }
28
+ export interface UpdateRecoveryResult {
29
+ readonly schema: typeof UPDATE_RECOVERY_SCHEMA;
30
+ readonly transactionId: string;
31
+ readonly outcome: "installed" | "recovery-launcher" | "failed";
32
+ readonly npmExitCode: number | null;
33
+ readonly cancelled: boolean;
34
+ readonly launcherDisposition: "target" | "recovery" | "unavailable";
35
+ readonly stdout: string;
36
+ readonly stderr: string;
37
+ readonly completedAt: string;
38
+ }
39
+ export interface ProtectedPackageReplacementOptions {
40
+ readonly dataDir: string;
41
+ readonly globalRoot: string;
42
+ /** Root used only to locate the active npm implementation; installation remains pinned to globalRoot. */
43
+ readonly npmCliRoot?: string;
44
+ readonly packageRoot: string;
45
+ readonly transaction: UpdateTransaction;
46
+ readonly priorRelease: {
47
+ readonly releaseId: string;
48
+ readonly releaseRoot: string;
49
+ readonly contentDigest: string;
50
+ };
51
+ readonly output: {
52
+ stderr(message: string): void;
53
+ };
54
+ readonly environment?: NodeJS.ProcessEnv;
55
+ readonly platform?: NodeJS.Platform;
56
+ readonly timeoutMs?: number;
57
+ readonly workerSpawner?: (entry: string, manifestPath: string, environment: NodeJS.ProcessEnv) => Promise<void>;
58
+ readonly onRecoveryState?: (state: UpdateRecoveryState) => Promise<void>;
59
+ }
60
+ export interface ProtectedPackageReplacementResult extends UpdateRecoveryResult {
61
+ readonly recovery: UpdateRecoveryState;
62
+ }
63
+ /** Derive the only npm prefix that can own a platform's canonical global package root. */
64
+ export declare function npmPrefixForGlobalRoot(globalRoot: string, platform?: NodeJS.Platform): string;
65
+ /** Fixed replacement arguments pin npm to the installation that owns the invoked launcher. */
66
+ export declare function updateNpmInstallArguments(globalRoot: string, targetVersion: string, platform?: NodeJS.Platform): readonly string[];
67
+ /** Resolve the complete public launcher set npm owns for the selected platform and prefix. */
68
+ export declare function updateLauncherPaths(globalRoot: string, platform?: NodeJS.Platform): readonly string[];
69
+ /** Validate transaction-scoped recovery authority without trusting npm temporary names. */
70
+ export declare function readUpdateRecoveryCapsule(manifestPath: string, platform?: NodeJS.Platform): Promise<UpdateRecoveryCapsule>;
71
+ /** Prepare durable recovery authority before npm can mutate the live launcher set. */
72
+ export declare function prepareUpdateRecoveryCapsule(options: ProtectedPackageReplacementOptions): Promise<{
73
+ capsule: UpdateRecoveryCapsule;
74
+ manifestPath: string;
75
+ }>;
76
+ /** Execute global replacement behind a detached owner and coordinate terminal cancellation. */
77
+ export declare function runProtectedPackageReplacement(options: ProtectedPackageReplacementOptions): Promise<ProtectedPackageReplacementResult>;
78
+ export declare function removeUpdateRecoveryCapsule(dataDir: string, transactionId: string): Promise<void>;
79
+ /** Classify a complete launcher set without following linked or mixed launcher files. */
80
+ export declare function inspectUpdateLauncherSet(capsule: UpdateRecoveryCapsule, platform?: NodeJS.Platform): Promise<"target" | "recovery" | "unavailable">;
81
+ /** Remove terminal recovery capsules only after no canonical launcher references them. */
82
+ export declare function cleanupUpdateRecoveryCapsules(dataDir: string): Promise<void>;