@timurproko/a1 0.1.0 → 0.1.1-dev.10

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 (602) hide show
  1. package/README.md +10 -43
  2. package/bin/{addone.js → cli.js} +2 -2
  3. package/bin/guardian.js +22 -0
  4. package/bin/ui.js +20 -0
  5. package/dist/native/darwin-arm64/manifest.json +20 -0
  6. package/dist/native/darwin-arm64/process-guardian +0 -0
  7. package/dist/native/linux-x64/manifest.json +20 -0
  8. package/dist/native/linux-x64/process-guardian +0 -0
  9. package/dist/native/win32-x64/manifest.json +20 -0
  10. package/dist/native/win32-x64/process-guardian.exe +0 -0
  11. package/dist/src/cli/dispatch.d.ts +4 -5
  12. package/dist/src/cli/dispatch.js +11 -11
  13. package/dist/src/cli/index.d.ts +0 -1
  14. package/dist/src/cli/index.js +0 -1
  15. package/dist/src/cli/version-stats.d.ts +0 -1
  16. package/dist/src/cli/version-stats.js +27 -23
  17. package/dist/src/cli/version.d.ts +1 -2
  18. package/dist/src/cli/version.js +4 -4
  19. package/dist/src/composition/index.d.ts +48 -0
  20. package/dist/src/composition/index.js +258 -0
  21. package/dist/src/features/launch/development-launch.d.ts +0 -1
  22. package/dist/src/features/launch/development-launch.js +12 -11
  23. package/dist/src/features/launch/index.d.ts +0 -1
  24. package/dist/src/features/launch/index.js +0 -1
  25. package/dist/src/features/launch/initialize-profile.d.ts +1 -2
  26. package/dist/src/features/launch/initialize-profile.js +24 -4
  27. package/dist/src/features/launch/intent.d.ts +0 -1
  28. package/dist/src/features/launch/intent.js +0 -1
  29. package/dist/src/features/launch/prepare-launch.d.ts +2 -3
  30. package/dist/src/features/launch/prepare-launch.js +3 -4
  31. package/dist/src/features/launch/profile-paths.d.ts +2 -3
  32. package/dist/src/features/launch/profile-paths.js +9 -8
  33. package/dist/src/features/launch/profiles.d.ts +3 -4
  34. package/dist/src/features/launch/profiles.js +7 -8
  35. package/dist/src/features/launch/runtime-selection.d.ts +13 -9
  36. package/dist/src/features/launch/runtime-selection.js +6 -7
  37. package/dist/src/features/owned-ui/customization.d.ts +5 -3
  38. package/dist/src/features/owned-ui/customization.js +2 -4
  39. package/dist/src/features/owned-ui/diagnostics.d.ts +0 -1
  40. package/dist/src/features/owned-ui/diagnostics.js +0 -1
  41. package/dist/src/features/owned-ui/index.d.ts +1 -2
  42. package/dist/src/features/owned-ui/index.js +1 -2
  43. package/dist/src/features/owned-ui/run.d.ts +9 -7
  44. package/dist/src/features/owned-ui/run.js +9 -15
  45. package/dist/src/features/owned-ui/settings-app.d.ts +22 -0
  46. package/dist/src/features/owned-ui/settings-app.js +633 -0
  47. package/dist/src/features/workspace/capabilities.d.ts +0 -1
  48. package/dist/src/features/workspace/capabilities.js +0 -1
  49. package/dist/src/features/workspace/index.d.ts +0 -1
  50. package/dist/src/features/workspace/index.js +0 -1
  51. package/dist/src/features/workspace/presentation.d.ts +1 -2
  52. package/dist/src/features/workspace/presentation.js +5 -4
  53. package/dist/src/features/workspace/reconciliation.d.ts +0 -1
  54. package/dist/src/features/workspace/reconciliation.js +0 -1
  55. package/dist/src/features/workspace/reducer.d.ts +0 -1
  56. package/dist/src/features/workspace/reducer.js +0 -1
  57. package/dist/src/features/workspace/router.d.ts +0 -1
  58. package/dist/src/features/workspace/router.js +0 -1
  59. package/dist/src/features/workspace/store.d.ts +0 -1
  60. package/dist/src/features/workspace/store.js +0 -1
  61. package/dist/src/foundation/agent-engine-contracts/capability-ports.d.ts +95 -0
  62. package/dist/src/foundation/agent-engine-contracts/capability-ports.js +35 -0
  63. package/dist/src/foundation/agent-engine-contracts/domain-validation.d.ts +12 -0
  64. package/dist/src/foundation/agent-engine-contracts/domain-validation.js +89 -0
  65. package/dist/src/foundation/agent-engine-contracts/domain.d.ts +116 -0
  66. package/dist/src/foundation/agent-engine-contracts/domain.js +1 -0
  67. package/dist/src/foundation/agent-engine-contracts/index.d.ts +7 -0
  68. package/dist/src/foundation/agent-engine-contracts/index.js +7 -0
  69. package/dist/src/foundation/agent-engine-contracts/model.d.ts +78 -0
  70. package/dist/src/foundation/agent-engine-contracts/model.js +1 -0
  71. package/dist/src/foundation/agent-engine-contracts/ports.d.ts +18 -0
  72. package/dist/src/foundation/agent-engine-contracts/ports.js +1 -0
  73. package/dist/src/foundation/agent-engine-contracts/serialization.d.ts +7 -0
  74. package/dist/src/foundation/agent-engine-contracts/serialization.js +58 -0
  75. package/dist/src/foundation/agent-engine-contracts/validation.d.ts +5 -0
  76. package/dist/src/foundation/agent-engine-contracts/validation.js +128 -0
  77. package/dist/src/foundation/launch-guardian/index.d.ts +1 -0
  78. package/dist/src/foundation/launch-guardian/index.js +1 -0
  79. package/dist/src/foundation/launch-guardian/main.d.ts +31 -0
  80. package/dist/src/foundation/launch-guardian/main.js +165 -0
  81. package/dist/src/foundation/lifecycle/commands.d.ts +40 -0
  82. package/dist/src/foundation/lifecycle/commands.js +1 -0
  83. package/dist/src/foundation/lifecycle/index.d.ts +2 -1
  84. package/dist/src/foundation/lifecycle/index.js +2 -1
  85. package/dist/src/foundation/lifecycle/launch-instance.d.ts +46 -0
  86. package/dist/src/foundation/lifecycle/launch-instance.js +134 -0
  87. package/dist/src/foundation/lifecycle/model.d.ts +7 -44
  88. package/dist/src/foundation/lifecycle/model.js +3 -3
  89. package/dist/src/foundation/lifecycle/paths.d.ts +2 -3
  90. package/dist/src/foundation/lifecycle/paths.js +32 -16
  91. package/dist/src/foundation/native-host-protocol/codec.d.ts +0 -1
  92. package/dist/src/foundation/native-host-protocol/codec.js +0 -1
  93. package/dist/src/foundation/native-host-protocol/evidence.d.ts +2 -3
  94. package/dist/src/foundation/native-host-protocol/evidence.js +4 -4
  95. package/dist/src/foundation/native-host-protocol/index.d.ts +0 -1
  96. package/dist/src/foundation/native-host-protocol/index.js +0 -1
  97. package/dist/src/foundation/native-host-protocol/messages.d.ts +1 -2
  98. package/dist/src/foundation/native-host-protocol/messages.js +2 -2
  99. package/dist/src/foundation/native-host-protocol/proof-gate.d.ts +0 -1
  100. package/dist/src/foundation/native-host-protocol/proof-gate.js +0 -1
  101. package/dist/src/foundation/owned-ui-contracts/extension-ui.d.ts +0 -1
  102. package/dist/src/foundation/owned-ui-contracts/extension-ui.js +0 -1
  103. package/dist/src/foundation/owned-ui-contracts/index.d.ts +0 -1
  104. package/dist/src/foundation/owned-ui-contracts/index.js +0 -1
  105. package/dist/src/foundation/owned-ui-contracts/model.d.ts +0 -1
  106. package/dist/src/foundation/owned-ui-contracts/model.js +0 -1
  107. package/dist/src/foundation/owned-ui-contracts/validation.d.ts +0 -1
  108. package/dist/src/foundation/owned-ui-contracts/validation.js +0 -1
  109. package/dist/src/foundation/owned-ui-settings/declarations.d.ts +13 -0
  110. package/dist/src/foundation/owned-ui-settings/declarations.js +39 -0
  111. package/dist/src/foundation/owned-ui-settings/index.d.ts +6 -0
  112. package/dist/src/foundation/owned-ui-settings/index.js +6 -0
  113. package/dist/src/foundation/owned-ui-settings/migrations.d.ts +13 -0
  114. package/dist/src/foundation/owned-ui-settings/migrations.js +28 -0
  115. package/dist/src/foundation/owned-ui-settings/resolution.d.ts +45 -0
  116. package/dist/src/foundation/owned-ui-settings/resolution.js +147 -0
  117. package/dist/src/foundation/owned-ui-settings/sections.d.ts +70 -0
  118. package/dist/src/foundation/owned-ui-settings/sections.js +93 -0
  119. package/dist/src/foundation/owned-ui-settings/session.d.ts +44 -0
  120. package/dist/src/foundation/owned-ui-settings/session.js +145 -0
  121. package/dist/src/foundation/owned-ui-settings/store.d.ts +28 -0
  122. package/dist/src/foundation/owned-ui-settings/store.js +90 -0
  123. package/dist/src/foundation/pi-component-adapter/components.d.ts +0 -1
  124. package/dist/src/foundation/pi-component-adapter/components.js +0 -1
  125. package/dist/src/foundation/pi-component-adapter/conformance.d.ts +1 -1
  126. package/dist/src/foundation/pi-component-adapter/conformance.js +10 -4
  127. package/dist/src/foundation/pi-component-adapter/index.d.ts +1 -1
  128. package/dist/src/foundation/pi-component-adapter/index.js +1 -1
  129. package/dist/src/foundation/pi-component-adapter/resources/builtin-themes.d.ts +165 -0
  130. package/dist/src/foundation/pi-component-adapter/resources/builtin-themes.js +166 -0
  131. package/dist/src/foundation/pi-component-adapter/shell-components.d.ts +0 -1
  132. package/dist/src/foundation/pi-component-adapter/shell-components.js +0 -1
  133. package/dist/src/foundation/pi-component-adapter/shell-editor-autocomplete.d.ts +0 -1
  134. package/dist/src/foundation/pi-component-adapter/shell-editor-autocomplete.js +10 -13
  135. package/dist/src/foundation/pi-component-adapter/shell-extension-ui.d.ts +0 -1
  136. package/dist/src/foundation/pi-component-adapter/shell-extension-ui.js +0 -1
  137. package/dist/src/foundation/pi-component-adapter/shell-footer-status.d.ts +0 -1
  138. package/dist/src/foundation/pi-component-adapter/shell-footer-status.js +5 -62
  139. package/dist/src/foundation/pi-component-adapter/shell-presenters-transcript.d.ts +0 -1
  140. package/dist/src/foundation/pi-component-adapter/shell-presenters-transcript.js +0 -1
  141. package/dist/src/foundation/pi-component-adapter/shell-selectors-dialogs.d.ts +9 -2
  142. package/dist/src/foundation/pi-component-adapter/shell-selectors-dialogs.js +10 -9
  143. package/dist/src/foundation/pi-component-adapter/shell-shared-facade.d.ts +0 -1
  144. package/dist/src/foundation/pi-component-adapter/shell-shared-facade.js +0 -1
  145. package/dist/src/foundation/pi-component-adapter/theme.d.ts +0 -1
  146. package/dist/src/foundation/pi-component-adapter/theme.js +0 -1
  147. package/dist/src/foundation/pi-component-adapter/upstream/adjacent/core/keybindings.d.ts +0 -1
  148. package/dist/src/foundation/pi-component-adapter/upstream/adjacent/core/keybindings.js +0 -1
  149. package/dist/src/foundation/pi-component-adapter/upstream/components/countdown-timer.d.ts +0 -1
  150. package/dist/src/foundation/pi-component-adapter/upstream/components/countdown-timer.js +0 -1
  151. package/dist/src/foundation/pi-component-adapter/upstream/components/custom-entry.d.ts +0 -1
  152. package/dist/src/foundation/pi-component-adapter/upstream/components/custom-entry.js +0 -1
  153. package/dist/src/foundation/pi-component-adapter/upstream/components/daxnuts.d.ts +0 -1
  154. package/dist/src/foundation/pi-component-adapter/upstream/components/daxnuts.js +0 -1
  155. package/dist/src/foundation/pi-component-adapter/upstream/components/earendil-announcement.d.ts +0 -1
  156. package/dist/src/foundation/pi-component-adapter/upstream/components/earendil-announcement.js +3 -27
  157. package/dist/src/foundation/pi-component-adapter/upstream/components/extension-editor.d.ts +0 -1
  158. package/dist/src/foundation/pi-component-adapter/upstream/components/extension-editor.js +0 -1
  159. package/dist/src/foundation/pi-component-adapter/upstream/components/first-time-setup.d.ts +0 -1
  160. package/dist/src/foundation/pi-component-adapter/upstream/components/first-time-setup.js +0 -1
  161. package/dist/src/foundation/pi-component-adapter/upstream/components/markdown-transform.d.ts +0 -1
  162. package/dist/src/foundation/pi-component-adapter/upstream/components/markdown-transform.js +0 -1
  163. package/dist/src/foundation/pi-component-adapter/upstream/components/mermaid.d.ts +0 -1
  164. package/dist/src/foundation/pi-component-adapter/upstream/components/mermaid.js +0 -1
  165. package/dist/src/foundation/pi-component-adapter/upstream/components/owned-editor.d.ts +18 -0
  166. package/dist/src/foundation/pi-component-adapter/upstream/components/owned-editor.js +55 -0
  167. package/dist/src/foundation/pi-component-adapter/upstream/components/scoped-models-selector.d.ts +0 -1
  168. package/dist/src/foundation/pi-component-adapter/upstream/components/scoped-models-selector.js +0 -1
  169. package/dist/src/foundation/pi-component-adapter/upstream/components/session-footer.d.ts +10 -0
  170. package/dist/src/foundation/pi-component-adapter/upstream/components/session-footer.js +120 -0
  171. package/dist/src/foundation/pi-component-adapter/upstream/components/session-selector-search.d.ts +0 -1
  172. package/dist/src/foundation/pi-component-adapter/upstream/components/session-selector-search.js +0 -1
  173. package/dist/src/foundation/pi-component-adapter/upstream/components/session-selector.d.ts +0 -1
  174. package/dist/src/foundation/pi-component-adapter/upstream/components/session-selector.js +0 -1
  175. package/dist/src/foundation/pi-component-adapter/upstream/components/skill-invocation-message.d.ts +1 -2
  176. package/dist/src/foundation/pi-component-adapter/upstream/components/skill-invocation-message.js +1 -2
  177. package/dist/src/foundation/pi-component-adapter/upstream/components/status-indicator.d.ts +0 -1
  178. package/dist/src/foundation/pi-component-adapter/upstream/components/status-indicator.js +0 -1
  179. package/dist/src/foundation/pi-component-adapter/upstream/components/tree-selector.d.ts +0 -1
  180. package/dist/src/foundation/pi-component-adapter/upstream/components/tree-selector.js +0 -1
  181. package/dist/src/foundation/pi-component-adapter/upstream/components/trust-selector.d.ts +0 -1
  182. package/dist/src/foundation/pi-component-adapter/upstream/components/trust-selector.js +0 -1
  183. package/dist/src/foundation/pi-component-adapter/upstream/external-editor.d.ts +0 -1
  184. package/dist/src/foundation/pi-component-adapter/upstream/external-editor.js +0 -1
  185. package/dist/src/foundation/pi-component-adapter/upstream/model-search.d.ts +0 -1
  186. package/dist/src/foundation/pi-component-adapter/upstream/model-search.js +0 -1
  187. package/dist/src/foundation/pi-component-adapter/upstream/theme/theme-controller.d.ts +0 -1
  188. package/dist/src/foundation/pi-component-adapter/upstream/theme/theme-controller.js +1 -2
  189. package/dist/src/foundation/pi-component-adapter/upstream/theme/theme.d.ts +8 -1
  190. package/dist/src/foundation/pi-component-adapter/upstream/theme/theme.js +30 -15
  191. package/dist/src/foundation/pi-engine-adapter/adapter.d.ts +19 -205
  192. package/dist/src/foundation/pi-engine-adapter/adapter.js +156 -181
  193. package/dist/src/foundation/pi-engine-adapter/conformance.d.ts +24 -1
  194. package/dist/src/foundation/pi-engine-adapter/conformance.js +60 -15
  195. package/dist/src/foundation/pi-engine-adapter/index.d.ts +6 -1
  196. package/dist/src/foundation/pi-engine-adapter/index.js +6 -1
  197. package/dist/src/foundation/pi-engine-adapter/model-auth-integration.d.ts +30 -0
  198. package/dist/src/foundation/pi-engine-adapter/model-auth-integration.js +61 -0
  199. package/dist/src/foundation/pi-engine-adapter/pi-settings-metadata.json +374 -0
  200. package/dist/src/foundation/pi-engine-adapter/public-main-entry.d.ts +5 -0
  201. package/dist/src/foundation/pi-engine-adapter/public-main-entry.js +27 -0
  202. package/dist/src/foundation/pi-engine-adapter/resource-extension-integration.d.ts +31 -0
  203. package/dist/src/foundation/pi-engine-adapter/resource-extension-integration.js +80 -0
  204. package/dist/src/foundation/pi-engine-adapter/runtime-integration.d.ts +18 -0
  205. package/dist/src/foundation/pi-engine-adapter/runtime-integration.js +32 -0
  206. package/dist/src/foundation/pi-engine-adapter/session-integration.d.ts +43 -0
  207. package/dist/src/foundation/pi-engine-adapter/session-integration.js +97 -0
  208. package/dist/src/foundation/pi-engine-adapter/settings-integration.d.ts +55 -0
  209. package/dist/src/foundation/pi-engine-adapter/settings-integration.js +233 -0
  210. package/dist/src/foundation/pi-engine-adapter/workflow-controllers.d.ts +20 -0
  211. package/dist/src/foundation/pi-engine-adapter/workflow-controllers.js +48 -0
  212. package/dist/src/foundation/pi-engine-adapter/workflows.d.ts +9 -1
  213. package/dist/src/foundation/pi-engine-adapter/workflows.js +0 -1
  214. package/dist/src/foundation/pi-owned-ui-integration/index.d.ts +2 -0
  215. package/dist/src/foundation/pi-owned-ui-integration/index.js +2 -0
  216. package/dist/src/foundation/pi-owned-ui-integration/route-host.d.ts +29 -0
  217. package/dist/src/foundation/pi-owned-ui-integration/route-host.js +1 -0
  218. package/dist/src/{features/owned-ui/pi-session-shell.d.ts → foundation/pi-owned-ui-integration/session-shell.d.ts} +23 -14
  219. package/dist/src/{features/owned-ui/pi-session-shell.js → foundation/pi-owned-ui-integration/session-shell.js} +130 -61
  220. package/dist/src/foundation/pi-tui-runtime-adapter/adapter.d.ts +6 -1
  221. package/dist/src/foundation/pi-tui-runtime-adapter/adapter.js +9 -1
  222. package/dist/src/foundation/pi-tui-runtime-adapter/conformance.d.ts +8 -4
  223. package/dist/src/foundation/pi-tui-runtime-adapter/conformance.js +22 -9
  224. package/dist/src/foundation/pi-tui-runtime-adapter/contracts.d.ts +0 -2
  225. package/dist/src/foundation/pi-tui-runtime-adapter/contracts.js +1 -2
  226. package/dist/src/foundation/pi-tui-runtime-adapter/index.d.ts +1 -1
  227. package/dist/src/foundation/pi-tui-runtime-adapter/index.js +1 -1
  228. package/dist/src/foundation/pi-tui-runtime-adapter/presentation-adapter.d.ts +4 -0
  229. package/dist/src/foundation/pi-tui-runtime-adapter/presentation-adapter.js +48 -0
  230. package/dist/src/foundation/presentation-contracts/index.d.ts +96 -0
  231. package/dist/src/foundation/presentation-contracts/index.js +38 -0
  232. package/dist/src/foundation/process-containment/artifact.d.ts +1 -0
  233. package/dist/src/foundation/process-containment/artifact.js +34 -0
  234. package/dist/src/foundation/process-containment/contracts.d.ts +31 -0
  235. package/dist/src/foundation/process-containment/contracts.js +35 -0
  236. package/dist/src/foundation/process-containment/index.d.ts +5 -0
  237. package/dist/src/foundation/process-containment/index.js +5 -0
  238. package/dist/src/foundation/process-containment/linux-process-inspector.d.ts +6 -0
  239. package/dist/src/foundation/process-containment/linux-process-inspector.js +26 -0
  240. package/dist/src/foundation/process-containment/native-guardian-containment.d.ts +16 -0
  241. package/dist/src/foundation/process-containment/native-guardian-containment.js +139 -0
  242. package/dist/src/foundation/process-containment/windows-process-inspector.d.ts +17 -0
  243. package/dist/src/foundation/process-containment/windows-process-inspector.js +53 -0
  244. package/dist/src/foundation/protocol/client.d.ts +2 -2
  245. package/dist/src/foundation/protocol/client.js +3 -1
  246. package/dist/src/foundation/protocol/index.d.ts +0 -1
  247. package/dist/src/foundation/protocol/index.js +0 -1
  248. package/dist/src/foundation/protocol/messages.d.ts +6 -7
  249. package/dist/src/foundation/protocol/messages.js +3 -3
  250. package/dist/src/foundation/release/bootstrap.d.ts +2 -3
  251. package/dist/src/foundation/release/bootstrap.js +85 -33
  252. package/dist/src/foundation/release/cohort-selection.d.ts +0 -1
  253. package/dist/src/foundation/release/cohort-selection.js +3 -4
  254. package/dist/src/foundation/release/cohort-state.d.ts +6 -4
  255. package/dist/src/foundation/release/cohort-state.js +5 -4
  256. package/dist/src/foundation/release/concurrency.d.ts +1 -0
  257. package/dist/src/foundation/release/concurrency.js +17 -0
  258. package/dist/src/foundation/release/development-preview-release.d.ts +2 -2
  259. package/dist/src/foundation/release/development-preview-release.js +3 -2
  260. package/dist/src/foundation/release/index.d.ts +0 -1
  261. package/dist/src/foundation/release/index.js +0 -1
  262. package/dist/src/foundation/release/process-cleanup.d.ts +1 -2
  263. package/dist/src/foundation/release/process-cleanup.js +2 -3
  264. package/dist/src/foundation/release/release-gc.d.ts +0 -1
  265. package/dist/src/foundation/release/release-gc.js +0 -1
  266. package/dist/src/foundation/release/release-store.d.ts +38 -6
  267. package/dist/src/foundation/release/release-store.js +103 -43
  268. package/dist/src/foundation/release/release.d.ts +20 -6
  269. package/dist/src/foundation/release/release.js +77 -48
  270. package/dist/src/foundation/release/stable-release.d.ts +2 -2
  271. package/dist/src/foundation/release/stable-release.js +6 -5
  272. package/dist/src/foundation/release/update-transaction.d.ts +2 -2
  273. package/dist/src/foundation/release/update-transaction.js +8 -7
  274. package/dist/src/foundation/release/update.d.ts +20 -4
  275. package/dist/src/foundation/release/update.js +152 -36
  276. package/dist/src/foundation/storage/control-store.d.ts +8 -8
  277. package/dist/src/foundation/storage/control-store.js +132 -61
  278. package/dist/src/foundation/storage/index.d.ts +0 -1
  279. package/dist/src/foundation/storage/index.js +0 -1
  280. package/dist/src/foundation/structured-agent-runtime/backpressure.d.ts +0 -1
  281. package/dist/src/foundation/structured-agent-runtime/backpressure.js +0 -1
  282. package/dist/src/foundation/structured-agent-runtime/commands.d.ts +0 -1
  283. package/dist/src/foundation/structured-agent-runtime/commands.js +0 -1
  284. package/dist/src/foundation/structured-agent-runtime/handshake.d.ts +2 -3
  285. package/dist/src/foundation/structured-agent-runtime/handshake.js +13 -13
  286. package/dist/src/foundation/structured-agent-runtime/index.d.ts +0 -1
  287. package/dist/src/foundation/structured-agent-runtime/index.js +0 -1
  288. package/dist/src/foundation/structured-agent-runtime/reconnection.d.ts +0 -1
  289. package/dist/src/foundation/structured-agent-runtime/reconnection.js +0 -1
  290. package/dist/src/foundation/structured-agent-runtime/state.d.ts +0 -1
  291. package/dist/src/foundation/structured-agent-runtime/state.js +0 -1
  292. package/dist/src/foundation/supervision/index.d.ts +1 -2
  293. package/dist/src/foundation/supervision/index.js +1 -2
  294. package/dist/src/foundation/supervision/main.d.ts +0 -1
  295. package/dist/src/foundation/supervision/main.js +11 -10
  296. package/dist/src/foundation/supervision/paths.d.ts +1 -2
  297. package/dist/src/foundation/supervision/paths.js +1 -2
  298. package/dist/src/foundation/supervision/server.d.ts +6 -5
  299. package/dist/src/foundation/supervision/server.js +259 -91
  300. package/dist/src/foundation/ui-apps/contracts.d.ts +42 -0
  301. package/dist/src/foundation/ui-apps/contracts.js +12 -0
  302. package/dist/src/foundation/ui-apps/host.d.ts +42 -0
  303. package/dist/src/foundation/ui-apps/host.js +152 -0
  304. package/dist/src/foundation/ui-apps/index.d.ts +3 -0
  305. package/dist/src/foundation/ui-apps/index.js +3 -0
  306. package/dist/src/foundation/ui-apps/registry.d.ts +11 -0
  307. package/dist/src/foundation/ui-apps/registry.js +32 -0
  308. package/dist/src/foundation/ui-components/dialog-panel.d.ts +36 -0
  309. package/dist/src/foundation/ui-components/dialog-panel.js +47 -0
  310. package/dist/src/foundation/ui-components/frame.d.ts +21 -0
  311. package/dist/src/foundation/ui-components/frame.js +54 -0
  312. package/dist/src/foundation/ui-components/index.d.ts +18 -0
  313. package/dist/src/foundation/ui-components/index.js +18 -0
  314. package/dist/src/foundation/ui-components/label.d.ts +8 -0
  315. package/dist/src/foundation/ui-components/label.js +36 -0
  316. package/dist/src/foundation/ui-components/line-input.d.ts +74 -0
  317. package/dist/src/foundation/ui-components/line-input.js +245 -0
  318. package/dist/src/foundation/ui-components/list-block.d.ts +66 -0
  319. package/dist/src/foundation/ui-components/list-block.js +176 -0
  320. package/dist/src/foundation/ui-components/list-view.d.ts +66 -0
  321. package/dist/src/foundation/ui-components/list-view.js +76 -0
  322. package/dist/src/foundation/ui-components/mouse.d.ts +15 -0
  323. package/dist/src/foundation/ui-components/mouse.js +46 -0
  324. package/dist/src/foundation/ui-components/pane.d.ts +33 -0
  325. package/dist/src/foundation/ui-components/pane.js +7 -0
  326. package/dist/src/foundation/ui-components/revision.d.ts +35 -0
  327. package/dist/src/foundation/ui-components/revision.js +79 -0
  328. package/dist/src/foundation/ui-components/scrollbar.d.ts +62 -0
  329. package/dist/src/foundation/ui-components/scrollbar.js +102 -0
  330. package/dist/src/foundation/ui-components/shortcuts.d.ts +57 -0
  331. package/dist/src/foundation/ui-components/shortcuts.js +81 -0
  332. package/dist/src/foundation/ui-components/spans.d.ts +7 -0
  333. package/dist/src/foundation/ui-components/spans.js +59 -0
  334. package/dist/src/foundation/ui-components/status-line.d.ts +16 -0
  335. package/dist/src/foundation/ui-components/status-line.js +14 -0
  336. package/dist/src/foundation/ui-components/stepper.d.ts +24 -0
  337. package/dist/src/foundation/ui-components/stepper.js +33 -0
  338. package/dist/src/foundation/ui-components/surface.d.ts +20 -0
  339. package/dist/src/foundation/ui-components/surface.js +38 -0
  340. package/dist/src/foundation/ui-components/text.d.ts +24 -0
  341. package/dist/src/foundation/ui-components/text.js +123 -0
  342. package/dist/src/foundation/ui-components/theme.d.ts +23 -0
  343. package/dist/src/foundation/ui-components/theme.js +13 -0
  344. package/dist/src/foundation/ui-components/value-menu.d.ts +41 -0
  345. package/dist/src/foundation/ui-components/value-menu.js +33 -0
  346. package/dist/src/foundation/workspace-contracts/index.d.ts +0 -1
  347. package/dist/src/foundation/workspace-contracts/index.js +0 -1
  348. package/dist/src/foundation/workspace-contracts/model.d.ts +0 -1
  349. package/dist/src/foundation/workspace-contracts/model.js +0 -1
  350. package/dist/src/foundation/workspace-contracts/validation.d.ts +0 -1
  351. package/dist/src/foundation/workspace-contracts/validation.js +0 -1
  352. package/dist/src/product-identity.d.ts +37 -0
  353. package/dist/src/product-identity.js +150 -0
  354. package/dist/src/product-identity.json +99 -0
  355. package/docs/architecture/boundaries.md +32 -14
  356. package/docs/architecture/process-guardian-provenance.md +26 -0
  357. package/docs/architecture/project-structure.md +2 -2
  358. package/docs/architecture/resource-and-data-policy.md +1 -1
  359. package/docs/architecture/terminal-host-proof-gate.md +2 -2
  360. package/docs/architecture/terminal-host-provenance.md +3 -3
  361. package/docs/architecture/terminal-host-spike-evidence.md +1 -1
  362. package/docs/architecture/toolchain.md +40 -8
  363. package/docs/architecture/ui-reference-provenance.md +50 -0
  364. package/docs/ci-release-runbook.md +67 -0
  365. package/docs/features/launch-profiles.md +12 -6
  366. package/docs/manual-launch-instance-acceptance.md +66 -0
  367. package/docs/manual-pi-boundary-candidate.md +33 -0
  368. package/docs/manual-terminal-colour-check.md +55 -0
  369. package/docs/manual-transparent-checkpoint.md +11 -11
  370. package/package.json +27 -14
  371. package/bin/addone-ui.js +0 -20
  372. package/dist/src/cli/dispatch.d.ts.map +0 -1
  373. package/dist/src/cli/dispatch.js.map +0 -1
  374. package/dist/src/cli/index.d.ts.map +0 -1
  375. package/dist/src/cli/index.js.map +0 -1
  376. package/dist/src/cli/version-stats.d.ts.map +0 -1
  377. package/dist/src/cli/version-stats.js.map +0 -1
  378. package/dist/src/cli/version.d.ts.map +0 -1
  379. package/dist/src/cli/version.js.map +0 -1
  380. package/dist/src/features/launch/development-launch.d.ts.map +0 -1
  381. package/dist/src/features/launch/development-launch.js.map +0 -1
  382. package/dist/src/features/launch/index.d.ts.map +0 -1
  383. package/dist/src/features/launch/index.js.map +0 -1
  384. package/dist/src/features/launch/initialize-profile.d.ts.map +0 -1
  385. package/dist/src/features/launch/initialize-profile.js.map +0 -1
  386. package/dist/src/features/launch/intent.d.ts.map +0 -1
  387. package/dist/src/features/launch/intent.js.map +0 -1
  388. package/dist/src/features/launch/prepare-launch.d.ts.map +0 -1
  389. package/dist/src/features/launch/prepare-launch.js.map +0 -1
  390. package/dist/src/features/launch/profile-paths.d.ts.map +0 -1
  391. package/dist/src/features/launch/profile-paths.js.map +0 -1
  392. package/dist/src/features/launch/profiles.d.ts.map +0 -1
  393. package/dist/src/features/launch/profiles.js.map +0 -1
  394. package/dist/src/features/launch/runtime-selection.d.ts.map +0 -1
  395. package/dist/src/features/launch/runtime-selection.js.map +0 -1
  396. package/dist/src/features/owned-ui/customization.d.ts.map +0 -1
  397. package/dist/src/features/owned-ui/customization.js.map +0 -1
  398. package/dist/src/features/owned-ui/diagnostics.d.ts.map +0 -1
  399. package/dist/src/features/owned-ui/diagnostics.js.map +0 -1
  400. package/dist/src/features/owned-ui/index.d.ts.map +0 -1
  401. package/dist/src/features/owned-ui/index.js.map +0 -1
  402. package/dist/src/features/owned-ui/pi-session-shell.d.ts.map +0 -1
  403. package/dist/src/features/owned-ui/pi-session-shell.js.map +0 -1
  404. package/dist/src/features/owned-ui/run.d.ts.map +0 -1
  405. package/dist/src/features/owned-ui/run.js.map +0 -1
  406. package/dist/src/features/workspace/capabilities.d.ts.map +0 -1
  407. package/dist/src/features/workspace/capabilities.js.map +0 -1
  408. package/dist/src/features/workspace/index.d.ts.map +0 -1
  409. package/dist/src/features/workspace/index.js.map +0 -1
  410. package/dist/src/features/workspace/presentation.d.ts.map +0 -1
  411. package/dist/src/features/workspace/presentation.js.map +0 -1
  412. package/dist/src/features/workspace/reconciliation.d.ts.map +0 -1
  413. package/dist/src/features/workspace/reconciliation.js.map +0 -1
  414. package/dist/src/features/workspace/reducer.d.ts.map +0 -1
  415. package/dist/src/features/workspace/reducer.js.map +0 -1
  416. package/dist/src/features/workspace/router.d.ts.map +0 -1
  417. package/dist/src/features/workspace/router.js.map +0 -1
  418. package/dist/src/features/workspace/store.d.ts.map +0 -1
  419. package/dist/src/features/workspace/store.js.map +0 -1
  420. package/dist/src/foundation/lifecycle/index.d.ts.map +0 -1
  421. package/dist/src/foundation/lifecycle/index.js.map +0 -1
  422. package/dist/src/foundation/lifecycle/model.d.ts.map +0 -1
  423. package/dist/src/foundation/lifecycle/model.js.map +0 -1
  424. package/dist/src/foundation/lifecycle/paths.d.ts.map +0 -1
  425. package/dist/src/foundation/lifecycle/paths.js.map +0 -1
  426. package/dist/src/foundation/native-host-protocol/codec.d.ts.map +0 -1
  427. package/dist/src/foundation/native-host-protocol/codec.js.map +0 -1
  428. package/dist/src/foundation/native-host-protocol/evidence.d.ts.map +0 -1
  429. package/dist/src/foundation/native-host-protocol/evidence.js.map +0 -1
  430. package/dist/src/foundation/native-host-protocol/index.d.ts.map +0 -1
  431. package/dist/src/foundation/native-host-protocol/index.js.map +0 -1
  432. package/dist/src/foundation/native-host-protocol/messages.d.ts.map +0 -1
  433. package/dist/src/foundation/native-host-protocol/messages.js.map +0 -1
  434. package/dist/src/foundation/native-host-protocol/proof-gate.d.ts.map +0 -1
  435. package/dist/src/foundation/native-host-protocol/proof-gate.js.map +0 -1
  436. package/dist/src/foundation/owned-ui-contracts/extension-ui.d.ts.map +0 -1
  437. package/dist/src/foundation/owned-ui-contracts/extension-ui.js.map +0 -1
  438. package/dist/src/foundation/owned-ui-contracts/index.d.ts.map +0 -1
  439. package/dist/src/foundation/owned-ui-contracts/index.js.map +0 -1
  440. package/dist/src/foundation/owned-ui-contracts/model.d.ts.map +0 -1
  441. package/dist/src/foundation/owned-ui-contracts/model.js.map +0 -1
  442. package/dist/src/foundation/owned-ui-contracts/validation.d.ts.map +0 -1
  443. package/dist/src/foundation/owned-ui-contracts/validation.js.map +0 -1
  444. package/dist/src/foundation/pi-component-adapter/components.d.ts.map +0 -1
  445. package/dist/src/foundation/pi-component-adapter/components.js.map +0 -1
  446. package/dist/src/foundation/pi-component-adapter/conformance.d.ts.map +0 -1
  447. package/dist/src/foundation/pi-component-adapter/conformance.js.map +0 -1
  448. package/dist/src/foundation/pi-component-adapter/index.d.ts.map +0 -1
  449. package/dist/src/foundation/pi-component-adapter/index.js.map +0 -1
  450. package/dist/src/foundation/pi-component-adapter/shell-components.d.ts.map +0 -1
  451. package/dist/src/foundation/pi-component-adapter/shell-components.js.map +0 -1
  452. package/dist/src/foundation/pi-component-adapter/shell-editor-autocomplete.d.ts.map +0 -1
  453. package/dist/src/foundation/pi-component-adapter/shell-editor-autocomplete.js.map +0 -1
  454. package/dist/src/foundation/pi-component-adapter/shell-extension-ui.d.ts.map +0 -1
  455. package/dist/src/foundation/pi-component-adapter/shell-extension-ui.js.map +0 -1
  456. package/dist/src/foundation/pi-component-adapter/shell-footer-status.d.ts.map +0 -1
  457. package/dist/src/foundation/pi-component-adapter/shell-footer-status.js.map +0 -1
  458. package/dist/src/foundation/pi-component-adapter/shell-presenters-transcript.d.ts.map +0 -1
  459. package/dist/src/foundation/pi-component-adapter/shell-presenters-transcript.js.map +0 -1
  460. package/dist/src/foundation/pi-component-adapter/shell-selectors-dialogs.d.ts.map +0 -1
  461. package/dist/src/foundation/pi-component-adapter/shell-selectors-dialogs.js.map +0 -1
  462. package/dist/src/foundation/pi-component-adapter/shell-shared-facade.d.ts.map +0 -1
  463. package/dist/src/foundation/pi-component-adapter/shell-shared-facade.js.map +0 -1
  464. package/dist/src/foundation/pi-component-adapter/theme.d.ts.map +0 -1
  465. package/dist/src/foundation/pi-component-adapter/theme.js.map +0 -1
  466. package/dist/src/foundation/pi-component-adapter/upstream/adjacent/core/keybindings.d.ts.map +0 -1
  467. package/dist/src/foundation/pi-component-adapter/upstream/adjacent/core/keybindings.js.map +0 -1
  468. package/dist/src/foundation/pi-component-adapter/upstream/components/countdown-timer.d.ts.map +0 -1
  469. package/dist/src/foundation/pi-component-adapter/upstream/components/countdown-timer.js.map +0 -1
  470. package/dist/src/foundation/pi-component-adapter/upstream/components/custom-entry.d.ts.map +0 -1
  471. package/dist/src/foundation/pi-component-adapter/upstream/components/custom-entry.js.map +0 -1
  472. package/dist/src/foundation/pi-component-adapter/upstream/components/daxnuts.d.ts.map +0 -1
  473. package/dist/src/foundation/pi-component-adapter/upstream/components/daxnuts.js.map +0 -1
  474. package/dist/src/foundation/pi-component-adapter/upstream/components/earendil-announcement.d.ts.map +0 -1
  475. package/dist/src/foundation/pi-component-adapter/upstream/components/earendil-announcement.js.map +0 -1
  476. package/dist/src/foundation/pi-component-adapter/upstream/components/extension-editor.d.ts.map +0 -1
  477. package/dist/src/foundation/pi-component-adapter/upstream/components/extension-editor.js.map +0 -1
  478. package/dist/src/foundation/pi-component-adapter/upstream/components/first-time-setup.d.ts.map +0 -1
  479. package/dist/src/foundation/pi-component-adapter/upstream/components/first-time-setup.js.map +0 -1
  480. package/dist/src/foundation/pi-component-adapter/upstream/components/markdown-transform.d.ts.map +0 -1
  481. package/dist/src/foundation/pi-component-adapter/upstream/components/markdown-transform.js.map +0 -1
  482. package/dist/src/foundation/pi-component-adapter/upstream/components/mermaid.d.ts.map +0 -1
  483. package/dist/src/foundation/pi-component-adapter/upstream/components/mermaid.js.map +0 -1
  484. package/dist/src/foundation/pi-component-adapter/upstream/components/scoped-models-selector.d.ts.map +0 -1
  485. package/dist/src/foundation/pi-component-adapter/upstream/components/scoped-models-selector.js.map +0 -1
  486. package/dist/src/foundation/pi-component-adapter/upstream/components/session-selector-search.d.ts.map +0 -1
  487. package/dist/src/foundation/pi-component-adapter/upstream/components/session-selector-search.js.map +0 -1
  488. package/dist/src/foundation/pi-component-adapter/upstream/components/session-selector.d.ts.map +0 -1
  489. package/dist/src/foundation/pi-component-adapter/upstream/components/session-selector.js.map +0 -1
  490. package/dist/src/foundation/pi-component-adapter/upstream/components/skill-invocation-message.d.ts.map +0 -1
  491. package/dist/src/foundation/pi-component-adapter/upstream/components/skill-invocation-message.js.map +0 -1
  492. package/dist/src/foundation/pi-component-adapter/upstream/components/status-indicator.d.ts.map +0 -1
  493. package/dist/src/foundation/pi-component-adapter/upstream/components/status-indicator.js.map +0 -1
  494. package/dist/src/foundation/pi-component-adapter/upstream/components/tree-selector.d.ts.map +0 -1
  495. package/dist/src/foundation/pi-component-adapter/upstream/components/tree-selector.js.map +0 -1
  496. package/dist/src/foundation/pi-component-adapter/upstream/components/trust-selector.d.ts.map +0 -1
  497. package/dist/src/foundation/pi-component-adapter/upstream/components/trust-selector.js.map +0 -1
  498. package/dist/src/foundation/pi-component-adapter/upstream/external-editor.d.ts.map +0 -1
  499. package/dist/src/foundation/pi-component-adapter/upstream/external-editor.js.map +0 -1
  500. package/dist/src/foundation/pi-component-adapter/upstream/model-search.d.ts.map +0 -1
  501. package/dist/src/foundation/pi-component-adapter/upstream/model-search.js.map +0 -1
  502. package/dist/src/foundation/pi-component-adapter/upstream/theme/theme-controller.d.ts.map +0 -1
  503. package/dist/src/foundation/pi-component-adapter/upstream/theme/theme-controller.js.map +0 -1
  504. package/dist/src/foundation/pi-component-adapter/upstream/theme/theme.d.ts.map +0 -1
  505. package/dist/src/foundation/pi-component-adapter/upstream/theme/theme.js.map +0 -1
  506. package/dist/src/foundation/pi-engine-adapter/adapter.d.ts.map +0 -1
  507. package/dist/src/foundation/pi-engine-adapter/adapter.js.map +0 -1
  508. package/dist/src/foundation/pi-engine-adapter/conformance.d.ts.map +0 -1
  509. package/dist/src/foundation/pi-engine-adapter/conformance.js.map +0 -1
  510. package/dist/src/foundation/pi-engine-adapter/index.d.ts.map +0 -1
  511. package/dist/src/foundation/pi-engine-adapter/index.js.map +0 -1
  512. package/dist/src/foundation/pi-engine-adapter/workflows.d.ts.map +0 -1
  513. package/dist/src/foundation/pi-engine-adapter/workflows.js.map +0 -1
  514. package/dist/src/foundation/pi-tui-runtime-adapter/adapter.d.ts.map +0 -1
  515. package/dist/src/foundation/pi-tui-runtime-adapter/adapter.js.map +0 -1
  516. package/dist/src/foundation/pi-tui-runtime-adapter/conformance.d.ts.map +0 -1
  517. package/dist/src/foundation/pi-tui-runtime-adapter/conformance.js.map +0 -1
  518. package/dist/src/foundation/pi-tui-runtime-adapter/contracts.d.ts.map +0 -1
  519. package/dist/src/foundation/pi-tui-runtime-adapter/contracts.js.map +0 -1
  520. package/dist/src/foundation/pi-tui-runtime-adapter/index.d.ts.map +0 -1
  521. package/dist/src/foundation/pi-tui-runtime-adapter/index.js.map +0 -1
  522. package/dist/src/foundation/protocol/client.d.ts.map +0 -1
  523. package/dist/src/foundation/protocol/client.js.map +0 -1
  524. package/dist/src/foundation/protocol/index.d.ts.map +0 -1
  525. package/dist/src/foundation/protocol/index.js.map +0 -1
  526. package/dist/src/foundation/protocol/messages.d.ts.map +0 -1
  527. package/dist/src/foundation/protocol/messages.js.map +0 -1
  528. package/dist/src/foundation/release/bootstrap.d.ts.map +0 -1
  529. package/dist/src/foundation/release/bootstrap.js.map +0 -1
  530. package/dist/src/foundation/release/cohort-selection.d.ts.map +0 -1
  531. package/dist/src/foundation/release/cohort-selection.js.map +0 -1
  532. package/dist/src/foundation/release/cohort-state.d.ts.map +0 -1
  533. package/dist/src/foundation/release/cohort-state.js.map +0 -1
  534. package/dist/src/foundation/release/development-preview-release.d.ts.map +0 -1
  535. package/dist/src/foundation/release/development-preview-release.js.map +0 -1
  536. package/dist/src/foundation/release/index.d.ts.map +0 -1
  537. package/dist/src/foundation/release/index.js.map +0 -1
  538. package/dist/src/foundation/release/process-cleanup.d.ts.map +0 -1
  539. package/dist/src/foundation/release/process-cleanup.js.map +0 -1
  540. package/dist/src/foundation/release/release-gc.d.ts.map +0 -1
  541. package/dist/src/foundation/release/release-gc.js.map +0 -1
  542. package/dist/src/foundation/release/release-store.d.ts.map +0 -1
  543. package/dist/src/foundation/release/release-store.js.map +0 -1
  544. package/dist/src/foundation/release/release.d.ts.map +0 -1
  545. package/dist/src/foundation/release/release.js.map +0 -1
  546. package/dist/src/foundation/release/stable-release.d.ts.map +0 -1
  547. package/dist/src/foundation/release/stable-release.js.map +0 -1
  548. package/dist/src/foundation/release/update-transaction.d.ts.map +0 -1
  549. package/dist/src/foundation/release/update-transaction.js.map +0 -1
  550. package/dist/src/foundation/release/update.d.ts.map +0 -1
  551. package/dist/src/foundation/release/update.js.map +0 -1
  552. package/dist/src/foundation/storage/control-store.d.ts.map +0 -1
  553. package/dist/src/foundation/storage/control-store.js.map +0 -1
  554. package/dist/src/foundation/storage/index.d.ts.map +0 -1
  555. package/dist/src/foundation/storage/index.js.map +0 -1
  556. package/dist/src/foundation/structured-agent-runtime/backpressure.d.ts.map +0 -1
  557. package/dist/src/foundation/structured-agent-runtime/backpressure.js.map +0 -1
  558. package/dist/src/foundation/structured-agent-runtime/commands.d.ts.map +0 -1
  559. package/dist/src/foundation/structured-agent-runtime/commands.js.map +0 -1
  560. package/dist/src/foundation/structured-agent-runtime/handshake.d.ts.map +0 -1
  561. package/dist/src/foundation/structured-agent-runtime/handshake.js.map +0 -1
  562. package/dist/src/foundation/structured-agent-runtime/index.d.ts.map +0 -1
  563. package/dist/src/foundation/structured-agent-runtime/index.js.map +0 -1
  564. package/dist/src/foundation/structured-agent-runtime/reconnection.d.ts.map +0 -1
  565. package/dist/src/foundation/structured-agent-runtime/reconnection.js.map +0 -1
  566. package/dist/src/foundation/structured-agent-runtime/state.d.ts.map +0 -1
  567. package/dist/src/foundation/structured-agent-runtime/state.js.map +0 -1
  568. package/dist/src/foundation/supervision/index.d.ts.map +0 -1
  569. package/dist/src/foundation/supervision/index.js.map +0 -1
  570. package/dist/src/foundation/supervision/main.d.ts.map +0 -1
  571. package/dist/src/foundation/supervision/main.js.map +0 -1
  572. package/dist/src/foundation/supervision/paths.d.ts.map +0 -1
  573. package/dist/src/foundation/supervision/paths.js.map +0 -1
  574. package/dist/src/foundation/supervision/server.d.ts.map +0 -1
  575. package/dist/src/foundation/supervision/server.js.map +0 -1
  576. package/dist/src/foundation/transparent-terminal/command-resolution.d.ts +0 -14
  577. package/dist/src/foundation/transparent-terminal/command-resolution.d.ts.map +0 -1
  578. package/dist/src/foundation/transparent-terminal/command-resolution.js +0 -70
  579. package/dist/src/foundation/transparent-terminal/command-resolution.js.map +0 -1
  580. package/dist/src/foundation/transparent-terminal/foreground-broker.d.ts +0 -33
  581. package/dist/src/foundation/transparent-terminal/foreground-broker.d.ts.map +0 -1
  582. package/dist/src/foundation/transparent-terminal/foreground-broker.js +0 -88
  583. package/dist/src/foundation/transparent-terminal/foreground-broker.js.map +0 -1
  584. package/dist/src/foundation/transparent-terminal/index.d.ts +0 -4
  585. package/dist/src/foundation/transparent-terminal/index.d.ts.map +0 -1
  586. package/dist/src/foundation/transparent-terminal/index.js +0 -4
  587. package/dist/src/foundation/transparent-terminal/index.js.map +0 -1
  588. package/dist/src/foundation/transparent-terminal/main.d.ts +0 -10
  589. package/dist/src/foundation/transparent-terminal/main.d.ts.map +0 -1
  590. package/dist/src/foundation/transparent-terminal/main.js +0 -107
  591. package/dist/src/foundation/transparent-terminal/main.js.map +0 -1
  592. package/dist/src/foundation/transparent-terminal/native-launcher.d.ts +0 -26
  593. package/dist/src/foundation/transparent-terminal/native-launcher.d.ts.map +0 -1
  594. package/dist/src/foundation/transparent-terminal/native-launcher.js +0 -147
  595. package/dist/src/foundation/transparent-terminal/native-launcher.js.map +0 -1
  596. package/dist/src/foundation/workspace-contracts/index.d.ts.map +0 -1
  597. package/dist/src/foundation/workspace-contracts/index.js.map +0 -1
  598. package/dist/src/foundation/workspace-contracts/model.d.ts.map +0 -1
  599. package/dist/src/foundation/workspace-contracts/model.js.map +0 -1
  600. package/dist/src/foundation/workspace-contracts/validation.d.ts.map +0 -1
  601. package/dist/src/foundation/workspace-contracts/validation.js.map +0 -1
  602. /package/bin/{addone-supervisor.js → supervisor.js} +0 -0
@@ -14,4 +14,3 @@ export async function collectRelease(store, dataDir, releaseId, externalReferenc
14
14
  await store.removeUnreferencedRelease(releaseId, externalReferences);
15
15
  await rm(release.releaseRoot, { recursive: true, force: false });
16
16
  }
17
- //# sourceMappingURL=release-gc.js.map
@@ -1,11 +1,43 @@
1
- import { type AddOneReleaseIdentity } from "./release.js";
2
- export declare const RELEASE_MANIFEST = ".addone-release.json";
3
- export interface MaterializedRelease extends AddOneReleaseIdentity {
1
+ import { type ReleaseIdentity } from "./release.js";
2
+ export declare const RELEASE_MANIFEST_FILENAME: string;
3
+ export interface MaterializedRelease extends ReleaseIdentity {
4
4
  readonly releaseRoot: string;
5
5
  }
6
- export declare function materializeRelease(packageRoot: string, dataDir: string): Promise<MaterializedRelease>;
6
+ export type ReleaseContentOperation = "source-read" | "candidate-write" | "verification-read";
7
+ export interface ReleaseContentOperationEvent {
8
+ readonly operation: ReleaseContentOperation;
9
+ readonly path: string;
10
+ readonly bytes: number;
11
+ }
12
+ export interface MaterializeReleaseOptions {
13
+ readonly onProgress?: (progress: {
14
+ readonly phase: "copying";
15
+ readonly fileCount: number;
16
+ }) => void;
17
+ readonly onOperation?: (event: ReleaseContentOperationEvent) => void;
18
+ /** Test seam for deterministic write-failure coverage. */
19
+ readonly writeCandidateFile?: (path: string, bytes: Uint8Array, mode: number) => Promise<void>;
20
+ }
21
+ export interface VerifyMaterializedReleaseOptions {
22
+ readonly onOperation?: (event: ReleaseContentOperationEvent) => void;
23
+ }
24
+ export interface CertifiedReleaseRecord {
25
+ readonly releaseId: string;
26
+ readonly releaseRoot: string;
27
+ readonly packageVersion?: string;
28
+ readonly contentDigest: string;
29
+ }
30
+ export declare function materializeRelease(packageRoot: string, dataDir: string, options?: MaterializeReleaseOptions): Promise<MaterializedRelease>;
31
+ /** Consume proof that this exact object was freshly materialized or fully verified in this process. */
32
+ export declare function consumeMaterializationProof(release: MaterializedRelease): boolean;
7
33
  export declare function readMaterializedRelease(releaseRoot: string): Promise<MaterializedRelease>;
8
- export declare function verifyMaterializedRelease(releaseRoot: string, expected?: AddOneReleaseIdentity, selectedStoreRoot?: string): Promise<MaterializedRelease>;
34
+ /**
35
+ * Load metadata for a release whose bytes were already certified by the
36
+ * current parent process or an authenticated live supervisor. Callers must
37
+ * establish one of those preconditions; untrusted releases require full
38
+ * verification.
39
+ */
40
+ export declare function readCertifiedReleaseManifest(record: CertifiedReleaseRecord, selectedStoreRoot: string): Promise<MaterializedRelease>;
41
+ export declare function verifyMaterializedRelease(releaseRoot: string, expected?: ReleaseIdentity, selectedStoreRoot?: string, options?: VerifyMaterializedReleaseOptions): Promise<MaterializedRelease>;
9
42
  export declare function assertImmutableExecutionRoot(release: MaterializedRelease, dataDir: string): Promise<void>;
10
43
  export declare function resolveReleaseEntryPoint(release: MaterializedRelease, entryPoint: string): Promise<string>;
11
- //# sourceMappingURL=release-store.d.ts.map
@@ -1,46 +1,105 @@
1
1
  import { createHash, randomUUID } from "node:crypto";
2
- import { chmod, copyFile, lstat, mkdir, readFile, realpath, rename, rm, writeFile } from "node:fs/promises";
2
+ import { chmod, lstat, mkdir, readFile, realpath, rename, rm, writeFile } from "node:fs/promises";
3
3
  import { dirname, isAbsolute, relative, resolve, sep } from "node:path";
4
- import { ADDONE_PACKAGE_NAME, deriveReleaseIdentity, resolveWithin } from "./release.js";
5
- export const RELEASE_MANIFEST = ".addone-release.json";
6
- export async function materializeRelease(packageRoot, dataDir) {
7
- const identity = await deriveReleaseIdentity(packageRoot);
4
+ import { PRODUCT_PACKAGE_NAME, createReleaseIdentity, digestManifestFiles, discoverReleasePayload, releaseFileIdentity, resolveWithin, } from "./release.js";
5
+ import { PRODUCT_IDENTITY, PRODUCT_TEXT } from "../../product-identity.js";
6
+ import { mapWithConcurrency } from "./concurrency.js";
7
+ const RELEASE_FILE_IO_CONCURRENCY = 32;
8
+ const certificationReady = new WeakSet();
9
+ export const RELEASE_MANIFEST_FILENAME = PRODUCT_IDENTITY.manifest.releaseFilename;
10
+ export async function materializeRelease(packageRoot, dataDir, options = {}) {
11
+ const payload = await discoverReleasePayload(packageRoot, {
12
+ onSourceRead: (path, bytes) => options.onOperation?.({ operation: "source-read", path, bytes }),
13
+ });
8
14
  const storeRoot = resolve(dataDir, "releases");
9
15
  await mkdir(storeRoot, { recursive: true, mode: 0o700 });
10
- const releaseRoot = resolveWithin(storeRoot, identity.releaseId);
11
- const existing = await lstat(releaseRoot).catch(() => null);
12
- if (existing)
13
- return await verifyMaterializedRelease(releaseRoot, identity);
14
- const candidate = resolveWithin(storeRoot, `.candidate-${identity.releaseId}-${randomUUID()}`);
16
+ options.onProgress?.({ phase: "copying", fileCount: payload.paths.length });
17
+ const candidate = resolveWithin(storeRoot, `.candidate-${randomUUID()}`);
15
18
  await mkdir(candidate, { recursive: false, mode: 0o700 });
16
19
  try {
17
- for (const file of identity.files) {
18
- const source = resolveWithin(identity.packageRoot, file.path);
19
- const destination = resolveWithin(candidate, file.path);
20
- await mkdir(dirname(destination), { recursive: true, mode: 0o700 });
21
- await copyFile(source, destination);
22
- await chmod(destination, file.executable ? 0o500 : 0o400);
20
+ const directories = [...new Set(payload.paths.map(path => dirname(resolveWithin(candidate, path))))];
21
+ await mapWithConcurrency(directories, RELEASE_FILE_IO_CONCURRENCY, async (directory) => {
22
+ await mkdir(directory, { recursive: true, mode: 0o700 });
23
+ });
24
+ const files = await mapWithConcurrency(payload.paths, RELEASE_FILE_IO_CONCURRENCY, async (path) => {
25
+ const source = resolveWithin(payload.packageRoot, path);
26
+ const destination = resolveWithin(candidate, path);
27
+ const metadata = await lstat(source);
28
+ if (!metadata.isFile() || metadata.isSymbolicLink())
29
+ throw new Error(`release payload is not a regular file: ${path}`);
30
+ const cached = payload.cachedFiles.get(path);
31
+ const bytes = cached ?? await readFile(source);
32
+ if (!cached)
33
+ options.onOperation?.({ operation: "source-read", path, bytes: bytes.length });
34
+ const mode = (metadata.mode & 0o111) !== 0 ? 0o500 : 0o400;
35
+ if (options.writeCandidateFile)
36
+ await options.writeCandidateFile(destination, bytes, mode);
37
+ else {
38
+ await writeFile(destination, bytes, { flag: "wx", mode });
39
+ await chmod(destination, mode);
40
+ }
41
+ options.onOperation?.({ operation: "candidate-write", path, bytes: bytes.length });
42
+ return releaseFileIdentity(path, bytes, (metadata.mode & 0o111) !== 0);
43
+ });
44
+ const identity = createReleaseIdentity(payload.packageRoot, payload.packageVersion, files);
45
+ const releaseRoot = resolveWithin(storeRoot, identity.releaseId);
46
+ if (await lstat(releaseRoot).catch(() => null)) {
47
+ await rm(candidate, { recursive: true, force: true });
48
+ return certificationReadyRelease(await verifyMaterializedRelease(releaseRoot, identity));
23
49
  }
24
- await writeFile(resolve(candidate, RELEASE_MANIFEST), JSON.stringify(identity, null, 2), { mode: 0o400, flag: "wx" });
25
- await verifyMaterializedRelease(candidate, identity);
26
- await rename(candidate, releaseRoot);
27
- return await verifyMaterializedRelease(releaseRoot, identity);
50
+ await writeFile(resolve(candidate, RELEASE_MANIFEST_FILENAME), JSON.stringify(identity, null, 2), { mode: 0o400, flag: "wx" });
51
+ try {
52
+ await rename(candidate, releaseRoot);
53
+ }
54
+ catch (error) {
55
+ if (!await lstat(releaseRoot).catch(() => null))
56
+ throw error;
57
+ await rm(candidate, { recursive: true, force: true });
58
+ return certificationReadyRelease(await verifyMaterializedRelease(releaseRoot, identity));
59
+ }
60
+ return certificationReadyRelease({ ...identity, releaseRoot: await realpath(releaseRoot) });
28
61
  }
29
62
  catch (error) {
30
63
  await rm(candidate, { recursive: true, force: true });
31
64
  throw error;
32
65
  }
33
66
  }
67
+ /** Consume proof that this exact object was freshly materialized or fully verified in this process. */
68
+ export function consumeMaterializationProof(release) {
69
+ if (!certificationReady.has(release))
70
+ return false;
71
+ certificationReady.delete(release);
72
+ return true;
73
+ }
34
74
  export async function readMaterializedRelease(releaseRoot) {
35
75
  const canonical = await realpath(releaseRoot);
36
- const manifest = JSON.parse(await readFile(resolve(canonical, RELEASE_MANIFEST), "utf8"));
76
+ const manifest = JSON.parse(await readFile(resolve(canonical, RELEASE_MANIFEST_FILENAME), "utf8"));
37
77
  return await verifyMaterializedRelease(canonical, manifest);
38
78
  }
39
- export async function verifyMaterializedRelease(releaseRoot, expected, selectedStoreRoot) {
79
+ /**
80
+ * Load metadata for a release whose bytes were already certified by the
81
+ * current parent process or an authenticated live supervisor. Callers must
82
+ * establish one of those preconditions; untrusted releases require full
83
+ * verification.
84
+ */
85
+ export async function readCertifiedReleaseManifest(record, selectedStoreRoot) {
86
+ const canonical = await realpath(record.releaseRoot);
87
+ assertContained(await realpath(selectedStoreRoot), canonical, "release root is outside the selected release store");
88
+ const manifest = JSON.parse(await readFile(resolveWithin(canonical, RELEASE_MANIFEST_FILENAME), "utf8"));
89
+ validateManifest(manifest);
90
+ if (manifest.releaseId !== record.releaseId || manifest.contentDigest !== record.contentDigest
91
+ || (record.packageVersion !== undefined && manifest.packageVersion !== record.packageVersion)) {
92
+ throw new Error(`certified release record differs from manifest for ${canonical}`);
93
+ }
94
+ if (canonical.split(sep).at(-1) !== manifest.releaseId)
95
+ throw new Error(`release directory does not match identity ${manifest.releaseId}`);
96
+ return { ...manifest, releaseRoot: canonical };
97
+ }
98
+ export async function verifyMaterializedRelease(releaseRoot, expected, selectedStoreRoot, options = {}) {
40
99
  const canonical = await realpath(releaseRoot);
41
100
  if (selectedStoreRoot)
42
101
  assertContained(await realpath(selectedStoreRoot), canonical, "release root is outside the selected release store");
43
- const manifestPath = resolveWithin(canonical, RELEASE_MANIFEST);
102
+ const manifestPath = resolveWithin(canonical, RELEASE_MANIFEST_FILENAME);
44
103
  const manifest = JSON.parse(await readFile(manifestPath, "utf8"));
45
104
  validateManifest(manifest);
46
105
  if (expected && (manifest.releaseId !== expected.releaseId || manifest.contentDigest !== expected.contentDigest)) {
@@ -49,20 +108,23 @@ export async function verifyMaterializedRelease(releaseRoot, expected, selectedS
49
108
  if (canonical.split(sep).at(-1) !== manifest.releaseId && !canonical.split(sep).at(-1)?.startsWith(`.candidate-${manifest.releaseId}-`)) {
50
109
  throw new Error(`release directory does not match identity ${manifest.releaseId}`);
51
110
  }
52
- for (const file of manifest.files)
53
- await verifyFile(canonical, file);
111
+ await mapWithConcurrency(manifest.files, RELEASE_FILE_IO_CONCURRENCY, async (file) => {
112
+ await verifyFile(canonical, file, options);
113
+ });
54
114
  const recomputed = digestManifestFiles(manifest.files);
55
115
  if (recomputed !== manifest.contentDigest)
56
116
  throw new Error(`release content digest mismatch for ${manifest.releaseId}`);
57
117
  return { ...manifest, releaseRoot: canonical };
58
118
  }
59
119
  export async function assertImmutableExecutionRoot(release, dataDir) {
60
- await verifyMaterializedRelease(release.releaseRoot, release, resolve(dataDir, "releases"));
61
- if (!process.env.ADDONE_RELEASE_ROOT)
62
- throw new Error("persistent AddOne process has no immutable release root");
63
- const selected = await realpath(process.env.ADDONE_RELEASE_ROOT);
120
+ const storeRoot = await realpath(resolve(dataDir, "releases"));
121
+ assertContained(storeRoot, release.releaseRoot, "release root is outside the selected release store");
122
+ const selectedRoot = process.env[PRODUCT_IDENTITY.environment.releaseRoot];
123
+ if (!selectedRoot)
124
+ throw new Error(PRODUCT_TEXT.diagnostic("persistent process has no immutable release root"));
125
+ const selected = await realpath(selectedRoot);
64
126
  if (selected !== release.releaseRoot)
65
- throw new Error("persistent AddOne process selected a different immutable release root");
127
+ throw new Error(PRODUCT_TEXT.diagnostic("persistent process selected a different immutable release root"));
66
128
  }
67
129
  export async function resolveReleaseEntryPoint(release, entryPoint) {
68
130
  const normalized = entryPoint.split("\\").join("/").replace(/^\.\//, "");
@@ -73,22 +135,28 @@ export async function resolveReleaseEntryPoint(release, entryPoint) {
73
135
  assertContained(release.releaseRoot, canonical, "entry point resolves outside the selected release root");
74
136
  return canonical;
75
137
  }
76
- async function verifyFile(root, file) {
138
+ async function verifyFile(root, file, options) {
77
139
  const path = resolveWithin(root, file.path);
78
140
  const metadata = await lstat(path).catch(() => null);
79
141
  if (!metadata?.isFile() || metadata.isSymbolicLink())
80
142
  throw new Error(`release candidate is incomplete: ${file.path}`);
81
143
  if (metadata.size !== file.bytes)
82
144
  throw new Error(`release file size mismatch: ${file.path}`);
83
- const digest = createHash("sha256").update(await readFile(path)).digest("hex");
145
+ const bytes = await readFile(path);
146
+ options.onOperation?.({ operation: "verification-read", path: file.path, bytes: bytes.length });
147
+ const digest = createHash("sha256").update(bytes).digest("hex");
84
148
  if (digest !== file.sha256)
85
149
  throw new Error(`release file digest mismatch: ${file.path}`);
86
150
  }
151
+ function certificationReadyRelease(release) {
152
+ certificationReady.add(release);
153
+ return release;
154
+ }
87
155
  function validateManifest(value) {
88
- if (value.packageName !== ADDONE_PACKAGE_NAME || typeof value.packageVersion !== "string")
89
- throw new Error("invalid AddOne release manifest metadata");
156
+ if (value.packageName !== PRODUCT_PACKAGE_NAME || typeof value.packageVersion !== "string")
157
+ throw new Error(PRODUCT_TEXT.diagnostic("release manifest metadata is invalid"));
90
158
  if (!/^[a-f0-9]{64}$/.test(value.contentDigest) || !/^[0-9A-Za-z.+_-]+-[a-f0-9]{20}$/.test(value.releaseId))
91
- throw new Error("invalid AddOne release identity");
159
+ throw new Error(PRODUCT_TEXT.diagnostic("release identity is invalid"));
92
160
  if (!Array.isArray(value.files) || value.files.length === 0)
93
161
  throw new Error("release manifest contains no files");
94
162
  for (const file of value.files) {
@@ -99,17 +167,9 @@ function validateManifest(value) {
99
167
  throw new Error(`invalid release manifest file identity: ${file.path}`);
100
168
  }
101
169
  }
102
- function digestManifestFiles(files) {
103
- const digest = createHash("sha256");
104
- for (const file of [...files].sort((left, right) => left.path < right.path ? -1 : left.path > right.path ? 1 : 0)) {
105
- digest.update(`${file.path}\0${file.bytes}\0${file.sha256}\0${file.executable ? 1 : 0}\n`);
106
- }
107
- return digest.digest("hex");
108
- }
109
170
  function assertContained(parent, child, message) {
110
171
  const fromParent = relative(parent, child);
111
172
  if (fromParent === "" || (!fromParent.startsWith(`..${sep}`) && fromParent !== ".." && !isAbsolute(fromParent)))
112
173
  return;
113
174
  throw new Error(`${message}: ${child}`);
114
175
  }
115
- //# sourceMappingURL=release-store.js.map
@@ -1,24 +1,38 @@
1
- export declare const ADDONE_PACKAGE_NAME = "@timurproko/a1";
1
+ export declare const PRODUCT_PACKAGE_NAME: string;
2
2
  export interface ReleaseFileIdentity {
3
3
  readonly path: string;
4
4
  readonly bytes: number;
5
5
  readonly sha256: string;
6
6
  readonly executable: boolean;
7
7
  }
8
- export interface AddOneReleaseIdentity {
9
- readonly packageName: typeof ADDONE_PACKAGE_NAME;
8
+ export interface ReleaseIdentity {
9
+ readonly packageName: typeof PRODUCT_PACKAGE_NAME;
10
10
  readonly packageVersion: string;
11
11
  readonly contentDigest: string;
12
12
  readonly releaseId: string;
13
13
  readonly packageRoot: string;
14
14
  readonly files: readonly ReleaseFileIdentity[];
15
15
  }
16
+ export interface DiscoveredReleasePayload {
17
+ readonly packageRoot: string;
18
+ readonly packageVersion: string;
19
+ readonly paths: readonly string[];
20
+ /** Package manifests already read to discover the dependency closure. */
21
+ readonly cachedFiles: ReadonlyMap<string, Buffer>;
22
+ }
23
+ export interface DiscoverReleasePayloadOptions {
24
+ readonly onSourceRead?: (path: string, bytes: number) => void;
25
+ }
26
+ /** Discover the complete payload without reading ordinary file contents. */
27
+ export declare function discoverReleasePayload(packageRoot: string, options?: DiscoverReleasePayloadOptions): Promise<DiscoveredReleasePayload>;
16
28
  /**
17
- * Derive AddOne execution identity only from installed distribution metadata and
29
+ * Derive release execution identity only from installed distribution metadata and
18
30
  * bytes. The version remains display metadata; the digest selects executable
19
31
  * content.
20
32
  */
21
- export declare function deriveReleaseIdentity(packageRoot: string): Promise<AddOneReleaseIdentity>;
33
+ export declare function deriveReleaseIdentity(packageRoot: string): Promise<ReleaseIdentity>;
34
+ export declare function createReleaseIdentity(packageRoot: string, packageVersion: string, files: readonly ReleaseFileIdentity[]): ReleaseIdentity;
35
+ export declare function releaseFileIdentity(path: string, bytes: Uint8Array, executable: boolean): ReleaseFileIdentity;
36
+ export declare function digestManifestFiles(files: readonly ReleaseFileIdentity[]): string;
22
37
  export declare function resolveWithin(root: string, candidate: string): string;
23
38
  export declare function packageRootFromModule(moduleUrl: string): string;
24
- //# sourceMappingURL=release.d.ts.map
@@ -1,54 +1,82 @@
1
1
  import { createHash } from "node:crypto";
2
2
  import { lstat, readFile, readdir, realpath } from "node:fs/promises";
3
3
  import { basename, dirname, isAbsolute, relative, resolve, sep } from "node:path";
4
- export const ADDONE_PACKAGE_NAME = "@timurproko/a1";
4
+ import { PRODUCT_IDENTITY, PRODUCT_TEXT } from "../../product-identity.js";
5
+ import { mapWithConcurrency } from "./concurrency.js";
6
+ const RELEASE_FILE_IO_CONCURRENCY = 32;
7
+ export const PRODUCT_PACKAGE_NAME = PRODUCT_IDENTITY.packageName;
8
+ /** Discover the complete payload without reading ordinary file contents. */
9
+ export async function discoverReleasePayload(packageRoot, options = {}) {
10
+ const canonicalRoot = await realpath(packageRoot);
11
+ const cachedFiles = new Map();
12
+ const readManifest = async (manifestRoot) => {
13
+ const manifestPath = resolve(manifestRoot, "package.json");
14
+ const bytes = await readFile(manifestPath);
15
+ const path = normalizeRelative(relative(canonicalRoot, manifestPath));
16
+ cachedFiles.set(path, bytes);
17
+ options.onSourceRead?.(path, bytes.length);
18
+ return JSON.parse(bytes.toString("utf8"));
19
+ };
20
+ const manifest = await readManifest(canonicalRoot);
21
+ if (manifest.name !== PRODUCT_PACKAGE_NAME)
22
+ throw new Error(`unexpected ${PRODUCT_TEXT.displayName} package name: ${String(manifest.name)}`);
23
+ if (typeof manifest.version !== "string" || manifest.version.length === 0)
24
+ throw new Error(PRODUCT_TEXT.diagnostic("package metadata has no version"));
25
+ const roots = distributionRoots(manifest);
26
+ const paths = new Set(["package.json"]);
27
+ for (const root of roots)
28
+ await collectFiles(canonicalRoot, resolveWithin(canonicalRoot, root), paths);
29
+ await collectDependencyClosure(canonicalRoot, canonicalRoot, manifest, paths, new Set(), readManifest);
30
+ return {
31
+ packageRoot: canonicalRoot,
32
+ packageVersion: manifest.version,
33
+ paths: [...paths].sort(),
34
+ cachedFiles,
35
+ };
36
+ }
5
37
  /**
6
- * Derive AddOne execution identity only from installed distribution metadata and
38
+ * Derive release execution identity only from installed distribution metadata and
7
39
  * bytes. The version remains display metadata; the digest selects executable
8
40
  * content.
9
41
  */
10
42
  export async function deriveReleaseIdentity(packageRoot) {
11
- const canonicalRoot = await realpath(packageRoot);
12
- const manifestPath = resolve(canonicalRoot, "package.json");
13
- const manifest = JSON.parse(await readFile(manifestPath, "utf8"));
14
- if (manifest.name !== ADDONE_PACKAGE_NAME)
15
- throw new Error(`unexpected AddOne package name: ${String(manifest.name)}`);
16
- if (typeof manifest.version !== "string" || manifest.version.length === 0)
17
- throw new Error("AddOne package metadata has no version");
18
- const roots = distributionRoots(manifest);
19
- const paths = new Set(["package.json"]);
20
- for (const root of roots) {
21
- const absolute = resolveWithin(canonicalRoot, root);
22
- await collectFiles(canonicalRoot, absolute, paths);
23
- }
24
- await collectDependencyClosure(canonicalRoot, canonicalRoot, manifest, paths, new Set());
25
- const files = [];
26
- for (const path of [...paths].sort()) {
27
- const absolute = resolveWithin(canonicalRoot, path);
43
+ const payload = await discoverReleasePayload(packageRoot);
44
+ const files = await mapWithConcurrency(payload.paths, RELEASE_FILE_IO_CONCURRENCY, async (path) => {
45
+ const absolute = resolveWithin(payload.packageRoot, path);
28
46
  const metadata = await lstat(absolute);
29
- if (!metadata.isFile())
47
+ if (!metadata.isFile() || metadata.isSymbolicLink())
30
48
  throw new Error(`release payload is not a regular file: ${path}`);
31
- const bytes = await readFile(absolute);
32
- files.push({
33
- path: normalizeRelative(path),
34
- bytes: bytes.length,
35
- sha256: createHash("sha256").update(bytes).digest("hex"),
36
- executable: (metadata.mode & 0o111) !== 0,
37
- });
38
- }
39
- const digest = createHash("sha256");
40
- for (const file of files)
41
- digest.update(`${file.path}\0${file.bytes}\0${file.sha256}\0${file.executable ? 1 : 0}\n`);
42
- const contentDigest = digest.digest("hex");
49
+ const bytes = payload.cachedFiles.get(path) ?? await readFile(absolute);
50
+ return releaseFileIdentity(path, bytes, (metadata.mode & 0o111) !== 0);
51
+ });
52
+ return createReleaseIdentity(payload.packageRoot, payload.packageVersion, files);
53
+ }
54
+ export function createReleaseIdentity(packageRoot, packageVersion, files) {
55
+ const contentDigest = digestManifestFiles(files);
43
56
  return {
44
- packageName: ADDONE_PACKAGE_NAME,
45
- packageVersion: manifest.version,
57
+ packageName: PRODUCT_PACKAGE_NAME,
58
+ packageVersion,
46
59
  contentDigest,
47
- releaseId: `${manifest.version}-${contentDigest.slice(0, 20)}`,
48
- packageRoot: canonicalRoot,
49
- files,
60
+ releaseId: `${packageVersion}-${contentDigest.slice(0, 20)}`,
61
+ packageRoot,
62
+ files: [...files].sort(compareReleaseFiles),
50
63
  };
51
64
  }
65
+ export function releaseFileIdentity(path, bytes, executable) {
66
+ return {
67
+ path: normalizeRelative(path),
68
+ bytes: bytes.length,
69
+ sha256: createHash("sha256").update(bytes).digest("hex"),
70
+ executable,
71
+ };
72
+ }
73
+ export function digestManifestFiles(files) {
74
+ const digest = createHash("sha256");
75
+ for (const file of [...files].sort(compareReleaseFiles)) {
76
+ digest.update(`${file.path}\0${file.bytes}\0${file.sha256}\0${file.executable ? 1 : 0}\n`);
77
+ }
78
+ return digest.digest("hex");
79
+ }
52
80
  export function resolveWithin(root, candidate) {
53
81
  if (candidate.includes("\0"))
54
82
  throw new Error("release path contains a null byte");
@@ -60,15 +88,15 @@ export function resolveWithin(root, candidate) {
60
88
  }
61
89
  function distributionRoots(manifest) {
62
90
  if (!Array.isArray(manifest.files))
63
- throw new Error("AddOne package metadata has no distribution files list");
91
+ throw new Error(PRODUCT_TEXT.diagnostic("package metadata has no distribution files list"));
64
92
  const roots = manifest.files.map(value => {
65
93
  if (typeof value !== "string" || value.length === 0)
66
- throw new Error("AddOne distribution file entry is invalid");
94
+ throw new Error(PRODUCT_TEXT.diagnostic("distribution file entry is invalid"));
67
95
  const normalized = normalizeRelative(value);
68
96
  if (normalized === "package.json")
69
97
  return normalized;
70
98
  if (isAbsolute(value) || normalized === ".." || normalized.startsWith("../"))
71
- throw new Error(`AddOne distribution path escapes package root: ${value}`);
99
+ throw new Error(PRODUCT_TEXT.diagnostic(`distribution path escapes package root: ${value}`));
72
100
  return normalized;
73
101
  });
74
102
  return [...new Set(roots)];
@@ -90,7 +118,7 @@ async function collectFiles(root, path, output, skipNodeModules = false) {
90
118
  await collectFiles(root, resolve(path, entry), output, skipNodeModules);
91
119
  }
92
120
  }
93
- async function collectDependencyClosure(root, requesterRoot, manifest, output, visited) {
121
+ async function collectDependencyClosure(root, requesterRoot, manifest, output, visited, readManifest) {
94
122
  const required = dependencyNames(manifest.dependencies);
95
123
  const optional = new Set(dependencyNames(manifest.optionalDependencies));
96
124
  for (const name of [...new Set([...required, ...optional])].sort()) {
@@ -98,14 +126,13 @@ async function collectDependencyClosure(root, requesterRoot, manifest, output, v
98
126
  if (!packagePath) {
99
127
  if (optional.has(name))
100
128
  continue;
101
- throw new Error(`installed AddOne dependency is missing: ${name}`);
129
+ throw new Error(`installed ${PRODUCT_TEXT.displayName} dependency is missing: ${name}`);
102
130
  }
103
131
  if (visited.has(packagePath))
104
132
  continue;
105
133
  visited.add(packagePath);
106
134
  await collectFiles(root, packagePath, output, true);
107
- const dependencyManifest = JSON.parse(await readFile(resolve(packagePath, "package.json"), "utf8"));
108
- await collectDependencyClosure(root, packagePath, dependencyManifest, output, visited);
135
+ await collectDependencyClosure(root, packagePath, await readManifest(packagePath), output, visited, readManifest);
109
136
  }
110
137
  }
111
138
  async function findInstalledDependency(root, requesterRoot, name) {
@@ -130,22 +157,24 @@ function dependencyNames(value) {
130
157
  if (value === undefined)
131
158
  return [];
132
159
  if (typeof value !== "object" || value === null || Array.isArray(value))
133
- throw new Error("AddOne dependency metadata is invalid");
160
+ throw new Error(PRODUCT_TEXT.diagnostic("dependency metadata is invalid"));
134
161
  return Object.keys(value);
135
162
  }
163
+ function compareReleaseFiles(left, right) {
164
+ return left.path < right.path ? -1 : left.path > right.path ? 1 : 0;
165
+ }
136
166
  function normalizeRelative(path) {
137
167
  return path.split(sep).join("/").replace(/^\.\//, "");
138
168
  }
139
169
  export function packageRootFromModule(moduleUrl) {
140
170
  const url = new URL(moduleUrl);
141
171
  if (url.protocol !== "file:")
142
- throw new Error(`AddOne module URL must be a file URL: ${moduleUrl}`);
172
+ throw new Error(PRODUCT_TEXT.diagnostic(`module URL must be a file URL: ${moduleUrl}`));
143
173
  let directory = dirname(url.pathname.replace(/^\/(.:)/, "$1"));
144
174
  while (basename(directory) !== "") {
145
175
  if (basename(directory) === "dist")
146
176
  return dirname(directory);
147
177
  directory = dirname(directory);
148
178
  }
149
- throw new Error("could not derive AddOne package root from module URL");
179
+ throw new Error(PRODUCT_TEXT.diagnostic("package root could not be derived from module URL"));
150
180
  }
151
- //# sourceMappingURL=release.js.map
@@ -1,3 +1,4 @@
1
+ export declare const STABLE_RELEASE_SCHEMA: string;
1
2
  export interface StableReleaseEvidenceInput {
2
3
  readonly packageName: string;
3
4
  readonly version: string;
@@ -9,7 +10,7 @@ export interface StableReleaseEvidenceInput {
9
10
  readonly recordedAt: string;
10
11
  }
11
12
  export interface StableReleaseEvidence extends StableReleaseEvidenceInput {
12
- readonly schema: "addone-stable-release-v1";
13
+ readonly schema: typeof STABLE_RELEASE_SCHEMA;
13
14
  readonly channel: "latest";
14
15
  }
15
16
  export interface StableRegistryState {
@@ -27,4 +28,3 @@ export interface StableRegistryVerificationOptions {
27
28
  }
28
29
  export declare function createStableReleaseEvidence(input: StableReleaseEvidenceInput): StableReleaseEvidence;
29
30
  export declare function verifyStableRegistry(expected: StableReleaseEvidence, observe: () => Promise<StableRegistryState>, options?: StableRegistryVerificationOptions): Promise<void>;
30
- //# sourceMappingURL=stable-release.d.ts.map
@@ -1,7 +1,9 @@
1
1
  import { prerelease, valid } from "semver";
2
- import { ADDONE_PACKAGE_NAME } from "./release.js";
2
+ import { PRODUCT_PACKAGE_NAME } from "./release.js";
3
+ import { PRODUCT_IDENTITY } from "../../product-identity.js";
4
+ export const STABLE_RELEASE_SCHEMA = PRODUCT_IDENTITY.evidence.stableReleaseSchema;
3
5
  export function createStableReleaseEvidence(input) {
4
- if (input.packageName !== ADDONE_PACKAGE_NAME)
6
+ if (input.packageName !== PRODUCT_PACKAGE_NAME)
5
7
  throw new Error(`unexpected stable package: ${input.packageName}`);
6
8
  if (valid(input.version) === null || prerelease(input.version) !== null)
7
9
  throw new Error(`stable release requires an exact stable version: ${input.version}`);
@@ -11,7 +13,7 @@ export function createStableReleaseEvidence(input) {
11
13
  throw new Error("stable release integrity is malformed");
12
14
  if (!/^[a-f0-9]{40}$/.test(input.shasum))
13
15
  throw new Error("stable release shasum is malformed");
14
- return { schema: "addone-stable-release-v1", channel: "latest", ...input };
16
+ return { schema: STABLE_RELEASE_SCHEMA, channel: "latest", ...input };
15
17
  }
16
18
  export async function verifyStableRegistry(expected, observe, options = {}) {
17
19
  const attempts = options.attempts ?? 12;
@@ -28,11 +30,10 @@ export async function verifyStableRegistry(expected, observe, options = {}) {
28
30
  && state.integrity === expected.integrity
29
31
  && state.shasum === expected.shasum
30
32
  && state.bins.length === 1
31
- && state.bins[0] === "a1")
33
+ && state.bins[0] === PRODUCT_IDENTITY.commandName)
32
34
  return;
33
35
  if (attempt < attempts)
34
36
  await delay(delayMs);
35
37
  }
36
38
  throw new Error(`npm latest did not match accepted ${expected.packageName}@${expected.version} after ${attempts} attempts: ${JSON.stringify(state)}`);
37
39
  }
38
- //# sourceMappingURL=stable-release.js.map
@@ -1,7 +1,8 @@
1
+ export declare const UPDATE_JOURNAL_SCHEMA: string;
1
2
  import type { UpdateChannel } from "./update.js";
2
3
  export type UpdateTransactionPhase = "shutdown-intent" | "ownership-released" | "package-installed" | "materialized" | "certified" | "active-reference-committed" | "supervisor-verified";
3
4
  export interface UpdateTransaction {
4
- readonly schemaVersion: 1;
5
+ readonly schema: typeof UPDATE_JOURNAL_SCHEMA;
5
6
  readonly transactionId: string;
6
7
  readonly channel: UpdateChannel;
7
8
  readonly targetVersion: string;
@@ -28,4 +29,3 @@ export declare class UpdateTransactionStore {
28
29
  finish(status: "completed" | "rolled-back" | "failed", error?: string | null): Promise<UpdateTransaction>;
29
30
  clearCompleted(): Promise<void>;
30
31
  }
31
- //# sourceMappingURL=update-transaction.d.ts.map
@@ -1,6 +1,8 @@
1
1
  import { randomUUID } from "node:crypto";
2
2
  import { mkdir, open, readFile, rename, rm } from "node:fs/promises";
3
3
  import { dirname, resolve } from "node:path";
4
+ import { PRODUCT_IDENTITY, PRODUCT_TEXT } from "../../product-identity.js";
5
+ export const UPDATE_JOURNAL_SCHEMA = PRODUCT_IDENTITY.protocol.updateJournalSchema;
4
6
  export class UpdateTransactionStore {
5
7
  path;
6
8
  constructor(dataDir) { this.path = resolve(dataDir, "update-transaction.json"); }
@@ -20,13 +22,13 @@ export class UpdateTransactionStore {
20
22
  const current = await this.read();
21
23
  if (current?.status === "active") {
22
24
  if (current.targetVersion !== input.targetVersion || current.channel !== input.channel) {
23
- throw new Error(`unfinished AddOne update ${current.transactionId} targets ${current.targetVersion}; reconcile it before starting ${input.targetVersion}`);
25
+ throw new Error(PRODUCT_TEXT.diagnostic(`has unfinished update ${current.transactionId} targeting ${current.targetVersion}; reconcile it before starting ${input.targetVersion}`));
24
26
  }
25
27
  return current;
26
28
  }
27
29
  const now = new Date().toISOString();
28
30
  return await this.#write({
29
- schemaVersion: 1,
31
+ schema: UPDATE_JOURNAL_SCHEMA,
30
32
  transactionId: randomUUID(),
31
33
  ...input,
32
34
  phase: "shutdown-intent",
@@ -45,7 +47,7 @@ export class UpdateTransactionStore {
45
47
  async finish(status, error = null) {
46
48
  const current = await this.read();
47
49
  if (!current)
48
- throw new Error("no AddOne update transaction is recorded");
50
+ throw new Error(`no ${PRODUCT_TEXT.displayName} update transaction is recorded`);
49
51
  return await this.#write({ ...current, status, error, updatedAt: new Date().toISOString() });
50
52
  }
51
53
  async clearCompleted() {
@@ -56,7 +58,7 @@ export class UpdateTransactionStore {
56
58
  async #requiredActive() {
57
59
  const current = await this.read();
58
60
  if (!current || current.status !== "active")
59
- throw new Error("no active AddOne update transaction is recorded");
61
+ throw new Error(`no active ${PRODUCT_TEXT.displayName} update transaction is recorded`);
60
62
  return current;
61
63
  }
62
64
  async #write(value) {
@@ -79,10 +81,9 @@ function phaseOrder(phase) {
79
81
  return ["shutdown-intent", "ownership-released", "package-installed", "materialized", "certified", "active-reference-committed", "supervisor-verified"].indexOf(phase);
80
82
  }
81
83
  function validate(value) {
82
- if (value.schemaVersion !== 1 || typeof value.transactionId !== "string" || !["stable", "next"].includes(value.channel)
84
+ if (value.schema !== UPDATE_JOURNAL_SCHEMA || typeof value.transactionId !== "string" || !["stable", "next"].includes(value.channel)
83
85
  || typeof value.targetVersion !== "string" || typeof value.packageRoot !== "string" || typeof value.startedAt !== "string"
84
86
  || typeof value.updatedAt !== "string" || phaseOrder(value.phase) < 0 || !["active", "completed", "rolled-back", "failed"].includes(value.status)) {
85
- throw new Error("invalid AddOne update transaction journal");
87
+ throw new Error(`invalid ${PRODUCT_TEXT.displayName} update transaction journal`);
86
88
  }
87
89
  }
88
- //# sourceMappingURL=update-transaction.js.map