@timurproko/a1 0.1.8-dev.ece8cef → 0.2.1-dev.590

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 (922) 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-dialog.d.ts +2 -0
  138. package/dist/features/owned-ui/project-trust-dialog.js +55 -0
  139. package/dist/features/owned-ui/project-trust-prompt.d.ts +23 -0
  140. package/dist/features/owned-ui/project-trust-prompt.js +149 -0
  141. package/dist/features/owned-ui/reference-routes.d.ts +6 -0
  142. package/dist/features/owned-ui/reference-routes.js +6 -0
  143. package/dist/features/owned-ui/reference-screen-app.d.ts +43 -0
  144. package/dist/features/owned-ui/reference-screen-app.js +279 -0
  145. package/dist/features/owned-ui/run.d.ts +17 -0
  146. package/dist/features/owned-ui/run.js +64 -0
  147. package/dist/features/owned-ui/session-fork-prompt.d.ts +8 -0
  148. package/dist/features/owned-ui/session-fork-prompt.js +34 -0
  149. package/dist/features/owned-ui/settings-app.d.ts +21 -0
  150. package/dist/features/owned-ui/settings-app.js +851 -0
  151. package/dist/features/owned-ui/settings-route.d.ts +2 -0
  152. package/dist/features/owned-ui/settings-route.js +2 -0
  153. package/dist/features/prompt-history/image-sidecar.d.ts +32 -0
  154. package/dist/features/prompt-history/image-sidecar.js +130 -0
  155. package/dist/features/prompt-history/index.d.ts +4 -0
  156. package/dist/features/prompt-history/index.js +3 -0
  157. package/dist/features/prompt-history/paths.d.ts +5 -0
  158. package/dist/features/prompt-history/paths.js +17 -0
  159. package/dist/features/prompt-history/service.d.ts +54 -0
  160. package/dist/features/prompt-history/service.js +425 -0
  161. package/dist/features/prompt-history/store.d.ts +16 -0
  162. package/dist/features/prompt-history/store.js +219 -0
  163. package/dist/features/prompt-history/worker.d.ts +9 -0
  164. package/dist/features/prompt-history/worker.js +45 -0
  165. package/dist/features/prompt-suggestions/diagnostics.d.ts +18 -0
  166. package/dist/features/prompt-suggestions/diagnostics.js +82 -0
  167. package/dist/features/prompt-suggestions/index.d.ts +2 -0
  168. package/dist/features/prompt-suggestions/index.js +1 -0
  169. package/dist/foundation/launch-context/index.d.ts +59 -0
  170. package/dist/foundation/launch-context/index.js +136 -0
  171. package/dist/foundation/launch-guardian/index.d.ts +2 -0
  172. package/dist/foundation/launch-guardian/index.js +1 -0
  173. package/dist/foundation/launch-guardian/main.d.ts +33 -0
  174. package/dist/foundation/launch-guardian/main.js +179 -0
  175. package/dist/foundation/lifecycle/commands.js +1 -0
  176. package/dist/foundation/lifecycle/index.d.ts +13 -0
  177. package/dist/foundation/lifecycle/index.js +6 -0
  178. package/dist/foundation/lifecycle/model.d.ts +64 -0
  179. package/dist/foundation/lifecycle/model.js +40 -0
  180. package/dist/foundation/lifecycle/paths.d.ts +30 -0
  181. package/dist/foundation/lifecycle/paths.js +70 -0
  182. package/dist/foundation/lifecycle/session-repository-context.d.ts +18 -0
  183. package/dist/foundation/lifecycle/session-repository-context.js +173 -0
  184. package/dist/foundation/lifecycle/session-selection.d.ts +9 -0
  185. package/dist/foundation/lifecycle/session-selection.js +39 -0
  186. package/dist/foundation/lifecycle/supervisor-startup.d.ts +30 -0
  187. package/dist/foundation/lifecycle/supervisor-startup.js +106 -0
  188. package/dist/foundation/process-containment/darwin-process-inspector.d.ts +5 -0
  189. package/dist/foundation/process-containment/darwin-process-inspector.js +7 -0
  190. package/dist/foundation/process-containment/index.d.ts +8 -0
  191. package/dist/foundation/process-containment/index.js +6 -0
  192. package/dist/foundation/process-containment/linux-process-inspector.d.ts +7 -0
  193. package/dist/foundation/process-containment/linux-process-inspector.js +27 -0
  194. package/dist/foundation/process-containment/native-guardian-containment.d.ts +17 -0
  195. package/dist/foundation/process-containment/native-guardian-containment.js +140 -0
  196. package/dist/foundation/process-containment/windows-process-inspector.d.ts +19 -0
  197. package/dist/foundation/process-containment/windows-process-inspector.js +56 -0
  198. package/dist/foundation/protocol/client.d.ts +18 -0
  199. package/dist/foundation/protocol/client.js +130 -0
  200. package/dist/foundation/protocol/index.d.ts +3 -0
  201. package/dist/foundation/protocol/index.js +2 -0
  202. package/dist/foundation/protocol/messages.d.ts +90 -0
  203. package/dist/foundation/protocol/messages.js +100 -0
  204. package/dist/foundation/release/bootstrap.d.ts +51 -0
  205. package/dist/foundation/release/bootstrap.js +470 -0
  206. package/dist/foundation/release/cohort-state.d.ts +159 -0
  207. package/dist/foundation/release/cohort-state.js +507 -0
  208. package/dist/foundation/release/dependency-certification-retention.d.ts +7 -0
  209. package/dist/foundation/release/dependency-certification-retention.js +88 -0
  210. package/dist/foundation/release/dependency-certification.d.ts +24 -0
  211. package/dist/foundation/release/dependency-certification.js +266 -0
  212. package/dist/foundation/release/dependency-layer.d.ts +78 -0
  213. package/dist/foundation/release/dependency-layer.js +466 -0
  214. package/dist/foundation/release/endpoints.d.ts +24 -0
  215. package/dist/foundation/release/endpoints.js +134 -0
  216. package/dist/foundation/release/immutable-platform.d.ts +6 -0
  217. package/dist/foundation/release/immutable-platform.js +13 -0
  218. package/dist/foundation/release/index.d.ts +33 -0
  219. package/dist/foundation/release/index.js +18 -0
  220. package/dist/foundation/release/ordinary-launch-selection.d.ts +14 -0
  221. package/dist/foundation/release/ordinary-launch-selection.js +15 -0
  222. package/dist/foundation/release/release-gc.d.ts +71 -0
  223. package/dist/foundation/release/release-gc.js +764 -0
  224. package/dist/foundation/release/release-store.d.ts +49 -0
  225. package/dist/foundation/release/release-store.js +235 -0
  226. package/dist/foundation/release/release.d.ts +43 -0
  227. package/dist/foundation/release/release.js +215 -0
  228. package/dist/foundation/release/restart-certification.d.ts +68 -0
  229. package/dist/foundation/release/restart-certification.js +227 -0
  230. package/dist/foundation/release/types.d.ts +11 -0
  231. package/dist/foundation/release/types.js +1 -0
  232. package/dist/foundation/release/update-activation.d.ts +72 -0
  233. package/dist/foundation/release/update-activation.js +204 -0
  234. package/dist/foundation/release/update-launch.d.ts +6 -0
  235. package/dist/foundation/release/update-launch.js +17 -0
  236. package/dist/foundation/release/update-recovery.d.ts +82 -0
  237. package/dist/foundation/release/update-recovery.js +386 -0
  238. package/dist/foundation/release/update-transaction.d.ts +42 -0
  239. package/dist/foundation/release/update-transaction.js +101 -0
  240. package/dist/foundation/release/update.d.ts +142 -0
  241. package/dist/foundation/release/update.js +773 -0
  242. package/dist/foundation/release/warmup.d.ts +3 -0
  243. package/dist/foundation/release/warmup.js +47 -0
  244. package/dist/foundation/startup/index.d.ts +4 -0
  245. package/dist/foundation/startup/index.js +2 -0
  246. package/dist/foundation/startup/startup-budget.d.ts +46 -0
  247. package/dist/foundation/startup/startup-budget.js +42 -0
  248. package/dist/foundation/startup/startup-descriptor.js +34 -0
  249. package/dist/foundation/startup/startup-runtime.d.ts +27 -0
  250. package/dist/foundation/startup/startup-runtime.js +128 -0
  251. package/dist/foundation/storage/control-store.d.ts +18 -0
  252. package/dist/foundation/storage/control-store.js +342 -0
  253. package/dist/foundation/storage/index.d.ts +1 -0
  254. package/dist/foundation/storage/index.js +1 -0
  255. package/dist/foundation/supervision/index.d.ts +3 -0
  256. package/dist/foundation/supervision/index.js +3 -0
  257. package/dist/foundation/supervision/main.d.ts +1 -0
  258. package/dist/foundation/supervision/main.js +84 -0
  259. package/dist/foundation/supervision/paths.d.ts +1 -0
  260. package/dist/foundation/supervision/paths.js +1 -0
  261. package/dist/foundation/supervision/server.d.ts +46 -0
  262. package/dist/foundation/supervision/server.js +584 -0
  263. package/dist/foundation/terminal-cleanup/fatal-exit.d.ts +12 -0
  264. package/dist/foundation/terminal-cleanup/fatal-exit.js +87 -0
  265. package/dist/foundation/terminal-cleanup/index.d.ts +3 -0
  266. package/dist/foundation/terminal-cleanup/index.js +2 -0
  267. package/dist/foundation/terminal-cleanup/terminal-reset.d.ts +4 -0
  268. package/dist/foundation/terminal-cleanup/terminal-reset.js +40 -0
  269. package/dist/integrations/pi/components/components.d.ts +4 -0
  270. package/dist/integrations/pi/components/components.js +64 -0
  271. package/dist/integrations/pi/components/conformance.d.ts +18 -0
  272. package/dist/integrations/pi/components/conformance.js +70 -0
  273. package/dist/integrations/pi/components/editor-interaction.d.ts +38 -0
  274. package/dist/integrations/pi/components/editor-interaction.js +1 -0
  275. package/dist/integrations/pi/components/history-editor-loader.d.ts +5 -0
  276. package/dist/integrations/pi/components/history-editor-loader.js +5 -0
  277. package/dist/integrations/pi/components/index.d.ts +26 -0
  278. package/dist/integrations/pi/components/index.js +16 -0
  279. package/dist/integrations/pi/components/modal-frame.d.ts +41 -0
  280. package/dist/integrations/pi/components/modal-frame.js +110 -0
  281. package/dist/integrations/pi/components/models-dialog.d.ts +55 -0
  282. package/dist/integrations/pi/components/models-dialog.js +403 -0
  283. package/dist/integrations/pi/components/owned-editor-ux.d.ts +74 -0
  284. package/dist/integrations/pi/components/owned-editor-ux.js +1094 -0
  285. package/dist/integrations/pi/components/path-word-ranges.d.ts +2 -0
  286. package/dist/integrations/pi/components/path-word-ranges.js +37 -0
  287. package/dist/integrations/pi/components/prompt-input-port.d.ts +18 -0
  288. package/dist/integrations/pi/components/prompt-input-port.js +1 -0
  289. package/dist/integrations/pi/components/resources/builtin-themes.d.ts +167 -0
  290. package/dist/integrations/pi/components/resources/builtin-themes.js +168 -0
  291. package/dist/integrations/pi/components/shell-components.d.ts +7 -0
  292. package/dist/integrations/pi/components/shell-components.js +7 -0
  293. package/dist/integrations/pi/components/shell-editor-autocomplete.d.ts +23 -0
  294. package/dist/integrations/pi/components/shell-editor-autocomplete.js +357 -0
  295. package/dist/integrations/pi/components/shell-extension-ui.d.ts +35 -0
  296. package/dist/integrations/pi/components/shell-extension-ui.js +282 -0
  297. package/dist/integrations/pi/components/shell-footer-status.d.ts +8 -0
  298. package/dist/integrations/pi/components/shell-footer-status.js +287 -0
  299. package/dist/integrations/pi/components/shell-hotkey-sections.d.ts +7 -0
  300. package/dist/integrations/pi/components/shell-hotkey-sections.js +29 -0
  301. package/dist/integrations/pi/components/shell-presenters-info.d.ts +73 -0
  302. package/dist/integrations/pi/components/shell-presenters-info.js +188 -0
  303. package/dist/integrations/pi/components/shell-presenters-transcript.d.ts +29 -0
  304. package/dist/integrations/pi/components/shell-presenters-transcript.js +435 -0
  305. package/dist/integrations/pi/components/shell-selectors-dialogs.d.ts +134 -0
  306. package/dist/integrations/pi/components/shell-selectors-dialogs.js +286 -0
  307. package/dist/integrations/pi/components/shell-shared-facade.d.ts +233 -0
  308. package/dist/integrations/pi/components/shell-shared-facade.js +92 -0
  309. package/dist/integrations/pi/components/skills-command.d.ts +49 -0
  310. package/dist/integrations/pi/components/skills-command.js +119 -0
  311. package/dist/integrations/pi/components/skills-dialog.d.ts +9 -0
  312. package/dist/integrations/pi/components/skills-dialog.js +128 -0
  313. package/dist/integrations/pi/components/submitted-prompt-adapter.d.ts +17 -0
  314. package/dist/integrations/pi/components/submitted-prompt-adapter.js +52 -0
  315. package/dist/integrations/pi/components/theme.d.ts +5 -0
  316. package/dist/integrations/pi/components/theme.js +11 -0
  317. package/dist/integrations/pi/components/thinking-selector-dialog.d.ts +8 -0
  318. package/dist/integrations/pi/components/thinking-selector-dialog.js +22 -0
  319. package/dist/integrations/pi/components/tool-image-presentation.d.ts +21 -0
  320. package/dist/integrations/pi/components/tool-image-presentation.js +83 -0
  321. package/dist/integrations/pi/components/tool-result-adapter.d.ts +6 -0
  322. package/dist/integrations/pi/components/tool-result-adapter.js +27 -0
  323. package/dist/integrations/pi/components/transcript-image-resolver.d.ts +7 -0
  324. package/dist/integrations/pi/components/transcript-image-resolver.js +19 -0
  325. package/dist/integrations/pi/components/upstream/adjacent/core/keybindings.d.ts +445 -0
  326. package/dist/integrations/pi/components/upstream/adjacent/core/keybindings.js +371 -0
  327. package/dist/integrations/pi/components/upstream/assets/earendil-image.json +12 -0
  328. package/dist/integrations/pi/components/upstream/components/countdown-timer.d.ts +13 -0
  329. package/dist/integrations/pi/components/upstream/components/daxnuts.d.ts +29 -0
  330. package/dist/integrations/pi/components/upstream/components/daxnuts.js +146 -0
  331. package/dist/integrations/pi/components/upstream/components/earendil-announcement.d.ts +4 -0
  332. package/dist/integrations/pi/components/upstream/components/earendil-announcement.js +48 -0
  333. package/dist/integrations/pi/components/upstream/components/extension-editor.d.ts +22 -0
  334. package/dist/integrations/pi/components/upstream/components/extension-editor.js +89 -0
  335. package/dist/integrations/pi/components/upstream/components/extension-input.d.ts +17 -0
  336. package/dist/integrations/pi/components/upstream/components/extension-input.js +73 -0
  337. package/dist/integrations/pi/components/upstream/components/extension-selector.d.ts +15 -0
  338. package/dist/integrations/pi/components/upstream/components/extension-selector.js +93 -0
  339. package/dist/integrations/pi/components/upstream/components/mermaid.js +81 -0
  340. package/dist/integrations/pi/components/upstream/components/owned-editor.d.ts +52 -0
  341. package/dist/integrations/pi/components/upstream/components/owned-editor.js +222 -0
  342. package/dist/integrations/pi/components/upstream/components/scoped-models-selector.d.ts +60 -0
  343. package/dist/integrations/pi/components/upstream/components/scoped-models-selector.js +347 -0
  344. package/dist/integrations/pi/components/upstream/components/session-footer.d.ts +12 -0
  345. package/dist/integrations/pi/components/upstream/components/session-footer.js +150 -0
  346. package/dist/integrations/pi/components/upstream/components/session-selector-search.js +161 -0
  347. package/dist/integrations/pi/components/upstream/components/session-selector.d.ts +97 -0
  348. package/dist/integrations/pi/components/upstream/components/session-selector.js +935 -0
  349. package/dist/integrations/pi/components/upstream/components/skill-invocation-message.d.ts +21 -0
  350. package/dist/integrations/pi/components/upstream/components/skill-invocation-message.js +54 -0
  351. package/dist/integrations/pi/components/upstream/components/status-indicator.d.ts +35 -0
  352. package/dist/integrations/pi/components/upstream/components/status-indicator.js +69 -0
  353. package/dist/integrations/pi/components/upstream/components/thinking-selector.d.ts +36 -0
  354. package/dist/integrations/pi/components/upstream/components/thinking-selector.js +153 -0
  355. package/dist/integrations/pi/components/upstream/components/tool-execution.d.ts +67 -0
  356. package/dist/integrations/pi/components/upstream/components/tool-execution.js +365 -0
  357. package/dist/integrations/pi/components/upstream/components/tree-selector.d.ts +102 -0
  358. package/dist/integrations/pi/components/upstream/components/tree-selector.js +1294 -0
  359. package/dist/integrations/pi/components/upstream/components/trust-selector.d.ts +33 -0
  360. package/dist/integrations/pi/components/upstream/components/trust-selector.js +87 -0
  361. package/dist/integrations/pi/components/upstream/external-editor.js +43 -0
  362. package/dist/integrations/pi/components/upstream/history/editor-core.d.ts +289 -0
  363. package/dist/integrations/pi/components/upstream/history/editor-core.js +2145 -0
  364. package/dist/integrations/pi/components/upstream/history/kill-ring.d.ts +35 -0
  365. package/dist/integrations/pi/components/upstream/history/kill-ring.js +51 -0
  366. package/dist/integrations/pi/components/upstream/history/printable-key.d.ts +1 -0
  367. package/dist/integrations/pi/components/upstream/history/printable-key.js +43 -0
  368. package/dist/integrations/pi/components/upstream/history/text-helpers.d.ts +17 -0
  369. package/dist/integrations/pi/components/upstream/history/text-helpers.js +34 -0
  370. package/dist/integrations/pi/components/upstream/history/undo-stack.d.ts +25 -0
  371. package/dist/integrations/pi/components/upstream/history/undo-stack.js +39 -0
  372. package/dist/integrations/pi/components/upstream/history/word-navigation.d.ts +24 -0
  373. package/dist/integrations/pi/components/upstream/history/word-navigation.js +103 -0
  374. package/dist/integrations/pi/components/upstream/model-search.d.ts +18 -0
  375. package/dist/integrations/pi/components/upstream/theme/theme-controller.d.ts +33 -0
  376. package/dist/integrations/pi/components/upstream/theme/theme-controller.js +114 -0
  377. package/dist/integrations/pi/components/upstream/theme/theme.d.ts +61 -0
  378. package/dist/integrations/pi/components/upstream/theme/theme.js +337 -0
  379. package/dist/integrations/pi/engine/adapter.d.ts +140 -0
  380. package/dist/integrations/pi/engine/adapter.js +663 -0
  381. package/dist/integrations/pi/engine/changelog.d.ts +2 -0
  382. package/dist/integrations/pi/engine/changelog.js +63 -0
  383. package/dist/integrations/pi/engine/command-dispatch.d.ts +41 -0
  384. package/dist/integrations/pi/engine/command-dispatch.js +125 -0
  385. package/dist/integrations/pi/engine/compaction-progress.d.ts +24 -0
  386. package/dist/integrations/pi/engine/compaction-progress.js +97 -0
  387. package/dist/integrations/pi/engine/conformance.d.ts +39 -0
  388. package/dist/integrations/pi/engine/conformance.js +140 -0
  389. package/dist/integrations/pi/engine/event-delivery.d.ts +100 -0
  390. package/dist/integrations/pi/engine/event-delivery.js +184 -0
  391. package/dist/integrations/pi/engine/extension-ui-binding.d.ts +35 -0
  392. package/dist/integrations/pi/engine/extension-ui-binding.js +81 -0
  393. package/dist/integrations/pi/engine/http-dispatcher.d.ts +4 -0
  394. package/dist/integrations/pi/engine/http-dispatcher.js +25 -0
  395. package/dist/integrations/pi/engine/index.d.ts +18 -0
  396. package/dist/integrations/pi/engine/index.js +10 -0
  397. package/dist/integrations/pi/engine/message-values.d.ts +29 -0
  398. package/dist/integrations/pi/engine/message-values.js +169 -0
  399. package/dist/integrations/pi/engine/package-integration.d.ts +13 -0
  400. package/dist/integrations/pi/engine/package-integration.js +118 -0
  401. package/dist/integrations/pi/engine/pending-delivery.d.ts +30 -0
  402. package/dist/integrations/pi/engine/pending-delivery.js +156 -0
  403. package/dist/integrations/pi/engine/pi-settings-metadata.json +397 -0
  404. package/dist/integrations/pi/engine/project-trust-preflight.d.ts +21 -0
  405. package/dist/integrations/pi/engine/project-trust-preflight.js +46 -0
  406. package/dist/integrations/pi/engine/prompt-suggestions.d.ts +30 -0
  407. package/dist/integrations/pi/engine/prompt-suggestions.js +102 -0
  408. package/dist/integrations/pi/engine/provider-authentication.d.ts +34 -0
  409. package/dist/integrations/pi/engine/provider-authentication.js +209 -0
  410. package/dist/integrations/pi/engine/repository-pr-rest.d.ts +21 -0
  411. package/dist/integrations/pi/engine/repository-pr-rest.js +155 -0
  412. package/dist/integrations/pi/engine/repository-pr.d.ts +16 -0
  413. package/dist/integrations/pi/engine/repository-pr.js +79 -0
  414. package/dist/integrations/pi/engine/resource-catalog.d.ts +50 -0
  415. package/dist/integrations/pi/engine/resource-catalog.js +299 -0
  416. package/dist/integrations/pi/engine/resources/changelog.json +12 -0
  417. package/dist/integrations/pi/engine/runtime-integration.d.ts +53 -0
  418. package/dist/integrations/pi/engine/runtime-integration.js +118 -0
  419. package/dist/integrations/pi/engine/session-events.d.ts +48 -0
  420. package/dist/integrations/pi/engine/session-events.js +223 -0
  421. package/dist/integrations/pi/engine/session-integration.d.ts +67 -0
  422. package/dist/integrations/pi/engine/session-integration.js +195 -0
  423. package/dist/integrations/pi/engine/session-runtime.d.ts +98 -0
  424. package/dist/integrations/pi/engine/session-runtime.js +412 -0
  425. package/dist/integrations/pi/engine/session-selection.d.ts +28 -0
  426. package/dist/integrations/pi/engine/session-selection.js +90 -0
  427. package/dist/integrations/pi/engine/settings-bridge.d.ts +121 -0
  428. package/dist/integrations/pi/engine/settings-bridge.js +516 -0
  429. package/dist/integrations/pi/engine/settings-metadata.d.ts +31 -0
  430. package/dist/integrations/pi/engine/settings-metadata.js +67 -0
  431. package/dist/integrations/pi/engine/settings-port.d.ts +42 -0
  432. package/dist/integrations/pi/engine/settings-port.js +363 -0
  433. package/dist/integrations/pi/engine/tool-rendering.d.ts +13 -0
  434. package/dist/integrations/pi/engine/tool-rendering.js +145 -0
  435. package/dist/integrations/pi/engine/transcript-image-assets.d.ts +11 -0
  436. package/dist/integrations/pi/engine/transcript-image-assets.js +86 -0
  437. package/dist/integrations/pi/engine/transcript-projection.d.ts +39 -0
  438. package/dist/integrations/pi/engine/transcript-projection.js +440 -0
  439. package/dist/integrations/pi/engine/usage-view.d.ts +4 -0
  440. package/dist/integrations/pi/engine/usage-view.js +56 -0
  441. package/dist/integrations/pi/engine/windows-filesystem-hygiene.d.ts +21 -0
  442. package/dist/integrations/pi/engine/windows-filesystem-hygiene.js +55 -0
  443. package/dist/integrations/pi/engine/workflow-contexts.d.ts +66 -0
  444. package/dist/integrations/pi/engine/workflow-contexts.js +360 -0
  445. package/dist/integrations/pi/engine/workflow-runner.d.ts +60 -0
  446. package/dist/integrations/pi/engine/workflow-runner.js +536 -0
  447. package/dist/integrations/pi/engine/workflow-support.d.ts +38 -0
  448. package/dist/integrations/pi/engine/workflow-support.js +386 -0
  449. package/dist/integrations/pi/engine/workflows.d.ts +308 -0
  450. package/dist/integrations/pi/engine/workflows.js +81 -0
  451. package/dist/integrations/pi/startup-public.d.ts +2 -0
  452. package/dist/integrations/pi/startup-public.js +2254 -0
  453. package/dist/integrations/pi/startup-public.manifest.json +12679 -0
  454. package/dist/integrations/pi/tui-runtime/adapter.d.ts +58 -0
  455. package/dist/integrations/pi/tui-runtime/adapter.js +792 -0
  456. package/dist/integrations/pi/tui-runtime/contracts.d.ts +158 -0
  457. package/dist/integrations/pi/tui-runtime/contracts.js +1 -0
  458. package/dist/integrations/pi/tui-runtime/damage-aware-terminal.d.ts +88 -0
  459. package/dist/integrations/pi/tui-runtime/damage-aware-terminal.js +439 -0
  460. package/dist/integrations/pi/tui-runtime/index.d.ts +9 -0
  461. package/dist/integrations/pi/tui-runtime/index.js +5 -0
  462. package/dist/integrations/pi/tui-runtime/input-presentation-coordinator.d.ts +39 -0
  463. package/dist/integrations/pi/tui-runtime/input-presentation-coordinator.js +139 -0
  464. package/dist/integrations/pi/tui-runtime/mouse-report-input.d.ts +19 -0
  465. package/dist/integrations/pi/tui-runtime/mouse-report-input.js +91 -0
  466. package/dist/integrations/pi/tui-runtime/overlay-geometry.d.ts +32 -0
  467. package/dist/integrations/pi/tui-runtime/overlay-geometry.js +158 -0
  468. package/dist/integrations/pi/tui-runtime/presentation-adapter.d.ts +4 -0
  469. package/dist/integrations/pi/tui-runtime/presentation-adapter.js +48 -0
  470. package/dist/native/darwin-arm64/manifest.json +4 -4
  471. package/dist/native/darwin-arm64/process-guardian +0 -0
  472. package/dist/native/linux-x64/manifest.json +3 -3
  473. package/dist/native/linux-x64/process-guardian +0 -0
  474. package/dist/native/win32-x64/manifest.json +3 -3
  475. package/dist/native/win32-x64/process-guardian.exe +0 -0
  476. package/dist/product-identity.d.ts +37 -0
  477. package/dist/product-identity.js +119 -0
  478. package/dist/product-identity.json +87 -0
  479. package/dist/runtime-payload-inventory.json +134179 -0
  480. package/dist/ui/apps/contracts.d.ts +72 -0
  481. package/dist/ui/apps/host.d.ts +42 -0
  482. package/dist/ui/apps/host.js +156 -0
  483. package/dist/ui/apps/index.d.ts +5 -0
  484. package/dist/ui/apps/index.js +3 -0
  485. package/dist/ui/apps/registry.d.ts +12 -0
  486. package/dist/ui/apps/registry.js +33 -0
  487. package/dist/ui/components/dialog-panel.d.ts +37 -0
  488. package/dist/ui/components/dialog-panel.js +58 -0
  489. package/dist/ui/components/frame.d.ts +22 -0
  490. package/dist/ui/components/frame.js +55 -0
  491. package/dist/ui/components/index.d.ts +50 -0
  492. package/dist/ui/components/index.js +26 -0
  493. package/dist/ui/components/line-input.d.ts +68 -0
  494. package/dist/ui/components/line-input.js +224 -0
  495. package/dist/ui/components/list-block.d.ts +70 -0
  496. package/dist/ui/components/list-block.js +189 -0
  497. package/dist/ui/components/list-view.d.ts +60 -0
  498. package/dist/ui/components/list-view.js +84 -0
  499. package/dist/ui/components/mouse.d.ts +25 -0
  500. package/dist/ui/components/mouse.js +72 -0
  501. package/dist/ui/components/progress-status.d.ts +9 -0
  502. package/dist/ui/components/progress-status.js +25 -0
  503. package/dist/ui/components/prompt-input.d.ts +32 -0
  504. package/dist/ui/components/prompt-input.js +51 -0
  505. package/dist/ui/components/scrollbar.d.ts +88 -0
  506. package/dist/ui/components/scrollbar.js +137 -0
  507. package/dist/ui/components/selection-copy.d.ts +24 -0
  508. package/dist/ui/components/selection-copy.js +39 -0
  509. package/dist/ui/components/shortcut-hints.d.ts +7 -0
  510. package/dist/ui/components/shortcut-hints.js +12 -0
  511. package/dist/ui/components/shortcuts.d.ts +60 -0
  512. package/dist/ui/components/shortcuts.js +85 -0
  513. package/dist/ui/components/spans.d.ts +28 -0
  514. package/dist/ui/components/spans.js +266 -0
  515. package/dist/ui/components/submitted-prompt.d.ts +23 -0
  516. package/dist/ui/components/submitted-prompt.js +50 -0
  517. package/dist/ui/components/surface.d.ts +20 -0
  518. package/dist/ui/components/surface.js +44 -0
  519. package/dist/ui/components/text-selection.d.ts +62 -0
  520. package/dist/ui/components/text-selection.js +210 -0
  521. package/dist/ui/components/text.d.ts +38 -0
  522. package/dist/ui/components/text.js +185 -0
  523. package/dist/ui/components/theme.d.ts +19 -0
  524. package/dist/ui/components/theme.js +9 -0
  525. package/dist/ui/components/transcript-viewport.d.ts +187 -0
  526. package/dist/ui/components/transcript-viewport.js +886 -0
  527. package/dist/ui/components/value-menu.d.ts +43 -0
  528. package/dist/ui/components/value-menu.js +41 -0
  529. package/dist/ui/components/visible-hyperlinks.d.ts +26 -0
  530. package/dist/ui/components/visible-hyperlinks.js +97 -0
  531. package/dist/ui/settings/declarations.d.ts +127 -0
  532. package/dist/ui/settings/declarations.js +124 -0
  533. package/dist/ui/settings/index.d.ts +10 -0
  534. package/dist/ui/settings/index.js +5 -0
  535. package/dist/ui/settings/manager.d.ts +54 -0
  536. package/dist/ui/settings/manager.js +256 -0
  537. package/dist/ui/settings/migrations.d.ts +13 -0
  538. package/dist/ui/settings/migrations.js +92 -0
  539. package/dist/ui/settings/sections.d.ts +52 -0
  540. package/dist/ui/settings/sections.js +112 -0
  541. package/docs/architecture/boundaries.md +17 -13
  542. package/docs/architecture/code-documentation.md +77 -0
  543. package/docs/architecture/history-editor-provenance.md +100 -0
  544. package/docs/architecture/internal-naming.md +94 -0
  545. package/docs/architecture/process-guardian-provenance.md +3 -1
  546. package/docs/architecture/project-structure.md +72 -30
  547. package/docs/architecture/prompt-suggestions.md +68 -0
  548. package/docs/architecture/resource-and-data-policy.md +28 -2
  549. package/docs/architecture/response-copy-delivery.md +85 -0
  550. package/docs/architecture/terminal-host-proof-gate.md +1 -1
  551. package/docs/architecture/terminal-host-spike-evidence.md +1 -1
  552. package/docs/architecture/tool-image-presentation.md +62 -0
  553. package/docs/architecture/toolchain.md +34 -10
  554. package/docs/architecture/ui-reference-provenance.md +73 -6
  555. package/docs/ci-release-runbook.md +266 -77
  556. package/docs/features/launch-profiles.md +24 -17
  557. package/docs/features/modal-content-interaction.md +38 -0
  558. package/docs/features/prompt-history.md +149 -0
  559. package/docs/local-worktree-cleanup.md +214 -0
  560. package/docs/manual-code-streaming-cleanup.md +88 -0
  561. package/docs/manual-ghost-link-baseline.md +89 -0
  562. package/docs/manual-launch-instance-acceptance.md +12 -35
  563. package/docs/manual-owned-ui-checkpoint.md +79 -0
  564. package/docs/manual-pi-boundary-candidate.md +4 -5
  565. package/docs/manual-terminal-colour-check.md +4 -3
  566. package/docs/openspec-archive-automation.md +269 -0
  567. package/docs/repository-governance-live-acceptance.md +77 -0
  568. package/docs/validation.md +105 -0
  569. package/package.json +53 -34
  570. package/dist/src/cli/capabilities.d.ts +0 -15
  571. package/dist/src/cli/capabilities.js +0 -7
  572. package/dist/src/cli/dispatch.d.ts +0 -31
  573. package/dist/src/cli/dispatch.js +0 -123
  574. package/dist/src/cli/index.d.ts +0 -5
  575. package/dist/src/cli/index.js +0 -5
  576. package/dist/src/cli/packages.d.ts +0 -23
  577. package/dist/src/cli/packages.js +0 -84
  578. package/dist/src/cli/version-stats.d.ts +0 -16
  579. package/dist/src/cli/version-stats.js +0 -72
  580. package/dist/src/cli/version.d.ts +0 -2
  581. package/dist/src/cli/version.js +0 -23
  582. package/dist/src/composition/index.d.ts +0 -48
  583. package/dist/src/composition/index.js +0 -258
  584. package/dist/src/features/launch/development-launch.js +0 -28
  585. package/dist/src/features/launch/index.d.ts +0 -7
  586. package/dist/src/features/launch/index.js +0 -7
  587. package/dist/src/features/launch/intent.d.ts +0 -7
  588. package/dist/src/features/launch/intent.js +0 -4
  589. package/dist/src/features/launch/prepare-launch.d.ts +0 -13
  590. package/dist/src/features/launch/prepare-launch.js +0 -21
  591. package/dist/src/features/launch/profile-paths.d.ts +0 -15
  592. package/dist/src/features/launch/profile-paths.js +0 -31
  593. package/dist/src/features/launch/profiles.d.ts +0 -12
  594. package/dist/src/features/launch/profiles.js +0 -26
  595. package/dist/src/features/launch/runtime-selection.d.ts +0 -19
  596. package/dist/src/features/launch/runtime-selection.js +0 -13
  597. package/dist/src/features/owned-ui/customization.d.ts +0 -38
  598. package/dist/src/features/owned-ui/customization.js +0 -108
  599. package/dist/src/features/owned-ui/diagnostics.d.ts +0 -33
  600. package/dist/src/features/owned-ui/diagnostics.js +0 -94
  601. package/dist/src/features/owned-ui/index.d.ts +0 -4
  602. package/dist/src/features/owned-ui/index.js +0 -4
  603. package/dist/src/features/owned-ui/run.d.ts +0 -11
  604. package/dist/src/features/owned-ui/run.js +0 -15
  605. package/dist/src/features/owned-ui/settings-app.d.ts +0 -22
  606. package/dist/src/features/owned-ui/settings-app.js +0 -633
  607. package/dist/src/features/workspace/capabilities.d.ts +0 -31
  608. package/dist/src/features/workspace/capabilities.js +0 -75
  609. package/dist/src/features/workspace/index.d.ts +0 -6
  610. package/dist/src/features/workspace/index.js +0 -6
  611. package/dist/src/features/workspace/presentation.d.ts +0 -30
  612. package/dist/src/features/workspace/presentation.js +0 -70
  613. package/dist/src/features/workspace/reconciliation.d.ts +0 -15
  614. package/dist/src/features/workspace/reconciliation.js +0 -82
  615. package/dist/src/features/workspace/reducer.d.ts +0 -42
  616. package/dist/src/features/workspace/reducer.js +0 -213
  617. package/dist/src/features/workspace/router.d.ts +0 -31
  618. package/dist/src/features/workspace/router.js +0 -124
  619. package/dist/src/features/workspace/store.d.ts +0 -17
  620. package/dist/src/features/workspace/store.js +0 -54
  621. package/dist/src/foundation/agent-engine-contracts/capability-ports.d.ts +0 -95
  622. package/dist/src/foundation/agent-engine-contracts/domain-validation.js +0 -89
  623. package/dist/src/foundation/agent-engine-contracts/domain.d.ts +0 -116
  624. package/dist/src/foundation/agent-engine-contracts/index.d.ts +0 -8
  625. package/dist/src/foundation/agent-engine-contracts/index.js +0 -8
  626. package/dist/src/foundation/agent-engine-contracts/package-ports.d.ts +0 -54
  627. package/dist/src/foundation/launch-guardian/index.d.ts +0 -1
  628. package/dist/src/foundation/launch-guardian/index.js +0 -1
  629. package/dist/src/foundation/launch-guardian/main.d.ts +0 -31
  630. package/dist/src/foundation/launch-guardian/main.js +0 -165
  631. package/dist/src/foundation/lifecycle/index.d.ts +0 -4
  632. package/dist/src/foundation/lifecycle/index.js +0 -4
  633. package/dist/src/foundation/lifecycle/model.d.ts +0 -64
  634. package/dist/src/foundation/lifecycle/model.js +0 -40
  635. package/dist/src/foundation/lifecycle/paths.d.ts +0 -10
  636. package/dist/src/foundation/lifecycle/paths.js +0 -42
  637. package/dist/src/foundation/native-host-protocol/codec.d.ts +0 -11
  638. package/dist/src/foundation/native-host-protocol/codec.js +0 -56
  639. package/dist/src/foundation/native-host-protocol/evidence.d.ts +0 -67
  640. package/dist/src/foundation/native-host-protocol/evidence.js +0 -141
  641. package/dist/src/foundation/native-host-protocol/index.d.ts +0 -4
  642. package/dist/src/foundation/native-host-protocol/index.js +0 -4
  643. package/dist/src/foundation/native-host-protocol/messages.d.ts +0 -56
  644. package/dist/src/foundation/native-host-protocol/messages.js +0 -149
  645. package/dist/src/foundation/native-host-protocol/proof-gate.d.ts +0 -13
  646. package/dist/src/foundation/native-host-protocol/proof-gate.js +0 -33
  647. package/dist/src/foundation/owned-ui-contracts/extension-ui.d.ts +0 -302
  648. package/dist/src/foundation/owned-ui-contracts/index.d.ts +0 -3
  649. package/dist/src/foundation/owned-ui-contracts/index.js +0 -3
  650. package/dist/src/foundation/owned-ui-contracts/model.d.ts +0 -241
  651. package/dist/src/foundation/owned-ui-contracts/validation.d.ts +0 -11
  652. package/dist/src/foundation/owned-ui-contracts/validation.js +0 -395
  653. package/dist/src/foundation/owned-ui-settings/declarations.d.ts +0 -13
  654. package/dist/src/foundation/owned-ui-settings/declarations.js +0 -39
  655. package/dist/src/foundation/owned-ui-settings/index.d.ts +0 -6
  656. package/dist/src/foundation/owned-ui-settings/index.js +0 -6
  657. package/dist/src/foundation/owned-ui-settings/migrations.d.ts +0 -13
  658. package/dist/src/foundation/owned-ui-settings/migrations.js +0 -28
  659. package/dist/src/foundation/owned-ui-settings/sections.d.ts +0 -70
  660. package/dist/src/foundation/owned-ui-settings/sections.js +0 -93
  661. package/dist/src/foundation/owned-ui-settings/session.d.ts +0 -44
  662. package/dist/src/foundation/owned-ui-settings/session.js +0 -145
  663. package/dist/src/foundation/owned-ui-settings/store.d.ts +0 -28
  664. package/dist/src/foundation/owned-ui-settings/store.js +0 -90
  665. package/dist/src/foundation/pi-component-adapter/components.d.ts +0 -4
  666. package/dist/src/foundation/pi-component-adapter/components.js +0 -64
  667. package/dist/src/foundation/pi-component-adapter/conformance.d.ts +0 -17
  668. package/dist/src/foundation/pi-component-adapter/conformance.js +0 -69
  669. package/dist/src/foundation/pi-component-adapter/index.d.ts +0 -13
  670. package/dist/src/foundation/pi-component-adapter/index.js +0 -13
  671. package/dist/src/foundation/pi-component-adapter/resources/builtin-themes.d.ts +0 -165
  672. package/dist/src/foundation/pi-component-adapter/resources/builtin-themes.js +0 -166
  673. package/dist/src/foundation/pi-component-adapter/shell-components.d.ts +0 -6
  674. package/dist/src/foundation/pi-component-adapter/shell-components.js +0 -6
  675. package/dist/src/foundation/pi-component-adapter/shell-editor-autocomplete.d.ts +0 -11
  676. package/dist/src/foundation/pi-component-adapter/shell-editor-autocomplete.js +0 -162
  677. package/dist/src/foundation/pi-component-adapter/shell-extension-ui.d.ts +0 -35
  678. package/dist/src/foundation/pi-component-adapter/shell-extension-ui.js +0 -279
  679. package/dist/src/foundation/pi-component-adapter/shell-footer-status.d.ts +0 -7
  680. package/dist/src/foundation/pi-component-adapter/shell-footer-status.js +0 -189
  681. package/dist/src/foundation/pi-component-adapter/shell-presenters-transcript.d.ts +0 -57
  682. package/dist/src/foundation/pi-component-adapter/shell-presenters-transcript.js +0 -429
  683. package/dist/src/foundation/pi-component-adapter/shell-selectors-dialogs.d.ts +0 -113
  684. package/dist/src/foundation/pi-component-adapter/shell-selectors-dialogs.js +0 -235
  685. package/dist/src/foundation/pi-component-adapter/shell-shared-facade.d.ts +0 -116
  686. package/dist/src/foundation/pi-component-adapter/shell-shared-facade.js +0 -87
  687. package/dist/src/foundation/pi-component-adapter/theme.d.ts +0 -1
  688. package/dist/src/foundation/pi-component-adapter/theme.js +0 -1
  689. package/dist/src/foundation/pi-component-adapter/upstream/adjacent/core/keybindings.d.ts +0 -422
  690. package/dist/src/foundation/pi-component-adapter/upstream/adjacent/core/keybindings.js +0 -296
  691. package/dist/src/foundation/pi-component-adapter/upstream/components/countdown-timer.d.ts +0 -10
  692. package/dist/src/foundation/pi-component-adapter/upstream/components/custom-entry.d.ts +0 -17
  693. package/dist/src/foundation/pi-component-adapter/upstream/components/custom-entry.js +0 -51
  694. package/dist/src/foundation/pi-component-adapter/upstream/components/daxnuts.d.ts +0 -22
  695. package/dist/src/foundation/pi-component-adapter/upstream/components/daxnuts.js +0 -142
  696. package/dist/src/foundation/pi-component-adapter/upstream/components/earendil-announcement.d.ts +0 -4
  697. package/dist/src/foundation/pi-component-adapter/upstream/components/earendil-announcement.js +0 -19
  698. package/dist/src/foundation/pi-component-adapter/upstream/components/extension-editor.d.ts +0 -17
  699. package/dist/src/foundation/pi-component-adapter/upstream/components/extension-editor.js +0 -81
  700. package/dist/src/foundation/pi-component-adapter/upstream/components/first-time-setup.d.ts +0 -24
  701. package/dist/src/foundation/pi-component-adapter/upstream/components/first-time-setup.js +0 -105
  702. package/dist/src/foundation/pi-component-adapter/upstream/components/markdown-transform.d.ts +0 -2
  703. package/dist/src/foundation/pi-component-adapter/upstream/components/markdown-transform.js +0 -18
  704. package/dist/src/foundation/pi-component-adapter/upstream/components/mermaid.js +0 -77
  705. package/dist/src/foundation/pi-component-adapter/upstream/components/owned-editor.d.ts +0 -18
  706. package/dist/src/foundation/pi-component-adapter/upstream/components/owned-editor.js +0 -55
  707. package/dist/src/foundation/pi-component-adapter/upstream/components/scoped-models-selector.d.ts +0 -55
  708. package/dist/src/foundation/pi-component-adapter/upstream/components/scoped-models-selector.js +0 -342
  709. package/dist/src/foundation/pi-component-adapter/upstream/components/session-footer.d.ts +0 -10
  710. package/dist/src/foundation/pi-component-adapter/upstream/components/session-footer.js +0 -120
  711. package/dist/src/foundation/pi-component-adapter/upstream/components/session-selector-search.js +0 -159
  712. package/dist/src/foundation/pi-component-adapter/upstream/components/session-selector.d.ts +0 -95
  713. package/dist/src/foundation/pi-component-adapter/upstream/components/session-selector.js +0 -889
  714. package/dist/src/foundation/pi-component-adapter/upstream/components/skill-invocation-message.d.ts +0 -19
  715. package/dist/src/foundation/pi-component-adapter/upstream/components/skill-invocation-message.js +0 -44
  716. package/dist/src/foundation/pi-component-adapter/upstream/components/status-indicator.d.ts +0 -30
  717. package/dist/src/foundation/pi-component-adapter/upstream/components/status-indicator.js +0 -59
  718. package/dist/src/foundation/pi-component-adapter/upstream/components/tree-selector.d.ts +0 -98
  719. package/dist/src/foundation/pi-component-adapter/upstream/components/tree-selector.js +0 -1272
  720. package/dist/src/foundation/pi-component-adapter/upstream/components/trust-selector.d.ts +0 -33
  721. package/dist/src/foundation/pi-component-adapter/upstream/components/trust-selector.js +0 -76
  722. package/dist/src/foundation/pi-component-adapter/upstream/external-editor.js +0 -39
  723. package/dist/src/foundation/pi-component-adapter/upstream/model-search.d.ts +0 -15
  724. package/dist/src/foundation/pi-component-adapter/upstream/theme/theme-controller.d.ts +0 -25
  725. package/dist/src/foundation/pi-component-adapter/upstream/theme/theme-controller.js +0 -117
  726. package/dist/src/foundation/pi-component-adapter/upstream/theme/theme.d.ts +0 -61
  727. package/dist/src/foundation/pi-component-adapter/upstream/theme/theme.js +0 -326
  728. package/dist/src/foundation/pi-engine-adapter/adapter.d.ts +0 -164
  729. package/dist/src/foundation/pi-engine-adapter/adapter.js +0 -2367
  730. package/dist/src/foundation/pi-engine-adapter/conformance.d.ts +0 -37
  731. package/dist/src/foundation/pi-engine-adapter/conformance.js +0 -130
  732. package/dist/src/foundation/pi-engine-adapter/index.d.ts +0 -10
  733. package/dist/src/foundation/pi-engine-adapter/index.js +0 -10
  734. package/dist/src/foundation/pi-engine-adapter/model-auth-integration.d.ts +0 -30
  735. package/dist/src/foundation/pi-engine-adapter/model-auth-integration.js +0 -61
  736. package/dist/src/foundation/pi-engine-adapter/package-integration.d.ts +0 -13
  737. package/dist/src/foundation/pi-engine-adapter/package-integration.js +0 -112
  738. package/dist/src/foundation/pi-engine-adapter/pi-settings-metadata.json +0 -374
  739. package/dist/src/foundation/pi-engine-adapter/resource-extension-integration.d.ts +0 -31
  740. package/dist/src/foundation/pi-engine-adapter/resource-extension-integration.js +0 -80
  741. package/dist/src/foundation/pi-engine-adapter/runtime-integration.d.ts +0 -35
  742. package/dist/src/foundation/pi-engine-adapter/runtime-integration.js +0 -67
  743. package/dist/src/foundation/pi-engine-adapter/session-integration.d.ts +0 -43
  744. package/dist/src/foundation/pi-engine-adapter/session-integration.js +0 -97
  745. package/dist/src/foundation/pi-engine-adapter/settings-integration.d.ts +0 -55
  746. package/dist/src/foundation/pi-engine-adapter/settings-integration.js +0 -233
  747. package/dist/src/foundation/pi-engine-adapter/workflow-controllers.d.ts +0 -20
  748. package/dist/src/foundation/pi-engine-adapter/workflow-controllers.js +0 -48
  749. package/dist/src/foundation/pi-engine-adapter/workflows.d.ts +0 -173
  750. package/dist/src/foundation/pi-engine-adapter/workflows.js +0 -60
  751. package/dist/src/foundation/pi-owned-ui-integration/index.d.ts +0 -2
  752. package/dist/src/foundation/pi-owned-ui-integration/index.js +0 -2
  753. package/dist/src/foundation/pi-owned-ui-integration/route-host.d.ts +0 -29
  754. package/dist/src/foundation/pi-owned-ui-integration/session-shell.d.ts +0 -106
  755. package/dist/src/foundation/pi-owned-ui-integration/session-shell.js +0 -1518
  756. package/dist/src/foundation/pi-tui-runtime-adapter/adapter.d.ts +0 -39
  757. package/dist/src/foundation/pi-tui-runtime-adapter/adapter.js +0 -493
  758. package/dist/src/foundation/pi-tui-runtime-adapter/conformance.d.ts +0 -18
  759. package/dist/src/foundation/pi-tui-runtime-adapter/conformance.js +0 -145
  760. package/dist/src/foundation/pi-tui-runtime-adapter/contracts.d.ts +0 -120
  761. package/dist/src/foundation/pi-tui-runtime-adapter/index.d.ts +0 -4
  762. package/dist/src/foundation/pi-tui-runtime-adapter/index.js +0 -4
  763. package/dist/src/foundation/pi-tui-runtime-adapter/presentation-adapter.d.ts +0 -4
  764. package/dist/src/foundation/pi-tui-runtime-adapter/presentation-adapter.js +0 -48
  765. package/dist/src/foundation/presentation-contracts/index.d.ts +0 -96
  766. package/dist/src/foundation/presentation-contracts/index.js +0 -38
  767. package/dist/src/foundation/process-containment/index.d.ts +0 -5
  768. package/dist/src/foundation/process-containment/index.js +0 -5
  769. package/dist/src/foundation/process-containment/linux-process-inspector.d.ts +0 -6
  770. package/dist/src/foundation/process-containment/linux-process-inspector.js +0 -26
  771. package/dist/src/foundation/process-containment/native-guardian-containment.d.ts +0 -16
  772. package/dist/src/foundation/process-containment/native-guardian-containment.js +0 -139
  773. package/dist/src/foundation/process-containment/windows-process-inspector.d.ts +0 -17
  774. package/dist/src/foundation/process-containment/windows-process-inspector.js +0 -53
  775. package/dist/src/foundation/protocol/client.d.ts +0 -17
  776. package/dist/src/foundation/protocol/client.js +0 -129
  777. package/dist/src/foundation/protocol/index.d.ts +0 -2
  778. package/dist/src/foundation/protocol/index.js +0 -2
  779. package/dist/src/foundation/protocol/messages.d.ts +0 -89
  780. package/dist/src/foundation/protocol/messages.js +0 -99
  781. package/dist/src/foundation/release/bootstrap.d.ts +0 -29
  782. package/dist/src/foundation/release/bootstrap.js +0 -335
  783. package/dist/src/foundation/release/cohort-state.d.ts +0 -70
  784. package/dist/src/foundation/release/cohort-state.js +0 -202
  785. package/dist/src/foundation/release/development-preview-release.d.ts +0 -49
  786. package/dist/src/foundation/release/development-preview-release.js +0 -114
  787. package/dist/src/foundation/release/index.d.ts +0 -11
  788. package/dist/src/foundation/release/index.js +0 -11
  789. package/dist/src/foundation/release/release-gc.d.ts +0 -5
  790. package/dist/src/foundation/release/release-gc.js +0 -16
  791. package/dist/src/foundation/release/release-store.d.ts +0 -43
  792. package/dist/src/foundation/release/release-store.js +0 -175
  793. package/dist/src/foundation/release/release.d.ts +0 -38
  794. package/dist/src/foundation/release/release.js +0 -204
  795. package/dist/src/foundation/release/update-transaction.d.ts +0 -31
  796. package/dist/src/foundation/release/update-transaction.js +0 -89
  797. package/dist/src/foundation/release/update.d.ts +0 -80
  798. package/dist/src/foundation/release/update.js +0 -458
  799. package/dist/src/foundation/storage/control-store.d.ts +0 -61
  800. package/dist/src/foundation/storage/control-store.js +0 -530
  801. package/dist/src/foundation/storage/index.d.ts +0 -1
  802. package/dist/src/foundation/storage/index.js +0 -1
  803. package/dist/src/foundation/structured-agent-runtime/backpressure.d.ts +0 -46
  804. package/dist/src/foundation/structured-agent-runtime/backpressure.js +0 -118
  805. package/dist/src/foundation/structured-agent-runtime/commands.d.ts +0 -52
  806. package/dist/src/foundation/structured-agent-runtime/commands.js +0 -164
  807. package/dist/src/foundation/structured-agent-runtime/handshake.d.ts +0 -41
  808. package/dist/src/foundation/structured-agent-runtime/handshake.js +0 -151
  809. package/dist/src/foundation/structured-agent-runtime/index.d.ts +0 -5
  810. package/dist/src/foundation/structured-agent-runtime/index.js +0 -5
  811. package/dist/src/foundation/structured-agent-runtime/reconnection.d.ts +0 -37
  812. package/dist/src/foundation/structured-agent-runtime/reconnection.js +0 -129
  813. package/dist/src/foundation/structured-agent-runtime/state.d.ts +0 -56
  814. package/dist/src/foundation/structured-agent-runtime/state.js +0 -118
  815. package/dist/src/foundation/supervision/index.d.ts +0 -3
  816. package/dist/src/foundation/supervision/index.js +0 -3
  817. package/dist/src/foundation/supervision/main.d.ts +0 -1
  818. package/dist/src/foundation/supervision/main.js +0 -41
  819. package/dist/src/foundation/supervision/paths.d.ts +0 -1
  820. package/dist/src/foundation/supervision/paths.js +0 -1
  821. package/dist/src/foundation/supervision/server.d.ts +0 -22
  822. package/dist/src/foundation/supervision/server.js +0 -451
  823. package/dist/src/foundation/ui-apps/contracts.d.ts +0 -42
  824. package/dist/src/foundation/ui-apps/host.d.ts +0 -42
  825. package/dist/src/foundation/ui-apps/host.js +0 -152
  826. package/dist/src/foundation/ui-apps/index.d.ts +0 -3
  827. package/dist/src/foundation/ui-apps/index.js +0 -3
  828. package/dist/src/foundation/ui-apps/registry.d.ts +0 -11
  829. package/dist/src/foundation/ui-apps/registry.js +0 -32
  830. package/dist/src/foundation/ui-components/dialog-panel.d.ts +0 -36
  831. package/dist/src/foundation/ui-components/dialog-panel.js +0 -47
  832. package/dist/src/foundation/ui-components/frame.d.ts +0 -21
  833. package/dist/src/foundation/ui-components/frame.js +0 -54
  834. package/dist/src/foundation/ui-components/index.d.ts +0 -18
  835. package/dist/src/foundation/ui-components/index.js +0 -18
  836. package/dist/src/foundation/ui-components/line-input.d.ts +0 -74
  837. package/dist/src/foundation/ui-components/line-input.js +0 -245
  838. package/dist/src/foundation/ui-components/list-block.d.ts +0 -66
  839. package/dist/src/foundation/ui-components/list-block.js +0 -176
  840. package/dist/src/foundation/ui-components/list-view.d.ts +0 -66
  841. package/dist/src/foundation/ui-components/list-view.js +0 -76
  842. package/dist/src/foundation/ui-components/mouse.d.ts +0 -15
  843. package/dist/src/foundation/ui-components/mouse.js +0 -46
  844. package/dist/src/foundation/ui-components/scrollbar.d.ts +0 -62
  845. package/dist/src/foundation/ui-components/scrollbar.js +0 -102
  846. package/dist/src/foundation/ui-components/shortcuts.d.ts +0 -57
  847. package/dist/src/foundation/ui-components/shortcuts.js +0 -81
  848. package/dist/src/foundation/ui-components/spans.d.ts +0 -7
  849. package/dist/src/foundation/ui-components/spans.js +0 -59
  850. package/dist/src/foundation/ui-components/surface.d.ts +0 -20
  851. package/dist/src/foundation/ui-components/surface.js +0 -38
  852. package/dist/src/foundation/ui-components/text.d.ts +0 -24
  853. package/dist/src/foundation/ui-components/text.js +0 -123
  854. package/dist/src/foundation/ui-components/theme.d.ts +0 -23
  855. package/dist/src/foundation/ui-components/theme.js +0 -13
  856. package/dist/src/foundation/ui-components/value-menu.d.ts +0 -41
  857. package/dist/src/foundation/ui-components/value-menu.js +0 -33
  858. package/dist/src/foundation/workspace-contracts/index.d.ts +0 -2
  859. package/dist/src/foundation/workspace-contracts/index.js +0 -2
  860. package/dist/src/foundation/workspace-contracts/model.d.ts +0 -248
  861. package/dist/src/foundation/workspace-contracts/model.js +0 -2
  862. package/dist/src/foundation/workspace-contracts/validation.d.ts +0 -13
  863. package/dist/src/foundation/workspace-contracts/validation.js +0 -335
  864. package/dist/src/product-identity.d.ts +0 -37
  865. package/dist/src/product-identity.js +0 -150
  866. package/dist/src/product-identity.json +0 -99
  867. package/docs/manual-transparent-checkpoint.md +0 -53
  868. /package/dist/{src/foundation/agent-engine-contracts/domain.js → app/session-shell/paste-helper.d.ts} +0 -0
  869. /package/dist/{src/foundation/agent-engine-contracts/ports.js → app/session-shell/paste-text-worker.d.ts} +0 -0
  870. /package/dist/{src/foundation/lifecycle/commands.js → app/session-shell/paste-types.js} +0 -0
  871. /package/dist/{src/foundation/pi-owned-ui-integration/route-host.js → app/session-shell/response-copy-helper.d.ts} +0 -0
  872. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/capability-ports.js +0 -0
  873. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/domain-validation.d.ts +0 -0
  874. /package/dist/{src/foundation/pi-tui-runtime-adapter/contracts.js → contracts/agent-engine/domain.js} +0 -0
  875. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/model.d.ts +0 -0
  876. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/model.js +0 -0
  877. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/package-ports.js +0 -0
  878. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/ports.d.ts +0 -0
  879. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/serialization.d.ts +0 -0
  880. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/serialization.js +0 -0
  881. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/validation.d.ts +0 -0
  882. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/validation.js +0 -0
  883. /package/dist/{src/foundation/owned-ui-contracts → contracts/owned-ui}/extension-ui.js +0 -0
  884. /package/dist/{src/foundation/owned-ui-contracts → contracts/owned-ui}/model.js +0 -0
  885. /package/dist/{src/features → features}/launch/development-launch.d.ts +0 -0
  886. /package/dist/{src/features → features}/launch/initialize-profile.d.ts +0 -0
  887. /package/dist/{src/features → features}/launch/initialize-profile.js +0 -0
  888. /package/dist/{src/foundation → foundation}/lifecycle/commands.d.ts +0 -0
  889. /package/dist/{src/foundation → foundation}/lifecycle/launch-instance.d.ts +0 -0
  890. /package/dist/{src/foundation → foundation}/lifecycle/launch-instance.js +0 -0
  891. /package/dist/{src/foundation → foundation}/process-containment/artifact.d.ts +0 -0
  892. /package/dist/{src/foundation → foundation}/process-containment/artifact.js +0 -0
  893. /package/dist/{src/foundation → foundation}/process-containment/contracts.d.ts +0 -0
  894. /package/dist/{src/foundation → foundation}/process-containment/contracts.js +0 -0
  895. /package/dist/{src/foundation → foundation}/release/cohort-selection.d.ts +0 -0
  896. /package/dist/{src/foundation → foundation}/release/cohort-selection.js +0 -0
  897. /package/dist/{src/foundation → foundation}/release/concurrency.d.ts +0 -0
  898. /package/dist/{src/foundation → foundation}/release/concurrency.js +0 -0
  899. /package/dist/{src/foundation → foundation}/release/process-cleanup.d.ts +0 -0
  900. /package/dist/{src/foundation → foundation}/release/process-cleanup.js +0 -0
  901. /package/dist/{src/foundation → foundation}/release/stable-release.d.ts +0 -0
  902. /package/dist/{src/foundation → foundation}/release/stable-release.js +0 -0
  903. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/countdown-timer.js +0 -0
  904. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/mermaid.d.ts +0 -0
  905. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/session-selector-search.d.ts +0 -0
  906. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/external-editor.d.ts +0 -0
  907. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/model-search.js +0 -0
  908. /package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/public-main-entry.d.ts +0 -0
  909. /package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/public-main-entry.js +0 -0
  910. /package/dist/{src/foundation/ui-apps → ui/apps}/contracts.js +0 -0
  911. /package/dist/{src/foundation/ui-components → ui/components}/label.d.ts +0 -0
  912. /package/dist/{src/foundation/ui-components → ui/components}/label.js +0 -0
  913. /package/dist/{src/foundation/ui-components → ui/components}/pane.d.ts +0 -0
  914. /package/dist/{src/foundation/ui-components → ui/components}/pane.js +0 -0
  915. /package/dist/{src/foundation/ui-components → ui/components}/revision.d.ts +0 -0
  916. /package/dist/{src/foundation/ui-components → ui/components}/revision.js +0 -0
  917. /package/dist/{src/foundation/ui-components → ui/components}/status-line.d.ts +0 -0
  918. /package/dist/{src/foundation/ui-components → ui/components}/status-line.js +0 -0
  919. /package/dist/{src/foundation/ui-components → ui/components}/stepper.d.ts +0 -0
  920. /package/dist/{src/foundation/ui-components → ui/components}/stepper.js +0 -0
  921. /package/dist/{src/foundation/owned-ui-settings → ui/settings}/resolution.d.ts +0 -0
  922. /package/dist/{src/foundation/owned-ui-settings → ui/settings}/resolution.js +0 -0
@@ -0,0 +1,365 @@
1
+ #!/usr/bin/env node
2
+
3
+ // Security: this file intentionally depends only on Node built-ins: the updater copies it into a
4
+ // transaction capsule before npm is allowed to rename or remove the installed package.
5
+ import { spawn } from "node:child_process";
6
+ import { createHash, randomUUID } from "node:crypto";
7
+ import { chmod, lstat, mkdir, open, readFile, realpath, rename, rm, writeFile } from "node:fs/promises";
8
+ import { basename, dirname, isAbsolute, relative, resolve, sep } from "node:path";
9
+ import { fileURLToPath } from "node:url";
10
+
11
+ const SCHEMA = "a1-update-recovery-v1";
12
+
13
+ /**
14
+ * @typedef {object} Capsule
15
+ * @property {string} transactionId
16
+ * @property {string} packageName
17
+ * @property {string} targetVersion
18
+ * @property {string} packageRoot
19
+ * @property {string} globalRoot
20
+ * @property {string} launcherRoot
21
+ * @property {string[]} launchers
22
+ * @property {string} priorReleaseId
23
+ * @property {string} priorReleaseRoot
24
+ * @property {string} priorContentDigest
25
+ * @property {string} releaseManifestName
26
+ * @property {string} recoveryEntry
27
+ * @property {string} recoveryEntryDigest
28
+ * @property {string} nodeExecutable
29
+ * @property {string} npmCli
30
+ * @property {string[]} npmArguments
31
+ * @property {string} resultPath
32
+ * @property {string} cancellationPath
33
+ * @property {string} ownerPath
34
+ */
35
+
36
+ const [, , mode, manifestPath, separator, ...forwarded] = process.argv;
37
+
38
+ if ((mode !== "--worker" && mode !== "--launch") || !manifestPath || (mode === "--launch" && separator !== "--")) {
39
+ throw new Error("invalid A1 update recovery invocation");
40
+ }
41
+
42
+ /** @type {string} */
43
+ const capsuleManifestPath = manifestPath;
44
+ const capsule = await readCapsule(capsuleManifestPath);
45
+ if (mode === "--worker") {
46
+ await runWorker(capsule);
47
+ } else {
48
+ process.exitCode = await runRecoveredCommand(capsule, forwarded);
49
+ }
50
+
51
+ /** @param {Capsule} value */
52
+ async function runWorker(value) {
53
+ await rm(value.resultPath, { force: true });
54
+ await writeJson(value.ownerPath, {
55
+ schema: SCHEMA,
56
+ transactionId: value.transactionId,
57
+ pid: process.pid,
58
+ startIdentity: `${process.pid}:${Math.floor(Date.now() - process.uptime() * 1000)}`,
59
+ startedAt: new Date().toISOString(),
60
+ });
61
+ const heartbeat = setInterval(() => {
62
+ void writeJson(value.ownerPath, {
63
+ schema: SCHEMA,
64
+ transactionId: value.transactionId,
65
+ pid: process.pid,
66
+ startIdentity: `${process.pid}:${Math.floor(Date.now() - process.uptime() * 1000)}`,
67
+ heartbeatAt: new Date().toISOString(),
68
+ });
69
+ }, 500);
70
+ heartbeat.unref?.();
71
+ const child = spawn(process.execPath, [value.npmCli, ...value.npmArguments], {
72
+ detached: false,
73
+ windowsHide: true,
74
+ stdio: ["ignore", "pipe", "pipe"],
75
+ });
76
+ /** @type {Buffer[]} */
77
+ const stdout = [];
78
+ /** @type {Buffer[]} */
79
+ const stderr = [];
80
+ child.stdout?.on("data", chunk => stdout.push(Buffer.from(chunk)));
81
+ child.stderr?.on("data", chunk => stderr.push(Buffer.from(chunk)));
82
+ let cancelled = false;
83
+ let forced = false;
84
+ /** @type {ReturnType<typeof setTimeout> | null} */
85
+ let forceTimer = null;
86
+ const cancellationPoll = setInterval(async () => {
87
+ if (cancelled || !await exists(value.cancellationPath)) return;
88
+ cancelled = true;
89
+ child.kill("SIGTERM");
90
+ forceTimer = setTimeout(() => { forced = true; child.kill("SIGKILL"); }, 2_000);
91
+ forceTimer.unref?.();
92
+ }, 50);
93
+ cancellationPoll.unref?.();
94
+
95
+ let npmExitCode = null;
96
+ let spawnError = null;
97
+ try {
98
+ npmExitCode = await new Promise((resolvePromise, rejectPromise) => {
99
+ child.once("error", rejectPromise);
100
+ child.once("close", code => resolvePromise(code));
101
+ });
102
+ } catch (error) {
103
+ spawnError = error;
104
+ } finally {
105
+ clearInterval(cancellationPoll);
106
+ clearInterval(heartbeat);
107
+ if (forceTimer) clearTimeout(forceTimer);
108
+ }
109
+
110
+ const targetReady = await installedTargetIsCallable(value);
111
+ let launcherDisposition = "unavailable";
112
+ let outcome = "failed";
113
+ if (targetReady) {
114
+ launcherDisposition = "target";
115
+ outcome = "installed";
116
+ } else {
117
+ await writeRecoveryLaunchers(value);
118
+ if (await recoveryLaunchersAreCallable(value)) {
119
+ launcherDisposition = "recovery";
120
+ outcome = "recovery-launcher";
121
+ }
122
+ }
123
+ await writeJson(value.resultPath, {
124
+ schema: SCHEMA,
125
+ transactionId: value.transactionId,
126
+ outcome,
127
+ npmExitCode,
128
+ cancelled,
129
+ launcherDisposition,
130
+ stdout: bounded(Buffer.concat(stdout).toString("utf8")),
131
+ stderr: bounded(`${Buffer.concat(stderr).toString("utf8")}${spawnError ? `\n${String(spawnError)}` : ""}${forced ? "\nforced npm termination after cancellation" : ""}`.trim()),
132
+ completedAt: new Date().toISOString(),
133
+ });
134
+ if (launcherDisposition === "unavailable") process.exitCode = 1;
135
+ }
136
+
137
+ /**
138
+ * @param {Capsule} value
139
+ * @param {string[]} arguments_
140
+ * @returns {Promise<number>}
141
+ */
142
+ async function runRecoveredCommand(value, arguments_) {
143
+ let entry = await installedTargetEntry(value);
144
+ if (entry === null && arguments_[0] === "update") {
145
+ await rm(value.cancellationPath, { force: true });
146
+ await rm(value.resultPath, { force: true });
147
+ await rm(value.ownerPath, { force: true });
148
+ const worker = spawn(process.execPath, [fileURLToPath(import.meta.url), "--worker", capsuleManifestPath], {
149
+ detached: true,
150
+ windowsHide: true,
151
+ stdio: "ignore",
152
+ });
153
+ worker.unref();
154
+ const deadline = Date.now() + 15 * 60 * 1000;
155
+ const requestCancellation = (/** @type {string} */ signal) => { void writeJson(value.cancellationPath, { schema: SCHEMA, transactionId: value.transactionId, signal, requestedAt: new Date().toISOString() }); };
156
+ const onSigint = () => requestCancellation("SIGINT");
157
+ const onSigterm = () => requestCancellation("SIGTERM");
158
+ process.on("SIGINT", onSigint);
159
+ process.on("SIGTERM", onSigterm);
160
+ try {
161
+ while (Date.now() < deadline && !await exists(value.resultPath)) await sleep(50);
162
+ } finally {
163
+ process.off("SIGINT", onSigint);
164
+ process.off("SIGTERM", onSigterm);
165
+ }
166
+ entry = await installedTargetEntry(value);
167
+ }
168
+ entry ??= resolve(value.priorReleaseRoot, "bin", "cli.js");
169
+ const child = spawn(process.execPath, [entry, ...arguments_], { stdio: "inherit", windowsHide: false });
170
+ return await new Promise(resolvePromise => {
171
+ child.once("error", error => { console.error(error instanceof Error ? error.message : String(error)); resolvePromise(1); });
172
+ child.once("close", code => resolvePromise(code ?? 1));
173
+ });
174
+ }
175
+
176
+ /**
177
+ * @param {string} path
178
+ * @returns {Promise<Capsule>}
179
+ */
180
+ async function readCapsule(path) {
181
+ const value = JSON.parse(await readFile(path, "utf8"));
182
+ if (value.launchContract !== "neutral-launch-v1") throw new Error("Unsupported private recovery contract; stop existing processes and install directly with npm. Preserve settings, sessions, and history.");
183
+ if (value.schema !== SCHEMA || typeof value.transactionId !== "string" || typeof value.packageName !== "string"
184
+ || typeof value.packageName !== "string" || !value.packageName.includes("/") || typeof value.targetVersion !== "string" || typeof value.packageRoot !== "string" || typeof value.globalRoot !== "string"
185
+ || typeof value.launcherRoot !== "string" || !Array.isArray(value.launchers) || typeof value.priorReleaseId !== "string" || typeof value.priorReleaseRoot !== "string"
186
+ || !/^[a-f0-9]{64}$/.test(value.priorContentDigest) || typeof value.releaseManifestName !== "string"
187
+ || typeof value.recoveryEntry !== "string" || typeof value.recoveryEntryDigest !== "string" || value.nodeExecutable !== process.execPath || typeof value.npmCli !== "string"
188
+ || !Array.isArray(value.npmArguments) || typeof value.resultPath !== "string" || typeof value.cancellationPath !== "string") {
189
+ throw new Error("invalid A1 update recovery capsule");
190
+ }
191
+ const lexicalCapsuleRoot = dirname(resolve(path));
192
+ if (lexicalCapsuleRoot.split(sep).at(-1) !== value.transactionId) throw new Error("A1 update recovery transaction path is invalid");
193
+ const capsuleRoot = await realpath(lexicalCapsuleRoot);
194
+ const entry = await realpath(value.recoveryEntry);
195
+ assertDirectChild(capsuleRoot, entry);
196
+ if (!samePath(entry, resolve(capsuleRoot, "recovery.js"))) throw new Error("A1 update recovery entry path is invalid");
197
+ const digest = createHash("sha256").update(await readFile(entry)).digest("hex");
198
+ if (digest !== value.recoveryEntryDigest) throw new Error("A1 update recovery payload digest mismatch");
199
+ const globalRoot = await realpath(value.globalRoot);
200
+ const packageRoot = await realpath(value.packageRoot).catch(() => resolve(value.packageRoot));
201
+ const expectedPackage = resolve(globalRoot, ...value.packageName.split("/"));
202
+ if (!samePath(packageRoot, expectedPackage) || !containedBy(globalRoot, packageRoot)) throw new Error("A1 update recovery package root escapes npm global root");
203
+ const prefix = npmPrefixForGlobalRoot(globalRoot);
204
+ const expectedNpmArguments = ["install", "--global", "--prefix", prefix, "--loglevel=error", "--no-fund", "--no-audit", `${value.packageName}@${value.targetVersion}`];
205
+ const legacyNpmArguments = ["install", "--global", "--loglevel=error", "--no-fund", "--no-audit", `${value.packageName}@${value.targetVersion}`];
206
+ if (![expectedNpmArguments, legacyNpmArguments].some(arguments_ => sameArguments(value.npmArguments, arguments_))) {
207
+ throw new Error("A1 update recovery npm arguments are invalid");
208
+ }
209
+ const launcherRoot = resolve(value.launcherRoot);
210
+ const expectedLauncherRoot = process.platform === "win32" ? prefix : resolve(prefix, "bin");
211
+ if (!samePath(launcherRoot, expectedLauncherRoot)) throw new Error("A1 update recovery launcher root is invalid");
212
+ const expectedLaunchers = process.platform === "win32"
213
+ ? [resolve(launcherRoot, "a1"), resolve(launcherRoot, "a1.cmd"), resolve(launcherRoot, "a1.ps1")]
214
+ : [resolve(launcherRoot, "a1")];
215
+ if (JSON.stringify(value.launchers.map((/** @type {string} */ path) => resolve(path))) !== JSON.stringify(expectedLaunchers)) throw new Error("A1 update recovery launcher set is invalid");
216
+ for (const launcher of value.launchers) assertDirectChild(launcherRoot, resolve(launcher));
217
+ const expectedSidecars = [resolve(lexicalCapsuleRoot, "cancel.json"), resolve(lexicalCapsuleRoot, "result.json"), resolve(lexicalCapsuleRoot, "owner.json")];
218
+ if (![value.cancellationPath, value.resultPath, value.ownerPath].every((candidate, index) => samePath(candidate, expectedSidecars[index] ?? ""))) {
219
+ throw new Error("A1 update recovery sidecar paths are invalid");
220
+ }
221
+ const dataDir = dirname(dirname(capsuleRoot));
222
+ const releasesRoot = await realpath(resolve(dataDir, "releases"));
223
+ const priorReleaseRoot = await realpath(value.priorReleaseRoot);
224
+ assertDirectChild(releasesRoot, priorReleaseRoot);
225
+ if (priorReleaseRoot.split(sep).at(-1) !== value.priorReleaseId) throw new Error("A1 update recovery prior release identity is invalid");
226
+ const priorManifest = JSON.parse(await readFile(resolve(priorReleaseRoot, value.releaseManifestName), "utf8"));
227
+ if (priorManifest.launchContract !== "neutral-launch-v1") throw new Error("Unsupported prior private launch contract; manual cutover is required.");
228
+ if (priorManifest.releaseId !== value.priorReleaseId || priorManifest.contentDigest !== value.priorContentDigest) {
229
+ throw new Error("A1 update recovery prior release manifest is invalid");
230
+ }
231
+ const npmMetadata = await lstat(value.npmCli);
232
+ if (!npmMetadata.isFile() || npmMetadata.isSymbolicLink()) throw new Error("A1 update recovery npm entry is invalid");
233
+ return value;
234
+ }
235
+
236
+ /** @param {Capsule} value */
237
+ async function installedTargetEntry(value) {
238
+ try {
239
+ const manifest = JSON.parse(await readFile(resolve(value.packageRoot, "package.json"), "utf8"));
240
+ const entry = resolve(value.packageRoot, "bin", "cli.js");
241
+ if (manifest.privateLaunchContract !== "neutral-launch-v1" || manifest.name !== value.packageName || manifest.version !== value.targetVersion || !(await lstat(entry)).isFile()) return null;
242
+ return entry;
243
+ } catch { return null; }
244
+ }
245
+
246
+ /** @param {Capsule} value */
247
+ async function installedTargetIsCallable(value) {
248
+ if (await installedTargetEntry(value) === null) return false;
249
+ const token = `node_modules/${value.packageName}/bin/cli.js`;
250
+ for (const path of value.launchers) {
251
+ try {
252
+ const metadata = await lstat(path);
253
+ if (!metadata.isFile() || metadata.isSymbolicLink()) return false;
254
+ if (process.platform !== "win32" && (metadata.mode & 0o111) === 0) return false;
255
+ const normalized = (await readFile(path, "utf8")).replaceAll("\\", "/");
256
+ if (!normalized.includes(token)) return false;
257
+ } catch { return false; }
258
+ }
259
+ return true;
260
+ }
261
+
262
+ /** @param {Capsule} value */
263
+ async function writeRecoveryLaunchers(value) {
264
+ const node = value.nodeExecutable ?? process.execPath;
265
+ const entry = value.recoveryEntry;
266
+ const manifest = capsuleManifestPath;
267
+ const shell = `#!/bin/sh\nexec ${shellQuote(node)} ${shellQuote(entry)} --launch ${shellQuote(manifest)} -- "$@"\n`;
268
+ const command = `@ECHO off\r\n"${node}" "${entry}" --launch "${manifest}" -- %*\r\n`;
269
+ const powershell = `& '${psQuote(node)}' '${psQuote(entry)}' --launch '${psQuote(manifest)}' -- $args\nexit $LASTEXITCODE\n`;
270
+ const content = process.platform === "win32" ? [shell, command, powershell] : [shell];
271
+ await mkdir(value.launcherRoot, { recursive: true });
272
+ for (let index = 0; index < value.launchers.length; index += 1) await atomicWrite(value.launchers[index] ?? "", content[index] ?? "", 0o755);
273
+ }
274
+
275
+ /** @param {Capsule} value */
276
+ async function recoveryLaunchersAreCallable(value) {
277
+ for (const path of value.launchers) {
278
+ try {
279
+ const metadata = await lstat(path);
280
+ if (!metadata.isFile() || metadata.isSymbolicLink()) return false;
281
+ if (process.platform !== "win32" && (metadata.mode & 0o111) === 0) return false;
282
+ if (!(await readFile(path, "utf8")).includes(value.recoveryEntry)) return false;
283
+ } catch { return false; }
284
+ }
285
+ return true;
286
+ }
287
+
288
+ /**
289
+ * @param {string} path
290
+ * @param {string} content
291
+ * @param {number} mode
292
+ */
293
+ async function atomicWrite(path, content, mode) {
294
+ const temporary = `${path}.${process.pid}.${randomUUID()}.tmp`;
295
+ await writeFile(temporary, content, { mode });
296
+ await chmod(temporary, mode);
297
+ await rm(path, { force: true });
298
+ await rename(temporary, path);
299
+ }
300
+
301
+ /**
302
+ * @param {string} path
303
+ * @param {unknown} value
304
+ */
305
+ async function writeJson(path, value) {
306
+ await mkdir(dirname(path), { recursive: true, mode: 0o700 });
307
+ const temporary = `${path}.${process.pid}.${randomUUID()}.tmp`;
308
+ const file = await open(temporary, "wx", 0o600);
309
+ try { await file.writeFile(JSON.stringify(value, null, 2)); await file.sync(); }
310
+ finally { await file.close(); }
311
+ await rm(path, { force: true });
312
+ await rename(temporary, path);
313
+ }
314
+
315
+ /** @param {string} globalRoot */
316
+ function npmPrefixForGlobalRoot(globalRoot) {
317
+ const root = resolve(globalRoot);
318
+ const nodeModules = process.platform === "win32" ? basename(root).toLowerCase() === "node_modules" : basename(root) === "node_modules";
319
+ if (!nodeModules) throw new Error("A1 update recovery npm global root layout is invalid");
320
+ if (process.platform === "win32") return dirname(root);
321
+ const libraryRoot = dirname(root);
322
+ if (basename(libraryRoot) !== "lib") throw new Error("A1 update recovery npm global root layout is invalid");
323
+ return dirname(libraryRoot);
324
+ }
325
+
326
+ /** @param {string[]} left @param {string[]} right */
327
+ function sameArguments(left, right) {
328
+ return left.length === right.length && left.every((value, index) => value === right[index]);
329
+ }
330
+
331
+ /**
332
+ * @param {string} left
333
+ * @param {string} right
334
+ */
335
+ function samePath(left, right) {
336
+ return process.platform === "win32" ? resolve(left).toLowerCase() === resolve(right).toLowerCase() : resolve(left) === resolve(right);
337
+ }
338
+ /**
339
+ * @param {string} parent
340
+ * @param {string} child
341
+ */
342
+ function containedBy(parent, child) {
343
+ const fromParent = relative(parent, child);
344
+ return fromParent.length > 0 && fromParent !== ".." && !fromParent.startsWith(`..${sep}`) && !isAbsolute(fromParent);
345
+ }
346
+ /**
347
+ * @param {string} parent
348
+ * @param {string} child
349
+ */
350
+ function assertDirectChild(parent, child) {
351
+ const expectedParent = resolve(parent);
352
+ const actualParent = dirname(resolve(child));
353
+ const matches = process.platform === "win32" ? actualParent.toLowerCase() === expectedParent.toLowerCase() : actualParent === expectedParent;
354
+ if (!matches) throw new Error(`A1 update recovery path escapes its managed root: ${child}`);
355
+ }
356
+ /** @param {string} value */
357
+ function shellQuote(value) { return `'${String(value).replaceAll("'", `'"'"'`)}'`; }
358
+ /** @param {string} value */
359
+ function psQuote(value) { return String(value).replaceAll("'", "''"); }
360
+ /** @param {string} value */
361
+ function bounded(value) { return value.length <= 64 * 1024 ? value : value.slice(-64 * 1024); }
362
+ /** @param {string} path */
363
+ async function exists(path) { return await lstat(path).then(() => true).catch(() => false); }
364
+ /** @param {number} ms */
365
+ async function sleep(ms) { await new Promise(resolvePromise => setTimeout(resolvePromise, ms)); }
package/bin/warmup.js ADDED
@@ -0,0 +1,28 @@
1
+ #!/usr/bin/env node
2
+
3
+ // Invariant: one terminal module identity per process, decided before any A1 or Pi module loads.
4
+ const [{ installPinnedPiTuiResolver }, { fileURLToPath: toPath }] = await Promise.all([import("./module-resolver.js"), import("node:url")]);
5
+ installPinnedPiTuiResolver(toPath(new URL("..", import.meta.url)));
6
+ const startup = await import("../dist/foundation/startup/startup-runtime.js");
7
+ startup.assertImmutableWarmupEnvironment(process.env);
8
+ startup.enableEnvironmentCompileCache(process.env);
9
+ const [{ fileURLToPath }, identity, descriptor] = await Promise.all([
10
+ import("node:url"),
11
+ import("./module-identity.js"),
12
+ import("../dist/foundation/startup/startup-descriptor.js"),
13
+ ]);
14
+ identity.configurePinnedPiPublicPackage(fileURLToPath(new URL("..", import.meta.url)));
15
+
16
+ // Security: this entry imports the exact interactive graph but never composes it, so it
17
+ // creates no terminal, profile/session path, trust callback, executable resource loader,
18
+ // extension runner, or network client.
19
+ const [launch, selection, trustPrompt, forkPrompt, run, composition] = await descriptor.loadDeclaredStartupGraph();
20
+ if (typeof identity.assertSinglePiTuiModuleAtLaunch !== "function"
21
+ || typeof launch.runSelectedInteractiveRuntime !== "function"
22
+ || typeof selection.parseSessionSelection !== "function"
23
+ || typeof trustPrompt.createConsoleProjectTrustPrompt !== "function"
24
+ || typeof forkPrompt.createConsoleSessionForkPrompt !== "function"
25
+ || typeof run.runOwnedUi !== "function"
26
+ || typeof composition.composeOwnedUi !== "function") {
27
+ throw new Error("immutable startup graph is incomplete");
28
+ }
@@ -0,0 +1,16 @@
1
+ import type { PiTuiInputDiagnosticsEvent } from "../../integrations/pi/tui-runtime/contracts.js";
2
+ import type { ResponseCopyEvent } from "./response-copy-protocol.js";
3
+ import type { PasteEvent } from "./paste-protocol.js";
4
+ /** Opt-in scalar-only snapshots, bounded to 128 rows and one pending asynchronous write. */
5
+ export declare class ClipboardDiagnosticCapture {
6
+ #private;
7
+ private readonly destination;
8
+ private readonly write;
9
+ constructor(destination: string, write?: (file: string, data: string) => Promise<void>);
10
+ copy(event: ResponseCopyEvent): void;
11
+ paste(event: PasteEvent): void;
12
+ runtime(event: PiTuiInputDiagnosticsEvent): void;
13
+ /** Explicit test/evidence boundary; the interactive UI never waits for disk diagnostics. */
14
+ flush(): Promise<void>;
15
+ dispose(): void;
16
+ }
@@ -0,0 +1,65 @@
1
+ import { writeFile } from "node:fs/promises";
2
+ const PHASES = new Set(["capture", "selection-clear", "queued", "preparing", "extracted", "encoded", "submitting", "settled", "cleanup",
3
+ "shortcut-received", "shortcut-matched", "shortcut-admitted", "pointer-admitted", "framing", "admitted", "predecessor", "acquiring", "acquired-text", "acquired-image", "classifying", "path-fallback", "prepared", "inserting",
4
+ "receipt", "semantic-start", "semantic-end", "composition-start", "composition-end", "write-start", "write-end", "heartbeat"]);
5
+ /** Opt-in scalar-only snapshots, bounded to 128 rows and one pending asynchronous write. */
6
+ export class ClipboardDiagnosticCapture {
7
+ #records = [];
8
+ #payloads = new Map();
9
+ #pending;
10
+ #writing;
11
+ #disposed = false;
12
+ #heartbeat;
13
+ destination;
14
+ write;
15
+ constructor(destination, write = (file, data) => writeFile(file, data, { encoding: "utf8", mode: 0o600 })) {
16
+ this.destination = destination;
17
+ this.write = write;
18
+ this.#heartbeat = setInterval(() => this.#record("heartbeat", { phase: "heartbeat", atMs: performance.now() }), 100);
19
+ this.#heartbeat.unref();
20
+ }
21
+ copy(event) { this.#record("copy", event); }
22
+ paste(event) { this.#record("paste", event); }
23
+ runtime(event) {
24
+ this.#record("runtime", { phase: event.phase, atMs: event.atMs, request: event.revision, pending: event.pendingDepth });
25
+ }
26
+ #record(source, event) {
27
+ if (this.#disposed || !PHASES.has(event.phase))
28
+ return;
29
+ const key = `${source}:${event.request ?? 0}`;
30
+ // Concurrency: eight pastes plus active/pending copy and the incoming superseding capture can overlap briefly.
31
+ if (["capture", "admitted"].includes(event.phase) && this.#payloads.size < 11)
32
+ this.#payloads.set(key, scalar(event.sourceUnits) * 2);
33
+ if (this.#payloads.has(key) && event.bytes !== undefined)
34
+ this.#payloads.set(key, Math.max(this.#payloads.get(key), scalar(event.bytes)));
35
+ if (event.phase === "settled" || event.phase === "cleanup")
36
+ this.#payloads.delete(key);
37
+ // Rationale: observed payload/source bytes, not an assertion about opaque native allocator overhead.
38
+ const pendingBytes = scalar([...this.#payloads.values()].reduce((sum, bytes) => sum + bytes, 0));
39
+ // Security: project only declared scalar fields. Never serialize the supplied event object or raw errors.
40
+ this.#records.push({ source, phase: event.phase, atMs: scalar(event.atMs), request: event.request !== undefined && event.request < 0 ? -scalar(-event.request) : scalar(event.request), pending: scalar(event.pending), bytes: scalar(event.bytes), elapsedMs: scalar(event.elapsedMs),
41
+ sourceUnits: scalar(event.sourceUnits), pendingBytes,
42
+ transport: ["native", "terminal", "provided", "injected"].includes(event.transport ?? "") ? event.transport : "none",
43
+ outcome: ["ready", "failed", "canceled", "delivered", "submitted-unverified", "timed-out", "superseded"].includes(event.outcome ?? "") ? event.outcome : "none" });
44
+ if (this.#records.length > 128)
45
+ this.#records.shift();
46
+ this.#pending = JSON.stringify({ schema: "clipboard-diagnostics-v1", records: this.#records });
47
+ this.#pump();
48
+ }
49
+ #pump() {
50
+ if (this.#disposed || this.#writing || this.#pending === undefined)
51
+ return;
52
+ const snapshot = this.#pending;
53
+ this.#pending = undefined;
54
+ this.#writing = Promise.resolve().then(() => this.write(this.destination, snapshot)).catch(() => {
55
+ // Security: diagnostics failure must not enter the normal terminal or block clipboard work.
56
+ }).finally(() => { this.#writing = undefined; this.#pump(); });
57
+ }
58
+ /** Explicit test/evidence boundary; the interactive UI never waits for disk diagnostics. */
59
+ async flush() { while (this.#writing)
60
+ await this.#writing; }
61
+ dispose() { this.#disposed = true; clearInterval(this.#heartbeat); this.#pending = undefined; this.#records = []; this.#payloads.clear(); }
62
+ }
63
+ function scalar(value) {
64
+ return value !== undefined && Number.isFinite(value) ? Math.max(0, Math.min(Number.MAX_SAFE_INTEGER, value)) : 0;
65
+ }
@@ -0,0 +1,11 @@
1
+ export interface ClipboardImageData {
2
+ readonly data: string;
3
+ readonly mimeType: string;
4
+ }
5
+ /**
6
+ * Converts valid padded or unpadded standard base64 into its unique padded form.
7
+ * Clipboard adapters are untrusted at this boundary, so reject representations
8
+ * that Node's permissive base64 decoder would otherwise partially accept.
9
+ */
10
+ export declare function canonicalizeClipboardImage(image: ClipboardImageData, source?: boolean): ClipboardImageData | null;
11
+ export declare function canonicalizeStandardBase64(value: string, source?: boolean): string | null;
@@ -0,0 +1,38 @@
1
+ import { ImageAttachmentError, MAX_IMAGE_DATA_BYTES } from "../../contracts/owned-ui/index.js";
2
+ import { MAX_SOURCE_IMAGE_BYTES } from "./image-source.js";
3
+ const STANDARD_BASE64 = /^[A-Za-z0-9+/]*={0,2}$/u;
4
+ /**
5
+ * Converts valid padded or unpadded standard base64 into its unique padded form.
6
+ * Clipboard adapters are untrusted at this boundary, so reject representations
7
+ * that Node's permissive base64 decoder would otherwise partially accept.
8
+ */
9
+ export function canonicalizeClipboardImage(image, source = false) {
10
+ const data = canonicalizeStandardBase64(image.data, source);
11
+ return data === null ? null : { data, mimeType: image.mimeType };
12
+ }
13
+ export function canonicalizeStandardBase64(value, source = false) {
14
+ if (typeof value !== "string" || value.length === 0)
15
+ return null;
16
+ const maximum = source ? Math.ceil(MAX_SOURCE_IMAGE_BYTES / 3) * 4 : MAX_IMAGE_DATA_BYTES;
17
+ if (Math.ceil(value.length / 4) * 4 > maximum)
18
+ throw new ImageAttachmentError(source ? "image-source-size" : "image-size");
19
+ if (!STANDARD_BASE64.test(value))
20
+ return null;
21
+ const paddingStart = value.indexOf("=");
22
+ const core = paddingStart < 0 ? value : value.slice(0, paddingStart);
23
+ const suppliedPadding = value.length - core.length;
24
+ const remainder = core.length % 4;
25
+ if (remainder === 1)
26
+ return null;
27
+ const requiredPadding = remainder === 0 ? 0 : 4 - remainder;
28
+ if (suppliedPadding !== 0 && suppliedPadding !== requiredPadding)
29
+ return null;
30
+ const padded = `${core}${"=".repeat(requiredPadding)}`;
31
+ const decoded = Buffer.from(padded, "base64");
32
+ if (source && decoded.length > MAX_SOURCE_IMAGE_BYTES)
33
+ throw new ImageAttachmentError("image-source-size");
34
+ if (decoded.length === 0)
35
+ return null;
36
+ const canonical = decoded.toString("base64");
37
+ return canonical === padded ? canonical : null;
38
+ }
@@ -0,0 +1,9 @@
1
+ /** Aggregate explicit URL-chip metadata allowance for one owned editor decoration pass. */
2
+ export declare const EDITOR_HYPERLINK_METADATA_BYTES: number;
3
+ /** Accounts complete OSC 8 controls before construction, without scanning oversized backing URLs. */
4
+ export declare class EditorHyperlinkBudget {
5
+ #private;
6
+ reset(): void;
7
+ takeCleanup(): boolean;
8
+ take(target: string): boolean;
9
+ }
@@ -0,0 +1,23 @@
1
+ /** Aggregate explicit URL-chip metadata allowance for one owned editor decoration pass. */
2
+ export const EDITOR_HYPERLINK_METADATA_BYTES = 64 * 1024;
3
+ const CLOSE_BYTES = 7;
4
+ const PAIR_BYTES = CLOSE_BYTES * 2;
5
+ /** Accounts complete OSC 8 controls before construction, without scanning oversized backing URLs. */
6
+ export class EditorHyperlinkBudget {
7
+ #remaining = EDITOR_HYPERLINK_METADATA_BYTES;
8
+ reset() { this.#remaining = EDITOR_HYPERLINK_METADATA_BYTES; }
9
+ takeCleanup() { return this.#reserve(CLOSE_BYTES); }
10
+ take(target) {
11
+ // Performance: UTF-16 length is a lower bound on UTF-8 bytes, including replacement surrogates.
12
+ // Reject large backing values before byte counting, flattening, interpolation, or signatures.
13
+ if (target.length > this.#remaining - PAIR_BYTES)
14
+ return false;
15
+ return this.#reserve(PAIR_BYTES + Buffer.byteLength(target, "utf8"));
16
+ }
17
+ #reserve(bytes) {
18
+ if (bytes > this.#remaining)
19
+ return false;
20
+ this.#remaining -= bytes;
21
+ return true;
22
+ }
23
+ }
@@ -0,0 +1,33 @@
1
+ import type { ChildProcess } from "node:child_process";
2
+ /** How long an unused spare helper may idle before it is stopped so a background session holds no extra process. */
3
+ export declare const HELPER_SPARE_IDLE_MS: number;
4
+ export interface SpareHelper {
5
+ readonly child: ChildProcess;
6
+ /** Whether the helper already announced itself; the taker must then send the first request itself. */
7
+ readonly ready: boolean;
8
+ }
9
+ export interface HelperPoolOptions {
10
+ readonly fork: () => ChildProcess;
11
+ /** Stops a spare that is no longer wanted; the paste helper needs its process group killed on POSIX. */
12
+ readonly stop: (child: ChildProcess) => void;
13
+ readonly idleMs?: number;
14
+ }
15
+ /**
16
+ * Keeps one forked IPC helper ready so a request takes a live child instead of paying fork and module
17
+ * load on its own critical path. The spare stays idle on its channel until it is taken; a spare that
18
+ * exits or idles too long is dropped, and the next request forks cold and warms a replacement afterwards.
19
+ */
20
+ export declare class HelperPool {
21
+ #private;
22
+ constructor(options: HelperPoolOptions);
23
+ /** Whether a spare is currently held (ready or still starting). */
24
+ get warmed(): boolean;
25
+ /** Opts the pool in and forks the first spare; from here on `replenish` keeps one ready after each request. */
26
+ warm(): void;
27
+ /** Forks the next spare after a request released its child; a no-op until the owner warmed the pool. A fork failure leaves the pool empty. */
28
+ replenish(): void;
29
+ /** Hands the spare to a request, with the pool's listeners removed; returns nothing when no live spare is held. */
30
+ take(): SpareHelper | undefined;
31
+ /** Stops the held spare and refuses further warming. */
32
+ dispose(): void;
33
+ }