@timurproko/a1 0.1.8-dev.50ebb19 → 0.1.8-dev.510

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 (880) hide show
  1. package/README.md +209 -63
  2. package/bin/activate.js +8 -0
  3. package/bin/cli.js +33 -11
  4. package/bin/guardian.js +16 -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 +343 -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 +507 -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 +275 -0
  64. package/dist/app/session-shell/session-shell-root.js +1376 -0
  65. package/dist/app/session-shell/session-shell.d.ts +66 -0
  66. package/dist/app/session-shell/session-shell.js +2116 -0
  67. package/dist/app/session-shell/session-viewport-controller.d.ts +61 -0
  68. package/dist/app/session-shell/session-viewport-controller.js +597 -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 +46 -0
  78. package/dist/cli/dispatch.js +261 -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 +26 -0
  82. package/dist/cli/package-messages.js +71 -0
  83. package/dist/cli/packages.d.ts +32 -0
  84. package/dist/cli/packages.js +81 -0
  85. package/dist/cli/version-stats.d.ts +22 -0
  86. package/dist/cli/version-stats.js +112 -0
  87. package/dist/composition/index.d.ts +2 -0
  88. package/dist/composition/index.js +2 -0
  89. package/dist/composition/owned-ui.d.ts +37 -0
  90. package/dist/composition/owned-ui.js +154 -0
  91. package/dist/composition/settings-route-host.d.ts +20 -0
  92. package/dist/composition/settings-route-host.js +141 -0
  93. package/dist/contracts/agent-engine/capability-ports.d.ts +95 -0
  94. package/dist/contracts/agent-engine/domain-validation.js +107 -0
  95. package/dist/contracts/agent-engine/domain.d.ts +138 -0
  96. package/dist/contracts/agent-engine/index.d.ts +11 -0
  97. package/dist/contracts/agent-engine/index.js +6 -0
  98. package/dist/contracts/agent-engine/package-ports.d.ts +60 -0
  99. package/dist/contracts/agent-engine/ports.js +1 -0
  100. package/dist/contracts/owned-ui/extension-ui.d.ts +310 -0
  101. package/dist/contracts/owned-ui/image-attachments.d.ts +36 -0
  102. package/dist/contracts/owned-ui/image-attachments.js +67 -0
  103. package/dist/contracts/owned-ui/index.d.ts +12 -0
  104. package/dist/contracts/owned-ui/index.js +8 -0
  105. package/dist/contracts/owned-ui/model.d.ts +374 -0
  106. package/dist/contracts/owned-ui/prompt-history.d.ts +55 -0
  107. package/dist/contracts/owned-ui/prompt-history.js +23 -0
  108. package/dist/contracts/owned-ui/prompt-suggestions.d.ts +3 -0
  109. package/dist/contracts/owned-ui/prompt-suggestions.js +44 -0
  110. package/dist/contracts/owned-ui/suggestion-diagnostics.d.ts +22 -0
  111. package/dist/contracts/owned-ui/suggestion-diagnostics.js +9 -0
  112. package/dist/contracts/owned-ui/transcript-lifecycle.d.ts +5 -0
  113. package/dist/contracts/owned-ui/transcript-lifecycle.js +33 -0
  114. package/dist/contracts/owned-ui/validation.d.ts +15 -0
  115. package/dist/contracts/owned-ui/validation.js +523 -0
  116. package/dist/contracts/presentation/index.d.ts +104 -0
  117. package/dist/features/launch/development-launch.js +36 -0
  118. package/dist/features/launch/index.d.ts +12 -0
  119. package/dist/features/launch/index.js +6 -0
  120. package/dist/features/launch/intent.d.ts +12 -0
  121. package/dist/features/launch/intent.js +8 -0
  122. package/dist/features/launch/prepare-launch.d.ts +11 -0
  123. package/dist/features/launch/prepare-launch.js +14 -0
  124. package/dist/features/launch/profile-paths.d.ts +16 -0
  125. package/dist/features/launch/profile-paths.js +36 -0
  126. package/dist/features/launch/runtime-selection.d.ts +16 -0
  127. package/dist/features/launch/runtime-selection.js +13 -0
  128. package/dist/features/owned-ui/index.d.ts +9 -0
  129. package/dist/features/owned-ui/index.js +6 -0
  130. package/dist/features/owned-ui/project-trust-prompt.d.ts +25 -0
  131. package/dist/features/owned-ui/project-trust-prompt.js +149 -0
  132. package/dist/features/owned-ui/reference-routes.d.ts +6 -0
  133. package/dist/features/owned-ui/reference-routes.js +6 -0
  134. package/dist/features/owned-ui/reference-screen-app.d.ts +37 -0
  135. package/dist/features/owned-ui/reference-screen-app.js +232 -0
  136. package/dist/features/owned-ui/run.d.ts +17 -0
  137. package/dist/features/owned-ui/run.js +64 -0
  138. package/dist/features/owned-ui/session-fork-prompt.d.ts +8 -0
  139. package/dist/features/owned-ui/session-fork-prompt.js +34 -0
  140. package/dist/features/owned-ui/settings-app.d.ts +21 -0
  141. package/dist/features/owned-ui/settings-app.js +802 -0
  142. package/dist/features/owned-ui/settings-route.d.ts +2 -0
  143. package/dist/features/owned-ui/settings-route.js +2 -0
  144. package/dist/features/prompt-history/image-sidecar.d.ts +32 -0
  145. package/dist/features/prompt-history/image-sidecar.js +130 -0
  146. package/dist/features/prompt-history/index.d.ts +4 -0
  147. package/dist/features/prompt-history/index.js +3 -0
  148. package/dist/features/prompt-history/paths.d.ts +5 -0
  149. package/dist/features/prompt-history/paths.js +17 -0
  150. package/dist/features/prompt-history/service.d.ts +54 -0
  151. package/dist/features/prompt-history/service.js +425 -0
  152. package/dist/features/prompt-history/store.d.ts +16 -0
  153. package/dist/features/prompt-history/store.js +219 -0
  154. package/dist/features/prompt-history/worker.d.ts +9 -0
  155. package/dist/features/prompt-history/worker.js +45 -0
  156. package/dist/features/prompt-suggestions/diagnostics.d.ts +18 -0
  157. package/dist/features/prompt-suggestions/diagnostics.js +82 -0
  158. package/dist/features/prompt-suggestions/index.d.ts +2 -0
  159. package/dist/features/prompt-suggestions/index.js +1 -0
  160. package/dist/foundation/launch-context/index.d.ts +59 -0
  161. package/dist/foundation/launch-context/index.js +136 -0
  162. package/dist/foundation/launch-guardian/index.d.ts +2 -0
  163. package/dist/foundation/launch-guardian/index.js +1 -0
  164. package/dist/foundation/launch-guardian/main.d.ts +33 -0
  165. package/dist/foundation/launch-guardian/main.js +180 -0
  166. package/dist/foundation/lifecycle/commands.js +1 -0
  167. package/dist/foundation/lifecycle/index.d.ts +11 -0
  168. package/dist/foundation/lifecycle/index.js +5 -0
  169. package/dist/foundation/lifecycle/model.d.ts +64 -0
  170. package/dist/foundation/lifecycle/model.js +40 -0
  171. package/dist/foundation/lifecycle/paths.d.ts +30 -0
  172. package/dist/foundation/lifecycle/paths.js +70 -0
  173. package/dist/foundation/lifecycle/session-selection.d.ts +9 -0
  174. package/dist/foundation/lifecycle/session-selection.js +39 -0
  175. package/dist/foundation/lifecycle/supervisor-startup.d.ts +30 -0
  176. package/dist/foundation/lifecycle/supervisor-startup.js +106 -0
  177. package/dist/foundation/process-containment/darwin-process-inspector.d.ts +5 -0
  178. package/dist/foundation/process-containment/darwin-process-inspector.js +7 -0
  179. package/dist/foundation/process-containment/index.d.ts +8 -0
  180. package/dist/foundation/process-containment/index.js +6 -0
  181. package/dist/foundation/process-containment/linux-process-inspector.d.ts +7 -0
  182. package/dist/foundation/process-containment/linux-process-inspector.js +27 -0
  183. package/dist/foundation/process-containment/native-guardian-containment.d.ts +17 -0
  184. package/dist/foundation/process-containment/native-guardian-containment.js +140 -0
  185. package/dist/foundation/process-containment/windows-process-inspector.d.ts +19 -0
  186. package/dist/foundation/process-containment/windows-process-inspector.js +56 -0
  187. package/dist/foundation/protocol/client.d.ts +18 -0
  188. package/dist/foundation/protocol/client.js +130 -0
  189. package/dist/foundation/protocol/index.d.ts +3 -0
  190. package/dist/foundation/protocol/index.js +2 -0
  191. package/dist/foundation/protocol/messages.d.ts +90 -0
  192. package/dist/foundation/protocol/messages.js +100 -0
  193. package/dist/foundation/release/bootstrap.d.ts +51 -0
  194. package/dist/foundation/release/bootstrap.js +427 -0
  195. package/dist/foundation/release/cohort-state.d.ts +157 -0
  196. package/dist/foundation/release/cohort-state.js +472 -0
  197. package/dist/foundation/release/dependency-certification-retention.d.ts +7 -0
  198. package/dist/foundation/release/dependency-certification-retention.js +88 -0
  199. package/dist/foundation/release/dependency-certification.d.ts +24 -0
  200. package/dist/foundation/release/dependency-certification.js +266 -0
  201. package/dist/foundation/release/dependency-layer.d.ts +78 -0
  202. package/dist/foundation/release/dependency-layer.js +466 -0
  203. package/dist/foundation/release/endpoints.d.ts +24 -0
  204. package/dist/foundation/release/endpoints.js +134 -0
  205. package/dist/foundation/release/immutable-platform.d.ts +6 -0
  206. package/dist/foundation/release/immutable-platform.js +13 -0
  207. package/dist/foundation/release/index.d.ts +32 -0
  208. package/dist/foundation/release/index.js +17 -0
  209. package/dist/foundation/release/release-gc.d.ts +71 -0
  210. package/dist/foundation/release/release-gc.js +764 -0
  211. package/dist/foundation/release/release-store.d.ts +49 -0
  212. package/dist/foundation/release/release-store.js +235 -0
  213. package/dist/foundation/release/release.d.ts +43 -0
  214. package/dist/foundation/release/release.js +215 -0
  215. package/dist/foundation/release/restart-certification.d.ts +68 -0
  216. package/dist/foundation/release/restart-certification.js +227 -0
  217. package/dist/foundation/release/types.d.ts +11 -0
  218. package/dist/foundation/release/types.js +1 -0
  219. package/dist/foundation/release/update-activation.d.ts +72 -0
  220. package/dist/foundation/release/update-activation.js +204 -0
  221. package/dist/foundation/release/update-launch.d.ts +6 -0
  222. package/dist/foundation/release/update-launch.js +17 -0
  223. package/dist/foundation/release/update-recovery.d.ts +76 -0
  224. package/dist/foundation/release/update-recovery.js +356 -0
  225. package/dist/foundation/release/update-transaction.d.ts +42 -0
  226. package/dist/foundation/release/update-transaction.js +101 -0
  227. package/dist/foundation/release/update.d.ts +114 -0
  228. package/dist/foundation/release/update.js +633 -0
  229. package/dist/foundation/release/warmup.d.ts +3 -0
  230. package/dist/foundation/release/warmup.js +47 -0
  231. package/dist/foundation/startup/index.d.ts +4 -0
  232. package/dist/foundation/startup/index.js +2 -0
  233. package/dist/foundation/startup/startup-budget.d.ts +46 -0
  234. package/dist/foundation/startup/startup-budget.js +42 -0
  235. package/dist/foundation/startup/startup-descriptor.js +34 -0
  236. package/dist/foundation/startup/startup-runtime.d.ts +27 -0
  237. package/dist/foundation/startup/startup-runtime.js +128 -0
  238. package/dist/foundation/storage/control-store.d.ts +18 -0
  239. package/dist/foundation/storage/control-store.js +342 -0
  240. package/dist/foundation/storage/index.d.ts +1 -0
  241. package/dist/foundation/storage/index.js +1 -0
  242. package/dist/foundation/supervision/index.d.ts +3 -0
  243. package/dist/foundation/supervision/index.js +3 -0
  244. package/dist/foundation/supervision/main.d.ts +1 -0
  245. package/dist/foundation/supervision/main.js +84 -0
  246. package/dist/foundation/supervision/paths.d.ts +1 -0
  247. package/dist/foundation/supervision/paths.js +1 -0
  248. package/dist/foundation/supervision/server.d.ts +46 -0
  249. package/dist/foundation/supervision/server.js +573 -0
  250. package/dist/foundation/terminal-cleanup/fatal-exit.d.ts +12 -0
  251. package/dist/foundation/terminal-cleanup/fatal-exit.js +87 -0
  252. package/dist/foundation/terminal-cleanup/index.d.ts +3 -0
  253. package/dist/foundation/terminal-cleanup/index.js +2 -0
  254. package/dist/foundation/terminal-cleanup/terminal-reset.d.ts +4 -0
  255. package/dist/foundation/terminal-cleanup/terminal-reset.js +40 -0
  256. package/dist/integrations/pi/components/components.d.ts +4 -0
  257. package/dist/integrations/pi/components/components.js +64 -0
  258. package/dist/integrations/pi/components/conformance.d.ts +18 -0
  259. package/dist/integrations/pi/components/conformance.js +70 -0
  260. package/dist/integrations/pi/components/editor-interaction.d.ts +38 -0
  261. package/dist/integrations/pi/components/editor-interaction.js +1 -0
  262. package/dist/integrations/pi/components/history-editor-loader.d.ts +5 -0
  263. package/dist/integrations/pi/components/history-editor-loader.js +5 -0
  264. package/dist/integrations/pi/components/index.d.ts +23 -0
  265. package/dist/integrations/pi/components/index.js +14 -0
  266. package/dist/integrations/pi/components/models-dialog.d.ts +55 -0
  267. package/dist/integrations/pi/components/models-dialog.js +310 -0
  268. package/dist/integrations/pi/components/owned-editor-ux.d.ts +74 -0
  269. package/dist/integrations/pi/components/owned-editor-ux.js +1094 -0
  270. package/dist/integrations/pi/components/path-word-ranges.d.ts +2 -0
  271. package/dist/integrations/pi/components/path-word-ranges.js +37 -0
  272. package/dist/integrations/pi/components/prompt-input-port.d.ts +18 -0
  273. package/dist/integrations/pi/components/prompt-input-port.js +1 -0
  274. package/dist/integrations/pi/components/resources/builtin-themes.d.ts +167 -0
  275. package/dist/integrations/pi/components/resources/builtin-themes.js +168 -0
  276. package/dist/integrations/pi/components/shell-components.d.ts +7 -0
  277. package/dist/integrations/pi/components/shell-components.js +7 -0
  278. package/dist/integrations/pi/components/shell-editor-autocomplete.d.ts +21 -0
  279. package/dist/integrations/pi/components/shell-editor-autocomplete.js +322 -0
  280. package/dist/integrations/pi/components/shell-extension-ui.d.ts +35 -0
  281. package/dist/integrations/pi/components/shell-extension-ui.js +280 -0
  282. package/dist/integrations/pi/components/shell-footer-status.d.ts +7 -0
  283. package/dist/integrations/pi/components/shell-footer-status.js +249 -0
  284. package/dist/integrations/pi/components/shell-presenters-info.d.ts +53 -0
  285. package/dist/integrations/pi/components/shell-presenters-info.js +134 -0
  286. package/dist/integrations/pi/components/shell-presenters-transcript.d.ts +29 -0
  287. package/dist/integrations/pi/components/shell-presenters-transcript.js +433 -0
  288. package/dist/integrations/pi/components/shell-selectors-dialogs.d.ts +133 -0
  289. package/dist/integrations/pi/components/shell-selectors-dialogs.js +255 -0
  290. package/dist/integrations/pi/components/shell-shared-facade.d.ts +225 -0
  291. package/dist/integrations/pi/components/shell-shared-facade.js +92 -0
  292. package/dist/integrations/pi/components/skills-command.d.ts +47 -0
  293. package/dist/integrations/pi/components/skills-command.js +118 -0
  294. package/dist/integrations/pi/components/skills-dialog.d.ts +9 -0
  295. package/dist/integrations/pi/components/skills-dialog.js +112 -0
  296. package/dist/integrations/pi/components/submitted-prompt-adapter.d.ts +17 -0
  297. package/dist/integrations/pi/components/submitted-prompt-adapter.js +49 -0
  298. package/dist/integrations/pi/components/tool-image-presentation.d.ts +21 -0
  299. package/dist/integrations/pi/components/tool-image-presentation.js +83 -0
  300. package/dist/integrations/pi/components/tool-result-adapter.d.ts +6 -0
  301. package/dist/integrations/pi/components/tool-result-adapter.js +27 -0
  302. package/dist/integrations/pi/components/transcript-image-resolver.d.ts +7 -0
  303. package/dist/integrations/pi/components/transcript-image-resolver.js +19 -0
  304. package/dist/integrations/pi/components/upstream/adjacent/core/keybindings.d.ts +445 -0
  305. package/dist/integrations/pi/components/upstream/adjacent/core/keybindings.js +370 -0
  306. package/dist/integrations/pi/components/upstream/assets/earendil-image.json +12 -0
  307. package/dist/integrations/pi/components/upstream/components/countdown-timer.d.ts +13 -0
  308. package/dist/integrations/pi/components/upstream/components/daxnuts.d.ts +29 -0
  309. package/dist/integrations/pi/components/upstream/components/daxnuts.js +146 -0
  310. package/dist/integrations/pi/components/upstream/components/earendil-announcement.d.ts +4 -0
  311. package/dist/integrations/pi/components/upstream/components/earendil-announcement.js +48 -0
  312. package/dist/integrations/pi/components/upstream/components/extension-editor.d.ts +20 -0
  313. package/dist/integrations/pi/components/upstream/components/extension-editor.js +84 -0
  314. package/dist/integrations/pi/components/upstream/components/mermaid.js +81 -0
  315. package/dist/integrations/pi/components/upstream/components/owned-editor.d.ts +52 -0
  316. package/dist/integrations/pi/components/upstream/components/owned-editor.js +222 -0
  317. package/dist/integrations/pi/components/upstream/components/scoped-models-selector.d.ts +59 -0
  318. package/dist/integrations/pi/components/upstream/components/scoped-models-selector.js +346 -0
  319. package/dist/integrations/pi/components/upstream/components/session-footer.d.ts +11 -0
  320. package/dist/integrations/pi/components/upstream/components/session-footer.js +123 -0
  321. package/dist/integrations/pi/components/upstream/components/session-selector-search.js +161 -0
  322. package/dist/integrations/pi/components/upstream/components/session-selector.d.ts +95 -0
  323. package/dist/integrations/pi/components/upstream/components/session-selector.js +893 -0
  324. package/dist/integrations/pi/components/upstream/components/skill-invocation-message.d.ts +21 -0
  325. package/dist/integrations/pi/components/upstream/components/skill-invocation-message.js +46 -0
  326. package/dist/integrations/pi/components/upstream/components/status-indicator.d.ts +35 -0
  327. package/dist/integrations/pi/components/upstream/components/status-indicator.js +69 -0
  328. package/dist/integrations/pi/components/upstream/components/tool-execution.d.ts +67 -0
  329. package/dist/integrations/pi/components/upstream/components/tool-execution.js +365 -0
  330. package/dist/integrations/pi/components/upstream/components/tree-selector.d.ts +101 -0
  331. package/dist/integrations/pi/components/upstream/components/tree-selector.js +1275 -0
  332. package/dist/integrations/pi/components/upstream/components/trust-selector.d.ts +33 -0
  333. package/dist/integrations/pi/components/upstream/components/trust-selector.js +81 -0
  334. package/dist/integrations/pi/components/upstream/external-editor.js +43 -0
  335. package/dist/integrations/pi/components/upstream/history/editor-core.d.ts +289 -0
  336. package/dist/integrations/pi/components/upstream/history/editor-core.js +2144 -0
  337. package/dist/integrations/pi/components/upstream/history/kill-ring.d.ts +35 -0
  338. package/dist/integrations/pi/components/upstream/history/kill-ring.js +51 -0
  339. package/dist/integrations/pi/components/upstream/history/printable-key.d.ts +1 -0
  340. package/dist/integrations/pi/components/upstream/history/printable-key.js +43 -0
  341. package/dist/integrations/pi/components/upstream/history/text-helpers.d.ts +14 -0
  342. package/dist/integrations/pi/components/upstream/history/text-helpers.js +31 -0
  343. package/dist/integrations/pi/components/upstream/history/undo-stack.d.ts +25 -0
  344. package/dist/integrations/pi/components/upstream/history/undo-stack.js +39 -0
  345. package/dist/integrations/pi/components/upstream/history/word-navigation.d.ts +24 -0
  346. package/dist/integrations/pi/components/upstream/history/word-navigation.js +103 -0
  347. package/dist/integrations/pi/components/upstream/model-search.d.ts +18 -0
  348. package/dist/integrations/pi/components/upstream/theme/theme-controller.d.ts +33 -0
  349. package/dist/integrations/pi/components/upstream/theme/theme-controller.js +114 -0
  350. package/dist/integrations/pi/components/upstream/theme/theme.d.ts +61 -0
  351. package/dist/integrations/pi/components/upstream/theme/theme.js +337 -0
  352. package/dist/integrations/pi/engine/adapter.d.ts +139 -0
  353. package/dist/integrations/pi/engine/adapter.js +660 -0
  354. package/dist/integrations/pi/engine/changelog.d.ts +2 -0
  355. package/dist/integrations/pi/engine/changelog.js +63 -0
  356. package/dist/integrations/pi/engine/command-dispatch.d.ts +41 -0
  357. package/dist/integrations/pi/engine/command-dispatch.js +125 -0
  358. package/dist/integrations/pi/engine/compaction-progress.d.ts +28 -0
  359. package/dist/integrations/pi/engine/compaction-progress.js +96 -0
  360. package/dist/integrations/pi/engine/conformance.d.ts +39 -0
  361. package/dist/integrations/pi/engine/conformance.js +140 -0
  362. package/dist/integrations/pi/engine/event-delivery.d.ts +100 -0
  363. package/dist/integrations/pi/engine/event-delivery.js +184 -0
  364. package/dist/integrations/pi/engine/extension-ui-binding.d.ts +35 -0
  365. package/dist/integrations/pi/engine/extension-ui-binding.js +81 -0
  366. package/dist/integrations/pi/engine/http-dispatcher.d.ts +4 -0
  367. package/dist/integrations/pi/engine/http-dispatcher.js +25 -0
  368. package/dist/integrations/pi/engine/index.d.ts +18 -0
  369. package/dist/integrations/pi/engine/index.js +10 -0
  370. package/dist/integrations/pi/engine/message-values.d.ts +29 -0
  371. package/dist/integrations/pi/engine/message-values.js +168 -0
  372. package/dist/integrations/pi/engine/package-integration.d.ts +13 -0
  373. package/dist/integrations/pi/engine/package-integration.js +118 -0
  374. package/dist/integrations/pi/engine/pending-delivery.d.ts +30 -0
  375. package/dist/integrations/pi/engine/pending-delivery.js +156 -0
  376. package/dist/integrations/pi/engine/pi-settings-metadata.json +385 -0
  377. package/dist/integrations/pi/engine/project-trust-preflight.d.ts +22 -0
  378. package/dist/integrations/pi/engine/project-trust-preflight.js +50 -0
  379. package/dist/integrations/pi/engine/prompt-suggestions.d.ts +30 -0
  380. package/dist/integrations/pi/engine/prompt-suggestions.js +102 -0
  381. package/dist/integrations/pi/engine/provider-authentication.d.ts +34 -0
  382. package/dist/integrations/pi/engine/provider-authentication.js +209 -0
  383. package/dist/integrations/pi/engine/resource-catalog.d.ts +50 -0
  384. package/dist/integrations/pi/engine/resource-catalog.js +299 -0
  385. package/dist/integrations/pi/engine/resources/changelog.json +12 -0
  386. package/dist/integrations/pi/engine/runtime-integration.d.ts +53 -0
  387. package/dist/integrations/pi/engine/runtime-integration.js +118 -0
  388. package/dist/integrations/pi/engine/session-events.d.ts +48 -0
  389. package/dist/integrations/pi/engine/session-events.js +223 -0
  390. package/dist/integrations/pi/engine/session-integration.d.ts +67 -0
  391. package/dist/integrations/pi/engine/session-integration.js +195 -0
  392. package/dist/integrations/pi/engine/session-runtime.d.ts +84 -0
  393. package/dist/integrations/pi/engine/session-runtime.js +249 -0
  394. package/dist/integrations/pi/engine/session-selection.d.ts +28 -0
  395. package/dist/integrations/pi/engine/session-selection.js +90 -0
  396. package/dist/integrations/pi/engine/settings-bridge.d.ts +121 -0
  397. package/dist/integrations/pi/engine/settings-bridge.js +514 -0
  398. package/dist/integrations/pi/engine/settings-metadata.d.ts +31 -0
  399. package/dist/integrations/pi/engine/settings-metadata.js +67 -0
  400. package/dist/integrations/pi/engine/settings-port.d.ts +42 -0
  401. package/dist/integrations/pi/engine/settings-port.js +353 -0
  402. package/dist/integrations/pi/engine/tool-rendering.d.ts +13 -0
  403. package/dist/integrations/pi/engine/tool-rendering.js +145 -0
  404. package/dist/integrations/pi/engine/transcript-image-assets.d.ts +11 -0
  405. package/dist/integrations/pi/engine/transcript-image-assets.js +86 -0
  406. package/dist/integrations/pi/engine/transcript-projection.d.ts +39 -0
  407. package/dist/integrations/pi/engine/transcript-projection.js +405 -0
  408. package/dist/integrations/pi/engine/usage-view.d.ts +4 -0
  409. package/dist/integrations/pi/engine/usage-view.js +56 -0
  410. package/dist/integrations/pi/engine/windows-filesystem-hygiene.d.ts +21 -0
  411. package/dist/integrations/pi/engine/windows-filesystem-hygiene.js +55 -0
  412. package/dist/integrations/pi/engine/workflow-contexts.d.ts +66 -0
  413. package/dist/integrations/pi/engine/workflow-contexts.js +360 -0
  414. package/dist/integrations/pi/engine/workflow-runner.d.ts +60 -0
  415. package/dist/integrations/pi/engine/workflow-runner.js +533 -0
  416. package/dist/integrations/pi/engine/workflow-support.d.ts +33 -0
  417. package/dist/integrations/pi/engine/workflow-support.js +352 -0
  418. package/dist/integrations/pi/engine/workflows.d.ts +275 -0
  419. package/dist/integrations/pi/engine/workflows.js +71 -0
  420. package/dist/integrations/pi/startup-public.d.ts +2 -0
  421. package/dist/integrations/pi/startup-public.js +2223 -0
  422. package/dist/integrations/pi/startup-public.manifest.json +12502 -0
  423. package/dist/integrations/pi/tui-runtime/adapter.d.ts +56 -0
  424. package/dist/integrations/pi/tui-runtime/adapter.js +783 -0
  425. package/dist/integrations/pi/tui-runtime/contracts.d.ts +156 -0
  426. package/dist/integrations/pi/tui-runtime/contracts.js +1 -0
  427. package/dist/integrations/pi/tui-runtime/damage-aware-terminal.d.ts +88 -0
  428. package/dist/integrations/pi/tui-runtime/damage-aware-terminal.js +433 -0
  429. package/dist/integrations/pi/tui-runtime/index.d.ts +9 -0
  430. package/dist/integrations/pi/tui-runtime/index.js +5 -0
  431. package/dist/integrations/pi/tui-runtime/input-presentation-coordinator.d.ts +39 -0
  432. package/dist/integrations/pi/tui-runtime/input-presentation-coordinator.js +139 -0
  433. package/dist/integrations/pi/tui-runtime/mouse-report-input.d.ts +13 -0
  434. package/dist/integrations/pi/tui-runtime/mouse-report-input.js +57 -0
  435. package/dist/integrations/pi/tui-runtime/overlay-geometry.d.ts +32 -0
  436. package/dist/integrations/pi/tui-runtime/overlay-geometry.js +158 -0
  437. package/dist/integrations/pi/tui-runtime/presentation-adapter.d.ts +4 -0
  438. package/dist/integrations/pi/tui-runtime/presentation-adapter.js +48 -0
  439. package/dist/native/darwin-arm64/manifest.json +4 -4
  440. package/dist/native/darwin-arm64/process-guardian +0 -0
  441. package/dist/native/linux-x64/manifest.json +3 -3
  442. package/dist/native/linux-x64/process-guardian +0 -0
  443. package/dist/native/win32-x64/manifest.json +3 -3
  444. package/dist/native/win32-x64/process-guardian.exe +0 -0
  445. package/dist/product-identity.d.ts +37 -0
  446. package/dist/product-identity.js +119 -0
  447. package/dist/product-identity.json +85 -0
  448. package/dist/runtime-payload-inventory.json +127148 -0
  449. package/dist/ui/apps/contracts.d.ts +72 -0
  450. package/dist/ui/apps/host.d.ts +42 -0
  451. package/dist/ui/apps/host.js +156 -0
  452. package/dist/ui/apps/index.d.ts +5 -0
  453. package/dist/ui/apps/index.js +3 -0
  454. package/dist/ui/apps/registry.d.ts +12 -0
  455. package/dist/ui/apps/registry.js +33 -0
  456. package/dist/ui/components/dialog-panel.js +49 -0
  457. package/dist/ui/components/frame.d.ts +22 -0
  458. package/dist/ui/components/frame.js +55 -0
  459. package/dist/ui/components/index.d.ts +47 -0
  460. package/dist/ui/components/index.js +25 -0
  461. package/dist/ui/components/line-input.d.ts +68 -0
  462. package/dist/ui/components/line-input.js +224 -0
  463. package/dist/ui/components/list-view.d.ts +60 -0
  464. package/dist/ui/components/list-view.js +82 -0
  465. package/dist/ui/components/mouse.d.ts +25 -0
  466. package/dist/ui/components/mouse.js +70 -0
  467. package/dist/ui/components/progress-status.d.ts +2 -0
  468. package/dist/ui/components/progress-status.js +4 -0
  469. package/dist/ui/components/prompt-input.d.ts +32 -0
  470. package/dist/ui/components/prompt-input.js +51 -0
  471. package/dist/ui/components/scrollbar.d.ts +88 -0
  472. package/dist/ui/components/scrollbar.js +137 -0
  473. package/dist/ui/components/selection-copy.d.ts +24 -0
  474. package/dist/ui/components/selection-copy.js +39 -0
  475. package/dist/ui/components/shortcuts.d.ts +58 -0
  476. package/dist/ui/components/shortcuts.js +82 -0
  477. package/dist/ui/components/spans.d.ts +28 -0
  478. package/dist/ui/components/spans.js +266 -0
  479. package/dist/ui/components/submitted-prompt.d.ts +23 -0
  480. package/dist/ui/components/submitted-prompt.js +50 -0
  481. package/dist/ui/components/surface.d.ts +20 -0
  482. package/dist/ui/components/surface.js +44 -0
  483. package/dist/ui/components/text-selection.d.ts +62 -0
  484. package/dist/ui/components/text-selection.js +210 -0
  485. package/dist/ui/components/text.d.ts +38 -0
  486. package/dist/ui/components/text.js +185 -0
  487. package/dist/ui/components/transcript-viewport.d.ts +173 -0
  488. package/dist/ui/components/transcript-viewport.js +753 -0
  489. package/dist/ui/components/visible-hyperlinks.d.ts +26 -0
  490. package/dist/ui/components/visible-hyperlinks.js +97 -0
  491. package/dist/ui/settings/declarations.d.ts +127 -0
  492. package/dist/ui/settings/declarations.js +124 -0
  493. package/dist/ui/settings/index.d.ts +10 -0
  494. package/dist/ui/settings/index.js +5 -0
  495. package/dist/ui/settings/manager.d.ts +54 -0
  496. package/dist/ui/settings/manager.js +256 -0
  497. package/dist/ui/settings/migrations.d.ts +13 -0
  498. package/dist/ui/settings/migrations.js +92 -0
  499. package/dist/ui/settings/sections.d.ts +52 -0
  500. package/dist/ui/settings/sections.js +112 -0
  501. package/docs/architecture/boundaries.md +17 -13
  502. package/docs/architecture/code-documentation.md +77 -0
  503. package/docs/architecture/history-editor-provenance.md +100 -0
  504. package/docs/architecture/internal-naming.md +93 -0
  505. package/docs/architecture/process-guardian-provenance.md +3 -1
  506. package/docs/architecture/project-structure.md +69 -30
  507. package/docs/architecture/prompt-suggestions.md +68 -0
  508. package/docs/architecture/resource-and-data-policy.md +28 -2
  509. package/docs/architecture/response-copy-delivery.md +85 -0
  510. package/docs/architecture/terminal-host-proof-gate.md +1 -1
  511. package/docs/architecture/terminal-host-spike-evidence.md +1 -1
  512. package/docs/architecture/tool-image-presentation.md +62 -0
  513. package/docs/architecture/toolchain.md +32 -10
  514. package/docs/architecture/ui-reference-provenance.md +61 -6
  515. package/docs/ci-release-runbook.md +256 -79
  516. package/docs/features/launch-profiles.md +24 -17
  517. package/docs/features/modal-content-interaction.md +38 -0
  518. package/docs/features/prompt-history.md +149 -0
  519. package/docs/local-worktree-cleanup.md +212 -0
  520. package/docs/manual-code-streaming-cleanup.md +88 -0
  521. package/docs/manual-ghost-link-baseline.md +89 -0
  522. package/docs/manual-launch-instance-acceptance.md +12 -35
  523. package/docs/manual-owned-ui-checkpoint.md +79 -0
  524. package/docs/manual-pi-boundary-candidate.md +4 -5
  525. package/docs/manual-terminal-colour-check.md +4 -3
  526. package/docs/openspec-archive-automation.md +259 -0
  527. package/docs/repository-governance-live-acceptance.md +77 -0
  528. package/docs/validation.md +100 -0
  529. package/package.json +52 -34
  530. package/dist/src/cli/capabilities.d.ts +0 -15
  531. package/dist/src/cli/capabilities.js +0 -7
  532. package/dist/src/cli/dispatch.d.ts +0 -32
  533. package/dist/src/cli/dispatch.js +0 -142
  534. package/dist/src/cli/index.d.ts +0 -5
  535. package/dist/src/cli/index.js +0 -5
  536. package/dist/src/cli/packages.d.ts +0 -23
  537. package/dist/src/cli/packages.js +0 -84
  538. package/dist/src/cli/version-stats.d.ts +0 -16
  539. package/dist/src/cli/version-stats.js +0 -72
  540. package/dist/src/cli/version.d.ts +0 -2
  541. package/dist/src/cli/version.js +0 -23
  542. package/dist/src/composition/index.d.ts +0 -48
  543. package/dist/src/composition/index.js +0 -258
  544. package/dist/src/features/launch/development-launch.js +0 -28
  545. package/dist/src/features/launch/index.d.ts +0 -7
  546. package/dist/src/features/launch/index.js +0 -7
  547. package/dist/src/features/launch/intent.d.ts +0 -7
  548. package/dist/src/features/launch/intent.js +0 -4
  549. package/dist/src/features/launch/prepare-launch.d.ts +0 -13
  550. package/dist/src/features/launch/prepare-launch.js +0 -21
  551. package/dist/src/features/launch/profile-paths.d.ts +0 -15
  552. package/dist/src/features/launch/profile-paths.js +0 -31
  553. package/dist/src/features/launch/profiles.d.ts +0 -12
  554. package/dist/src/features/launch/profiles.js +0 -26
  555. package/dist/src/features/launch/runtime-selection.d.ts +0 -19
  556. package/dist/src/features/launch/runtime-selection.js +0 -13
  557. package/dist/src/features/owned-ui/customization.d.ts +0 -38
  558. package/dist/src/features/owned-ui/customization.js +0 -108
  559. package/dist/src/features/owned-ui/diagnostics.d.ts +0 -33
  560. package/dist/src/features/owned-ui/diagnostics.js +0 -94
  561. package/dist/src/features/owned-ui/index.d.ts +0 -4
  562. package/dist/src/features/owned-ui/index.js +0 -4
  563. package/dist/src/features/owned-ui/run.d.ts +0 -11
  564. package/dist/src/features/owned-ui/run.js +0 -15
  565. package/dist/src/features/owned-ui/settings-app.d.ts +0 -22
  566. package/dist/src/features/owned-ui/settings-app.js +0 -633
  567. package/dist/src/features/workspace/capabilities.d.ts +0 -31
  568. package/dist/src/features/workspace/capabilities.js +0 -75
  569. package/dist/src/features/workspace/index.d.ts +0 -6
  570. package/dist/src/features/workspace/index.js +0 -6
  571. package/dist/src/features/workspace/presentation.d.ts +0 -30
  572. package/dist/src/features/workspace/presentation.js +0 -70
  573. package/dist/src/features/workspace/reconciliation.d.ts +0 -15
  574. package/dist/src/features/workspace/reconciliation.js +0 -82
  575. package/dist/src/features/workspace/reducer.d.ts +0 -42
  576. package/dist/src/features/workspace/reducer.js +0 -213
  577. package/dist/src/features/workspace/router.d.ts +0 -31
  578. package/dist/src/features/workspace/router.js +0 -124
  579. package/dist/src/features/workspace/store.d.ts +0 -17
  580. package/dist/src/features/workspace/store.js +0 -54
  581. package/dist/src/foundation/agent-engine-contracts/capability-ports.d.ts +0 -95
  582. package/dist/src/foundation/agent-engine-contracts/domain-validation.js +0 -89
  583. package/dist/src/foundation/agent-engine-contracts/domain.d.ts +0 -116
  584. package/dist/src/foundation/agent-engine-contracts/index.d.ts +0 -8
  585. package/dist/src/foundation/agent-engine-contracts/index.js +0 -8
  586. package/dist/src/foundation/agent-engine-contracts/package-ports.d.ts +0 -54
  587. package/dist/src/foundation/launch-guardian/index.d.ts +0 -1
  588. package/dist/src/foundation/launch-guardian/index.js +0 -1
  589. package/dist/src/foundation/launch-guardian/main.d.ts +0 -31
  590. package/dist/src/foundation/launch-guardian/main.js +0 -165
  591. package/dist/src/foundation/lifecycle/index.d.ts +0 -4
  592. package/dist/src/foundation/lifecycle/index.js +0 -4
  593. package/dist/src/foundation/lifecycle/model.d.ts +0 -64
  594. package/dist/src/foundation/lifecycle/model.js +0 -40
  595. package/dist/src/foundation/lifecycle/paths.d.ts +0 -10
  596. package/dist/src/foundation/lifecycle/paths.js +0 -42
  597. package/dist/src/foundation/native-host-protocol/codec.d.ts +0 -11
  598. package/dist/src/foundation/native-host-protocol/codec.js +0 -56
  599. package/dist/src/foundation/native-host-protocol/evidence.d.ts +0 -67
  600. package/dist/src/foundation/native-host-protocol/evidence.js +0 -141
  601. package/dist/src/foundation/native-host-protocol/index.d.ts +0 -4
  602. package/dist/src/foundation/native-host-protocol/index.js +0 -4
  603. package/dist/src/foundation/native-host-protocol/messages.d.ts +0 -56
  604. package/dist/src/foundation/native-host-protocol/messages.js +0 -149
  605. package/dist/src/foundation/native-host-protocol/proof-gate.d.ts +0 -13
  606. package/dist/src/foundation/native-host-protocol/proof-gate.js +0 -33
  607. package/dist/src/foundation/owned-ui-contracts/extension-ui.d.ts +0 -302
  608. package/dist/src/foundation/owned-ui-contracts/index.d.ts +0 -3
  609. package/dist/src/foundation/owned-ui-contracts/index.js +0 -3
  610. package/dist/src/foundation/owned-ui-contracts/model.d.ts +0 -241
  611. package/dist/src/foundation/owned-ui-contracts/validation.d.ts +0 -11
  612. package/dist/src/foundation/owned-ui-contracts/validation.js +0 -395
  613. package/dist/src/foundation/owned-ui-settings/declarations.d.ts +0 -13
  614. package/dist/src/foundation/owned-ui-settings/declarations.js +0 -39
  615. package/dist/src/foundation/owned-ui-settings/index.d.ts +0 -6
  616. package/dist/src/foundation/owned-ui-settings/index.js +0 -6
  617. package/dist/src/foundation/owned-ui-settings/migrations.d.ts +0 -13
  618. package/dist/src/foundation/owned-ui-settings/migrations.js +0 -28
  619. package/dist/src/foundation/owned-ui-settings/sections.d.ts +0 -70
  620. package/dist/src/foundation/owned-ui-settings/sections.js +0 -93
  621. package/dist/src/foundation/owned-ui-settings/session.d.ts +0 -44
  622. package/dist/src/foundation/owned-ui-settings/session.js +0 -145
  623. package/dist/src/foundation/owned-ui-settings/store.d.ts +0 -28
  624. package/dist/src/foundation/owned-ui-settings/store.js +0 -90
  625. package/dist/src/foundation/pi-component-adapter/components.d.ts +0 -4
  626. package/dist/src/foundation/pi-component-adapter/components.js +0 -64
  627. package/dist/src/foundation/pi-component-adapter/conformance.d.ts +0 -17
  628. package/dist/src/foundation/pi-component-adapter/conformance.js +0 -69
  629. package/dist/src/foundation/pi-component-adapter/index.d.ts +0 -13
  630. package/dist/src/foundation/pi-component-adapter/index.js +0 -13
  631. package/dist/src/foundation/pi-component-adapter/resources/builtin-themes.d.ts +0 -165
  632. package/dist/src/foundation/pi-component-adapter/resources/builtin-themes.js +0 -166
  633. package/dist/src/foundation/pi-component-adapter/shell-components.d.ts +0 -6
  634. package/dist/src/foundation/pi-component-adapter/shell-components.js +0 -6
  635. package/dist/src/foundation/pi-component-adapter/shell-editor-autocomplete.d.ts +0 -11
  636. package/dist/src/foundation/pi-component-adapter/shell-editor-autocomplete.js +0 -162
  637. package/dist/src/foundation/pi-component-adapter/shell-extension-ui.d.ts +0 -35
  638. package/dist/src/foundation/pi-component-adapter/shell-extension-ui.js +0 -279
  639. package/dist/src/foundation/pi-component-adapter/shell-footer-status.d.ts +0 -7
  640. package/dist/src/foundation/pi-component-adapter/shell-footer-status.js +0 -189
  641. package/dist/src/foundation/pi-component-adapter/shell-presenters-transcript.d.ts +0 -57
  642. package/dist/src/foundation/pi-component-adapter/shell-presenters-transcript.js +0 -429
  643. package/dist/src/foundation/pi-component-adapter/shell-selectors-dialogs.d.ts +0 -113
  644. package/dist/src/foundation/pi-component-adapter/shell-selectors-dialogs.js +0 -235
  645. package/dist/src/foundation/pi-component-adapter/shell-shared-facade.d.ts +0 -116
  646. package/dist/src/foundation/pi-component-adapter/shell-shared-facade.js +0 -87
  647. package/dist/src/foundation/pi-component-adapter/upstream/adjacent/core/keybindings.d.ts +0 -422
  648. package/dist/src/foundation/pi-component-adapter/upstream/adjacent/core/keybindings.js +0 -296
  649. package/dist/src/foundation/pi-component-adapter/upstream/components/countdown-timer.d.ts +0 -10
  650. package/dist/src/foundation/pi-component-adapter/upstream/components/custom-entry.d.ts +0 -17
  651. package/dist/src/foundation/pi-component-adapter/upstream/components/custom-entry.js +0 -51
  652. package/dist/src/foundation/pi-component-adapter/upstream/components/daxnuts.d.ts +0 -22
  653. package/dist/src/foundation/pi-component-adapter/upstream/components/daxnuts.js +0 -142
  654. package/dist/src/foundation/pi-component-adapter/upstream/components/earendil-announcement.d.ts +0 -4
  655. package/dist/src/foundation/pi-component-adapter/upstream/components/earendil-announcement.js +0 -19
  656. package/dist/src/foundation/pi-component-adapter/upstream/components/extension-editor.d.ts +0 -17
  657. package/dist/src/foundation/pi-component-adapter/upstream/components/extension-editor.js +0 -81
  658. package/dist/src/foundation/pi-component-adapter/upstream/components/first-time-setup.d.ts +0 -24
  659. package/dist/src/foundation/pi-component-adapter/upstream/components/first-time-setup.js +0 -105
  660. package/dist/src/foundation/pi-component-adapter/upstream/components/markdown-transform.d.ts +0 -2
  661. package/dist/src/foundation/pi-component-adapter/upstream/components/markdown-transform.js +0 -18
  662. package/dist/src/foundation/pi-component-adapter/upstream/components/mermaid.js +0 -77
  663. package/dist/src/foundation/pi-component-adapter/upstream/components/owned-editor.d.ts +0 -18
  664. package/dist/src/foundation/pi-component-adapter/upstream/components/owned-editor.js +0 -55
  665. package/dist/src/foundation/pi-component-adapter/upstream/components/scoped-models-selector.d.ts +0 -55
  666. package/dist/src/foundation/pi-component-adapter/upstream/components/scoped-models-selector.js +0 -342
  667. package/dist/src/foundation/pi-component-adapter/upstream/components/session-footer.d.ts +0 -10
  668. package/dist/src/foundation/pi-component-adapter/upstream/components/session-footer.js +0 -120
  669. package/dist/src/foundation/pi-component-adapter/upstream/components/session-selector-search.js +0 -159
  670. package/dist/src/foundation/pi-component-adapter/upstream/components/session-selector.d.ts +0 -95
  671. package/dist/src/foundation/pi-component-adapter/upstream/components/session-selector.js +0 -889
  672. package/dist/src/foundation/pi-component-adapter/upstream/components/skill-invocation-message.d.ts +0 -19
  673. package/dist/src/foundation/pi-component-adapter/upstream/components/skill-invocation-message.js +0 -44
  674. package/dist/src/foundation/pi-component-adapter/upstream/components/status-indicator.d.ts +0 -30
  675. package/dist/src/foundation/pi-component-adapter/upstream/components/status-indicator.js +0 -59
  676. package/dist/src/foundation/pi-component-adapter/upstream/components/tree-selector.d.ts +0 -98
  677. package/dist/src/foundation/pi-component-adapter/upstream/components/tree-selector.js +0 -1272
  678. package/dist/src/foundation/pi-component-adapter/upstream/components/trust-selector.d.ts +0 -33
  679. package/dist/src/foundation/pi-component-adapter/upstream/components/trust-selector.js +0 -76
  680. package/dist/src/foundation/pi-component-adapter/upstream/external-editor.js +0 -39
  681. package/dist/src/foundation/pi-component-adapter/upstream/model-search.d.ts +0 -15
  682. package/dist/src/foundation/pi-component-adapter/upstream/theme/theme-controller.d.ts +0 -25
  683. package/dist/src/foundation/pi-component-adapter/upstream/theme/theme-controller.js +0 -117
  684. package/dist/src/foundation/pi-component-adapter/upstream/theme/theme.d.ts +0 -61
  685. package/dist/src/foundation/pi-component-adapter/upstream/theme/theme.js +0 -326
  686. package/dist/src/foundation/pi-engine-adapter/adapter.d.ts +0 -164
  687. package/dist/src/foundation/pi-engine-adapter/adapter.js +0 -2367
  688. package/dist/src/foundation/pi-engine-adapter/conformance.d.ts +0 -37
  689. package/dist/src/foundation/pi-engine-adapter/conformance.js +0 -130
  690. package/dist/src/foundation/pi-engine-adapter/index.d.ts +0 -10
  691. package/dist/src/foundation/pi-engine-adapter/index.js +0 -10
  692. package/dist/src/foundation/pi-engine-adapter/model-auth-integration.d.ts +0 -30
  693. package/dist/src/foundation/pi-engine-adapter/model-auth-integration.js +0 -61
  694. package/dist/src/foundation/pi-engine-adapter/package-integration.d.ts +0 -13
  695. package/dist/src/foundation/pi-engine-adapter/package-integration.js +0 -112
  696. package/dist/src/foundation/pi-engine-adapter/pi-settings-metadata.json +0 -374
  697. package/dist/src/foundation/pi-engine-adapter/resource-extension-integration.d.ts +0 -31
  698. package/dist/src/foundation/pi-engine-adapter/resource-extension-integration.js +0 -80
  699. package/dist/src/foundation/pi-engine-adapter/runtime-integration.d.ts +0 -35
  700. package/dist/src/foundation/pi-engine-adapter/runtime-integration.js +0 -67
  701. package/dist/src/foundation/pi-engine-adapter/session-integration.d.ts +0 -43
  702. package/dist/src/foundation/pi-engine-adapter/session-integration.js +0 -97
  703. package/dist/src/foundation/pi-engine-adapter/settings-integration.d.ts +0 -55
  704. package/dist/src/foundation/pi-engine-adapter/settings-integration.js +0 -233
  705. package/dist/src/foundation/pi-engine-adapter/workflow-controllers.d.ts +0 -20
  706. package/dist/src/foundation/pi-engine-adapter/workflow-controllers.js +0 -48
  707. package/dist/src/foundation/pi-engine-adapter/workflows.d.ts +0 -173
  708. package/dist/src/foundation/pi-engine-adapter/workflows.js +0 -60
  709. package/dist/src/foundation/pi-owned-ui-integration/index.d.ts +0 -2
  710. package/dist/src/foundation/pi-owned-ui-integration/index.js +0 -2
  711. package/dist/src/foundation/pi-owned-ui-integration/route-host.d.ts +0 -29
  712. package/dist/src/foundation/pi-owned-ui-integration/session-shell.d.ts +0 -106
  713. package/dist/src/foundation/pi-owned-ui-integration/session-shell.js +0 -1518
  714. package/dist/src/foundation/pi-tui-runtime-adapter/adapter.d.ts +0 -39
  715. package/dist/src/foundation/pi-tui-runtime-adapter/adapter.js +0 -493
  716. package/dist/src/foundation/pi-tui-runtime-adapter/conformance.d.ts +0 -18
  717. package/dist/src/foundation/pi-tui-runtime-adapter/conformance.js +0 -145
  718. package/dist/src/foundation/pi-tui-runtime-adapter/contracts.d.ts +0 -120
  719. package/dist/src/foundation/pi-tui-runtime-adapter/index.d.ts +0 -4
  720. package/dist/src/foundation/pi-tui-runtime-adapter/index.js +0 -4
  721. package/dist/src/foundation/pi-tui-runtime-adapter/presentation-adapter.d.ts +0 -4
  722. package/dist/src/foundation/pi-tui-runtime-adapter/presentation-adapter.js +0 -48
  723. package/dist/src/foundation/presentation-contracts/index.d.ts +0 -96
  724. package/dist/src/foundation/process-containment/index.d.ts +0 -5
  725. package/dist/src/foundation/process-containment/index.js +0 -5
  726. package/dist/src/foundation/process-containment/linux-process-inspector.d.ts +0 -6
  727. package/dist/src/foundation/process-containment/linux-process-inspector.js +0 -26
  728. package/dist/src/foundation/process-containment/native-guardian-containment.d.ts +0 -16
  729. package/dist/src/foundation/process-containment/native-guardian-containment.js +0 -139
  730. package/dist/src/foundation/process-containment/windows-process-inspector.d.ts +0 -17
  731. package/dist/src/foundation/process-containment/windows-process-inspector.js +0 -53
  732. package/dist/src/foundation/protocol/client.d.ts +0 -17
  733. package/dist/src/foundation/protocol/client.js +0 -129
  734. package/dist/src/foundation/protocol/index.d.ts +0 -2
  735. package/dist/src/foundation/protocol/index.js +0 -2
  736. package/dist/src/foundation/protocol/messages.d.ts +0 -89
  737. package/dist/src/foundation/protocol/messages.js +0 -99
  738. package/dist/src/foundation/release/bootstrap.d.ts +0 -29
  739. package/dist/src/foundation/release/bootstrap.js +0 -335
  740. package/dist/src/foundation/release/cohort-state.d.ts +0 -70
  741. package/dist/src/foundation/release/cohort-state.js +0 -202
  742. package/dist/src/foundation/release/index.d.ts +0 -10
  743. package/dist/src/foundation/release/index.js +0 -10
  744. package/dist/src/foundation/release/release-gc.d.ts +0 -5
  745. package/dist/src/foundation/release/release-gc.js +0 -16
  746. package/dist/src/foundation/release/release-store.d.ts +0 -43
  747. package/dist/src/foundation/release/release-store.js +0 -175
  748. package/dist/src/foundation/release/release.d.ts +0 -38
  749. package/dist/src/foundation/release/release.js +0 -204
  750. package/dist/src/foundation/release/update-transaction.d.ts +0 -31
  751. package/dist/src/foundation/release/update-transaction.js +0 -89
  752. package/dist/src/foundation/release/update.d.ts +0 -82
  753. package/dist/src/foundation/release/update.js +0 -527
  754. package/dist/src/foundation/storage/control-store.d.ts +0 -61
  755. package/dist/src/foundation/storage/control-store.js +0 -530
  756. package/dist/src/foundation/storage/index.d.ts +0 -1
  757. package/dist/src/foundation/storage/index.js +0 -1
  758. package/dist/src/foundation/structured-agent-runtime/backpressure.d.ts +0 -46
  759. package/dist/src/foundation/structured-agent-runtime/backpressure.js +0 -118
  760. package/dist/src/foundation/structured-agent-runtime/commands.d.ts +0 -52
  761. package/dist/src/foundation/structured-agent-runtime/commands.js +0 -164
  762. package/dist/src/foundation/structured-agent-runtime/handshake.d.ts +0 -41
  763. package/dist/src/foundation/structured-agent-runtime/handshake.js +0 -151
  764. package/dist/src/foundation/structured-agent-runtime/index.d.ts +0 -5
  765. package/dist/src/foundation/structured-agent-runtime/index.js +0 -5
  766. package/dist/src/foundation/structured-agent-runtime/reconnection.d.ts +0 -37
  767. package/dist/src/foundation/structured-agent-runtime/reconnection.js +0 -129
  768. package/dist/src/foundation/structured-agent-runtime/state.d.ts +0 -56
  769. package/dist/src/foundation/structured-agent-runtime/state.js +0 -118
  770. package/dist/src/foundation/supervision/index.d.ts +0 -3
  771. package/dist/src/foundation/supervision/index.js +0 -3
  772. package/dist/src/foundation/supervision/main.d.ts +0 -1
  773. package/dist/src/foundation/supervision/main.js +0 -41
  774. package/dist/src/foundation/supervision/paths.d.ts +0 -1
  775. package/dist/src/foundation/supervision/paths.js +0 -1
  776. package/dist/src/foundation/supervision/server.d.ts +0 -22
  777. package/dist/src/foundation/supervision/server.js +0 -451
  778. package/dist/src/foundation/ui-apps/contracts.d.ts +0 -42
  779. package/dist/src/foundation/ui-apps/host.d.ts +0 -42
  780. package/dist/src/foundation/ui-apps/host.js +0 -152
  781. package/dist/src/foundation/ui-apps/index.d.ts +0 -3
  782. package/dist/src/foundation/ui-apps/index.js +0 -3
  783. package/dist/src/foundation/ui-apps/registry.d.ts +0 -11
  784. package/dist/src/foundation/ui-apps/registry.js +0 -32
  785. package/dist/src/foundation/ui-components/dialog-panel.js +0 -47
  786. package/dist/src/foundation/ui-components/frame.d.ts +0 -21
  787. package/dist/src/foundation/ui-components/frame.js +0 -54
  788. package/dist/src/foundation/ui-components/index.d.ts +0 -18
  789. package/dist/src/foundation/ui-components/index.js +0 -18
  790. package/dist/src/foundation/ui-components/line-input.d.ts +0 -74
  791. package/dist/src/foundation/ui-components/line-input.js +0 -245
  792. package/dist/src/foundation/ui-components/list-view.d.ts +0 -66
  793. package/dist/src/foundation/ui-components/list-view.js +0 -76
  794. package/dist/src/foundation/ui-components/mouse.d.ts +0 -15
  795. package/dist/src/foundation/ui-components/mouse.js +0 -46
  796. package/dist/src/foundation/ui-components/scrollbar.d.ts +0 -62
  797. package/dist/src/foundation/ui-components/scrollbar.js +0 -102
  798. package/dist/src/foundation/ui-components/shortcuts.d.ts +0 -57
  799. package/dist/src/foundation/ui-components/shortcuts.js +0 -81
  800. package/dist/src/foundation/ui-components/spans.d.ts +0 -7
  801. package/dist/src/foundation/ui-components/spans.js +0 -59
  802. package/dist/src/foundation/ui-components/surface.d.ts +0 -20
  803. package/dist/src/foundation/ui-components/surface.js +0 -38
  804. package/dist/src/foundation/ui-components/text.d.ts +0 -24
  805. package/dist/src/foundation/ui-components/text.js +0 -123
  806. package/dist/src/foundation/workspace-contracts/index.d.ts +0 -2
  807. package/dist/src/foundation/workspace-contracts/index.js +0 -2
  808. package/dist/src/foundation/workspace-contracts/model.d.ts +0 -248
  809. package/dist/src/foundation/workspace-contracts/model.js +0 -2
  810. package/dist/src/foundation/workspace-contracts/validation.d.ts +0 -13
  811. package/dist/src/foundation/workspace-contracts/validation.js +0 -335
  812. package/dist/src/product-identity.d.ts +0 -37
  813. package/dist/src/product-identity.js +0 -150
  814. package/dist/src/product-identity.json +0 -99
  815. package/docs/manual-transparent-checkpoint.md +0 -53
  816. /package/dist/{src/foundation/agent-engine-contracts/domain.js → app/session-shell/paste-helper.d.ts} +0 -0
  817. /package/dist/{src/foundation/agent-engine-contracts/ports.js → app/session-shell/paste-text-worker.d.ts} +0 -0
  818. /package/dist/{src/foundation/lifecycle/commands.js → app/session-shell/paste-types.js} +0 -0
  819. /package/dist/{src/foundation/pi-owned-ui-integration/route-host.js → app/session-shell/response-copy-helper.d.ts} +0 -0
  820. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/capability-ports.js +0 -0
  821. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/domain-validation.d.ts +0 -0
  822. /package/dist/{src/foundation/pi-tui-runtime-adapter/contracts.js → contracts/agent-engine/domain.js} +0 -0
  823. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/model.d.ts +0 -0
  824. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/model.js +0 -0
  825. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/package-ports.js +0 -0
  826. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/ports.d.ts +0 -0
  827. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/serialization.d.ts +0 -0
  828. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/serialization.js +0 -0
  829. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/validation.d.ts +0 -0
  830. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/validation.js +0 -0
  831. /package/dist/{src/foundation/owned-ui-contracts → contracts/owned-ui}/extension-ui.js +0 -0
  832. /package/dist/{src/foundation/owned-ui-contracts → contracts/owned-ui}/model.js +0 -0
  833. /package/dist/{src/foundation/presentation-contracts → contracts/presentation}/index.js +0 -0
  834. /package/dist/{src/features → features}/launch/development-launch.d.ts +0 -0
  835. /package/dist/{src/features → features}/launch/initialize-profile.d.ts +0 -0
  836. /package/dist/{src/features → features}/launch/initialize-profile.js +0 -0
  837. /package/dist/{src/foundation → foundation}/lifecycle/commands.d.ts +0 -0
  838. /package/dist/{src/foundation → foundation}/lifecycle/launch-instance.d.ts +0 -0
  839. /package/dist/{src/foundation → foundation}/lifecycle/launch-instance.js +0 -0
  840. /package/dist/{src/foundation → foundation}/process-containment/artifact.d.ts +0 -0
  841. /package/dist/{src/foundation → foundation}/process-containment/artifact.js +0 -0
  842. /package/dist/{src/foundation → foundation}/process-containment/contracts.d.ts +0 -0
  843. /package/dist/{src/foundation → foundation}/process-containment/contracts.js +0 -0
  844. /package/dist/{src/foundation → foundation}/release/cohort-selection.d.ts +0 -0
  845. /package/dist/{src/foundation → foundation}/release/cohort-selection.js +0 -0
  846. /package/dist/{src/foundation → foundation}/release/concurrency.d.ts +0 -0
  847. /package/dist/{src/foundation → foundation}/release/concurrency.js +0 -0
  848. /package/dist/{src/foundation → foundation}/release/process-cleanup.d.ts +0 -0
  849. /package/dist/{src/foundation → foundation}/release/process-cleanup.js +0 -0
  850. /package/dist/{src/foundation → foundation}/release/stable-release.d.ts +0 -0
  851. /package/dist/{src/foundation → foundation}/release/stable-release.js +0 -0
  852. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/theme.d.ts +0 -0
  853. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/theme.js +0 -0
  854. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/countdown-timer.js +0 -0
  855. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/mermaid.d.ts +0 -0
  856. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/session-selector-search.d.ts +0 -0
  857. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/external-editor.d.ts +0 -0
  858. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/model-search.js +0 -0
  859. /package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/public-main-entry.d.ts +0 -0
  860. /package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/public-main-entry.js +0 -0
  861. /package/dist/{src/foundation/ui-apps → ui/apps}/contracts.js +0 -0
  862. /package/dist/{src/foundation/ui-components → ui/components}/dialog-panel.d.ts +0 -0
  863. /package/dist/{src/foundation/ui-components → ui/components}/label.d.ts +0 -0
  864. /package/dist/{src/foundation/ui-components → ui/components}/label.js +0 -0
  865. /package/dist/{src/foundation/ui-components → ui/components}/list-block.d.ts +0 -0
  866. /package/dist/{src/foundation/ui-components → ui/components}/list-block.js +0 -0
  867. /package/dist/{src/foundation/ui-components → ui/components}/pane.d.ts +0 -0
  868. /package/dist/{src/foundation/ui-components → ui/components}/pane.js +0 -0
  869. /package/dist/{src/foundation/ui-components → ui/components}/revision.d.ts +0 -0
  870. /package/dist/{src/foundation/ui-components → ui/components}/revision.js +0 -0
  871. /package/dist/{src/foundation/ui-components → ui/components}/status-line.d.ts +0 -0
  872. /package/dist/{src/foundation/ui-components → ui/components}/status-line.js +0 -0
  873. /package/dist/{src/foundation/ui-components → ui/components}/stepper.d.ts +0 -0
  874. /package/dist/{src/foundation/ui-components → ui/components}/stepper.js +0 -0
  875. /package/dist/{src/foundation/ui-components → ui/components}/theme.d.ts +0 -0
  876. /package/dist/{src/foundation/ui-components → ui/components}/theme.js +0 -0
  877. /package/dist/{src/foundation/ui-components → ui/components}/value-menu.d.ts +0 -0
  878. /package/dist/{src/foundation/ui-components → ui/components}/value-menu.js +0 -0
  879. /package/dist/{src/foundation/owned-ui-settings → ui/settings}/resolution.d.ts +0 -0
  880. /package/dist/{src/foundation/owned-ui-settings → ui/settings}/resolution.js +0 -0
@@ -0,0 +1,343 @@
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 { 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 expectedNpmArguments = ["install", "--global", "--loglevel=error", "--no-fund", "--no-audit", `${value.packageName}@${value.targetVersion}`];
204
+ if (JSON.stringify(value.npmArguments) !== JSON.stringify(expectedNpmArguments)) throw new Error("A1 update recovery npm arguments are invalid");
205
+ const launcherRoot = resolve(value.launcherRoot);
206
+ const expectedLaunchers = process.platform === "win32"
207
+ ? [resolve(launcherRoot, "a1"), resolve(launcherRoot, "a1.cmd"), resolve(launcherRoot, "a1.ps1")]
208
+ : [resolve(launcherRoot, "a1")];
209
+ if (JSON.stringify(value.launchers.map((/** @type {string} */ path) => resolve(path))) !== JSON.stringify(expectedLaunchers)) throw new Error("A1 update recovery launcher set is invalid");
210
+ for (const launcher of value.launchers) assertDirectChild(launcherRoot, resolve(launcher));
211
+ const expectedSidecars = [resolve(lexicalCapsuleRoot, "cancel.json"), resolve(lexicalCapsuleRoot, "result.json"), resolve(lexicalCapsuleRoot, "owner.json")];
212
+ if (![value.cancellationPath, value.resultPath, value.ownerPath].every((candidate, index) => samePath(candidate, expectedSidecars[index] ?? ""))) {
213
+ throw new Error("A1 update recovery sidecar paths are invalid");
214
+ }
215
+ const dataDir = dirname(dirname(capsuleRoot));
216
+ const releasesRoot = await realpath(resolve(dataDir, "releases"));
217
+ const priorReleaseRoot = await realpath(value.priorReleaseRoot);
218
+ assertDirectChild(releasesRoot, priorReleaseRoot);
219
+ if (priorReleaseRoot.split(sep).at(-1) !== value.priorReleaseId) throw new Error("A1 update recovery prior release identity is invalid");
220
+ const priorManifest = JSON.parse(await readFile(resolve(priorReleaseRoot, value.releaseManifestName), "utf8"));
221
+ if (priorManifest.launchContract !== "neutral-launch-v1") throw new Error("Unsupported prior private launch contract; manual cutover is required.");
222
+ if (priorManifest.releaseId !== value.priorReleaseId || priorManifest.contentDigest !== value.priorContentDigest) {
223
+ throw new Error("A1 update recovery prior release manifest is invalid");
224
+ }
225
+ const npmMetadata = await lstat(value.npmCli);
226
+ if (!npmMetadata.isFile() || npmMetadata.isSymbolicLink()) throw new Error("A1 update recovery npm entry is invalid");
227
+ return value;
228
+ }
229
+
230
+ /** @param {Capsule} value */
231
+ async function installedTargetEntry(value) {
232
+ try {
233
+ const manifest = JSON.parse(await readFile(resolve(value.packageRoot, "package.json"), "utf8"));
234
+ const entry = resolve(value.packageRoot, "bin", "cli.js");
235
+ if (manifest.privateLaunchContract !== "neutral-launch-v1" || manifest.name !== value.packageName || manifest.version !== value.targetVersion || !(await lstat(entry)).isFile()) return null;
236
+ return entry;
237
+ } catch { return null; }
238
+ }
239
+
240
+ /** @param {Capsule} value */
241
+ async function installedTargetIsCallable(value) {
242
+ if (await installedTargetEntry(value) === null) return false;
243
+ const token = `node_modules/${value.packageName}/bin/cli.js`;
244
+ for (const path of value.launchers) {
245
+ try {
246
+ const metadata = await lstat(path);
247
+ if (!metadata.isFile() || metadata.isSymbolicLink()) return false;
248
+ if (process.platform !== "win32" && (metadata.mode & 0o111) === 0) return false;
249
+ const normalized = (await readFile(path, "utf8")).replaceAll("\\", "/");
250
+ if (!normalized.includes(token)) return false;
251
+ } catch { return false; }
252
+ }
253
+ return true;
254
+ }
255
+
256
+ /** @param {Capsule} value */
257
+ async function writeRecoveryLaunchers(value) {
258
+ const node = value.nodeExecutable ?? process.execPath;
259
+ const entry = value.recoveryEntry;
260
+ const manifest = capsuleManifestPath;
261
+ const shell = `#!/bin/sh\nexec ${shellQuote(node)} ${shellQuote(entry)} --launch ${shellQuote(manifest)} -- "$@"\n`;
262
+ const command = `@ECHO off\r\n"${node}" "${entry}" --launch "${manifest}" -- %*\r\n`;
263
+ const powershell = `& '${psQuote(node)}' '${psQuote(entry)}' --launch '${psQuote(manifest)}' -- $args\nexit $LASTEXITCODE\n`;
264
+ const content = process.platform === "win32" ? [shell, command, powershell] : [shell];
265
+ await mkdir(value.launcherRoot, { recursive: true });
266
+ for (let index = 0; index < value.launchers.length; index += 1) await atomicWrite(value.launchers[index] ?? "", content[index] ?? "", 0o755);
267
+ }
268
+
269
+ /** @param {Capsule} value */
270
+ async function recoveryLaunchersAreCallable(value) {
271
+ for (const path of value.launchers) {
272
+ try {
273
+ const metadata = await lstat(path);
274
+ if (!metadata.isFile() || metadata.isSymbolicLink()) return false;
275
+ if (process.platform !== "win32" && (metadata.mode & 0o111) === 0) return false;
276
+ if (!(await readFile(path, "utf8")).includes(value.recoveryEntry)) return false;
277
+ } catch { return false; }
278
+ }
279
+ return true;
280
+ }
281
+
282
+ /**
283
+ * @param {string} path
284
+ * @param {string} content
285
+ * @param {number} mode
286
+ */
287
+ async function atomicWrite(path, content, mode) {
288
+ const temporary = `${path}.${process.pid}.${randomUUID()}.tmp`;
289
+ await writeFile(temporary, content, { mode });
290
+ await chmod(temporary, mode);
291
+ await rm(path, { force: true });
292
+ await rename(temporary, path);
293
+ }
294
+
295
+ /**
296
+ * @param {string} path
297
+ * @param {unknown} value
298
+ */
299
+ async function writeJson(path, value) {
300
+ await mkdir(dirname(path), { recursive: true, mode: 0o700 });
301
+ const temporary = `${path}.${process.pid}.${randomUUID()}.tmp`;
302
+ const file = await open(temporary, "wx", 0o600);
303
+ try { await file.writeFile(JSON.stringify(value, null, 2)); await file.sync(); }
304
+ finally { await file.close(); }
305
+ await rm(path, { force: true });
306
+ await rename(temporary, path);
307
+ }
308
+
309
+ /**
310
+ * @param {string} left
311
+ * @param {string} right
312
+ */
313
+ function samePath(left, right) {
314
+ return process.platform === "win32" ? resolve(left).toLowerCase() === resolve(right).toLowerCase() : resolve(left) === resolve(right);
315
+ }
316
+ /**
317
+ * @param {string} parent
318
+ * @param {string} child
319
+ */
320
+ function containedBy(parent, child) {
321
+ const fromParent = relative(parent, child);
322
+ return fromParent.length > 0 && fromParent !== ".." && !fromParent.startsWith(`..${sep}`) && !isAbsolute(fromParent);
323
+ }
324
+ /**
325
+ * @param {string} parent
326
+ * @param {string} child
327
+ */
328
+ function assertDirectChild(parent, child) {
329
+ const expectedParent = resolve(parent);
330
+ const actualParent = dirname(resolve(child));
331
+ const matches = process.platform === "win32" ? actualParent.toLowerCase() === expectedParent.toLowerCase() : actualParent === expectedParent;
332
+ if (!matches) throw new Error(`A1 update recovery path escapes its managed root: ${child}`);
333
+ }
334
+ /** @param {string} value */
335
+ function shellQuote(value) { return `'${String(value).replaceAll("'", `'"'"'`)}'`; }
336
+ /** @param {string} value */
337
+ function psQuote(value) { return String(value).replaceAll("'", "''"); }
338
+ /** @param {string} value */
339
+ function bounded(value) { return value.length <= 64 * 1024 ? value : value.slice(-64 * 1024); }
340
+ /** @param {string} path */
341
+ async function exists(path) { return await lstat(path).then(() => true).catch(() => false); }
342
+ /** @param {number} ms */
343
+ 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
+ }