@timurproko/a1 0.1.8-dev.ece8cef → 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 (918) hide show
  1. package/README.md +104 -58
  2. package/bin/activate.js +8 -0
  3. package/bin/cli.js +39 -13
  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 -77
  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 -31
  569. package/dist/src/cli/dispatch.js +0 -123
  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/development-preview-release.d.ts +0 -49
  782. package/dist/src/foundation/release/development-preview-release.js +0 -114
  783. package/dist/src/foundation/release/index.d.ts +0 -11
  784. package/dist/src/foundation/release/index.js +0 -11
  785. package/dist/src/foundation/release/release-gc.d.ts +0 -5
  786. package/dist/src/foundation/release/release-gc.js +0 -16
  787. package/dist/src/foundation/release/release-store.d.ts +0 -43
  788. package/dist/src/foundation/release/release-store.js +0 -175
  789. package/dist/src/foundation/release/release.d.ts +0 -38
  790. package/dist/src/foundation/release/release.js +0 -204
  791. package/dist/src/foundation/release/update-transaction.d.ts +0 -31
  792. package/dist/src/foundation/release/update-transaction.js +0 -89
  793. package/dist/src/foundation/release/update.d.ts +0 -80
  794. package/dist/src/foundation/release/update.js +0 -458
  795. package/dist/src/foundation/storage/control-store.d.ts +0 -61
  796. package/dist/src/foundation/storage/control-store.js +0 -530
  797. package/dist/src/foundation/storage/index.d.ts +0 -1
  798. package/dist/src/foundation/storage/index.js +0 -1
  799. package/dist/src/foundation/structured-agent-runtime/backpressure.d.ts +0 -46
  800. package/dist/src/foundation/structured-agent-runtime/backpressure.js +0 -118
  801. package/dist/src/foundation/structured-agent-runtime/commands.d.ts +0 -52
  802. package/dist/src/foundation/structured-agent-runtime/commands.js +0 -164
  803. package/dist/src/foundation/structured-agent-runtime/handshake.d.ts +0 -41
  804. package/dist/src/foundation/structured-agent-runtime/handshake.js +0 -151
  805. package/dist/src/foundation/structured-agent-runtime/index.d.ts +0 -5
  806. package/dist/src/foundation/structured-agent-runtime/index.js +0 -5
  807. package/dist/src/foundation/structured-agent-runtime/reconnection.d.ts +0 -37
  808. package/dist/src/foundation/structured-agent-runtime/reconnection.js +0 -129
  809. package/dist/src/foundation/structured-agent-runtime/state.d.ts +0 -56
  810. package/dist/src/foundation/structured-agent-runtime/state.js +0 -118
  811. package/dist/src/foundation/supervision/index.d.ts +0 -3
  812. package/dist/src/foundation/supervision/index.js +0 -3
  813. package/dist/src/foundation/supervision/main.d.ts +0 -1
  814. package/dist/src/foundation/supervision/main.js +0 -41
  815. package/dist/src/foundation/supervision/paths.d.ts +0 -1
  816. package/dist/src/foundation/supervision/paths.js +0 -1
  817. package/dist/src/foundation/supervision/server.d.ts +0 -22
  818. package/dist/src/foundation/supervision/server.js +0 -451
  819. package/dist/src/foundation/ui-apps/contracts.d.ts +0 -42
  820. package/dist/src/foundation/ui-apps/host.d.ts +0 -42
  821. package/dist/src/foundation/ui-apps/host.js +0 -152
  822. package/dist/src/foundation/ui-apps/index.d.ts +0 -3
  823. package/dist/src/foundation/ui-apps/index.js +0 -3
  824. package/dist/src/foundation/ui-apps/registry.d.ts +0 -11
  825. package/dist/src/foundation/ui-apps/registry.js +0 -32
  826. package/dist/src/foundation/ui-components/dialog-panel.d.ts +0 -36
  827. package/dist/src/foundation/ui-components/dialog-panel.js +0 -47
  828. package/dist/src/foundation/ui-components/frame.d.ts +0 -21
  829. package/dist/src/foundation/ui-components/frame.js +0 -54
  830. package/dist/src/foundation/ui-components/index.d.ts +0 -18
  831. package/dist/src/foundation/ui-components/index.js +0 -18
  832. package/dist/src/foundation/ui-components/line-input.d.ts +0 -74
  833. package/dist/src/foundation/ui-components/line-input.js +0 -245
  834. package/dist/src/foundation/ui-components/list-block.d.ts +0 -66
  835. package/dist/src/foundation/ui-components/list-block.js +0 -176
  836. package/dist/src/foundation/ui-components/list-view.d.ts +0 -66
  837. package/dist/src/foundation/ui-components/list-view.js +0 -76
  838. package/dist/src/foundation/ui-components/mouse.d.ts +0 -15
  839. package/dist/src/foundation/ui-components/mouse.js +0 -46
  840. package/dist/src/foundation/ui-components/scrollbar.d.ts +0 -62
  841. package/dist/src/foundation/ui-components/scrollbar.js +0 -102
  842. package/dist/src/foundation/ui-components/shortcuts.d.ts +0 -57
  843. package/dist/src/foundation/ui-components/shortcuts.js +0 -81
  844. package/dist/src/foundation/ui-components/spans.d.ts +0 -7
  845. package/dist/src/foundation/ui-components/spans.js +0 -59
  846. package/dist/src/foundation/ui-components/surface.d.ts +0 -20
  847. package/dist/src/foundation/ui-components/surface.js +0 -38
  848. package/dist/src/foundation/ui-components/text.d.ts +0 -24
  849. package/dist/src/foundation/ui-components/text.js +0 -123
  850. package/dist/src/foundation/ui-components/theme.d.ts +0 -23
  851. package/dist/src/foundation/ui-components/theme.js +0 -13
  852. package/dist/src/foundation/ui-components/value-menu.d.ts +0 -41
  853. package/dist/src/foundation/ui-components/value-menu.js +0 -33
  854. package/dist/src/foundation/workspace-contracts/index.d.ts +0 -2
  855. package/dist/src/foundation/workspace-contracts/index.js +0 -2
  856. package/dist/src/foundation/workspace-contracts/model.d.ts +0 -248
  857. package/dist/src/foundation/workspace-contracts/model.js +0 -2
  858. package/dist/src/foundation/workspace-contracts/validation.d.ts +0 -13
  859. package/dist/src/foundation/workspace-contracts/validation.js +0 -335
  860. package/dist/src/product-identity.d.ts +0 -37
  861. package/dist/src/product-identity.js +0 -150
  862. package/dist/src/product-identity.json +0 -99
  863. package/docs/manual-transparent-checkpoint.md +0 -53
  864. /package/dist/{src/foundation/agent-engine-contracts/domain.js → app/session-shell/paste-helper.d.ts} +0 -0
  865. /package/dist/{src/foundation/agent-engine-contracts/ports.js → app/session-shell/paste-text-worker.d.ts} +0 -0
  866. /package/dist/{src/foundation/lifecycle/commands.js → app/session-shell/paste-types.js} +0 -0
  867. /package/dist/{src/foundation/pi-owned-ui-integration/route-host.js → app/session-shell/response-copy-helper.d.ts} +0 -0
  868. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/capability-ports.js +0 -0
  869. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/domain-validation.d.ts +0 -0
  870. /package/dist/{src/foundation/pi-tui-runtime-adapter/contracts.js → contracts/agent-engine/domain.js} +0 -0
  871. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/model.d.ts +0 -0
  872. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/model.js +0 -0
  873. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/package-ports.js +0 -0
  874. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/ports.d.ts +0 -0
  875. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/serialization.d.ts +0 -0
  876. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/serialization.js +0 -0
  877. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/validation.d.ts +0 -0
  878. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/validation.js +0 -0
  879. /package/dist/{src/foundation/owned-ui-contracts → contracts/owned-ui}/extension-ui.js +0 -0
  880. /package/dist/{src/foundation/owned-ui-contracts → contracts/owned-ui}/model.js +0 -0
  881. /package/dist/{src/features → features}/launch/development-launch.d.ts +0 -0
  882. /package/dist/{src/features → features}/launch/initialize-profile.d.ts +0 -0
  883. /package/dist/{src/features → features}/launch/initialize-profile.js +0 -0
  884. /package/dist/{src/foundation → foundation}/lifecycle/commands.d.ts +0 -0
  885. /package/dist/{src/foundation → foundation}/lifecycle/launch-instance.d.ts +0 -0
  886. /package/dist/{src/foundation → foundation}/lifecycle/launch-instance.js +0 -0
  887. /package/dist/{src/foundation → foundation}/process-containment/artifact.d.ts +0 -0
  888. /package/dist/{src/foundation → foundation}/process-containment/artifact.js +0 -0
  889. /package/dist/{src/foundation → foundation}/process-containment/contracts.d.ts +0 -0
  890. /package/dist/{src/foundation → foundation}/process-containment/contracts.js +0 -0
  891. /package/dist/{src/foundation → foundation}/release/cohort-selection.d.ts +0 -0
  892. /package/dist/{src/foundation → foundation}/release/cohort-selection.js +0 -0
  893. /package/dist/{src/foundation → foundation}/release/concurrency.d.ts +0 -0
  894. /package/dist/{src/foundation → foundation}/release/concurrency.js +0 -0
  895. /package/dist/{src/foundation → foundation}/release/process-cleanup.d.ts +0 -0
  896. /package/dist/{src/foundation → foundation}/release/process-cleanup.js +0 -0
  897. /package/dist/{src/foundation → foundation}/release/stable-release.d.ts +0 -0
  898. /package/dist/{src/foundation → foundation}/release/stable-release.js +0 -0
  899. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/countdown-timer.js +0 -0
  900. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/mermaid.d.ts +0 -0
  901. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/session-selector-search.d.ts +0 -0
  902. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/external-editor.d.ts +0 -0
  903. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/model-search.js +0 -0
  904. /package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/public-main-entry.d.ts +0 -0
  905. /package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/public-main-entry.js +0 -0
  906. /package/dist/{src/foundation/ui-apps → ui/apps}/contracts.js +0 -0
  907. /package/dist/{src/foundation/ui-components → ui/components}/label.d.ts +0 -0
  908. /package/dist/{src/foundation/ui-components → ui/components}/label.js +0 -0
  909. /package/dist/{src/foundation/ui-components → ui/components}/pane.d.ts +0 -0
  910. /package/dist/{src/foundation/ui-components → ui/components}/pane.js +0 -0
  911. /package/dist/{src/foundation/ui-components → ui/components}/revision.d.ts +0 -0
  912. /package/dist/{src/foundation/ui-components → ui/components}/revision.js +0 -0
  913. /package/dist/{src/foundation/ui-components → ui/components}/status-line.d.ts +0 -0
  914. /package/dist/{src/foundation/ui-components → ui/components}/status-line.js +0 -0
  915. /package/dist/{src/foundation/ui-components → ui/components}/stepper.d.ts +0 -0
  916. /package/dist/{src/foundation/ui-components → ui/components}/stepper.js +0 -0
  917. /package/dist/{src/foundation/owned-ui-settings → ui/settings}/resolution.d.ts +0 -0
  918. /package/dist/{src/foundation/owned-ui-settings → ui/settings}/resolution.js +0 -0
@@ -0,0 +1,466 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import { chmod, lstat, mkdir, readFile, realpath, rename, rm, writeFile } from "node:fs/promises";
3
+ import { dirname, posix, relative, resolve, sep } from "node:path";
4
+ import { mapWithConcurrency } from "./concurrency.js";
5
+ import { assertImmutableFileMode } from "./immutable-platform.js";
6
+ import { readDependencyCertification, writeDependencyCertification as writeLayerCertification } from "./dependency-certification.js";
7
+ export { dependencyLayerCertificationPath, legacyDependencyLayerCertificationPath } from "./dependency-certification.js";
8
+ import { digestManifestFiles, releaseFileIdentity, resolveWithin } from "./release.js";
9
+ import { PRODUCT_IDENTITY } from "../../product-identity.js";
10
+ const LAYER_IO_CONCURRENCY = 32;
11
+ export const DEPENDENCY_LAYER_SCHEMA = PRODUCT_IDENTITY.evidence.dependencyLayerSchema;
12
+ export const DEPENDENCY_LAYER_MANIFEST = "dependency-layer-manifest.json";
13
+ export const RUNTIME_PAYLOAD_INVENTORY = "dist/runtime-payload-inventory.json";
14
+ /** Consume topology-independent publication classifications, retaining unknown installed content. */
15
+ export async function selectPublishedDependencyRuntimePayload(packageRoot, paths) {
16
+ const inventoryPath = resolve(packageRoot, RUNTIME_PAYLOAD_INVENTORY);
17
+ const published = await readFile(inventoryPath, "utf8").then(source => JSON.parse(source)).catch(() => null);
18
+ if (published === null)
19
+ return await selectDependencyRuntimePayload(packageRoot, paths);
20
+ if (published.schema !== PRODUCT_IDENTITY.evidence.runtimePayloadSchema || !Array.isArray(published.paths)
21
+ || !Array.isArray(published.entryPoints) || !Array.isArray(published.declaredAssets) || !Array.isArray(published.classifications)
22
+ || !published.inventory || published.inventory.schema !== PRODUCT_IDENTITY.evidence.runtimePayloadSchema
23
+ || published.classifications.some(classification => !validPublishedClassification(classification))) {
24
+ throw new Error("published runtime payload inventory is invalid");
25
+ }
26
+ const classificationByKey = new Map();
27
+ for (const classification of published.classifications) {
28
+ const key = classificationKey(classification.packageName, classification.packageVersion, classification.packagePath);
29
+ const existing = classificationByKey.get(key);
30
+ if (existing && (existing.disposition !== classification.disposition || existing.reason !== classification.reason)) {
31
+ throw new Error("published runtime payload inventory contains conflicting classifications");
32
+ }
33
+ classificationByKey.set(key, classification);
34
+ }
35
+ const descriptors = await dependencyPackageDescriptors(packageRoot, paths);
36
+ const selected = [];
37
+ const exclusions = [];
38
+ let includedBytes = 0;
39
+ let excludedBytes = 0;
40
+ let uncertaintyRetainedFiles = 0;
41
+ await mapWithConcurrency([...paths].sort(), LAYER_IO_CONCURRENCY, async (path) => {
42
+ const descriptor = descriptorForPath(path, descriptors);
43
+ const packagePath = descriptor === null ? null : path.slice(descriptor.root.length + 1);
44
+ const classification = descriptor === null || packagePath === null
45
+ ? undefined
46
+ : classificationByKey.get(classificationKey(descriptor.name, descriptor.version, packagePath));
47
+ const bytes = (await lstat(resolveWithin(packageRoot, path))).size;
48
+ const intrinsicExclusion = /\.d\.(?:ts|mts|cts)$/.test(path) ? "type-declaration"
49
+ : /\.map$/.test(path) ? "source-map"
50
+ : null;
51
+ if (classification?.disposition === "exclude" || intrinsicExclusion !== null) {
52
+ exclusions.push({ path, reason: classification?.disposition === "exclude" ? classification.reason : intrinsicExclusion });
53
+ excludedBytes += bytes;
54
+ return;
55
+ }
56
+ selected.push(path);
57
+ includedBytes += bytes;
58
+ if (classification === undefined || !isKnownRuntimePath(path))
59
+ uncertaintyRetainedFiles += 1;
60
+ });
61
+ selected.sort();
62
+ exclusions.sort((left, right) => left.path.localeCompare(right.path));
63
+ return {
64
+ paths: selected,
65
+ inventory: {
66
+ schema: PRODUCT_IDENTITY.evidence.runtimePayloadSchema,
67
+ includedFiles: selected.length,
68
+ includedBytes,
69
+ excludedFiles: exclusions.length,
70
+ excludedBytes,
71
+ uncertaintyRetainedFiles,
72
+ exclusions,
73
+ },
74
+ };
75
+ }
76
+ /** Generate publication evidence from literal module reachability and declared runtime assets. */
77
+ export async function generateDependencyRuntimePayload(packageRoot, allPaths, productPaths) {
78
+ const available = new Set(allPaths);
79
+ const selected = new Set();
80
+ const queue = productPaths.filter(isJavaScriptModule);
81
+ for (const manifestPath of allPaths.filter(path => path.startsWith("node_modules/") && path.endsWith("/package.json"))) {
82
+ try {
83
+ const manifest = JSON.parse(await readFile(resolveWithin(packageRoot, manifestPath), "utf8"));
84
+ const packagePath = manifestPath.slice(0, -"/package.json".length);
85
+ const target = exportedTarget(manifest.exports, "")
86
+ ?? (typeof manifest.module === "string" ? manifest.module : typeof manifest.main === "string" ? manifest.main : "index.js");
87
+ const entry = availableModule(relativePath(packagePath, target), available);
88
+ if (entry !== null && !selected.has(entry)) {
89
+ selected.add(entry);
90
+ if (isJavaScriptModule(entry))
91
+ queue.push(entry);
92
+ }
93
+ }
94
+ catch { }
95
+ }
96
+ const visited = new Set();
97
+ while (queue.length > 0) {
98
+ const importer = queue.shift();
99
+ if (visited.has(importer))
100
+ continue;
101
+ visited.add(importer);
102
+ const source = await readFile(resolveWithin(packageRoot, importer), "utf8");
103
+ const specifiers = [...source.matchAll(/(?:\bimport\s*(?:[^"'`]*?\sfrom\s*)?|\bexport\s+[^"'`]*?\sfrom\s*|\bimport\s*\(|\brequire\s*\()\s*["'`]([^"'`]+)["'`]/g)]
104
+ .map(match => match[1])
105
+ .filter(specifier => !specifier.startsWith("node:"));
106
+ for (const specifier of specifiers) {
107
+ const resolved = await resolvePublishedSpecifier(packageRoot, importer, specifier, available);
108
+ if (resolved === null || !resolved.startsWith("node_modules/"))
109
+ continue;
110
+ if (!selected.has(resolved)) {
111
+ selected.add(resolved);
112
+ if (isJavaScriptModule(resolved))
113
+ queue.push(resolved);
114
+ }
115
+ }
116
+ if (importer.startsWith("node_modules/") && /\b(?:import|require)\s*\(\s*(?!["'`])/.test(source)) {
117
+ const prefix = dependencyPackagePrefix(importer);
118
+ for (const path of allPaths)
119
+ if (path.startsWith(`${prefix}/`))
120
+ selected.add(path);
121
+ }
122
+ }
123
+ for (const path of allPaths) {
124
+ if (!path.startsWith("node_modules/"))
125
+ continue;
126
+ if (path.endsWith("/package.json") || /(?:^|\/)LICENSE(?:\.|$)/i.test(path)
127
+ || /\.(?:json|node|wasm|css|html|png|jpg|jpeg|gif|svg|md)$/.test(path))
128
+ selected.add(path);
129
+ }
130
+ const conservative = await selectDependencyRuntimePayload(packageRoot, allPaths.filter(path => path.startsWith("node_modules/")));
131
+ const paths = conservative.paths.filter(path => selected.has(path)).sort();
132
+ const exclusions = [];
133
+ let includedBytes = 0;
134
+ let excludedBytes = 0;
135
+ let uncertaintyRetainedFiles = 0;
136
+ const conservativeReasons = new Map(conservative.inventory.exclusions.map(item => [item.path, item.reason]));
137
+ for (const path of allPaths.filter(path => path.startsWith("node_modules/")).sort()) {
138
+ const bytes = (await lstat(resolveWithin(packageRoot, path))).size;
139
+ if (paths.includes(path)) {
140
+ includedBytes += bytes;
141
+ if (!isJavaScriptModule(path) && !/\.(?:json|node|wasm|css|html|png|jpg|jpeg|gif|svg)$/.test(path))
142
+ uncertaintyRetainedFiles += 1;
143
+ }
144
+ else {
145
+ excludedBytes += bytes;
146
+ exclusions.push({ path, reason: conservativeReasons.get(path) ?? "unreachable-development" });
147
+ }
148
+ }
149
+ const inventory = {
150
+ schema: PRODUCT_IDENTITY.evidence.runtimePayloadSchema,
151
+ includedFiles: paths.length,
152
+ includedBytes,
153
+ excludedFiles: exclusions.length,
154
+ excludedBytes,
155
+ uncertaintyRetainedFiles,
156
+ exclusions,
157
+ };
158
+ return {
159
+ paths,
160
+ inventory,
161
+ classifications: await createPublishedClassifications(packageRoot, allPaths, new Set(paths), new Map(exclusions.map(item => [item.path, item.reason]))),
162
+ };
163
+ }
164
+ /** Conservatively omit only files Node never executes; uncertain assets remain selected. */
165
+ export async function selectDependencyRuntimePayload(packageRoot, paths) {
166
+ const included = [];
167
+ const exclusions = [];
168
+ let includedBytes = 0;
169
+ let excludedBytes = 0;
170
+ let uncertaintyRetainedFiles = 0;
171
+ await mapWithConcurrency([...paths].sort(), LAYER_IO_CONCURRENCY, async (path) => {
172
+ const metadata = await lstat(resolveWithin(packageRoot, path));
173
+ const reason = /\.d\.(?:ts|mts|cts)$/.test(path) ? "type-declaration"
174
+ : /\.map$/.test(path) ? "source-map"
175
+ : null;
176
+ if (reason !== null) {
177
+ exclusions.push({ path, reason });
178
+ excludedBytes += metadata.size;
179
+ return;
180
+ }
181
+ included.push(path);
182
+ includedBytes += metadata.size;
183
+ if (!/\.(?:js|mjs|cjs|json|node|wasm|css|html|png|jpg|jpeg|gif|svg)$/.test(path) && !/(?:^|\/)LICENSE(?:\.|$)/i.test(path)) {
184
+ uncertaintyRetainedFiles += 1;
185
+ }
186
+ });
187
+ exclusions.sort((left, right) => left.path.localeCompare(right.path));
188
+ included.sort();
189
+ return {
190
+ paths: included,
191
+ inventory: {
192
+ schema: PRODUCT_IDENTITY.evidence.runtimePayloadSchema,
193
+ includedFiles: included.length,
194
+ includedBytes,
195
+ excludedFiles: exclusions.length,
196
+ excludedBytes,
197
+ uncertaintyRetainedFiles,
198
+ exclusions,
199
+ },
200
+ };
201
+ }
202
+ /** Materialize or reuse an exact immutable dependency layer after one source-content pass. */
203
+ export async function materializeDependencyLayer(packageRoot, dataDir, paths, options) {
204
+ if (paths.length === 0)
205
+ return null;
206
+ const sourceRoot = await realpath(packageRoot);
207
+ const selected = [...paths].sort();
208
+ const content = await mapWithConcurrency(selected, LAYER_IO_CONCURRENCY, async (path) => {
209
+ const source = resolveWithin(sourceRoot, path);
210
+ const metadata = await lstat(source);
211
+ if (!metadata.isFile() || metadata.isSymbolicLink())
212
+ throw new Error(`dependency-layer input is not a regular file: ${path}`);
213
+ const cached = options.cachedFiles?.get(path);
214
+ const bytes = cached ?? await readFile(source);
215
+ if (!cached)
216
+ options.onOperation?.({ operation: "source-read", path, bytes: bytes.length });
217
+ return { path, bytes, mode: (metadata.mode & 0o111) !== 0 ? 0o500 : 0o400, identity: releaseFileIdentity(path, bytes, (metadata.mode & 0o111) !== 0) };
218
+ });
219
+ const files = content.map(item => item.identity);
220
+ const contentDigest = digestManifestFiles(files);
221
+ const identity = {
222
+ schema: DEPENDENCY_LAYER_SCHEMA,
223
+ layerId: `dependencies-${contentDigest.slice(0, 32)}`,
224
+ contentDigest,
225
+ files,
226
+ inventory: options.inventory,
227
+ };
228
+ const layersRoot = resolve(dataDir, "dependency-layers");
229
+ await mkdir(layersRoot, { recursive: true, mode: 0o700 });
230
+ const layerRoot = resolveWithin(layersRoot, identity.layerId);
231
+ if (await lstat(layerRoot).catch(() => null)) {
232
+ const reused = await reuseDependencyLayer(dataDir, identity);
233
+ for (const file of reused.files)
234
+ options.onOperation?.({ operation: "layer-reuse", path: file.path, bytes: file.bytes });
235
+ return { ...reused, reused: true };
236
+ }
237
+ const candidate = resolveWithin(layersRoot, `.candidate-${randomUUID()}`);
238
+ await mkdir(candidate, { mode: 0o700 });
239
+ try {
240
+ const directories = [...new Set(content.map(item => dirname(resolveWithin(candidate, item.path))))];
241
+ await mapWithConcurrency(directories, LAYER_IO_CONCURRENCY, async (directory) => await mkdir(directory, { recursive: true, mode: 0o700 }));
242
+ await mapWithConcurrency(content, LAYER_IO_CONCURRENCY, async (item) => {
243
+ const destination = resolveWithin(candidate, item.path);
244
+ if (options.writeCandidateFile)
245
+ await options.writeCandidateFile(destination, item.bytes, item.mode);
246
+ else {
247
+ await writeFile(destination, item.bytes, { flag: "wx", mode: item.mode });
248
+ await chmod(destination, item.mode);
249
+ }
250
+ options.onOperation?.({ operation: "layer-write", path: item.path, bytes: item.bytes.length });
251
+ });
252
+ await writeFile(resolve(candidate, DEPENDENCY_LAYER_MANIFEST), JSON.stringify(identity, null, 2), { flag: "wx", mode: 0o400 });
253
+ try {
254
+ await rename(candidate, layerRoot);
255
+ }
256
+ catch (error) {
257
+ if (!await lstat(layerRoot).catch(() => null))
258
+ throw error;
259
+ await rm(candidate, { recursive: true, force: true });
260
+ const winner = await reuseDependencyLayer(dataDir, identity);
261
+ for (const file of winner.files)
262
+ options.onOperation?.({ operation: "layer-reuse", path: file.path, bytes: file.bytes });
263
+ return { ...winner, reused: true };
264
+ }
265
+ await writeLayerCertification(dataDir, identity);
266
+ return { ...identity, layerRoot: await realpath(layerRoot), reused: false };
267
+ }
268
+ catch (error) {
269
+ await rm(candidate, { recursive: true, force: true });
270
+ throw error;
271
+ }
272
+ }
273
+ /** Read trusted layer certification and canonical metadata without rereading every payload byte. */
274
+ export async function readCertifiedDependencyLayer(dataDir, layerId, expected, options = {}) {
275
+ const layersRoot = await realpath(resolve(dataDir, "dependency-layers"));
276
+ const layerRoot = await realpath(resolveWithin(layersRoot, layerId));
277
+ assertDirectChild(layersRoot, layerRoot);
278
+ const metadata = await lstat(resolve(layersRoot, layerId));
279
+ if (!metadata.isDirectory() || metadata.isSymbolicLink())
280
+ throw new Error(`dependency layer is not a managed non-link directory: ${layerId}`);
281
+ const manifest = JSON.parse(await readFile(resolve(layerRoot, DEPENDENCY_LAYER_MANIFEST), "utf8"));
282
+ validateLayerManifest(manifest);
283
+ if (expected && (expected.layerId !== manifest.layerId || expected.contentDigest !== manifest.contentDigest)) {
284
+ throw new Error(`dependency layer identity mismatch: ${layerId}`);
285
+ }
286
+ if (manifest.layerId !== layerId)
287
+ throw new Error(`dependency layer identity mismatch: ${layerId}`);
288
+ await readDependencyCertification(dataDir, manifest, options);
289
+ return { ...manifest, layerRoot };
290
+ }
291
+ /** Fully verify a layer when certification is absent or explicit tamper evidence is required. */
292
+ export async function verifyDependencyLayer(dataDir, reference, onOperation) {
293
+ const layersRoot = await realpath(resolve(dataDir, "dependency-layers"));
294
+ const layerRoot = await realpath(resolveWithin(layersRoot, reference.layerId));
295
+ assertDirectChild(layersRoot, layerRoot);
296
+ const manifest = JSON.parse(await readFile(resolve(layerRoot, DEPENDENCY_LAYER_MANIFEST), "utf8"));
297
+ validateLayerManifest(manifest);
298
+ if (manifest.layerId !== reference.layerId || manifest.contentDigest !== reference.contentDigest)
299
+ throw new Error(`dependency layer reference mismatch: ${reference.layerId}`);
300
+ await mapWithConcurrency(manifest.files, LAYER_IO_CONCURRENCY, async (file) => {
301
+ const path = resolveWithin(layerRoot, file.path);
302
+ const metadata = await lstat(path);
303
+ if (!metadata.isFile() || metadata.isSymbolicLink() || metadata.size !== file.bytes)
304
+ throw new Error(`dependency layer file mismatch: ${file.path}`);
305
+ assertImmutableFileMode(metadata, path);
306
+ const bytes = await readFile(path);
307
+ onOperation?.({ operation: "verification-read", path: file.path, bytes: bytes.length });
308
+ const actual = releaseFileIdentity(file.path, bytes, file.executable);
309
+ if (actual.sha256 !== file.sha256)
310
+ throw new Error(`dependency layer file digest mismatch: ${file.path}`);
311
+ });
312
+ if (digestManifestFiles(manifest.files) !== manifest.contentDigest)
313
+ throw new Error(`dependency layer content digest mismatch: ${manifest.layerId}`);
314
+ await writeLayerCertification(dataDir, manifest);
315
+ return { ...manifest, layerRoot };
316
+ }
317
+ export function dependencyReference(layer) {
318
+ return { layerId: layer.layerId, contentDigest: layer.contentDigest, binding: "node_modules" };
319
+ }
320
+ async function reuseDependencyLayer(dataDir, identity) {
321
+ try {
322
+ return await readCertifiedDependencyLayer(dataDir, identity.layerId, identity);
323
+ }
324
+ catch (error) {
325
+ const verified = await verifyDependencyLayer(dataDir, dependencyReference({ ...identity, layerRoot: resolve(dataDir, "dependency-layers", identity.layerId), reused: true }));
326
+ if (verified.layerId !== identity.layerId || verified.contentDigest !== identity.contentDigest)
327
+ throw error;
328
+ return verified;
329
+ }
330
+ }
331
+ function validateLayerManifest(value) {
332
+ if (value.schema !== DEPENDENCY_LAYER_SCHEMA || !/^dependencies-[a-f0-9]{32}$/.test(value.layerId)
333
+ || !/^[a-f0-9]{64}$/.test(value.contentDigest) || !Array.isArray(value.files) || value.files.length === 0
334
+ || value.files.some(file => !file.path.startsWith("node_modules/") || file.path.includes("..") || !/^[a-f0-9]{64}$/.test(file.sha256))) {
335
+ throw new Error("dependency layer manifest is invalid");
336
+ }
337
+ if (digestManifestFiles(value.files) !== value.contentDigest || value.layerId !== `dependencies-${value.contentDigest.slice(0, 32)}`) {
338
+ throw new Error(`dependency layer manifest identity is invalid: ${value.layerId}`);
339
+ }
340
+ }
341
+ async function resolvePublishedSpecifier(packageRoot, importer, specifier, available) {
342
+ if (specifier.startsWith("."))
343
+ return availableModule(relativePath(dirname(importer), specifier), available);
344
+ if (specifier.startsWith("/") || specifier.startsWith("#"))
345
+ return null;
346
+ const parts = specifier.split("/");
347
+ const packageName = parts[0].startsWith("@") ? parts.slice(0, 2).join("/") : parts[0];
348
+ const subpath = parts.slice(packageName.startsWith("@") ? 2 : 1).join("/");
349
+ const suffix = `node_modules/${packageName}/package.json`;
350
+ const manifests = [...available].filter(path => path.endsWith(suffix));
351
+ manifests.sort((left, right) => commonPrefixLength(importer, right) - commonPrefixLength(importer, left));
352
+ for (const manifestPath of manifests) {
353
+ try {
354
+ const manifest = JSON.parse(await readFile(resolveWithin(packageRoot, manifestPath), "utf8"));
355
+ const packagePath = manifestPath.slice(0, -"/package.json".length);
356
+ const target = exportedTarget(manifest.exports, subpath) ?? (subpath.length > 0 ? subpath
357
+ : typeof manifest.module === "string" ? manifest.module
358
+ : typeof manifest.main === "string" ? manifest.main
359
+ : "index.js");
360
+ const resolved = availableModule(relativePath(packagePath, target), available);
361
+ if (resolved !== null)
362
+ return resolved;
363
+ }
364
+ catch { }
365
+ }
366
+ return null;
367
+ }
368
+ function exportedTarget(exportsValue, subpath) {
369
+ const select = (value) => {
370
+ if (typeof value === "string")
371
+ return value;
372
+ if (!value || typeof value !== "object" || Array.isArray(value))
373
+ return null;
374
+ const record = value;
375
+ return select(record.import) ?? select(record.node) ?? select(record.default);
376
+ };
377
+ if (typeof exportsValue === "string")
378
+ return subpath.length === 0 ? exportsValue : null;
379
+ if (!exportsValue || typeof exportsValue !== "object" || Array.isArray(exportsValue))
380
+ return null;
381
+ const record = exportsValue;
382
+ return select(record[subpath.length === 0 ? "." : `./${subpath}`]) ?? (subpath.length === 0 ? select(exportsValue) : null);
383
+ }
384
+ function relativePath(root, target) {
385
+ return posix.normalize(posix.join(root.split(sep).join("/"), target));
386
+ }
387
+ function availableModule(path, available) {
388
+ const normalized = path.replace(/^\.\//, "");
389
+ for (const candidate of [normalized, `${normalized}.js`, `${normalized}.mjs`, `${normalized}.cjs`, `${normalized}.json`, `${normalized}/index.js`]) {
390
+ if (available.has(candidate))
391
+ return candidate;
392
+ }
393
+ return null;
394
+ }
395
+ function commonPrefixLength(left, right) {
396
+ const leftParts = left.split("/");
397
+ const rightParts = right.split("/");
398
+ let index = 0;
399
+ while (leftParts[index] === rightParts[index])
400
+ index += 1;
401
+ return index;
402
+ }
403
+ function dependencyPackagePrefix(path) {
404
+ const parts = path.split("/");
405
+ const nodeModules = parts.lastIndexOf("node_modules");
406
+ const packageParts = parts[nodeModules + 1]?.startsWith("@") ? 2 : 1;
407
+ return parts.slice(0, nodeModules + 1 + packageParts).join("/");
408
+ }
409
+ async function dependencyPackageDescriptors(packageRoot, paths) {
410
+ const descriptors = [];
411
+ for (const path of paths.filter(path => path.endsWith("/package.json")).sort()) {
412
+ try {
413
+ const manifest = JSON.parse(await readFile(resolveWithin(packageRoot, path), "utf8"));
414
+ if (typeof manifest.name !== "string" || manifest.name.length === 0 || typeof manifest.version !== "string" || manifest.version.length === 0)
415
+ continue;
416
+ descriptors.push({ root: path.slice(0, -"/package.json".length), name: manifest.name, version: manifest.version });
417
+ }
418
+ catch { }
419
+ }
420
+ return descriptors.sort((left, right) => right.root.length - left.root.length || left.root.localeCompare(right.root));
421
+ }
422
+ function descriptorForPath(path, descriptors) {
423
+ return descriptors.find(descriptor => path.startsWith(`${descriptor.root}/`)) ?? null;
424
+ }
425
+ async function createPublishedClassifications(packageRoot, paths, included, exclusionReasons) {
426
+ const descriptors = await dependencyPackageDescriptors(packageRoot, paths);
427
+ const classifications = new Map();
428
+ for (const path of paths.filter(path => path.startsWith("node_modules/")).sort()) {
429
+ const descriptor = descriptorForPath(path, descriptors);
430
+ if (descriptor === null)
431
+ continue;
432
+ const packagePath = path.slice(descriptor.root.length + 1);
433
+ const classification = included.has(path)
434
+ ? { packageName: descriptor.name, packageVersion: descriptor.version, packagePath, disposition: "include" }
435
+ : { packageName: descriptor.name, packageVersion: descriptor.version, packagePath, disposition: "exclude", reason: exclusionReasons.get(path) ?? "unreachable-development" };
436
+ const key = classificationKey(classification.packageName, classification.packageVersion, classification.packagePath);
437
+ const existing = classifications.get(key);
438
+ if (existing?.disposition === "include")
439
+ continue;
440
+ if (classification.disposition === "include" || existing === undefined)
441
+ classifications.set(key, classification);
442
+ }
443
+ return [...classifications.values()].sort((left, right) => classificationKey(left.packageName, left.packageVersion, left.packagePath)
444
+ .localeCompare(classificationKey(right.packageName, right.packageVersion, right.packagePath)));
445
+ }
446
+ function validPublishedClassification(value) {
447
+ const validReason = value.reason === "type-declaration" || value.reason === "source-map" || value.reason === "unreachable-development";
448
+ return typeof value.packageName === "string" && value.packageName.length > 0
449
+ && typeof value.packageVersion === "string" && value.packageVersion.length > 0
450
+ && typeof value.packagePath === "string" && value.packagePath.length > 0
451
+ && !value.packagePath.startsWith("/") && !value.packagePath.includes("\\")
452
+ && !value.packagePath.split("/").includes("..")
453
+ && (value.disposition === "include" ? value.reason === undefined : value.disposition === "exclude" && validReason);
454
+ }
455
+ function classificationKey(packageName, packageVersion, packagePath) {
456
+ return `${packageName}\0${packageVersion}\0${packagePath}`;
457
+ }
458
+ function isKnownRuntimePath(path) {
459
+ return /\.(?:js|mjs|cjs|json|node|wasm|css|html|png|jpg|jpeg|gif|svg)$/.test(path) || /(?:^|\/)LICENSE(?:\.|$)/i.test(path);
460
+ }
461
+ function isJavaScriptModule(path) { return /\.(?:js|mjs|cjs)$/.test(path); }
462
+ function assertDirectChild(parent, child) {
463
+ const path = relative(parent, child);
464
+ if (path.length === 0 || path === ".." || path.startsWith(`..${sep}`) || path.includes(sep))
465
+ throw new Error(`dependency layer escapes managed storage: ${child}`);
466
+ }
@@ -0,0 +1,24 @@
1
+ import type { OwnershipProbe } from "./cohort-selection.js";
2
+ import type { SupervisorEndpointMetadata } from "./cohort-state.js";
3
+ import type { CohortEndpointPaths, ProductPaths } from "../lifecycle/index.js";
4
+ export interface RecordedEndpoint {
5
+ readonly metadata: SupervisorEndpointMetadata;
6
+ readonly paths: CohortEndpointPaths;
7
+ }
8
+ /**
9
+ * Every endpoint recorded under this runtime directory: one per cohort, plus the single
10
+ * endpoint published by releases that predate cohort-scoped identity. More than one can be
11
+ * live at a time, and each is validated on its own identity rather than by being the only one.
12
+ */
13
+ export declare function listRecordedEndpoints(paths: ProductPaths): Promise<readonly RecordedEndpoint[]>;
14
+ /**
15
+ * Removes the records of cohorts whose processes are gone. A record left by a cohort that
16
+ * exited without cleaning up is not evidence of ownership, and a later launch should not have
17
+ * to reason about it. Returns the release ids whose records were removed.
18
+ */
19
+ export declare function sweepDeadEndpoints(paths: ProductPaths): Promise<readonly string[]>;
20
+ /** The releases that an identity-verified live cohort runs from and that must be retained. */
21
+ export declare function liveReleaseIds(paths: ProductPaths): Promise<readonly string[]>;
22
+ export declare function readEndpointMetadata(path: string): Promise<SupervisorEndpointMetadata | null>;
23
+ export declare function probeOwnership(metadata: SupervisorEndpointMetadata): Promise<OwnershipProbe>;
24
+ export declare function removeEndpointArtifacts(metadataPath: string, endpoint: string): Promise<void>;
@@ -0,0 +1,134 @@
1
+ import { readdir, readFile, rm } from "node:fs/promises";
2
+ import { connect } from "node:net";
3
+ import { platform } from "node:os";
4
+ import { resolve } from "node:path";
5
+ import { PRODUCT_IDENTITY } from "../../product-identity.js";
6
+ import { encodeFrame, LineFrameDecoder } from "../protocol/index.js";
7
+ import { processIsAlive } from "./process-cleanup.js";
8
+ /**
9
+ * Every endpoint recorded under this runtime directory: one per cohort, plus the single
10
+ * endpoint published by releases that predate cohort-scoped identity. More than one can be
11
+ * live at a time, and each is validated on its own identity rather than by being the only one.
12
+ */
13
+ export async function listRecordedEndpoints(paths) {
14
+ const recorded = [];
15
+ const legacy = await readEndpointMetadata(paths.endpointMetadataPath);
16
+ if (legacy) {
17
+ recorded.push({ metadata: legacy, paths: { endpoint: paths.endpoint, endpointMetadataPath: paths.endpointMetadataPath } });
18
+ }
19
+ const names = await readdir(paths.endpointsDir).catch(() => []);
20
+ for (const name of names) {
21
+ if (!name.endsWith(".json"))
22
+ continue;
23
+ const endpointMetadataPath = resolve(paths.endpointsDir, name);
24
+ const metadata = await readEndpointMetadata(endpointMetadataPath);
25
+ if (metadata)
26
+ recorded.push({ metadata, paths: { endpoint: metadata.endpoint, endpointMetadataPath } });
27
+ }
28
+ return recorded;
29
+ }
30
+ /**
31
+ * Removes the records of cohorts whose processes are gone. A record left by a cohort that
32
+ * exited without cleaning up is not evidence of ownership, and a later launch should not have
33
+ * to reason about it. Returns the release ids whose records were removed.
34
+ */
35
+ export async function sweepDeadEndpoints(paths) {
36
+ const swept = [];
37
+ for (const recorded of await listRecordedEndpoints(paths)) {
38
+ if (processIsAlive(recorded.metadata.pid))
39
+ continue;
40
+ await removeEndpointArtifacts(recorded.paths.endpointMetadataPath, recorded.paths.endpoint);
41
+ swept.push(recorded.metadata.releaseId);
42
+ }
43
+ return swept;
44
+ }
45
+ /** The releases that an identity-verified live cohort runs from and that must be retained. */
46
+ export async function liveReleaseIds(paths) {
47
+ const recorded = await listRecordedEndpoints(paths);
48
+ const ownership = await Promise.all(recorded.map(async (endpoint) => ({
49
+ releaseId: endpoint.metadata.releaseId,
50
+ probe: await probeOwnership(endpoint.metadata),
51
+ })));
52
+ return [...new Set(ownership.filter(item => item.probe === "live-verified").map(item => item.releaseId))].sort();
53
+ }
54
+ export async function readEndpointMetadata(path) {
55
+ try {
56
+ const value = JSON.parse(await readFile(path, "utf8"));
57
+ const ownership = value.ownership;
58
+ const liveInstanceIds = Array.isArray(ownership?.liveInstanceIds)
59
+ ? ownership.liveInstanceIds
60
+ : Array.isArray(ownership?.liveGenerationIds) ? ownership.liveGenerationIds : null;
61
+ const nonResumableInstanceIds = Array.isArray(ownership?.nonResumableInstanceIds)
62
+ ? ownership.nonResumableInstanceIds
63
+ : Array.isArray(ownership?.nonResumableGenerationIds) ? ownership.nonResumableGenerationIds : null;
64
+ const uncertainInstanceIds = Array.isArray(ownership?.uncertainInstanceIds) ? ownership.uncertainInstanceIds : [];
65
+ if (!value || value.schema !== PRODUCT_IDENTITY.protocol.supervisorSchema || typeof value.supervisorId !== "string" || typeof value.endpoint !== "string" || !Number.isSafeInteger(value.pid)
66
+ || typeof value.pidStartIdentity !== "string" || typeof value.bootNonce !== "string" || typeof value.releaseId !== "string"
67
+ || typeof value.releaseRoot !== "string" || typeof value.contentDigest !== "string" || !ownership
68
+ || !isStringArray(liveInstanceIds) || !isStringArray(nonResumableInstanceIds) || !isStringArray(uncertainInstanceIds)) {
69
+ return null;
70
+ }
71
+ return {
72
+ ...value,
73
+ ownership: {
74
+ ...ownership,
75
+ liveInstanceIds,
76
+ nonResumableInstanceIds,
77
+ uncertainInstanceIds,
78
+ },
79
+ };
80
+ }
81
+ catch {
82
+ return null;
83
+ }
84
+ }
85
+ export async function probeOwnership(metadata) {
86
+ if (!processIsAlive(metadata.pid))
87
+ return "dead";
88
+ const identity = await requestIdentity(metadata.endpoint, 500);
89
+ if (!identity)
90
+ return "unresponsive";
91
+ return identity.supervisorId === metadata.supervisorId
92
+ && identity.bootNonce === metadata.bootNonce
93
+ && identity.pidStartIdentity === metadata.pidStartIdentity
94
+ && identity.releaseId === metadata.releaseId
95
+ ? "live-verified"
96
+ : "identity-mismatch";
97
+ }
98
+ async function requestIdentity(endpoint, timeoutMs) {
99
+ return await new Promise(resolvePromise => {
100
+ const socket = connect(endpoint);
101
+ const decoder = new LineFrameDecoder();
102
+ let settled = false;
103
+ const finish = (value) => {
104
+ if (settled)
105
+ return;
106
+ settled = true;
107
+ socket.destroy();
108
+ resolvePromise(value);
109
+ };
110
+ socket.once("error", () => finish(null));
111
+ socket.once("connect", () => socket.write(encodeFrame({ type: "identity-probe" })));
112
+ socket.on("data", chunk => {
113
+ try {
114
+ const message = decoder.push(chunk)[0];
115
+ if (message?.type === "identity" && typeof message.supervisorId === "string" && typeof message.bootNonce === "string"
116
+ && typeof message.pidStartIdentity === "string" && typeof message.releaseId === "string") {
117
+ finish({ supervisorId: message.supervisorId, bootNonce: message.bootNonce, pidStartIdentity: message.pidStartIdentity, releaseId: message.releaseId });
118
+ }
119
+ }
120
+ catch {
121
+ finish(null);
122
+ }
123
+ });
124
+ setTimeout(() => finish(null), timeoutMs).unref();
125
+ });
126
+ }
127
+ function isStringArray(value) {
128
+ return Array.isArray(value) && value.every(item => typeof item === "string" && item.length > 0);
129
+ }
130
+ export async function removeEndpointArtifacts(metadataPath, endpoint) {
131
+ await rm(metadataPath, { force: true });
132
+ if (platform() !== "win32")
133
+ await rm(endpoint, { force: true });
134
+ }
@@ -0,0 +1,6 @@
1
+ import type { Stats } from "node:fs";
2
+ export type ImmutablePlatformPolicy = "windows-readonly-content-v1" | "posix-readonly-content-v1";
3
+ /** Name the platform protection established while complete payload verification owns every file. */
4
+ export declare function immutablePlatformPolicy(platform?: NodeJS.Platform): ImmutablePlatformPolicy | null;
5
+ /** Refuse certification when a payload file is writable after immutable materialization. */
6
+ export declare function assertImmutableFileMode(metadata: Pick<Stats, "mode">, path: string): void;
@@ -0,0 +1,13 @@
1
+ /** Name the platform protection established while complete payload verification owns every file. */
2
+ export function immutablePlatformPolicy(platform = process.platform) {
3
+ if (platform === "win32")
4
+ return "windows-readonly-content-v1";
5
+ if (platform === "linux" || platform === "darwin")
6
+ return "posix-readonly-content-v1";
7
+ return null;
8
+ }
9
+ /** Refuse certification when a payload file is writable after immutable materialization. */
10
+ export function assertImmutableFileMode(metadata, path) {
11
+ if ((metadata.mode & 0o222) !== 0)
12
+ throw new Error(`immutable payload file is writable: ${path}`);
13
+ }