@timurproko/a1 0.1.8-dev.49ff83a → 0.1.8-dev.508

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 (865) hide show
  1. package/README.md +168 -65
  2. package/bin/cli.js +33 -11
  3. package/bin/guardian.js +16 -6
  4. package/bin/module-identity.js +76 -69
  5. package/bin/module-resolver.js +138 -0
  6. package/bin/pinned-pi-public.d.ts +3 -0
  7. package/bin/pinned-pi-public.js +93 -0
  8. package/bin/release-cleanup.js +8 -0
  9. package/bin/supervisor.js +2 -2
  10. package/bin/ui.js +67 -22
  11. package/bin/update-recovery.js +343 -0
  12. package/bin/warmup.js +28 -0
  13. package/dist/app/session-shell/clipboard-diagnostics.d.ts +16 -0
  14. package/dist/app/session-shell/clipboard-diagnostics.js +65 -0
  15. package/dist/app/session-shell/clipboard-image.d.ts +11 -0
  16. package/dist/app/session-shell/clipboard-image.js +38 -0
  17. package/dist/app/session-shell/editor-hyperlink-budget.d.ts +9 -0
  18. package/dist/app/session-shell/editor-hyperlink-budget.js +23 -0
  19. package/dist/app/session-shell/helper-pool.d.ts +33 -0
  20. package/dist/app/session-shell/helper-pool.js +98 -0
  21. package/dist/app/session-shell/image-preparation-client.d.ts +20 -0
  22. package/dist/app/session-shell/image-preparation-client.js +145 -0
  23. package/dist/app/session-shell/image-preparation.d.ts +18 -0
  24. package/dist/app/session-shell/image-preparation.js +126 -0
  25. package/dist/app/session-shell/image-source.d.ts +13 -0
  26. package/dist/app/session-shell/image-source.js +171 -0
  27. package/dist/app/session-shell/image-worker.d.ts +17 -0
  28. package/dist/app/session-shell/image-worker.js +23 -0
  29. package/dist/app/session-shell/index.d.ts +7 -0
  30. package/dist/app/session-shell/index.js +4 -0
  31. package/dist/app/session-shell/paste-executor.d.ts +18 -0
  32. package/dist/app/session-shell/paste-executor.js +253 -0
  33. package/dist/app/session-shell/paste-helper.js +173 -0
  34. package/dist/app/session-shell/paste-preparation-client.d.ts +31 -0
  35. package/dist/app/session-shell/paste-preparation-client.js +170 -0
  36. package/dist/app/session-shell/paste-protocol.d.ts +78 -0
  37. package/dist/app/session-shell/paste-protocol.js +18 -0
  38. package/dist/app/session-shell/paste-text-preparation.d.ts +6 -0
  39. package/dist/app/session-shell/paste-text-preparation.js +134 -0
  40. package/dist/app/session-shell/paste-text-worker.js +12 -0
  41. package/dist/app/session-shell/paste-types.d.ts +17 -0
  42. package/dist/app/session-shell/path-chip-presentation.d.ts +7 -0
  43. package/dist/app/session-shell/path-chip-presentation.js +24 -0
  44. package/dist/app/session-shell/prompt-chips.d.ts +76 -0
  45. package/dist/app/session-shell/prompt-chips.js +507 -0
  46. package/dist/app/session-shell/prompt-history-controller.d.ts +36 -0
  47. package/dist/app/session-shell/prompt-history-controller.js +170 -0
  48. package/dist/app/session-shell/prompt-suggestion-controller.d.ts +35 -0
  49. package/dist/app/session-shell/prompt-suggestion-controller.js +207 -0
  50. package/dist/app/session-shell/quit-outro-effects.d.ts +29 -0
  51. package/dist/app/session-shell/quit-outro-effects.js +242 -0
  52. package/dist/app/session-shell/quit-outro.d.ts +38 -0
  53. package/dist/app/session-shell/quit-outro.js +98 -0
  54. package/dist/app/session-shell/response-copy-coordinator.d.ts +27 -0
  55. package/dist/app/session-shell/response-copy-coordinator.js +187 -0
  56. package/dist/app/session-shell/response-copy-helper.js +122 -0
  57. package/dist/app/session-shell/response-copy-protocol.d.ts +56 -0
  58. package/dist/app/session-shell/response-copy-protocol.js +5 -0
  59. package/dist/app/session-shell/response-copy-transport.d.ts +39 -0
  60. package/dist/app/session-shell/response-copy-transport.js +217 -0
  61. package/dist/app/session-shell/session-shell-root.d.ts +265 -0
  62. package/dist/app/session-shell/session-shell-root.js +1366 -0
  63. package/dist/app/session-shell/session-shell.d.ts +59 -0
  64. package/dist/app/session-shell/session-shell.js +1917 -0
  65. package/dist/app/session-shell/session-viewport-controller.d.ts +61 -0
  66. package/dist/app/session-shell/session-viewport-controller.js +597 -0
  67. package/dist/app/session-shell/stream-presentation-coalescer.d.ts +29 -0
  68. package/dist/app/session-shell/stream-presentation-coalescer.js +79 -0
  69. package/dist/app/session-shell/system-clipboard.d.ts +20 -0
  70. package/dist/app/session-shell/system-clipboard.js +159 -0
  71. package/dist/app/session-shell/text-paste.d.ts +5 -0
  72. package/dist/app/session-shell/text-paste.js +16 -0
  73. package/dist/cli/capabilities.d.ts +6 -0
  74. package/dist/cli/capabilities.js +7 -0
  75. package/dist/cli/dispatch.d.ts +46 -0
  76. package/dist/cli/dispatch.js +261 -0
  77. package/dist/cli/index.d.ts +8 -0
  78. package/dist/cli/index.js +4 -0
  79. package/dist/cli/package-messages.d.ts +26 -0
  80. package/dist/cli/package-messages.js +71 -0
  81. package/dist/cli/packages.d.ts +32 -0
  82. package/dist/cli/packages.js +81 -0
  83. package/dist/cli/version-stats.d.ts +22 -0
  84. package/dist/cli/version-stats.js +112 -0
  85. package/dist/composition/index.d.ts +2 -0
  86. package/dist/composition/index.js +2 -0
  87. package/dist/composition/owned-ui.d.ts +37 -0
  88. package/dist/composition/owned-ui.js +136 -0
  89. package/dist/composition/settings-route-host.d.ts +7 -0
  90. package/dist/composition/settings-route-host.js +110 -0
  91. package/dist/contracts/agent-engine/capability-ports.d.ts +95 -0
  92. package/dist/contracts/agent-engine/domain-validation.js +107 -0
  93. package/dist/contracts/agent-engine/domain.d.ts +138 -0
  94. package/dist/contracts/agent-engine/index.d.ts +11 -0
  95. package/dist/contracts/agent-engine/index.js +6 -0
  96. package/dist/contracts/agent-engine/package-ports.d.ts +60 -0
  97. package/dist/contracts/agent-engine/ports.js +1 -0
  98. package/dist/contracts/owned-ui/extension-ui.d.ts +310 -0
  99. package/dist/contracts/owned-ui/image-attachments.d.ts +36 -0
  100. package/dist/contracts/owned-ui/image-attachments.js +67 -0
  101. package/dist/contracts/owned-ui/index.d.ts +12 -0
  102. package/dist/contracts/owned-ui/index.js +8 -0
  103. package/dist/contracts/owned-ui/model.d.ts +378 -0
  104. package/dist/contracts/owned-ui/prompt-history.d.ts +55 -0
  105. package/dist/contracts/owned-ui/prompt-history.js +23 -0
  106. package/dist/contracts/owned-ui/prompt-suggestions.d.ts +3 -0
  107. package/dist/contracts/owned-ui/prompt-suggestions.js +44 -0
  108. package/dist/contracts/owned-ui/suggestion-diagnostics.d.ts +22 -0
  109. package/dist/contracts/owned-ui/suggestion-diagnostics.js +9 -0
  110. package/dist/contracts/owned-ui/transcript-lifecycle.d.ts +5 -0
  111. package/dist/contracts/owned-ui/transcript-lifecycle.js +33 -0
  112. package/dist/contracts/owned-ui/validation.d.ts +15 -0
  113. package/dist/contracts/owned-ui/validation.js +523 -0
  114. package/dist/contracts/presentation/index.d.ts +104 -0
  115. package/dist/features/launch/development-launch.js +36 -0
  116. package/dist/features/launch/index.d.ts +12 -0
  117. package/dist/features/launch/index.js +6 -0
  118. package/dist/features/launch/intent.d.ts +12 -0
  119. package/dist/features/launch/intent.js +8 -0
  120. package/dist/features/launch/prepare-launch.d.ts +11 -0
  121. package/dist/features/launch/prepare-launch.js +14 -0
  122. package/dist/features/launch/profile-paths.d.ts +16 -0
  123. package/dist/features/launch/profile-paths.js +36 -0
  124. package/dist/features/launch/runtime-selection.d.ts +16 -0
  125. package/dist/features/launch/runtime-selection.js +13 -0
  126. package/dist/features/owned-ui/index.d.ts +6 -0
  127. package/dist/features/owned-ui/index.js +4 -0
  128. package/dist/features/owned-ui/project-trust-prompt.d.ts +25 -0
  129. package/dist/features/owned-ui/project-trust-prompt.js +149 -0
  130. package/dist/features/owned-ui/run.d.ts +17 -0
  131. package/dist/features/owned-ui/run.js +64 -0
  132. package/dist/features/owned-ui/session-fork-prompt.d.ts +8 -0
  133. package/dist/features/owned-ui/session-fork-prompt.js +34 -0
  134. package/dist/features/owned-ui/settings-app.d.ts +21 -0
  135. package/dist/features/owned-ui/settings-app.js +807 -0
  136. package/dist/features/owned-ui/settings-route.d.ts +2 -0
  137. package/dist/features/owned-ui/settings-route.js +2 -0
  138. package/dist/features/prompt-history/image-sidecar.d.ts +32 -0
  139. package/dist/features/prompt-history/image-sidecar.js +130 -0
  140. package/dist/features/prompt-history/index.d.ts +4 -0
  141. package/dist/features/prompt-history/index.js +3 -0
  142. package/dist/features/prompt-history/paths.d.ts +5 -0
  143. package/dist/features/prompt-history/paths.js +17 -0
  144. package/dist/features/prompt-history/service.d.ts +54 -0
  145. package/dist/features/prompt-history/service.js +425 -0
  146. package/dist/features/prompt-history/store.d.ts +16 -0
  147. package/dist/features/prompt-history/store.js +219 -0
  148. package/dist/features/prompt-history/worker.d.ts +9 -0
  149. package/dist/features/prompt-history/worker.js +45 -0
  150. package/dist/features/prompt-suggestions/diagnostics.d.ts +18 -0
  151. package/dist/features/prompt-suggestions/diagnostics.js +82 -0
  152. package/dist/features/prompt-suggestions/index.d.ts +2 -0
  153. package/dist/features/prompt-suggestions/index.js +1 -0
  154. package/dist/foundation/launch-context/index.d.ts +59 -0
  155. package/dist/foundation/launch-context/index.js +136 -0
  156. package/dist/foundation/launch-guardian/index.d.ts +2 -0
  157. package/dist/foundation/launch-guardian/index.js +1 -0
  158. package/dist/foundation/launch-guardian/main.d.ts +33 -0
  159. package/dist/foundation/launch-guardian/main.js +180 -0
  160. package/dist/foundation/lifecycle/commands.js +1 -0
  161. package/dist/foundation/lifecycle/index.d.ts +11 -0
  162. package/dist/foundation/lifecycle/index.js +5 -0
  163. package/dist/foundation/lifecycle/model.d.ts +64 -0
  164. package/dist/foundation/lifecycle/model.js +40 -0
  165. package/dist/foundation/lifecycle/paths.d.ts +30 -0
  166. package/dist/foundation/lifecycle/paths.js +70 -0
  167. package/dist/foundation/lifecycle/session-selection.d.ts +9 -0
  168. package/dist/foundation/lifecycle/session-selection.js +39 -0
  169. package/dist/foundation/lifecycle/supervisor-startup.d.ts +30 -0
  170. package/dist/foundation/lifecycle/supervisor-startup.js +106 -0
  171. package/dist/foundation/process-containment/darwin-process-inspector.d.ts +5 -0
  172. package/dist/foundation/process-containment/darwin-process-inspector.js +7 -0
  173. package/dist/foundation/process-containment/index.d.ts +8 -0
  174. package/dist/foundation/process-containment/index.js +6 -0
  175. package/dist/foundation/process-containment/linux-process-inspector.d.ts +7 -0
  176. package/dist/foundation/process-containment/linux-process-inspector.js +27 -0
  177. package/dist/foundation/process-containment/native-guardian-containment.d.ts +17 -0
  178. package/dist/foundation/process-containment/native-guardian-containment.js +140 -0
  179. package/dist/foundation/process-containment/windows-process-inspector.d.ts +19 -0
  180. package/dist/foundation/process-containment/windows-process-inspector.js +56 -0
  181. package/dist/foundation/protocol/client.d.ts +18 -0
  182. package/dist/foundation/protocol/client.js +130 -0
  183. package/dist/foundation/protocol/index.d.ts +3 -0
  184. package/dist/foundation/protocol/index.js +2 -0
  185. package/dist/foundation/protocol/messages.d.ts +90 -0
  186. package/dist/foundation/protocol/messages.js +100 -0
  187. package/dist/foundation/release/bootstrap.d.ts +51 -0
  188. package/dist/foundation/release/bootstrap.js +427 -0
  189. package/dist/foundation/release/cohort-state.d.ts +157 -0
  190. package/dist/foundation/release/cohort-state.js +472 -0
  191. package/dist/foundation/release/dependency-certification-retention.d.ts +7 -0
  192. package/dist/foundation/release/dependency-certification-retention.js +88 -0
  193. package/dist/foundation/release/dependency-certification.d.ts +24 -0
  194. package/dist/foundation/release/dependency-certification.js +266 -0
  195. package/dist/foundation/release/dependency-layer.d.ts +78 -0
  196. package/dist/foundation/release/dependency-layer.js +466 -0
  197. package/dist/foundation/release/endpoints.d.ts +24 -0
  198. package/dist/foundation/release/endpoints.js +134 -0
  199. package/dist/foundation/release/immutable-platform.d.ts +6 -0
  200. package/dist/foundation/release/immutable-platform.js +13 -0
  201. package/dist/foundation/release/index.d.ts +30 -0
  202. package/dist/foundation/release/index.js +16 -0
  203. package/dist/foundation/release/release-gc.d.ts +71 -0
  204. package/dist/foundation/release/release-gc.js +764 -0
  205. package/dist/foundation/release/release-store.d.ts +49 -0
  206. package/dist/foundation/release/release-store.js +235 -0
  207. package/dist/foundation/release/release.d.ts +43 -0
  208. package/dist/foundation/release/release.js +215 -0
  209. package/dist/foundation/release/restart-certification.d.ts +68 -0
  210. package/dist/foundation/release/restart-certification.js +227 -0
  211. package/dist/foundation/release/types.d.ts +11 -0
  212. package/dist/foundation/release/types.js +1 -0
  213. package/dist/foundation/release/update-launch.d.ts +6 -0
  214. package/dist/foundation/release/update-launch.js +17 -0
  215. package/dist/foundation/release/update-recovery.d.ts +76 -0
  216. package/dist/foundation/release/update-recovery.js +356 -0
  217. package/dist/foundation/release/update-transaction.d.ts +42 -0
  218. package/dist/foundation/release/update-transaction.js +101 -0
  219. package/dist/foundation/release/update.d.ts +119 -0
  220. package/dist/foundation/release/update.js +632 -0
  221. package/dist/foundation/release/warmup.d.ts +3 -0
  222. package/dist/foundation/release/warmup.js +47 -0
  223. package/dist/foundation/startup/index.d.ts +4 -0
  224. package/dist/foundation/startup/index.js +2 -0
  225. package/dist/foundation/startup/startup-budget.d.ts +46 -0
  226. package/dist/foundation/startup/startup-budget.js +42 -0
  227. package/dist/foundation/startup/startup-descriptor.js +34 -0
  228. package/dist/foundation/startup/startup-runtime.d.ts +27 -0
  229. package/dist/foundation/startup/startup-runtime.js +128 -0
  230. package/dist/foundation/storage/control-store.d.ts +18 -0
  231. package/dist/foundation/storage/control-store.js +342 -0
  232. package/dist/foundation/storage/index.d.ts +1 -0
  233. package/dist/foundation/storage/index.js +1 -0
  234. package/dist/foundation/supervision/index.d.ts +3 -0
  235. package/dist/foundation/supervision/index.js +3 -0
  236. package/dist/foundation/supervision/main.d.ts +1 -0
  237. package/dist/foundation/supervision/main.js +84 -0
  238. package/dist/foundation/supervision/paths.d.ts +1 -0
  239. package/dist/foundation/supervision/paths.js +1 -0
  240. package/dist/foundation/supervision/server.d.ts +46 -0
  241. package/dist/foundation/supervision/server.js +573 -0
  242. package/dist/foundation/terminal-cleanup/fatal-exit.d.ts +12 -0
  243. package/dist/foundation/terminal-cleanup/fatal-exit.js +87 -0
  244. package/dist/foundation/terminal-cleanup/index.d.ts +3 -0
  245. package/dist/foundation/terminal-cleanup/index.js +2 -0
  246. package/dist/foundation/terminal-cleanup/terminal-reset.d.ts +4 -0
  247. package/dist/foundation/terminal-cleanup/terminal-reset.js +40 -0
  248. package/dist/integrations/pi/components/components.d.ts +4 -0
  249. package/dist/integrations/pi/components/components.js +64 -0
  250. package/dist/integrations/pi/components/conformance.d.ts +18 -0
  251. package/dist/integrations/pi/components/conformance.js +70 -0
  252. package/dist/integrations/pi/components/editor-interaction.d.ts +38 -0
  253. package/dist/integrations/pi/components/editor-interaction.js +1 -0
  254. package/dist/integrations/pi/components/history-editor-loader.d.ts +5 -0
  255. package/dist/integrations/pi/components/history-editor-loader.js +5 -0
  256. package/dist/integrations/pi/components/index.d.ts +21 -0
  257. package/dist/integrations/pi/components/index.js +13 -0
  258. package/dist/integrations/pi/components/owned-editor-ux.d.ts +74 -0
  259. package/dist/integrations/pi/components/owned-editor-ux.js +1094 -0
  260. package/dist/integrations/pi/components/path-word-ranges.d.ts +2 -0
  261. package/dist/integrations/pi/components/path-word-ranges.js +37 -0
  262. package/dist/integrations/pi/components/prompt-input-port.d.ts +18 -0
  263. package/dist/integrations/pi/components/prompt-input-port.js +1 -0
  264. package/dist/integrations/pi/components/resources/builtin-themes.d.ts +167 -0
  265. package/dist/integrations/pi/components/resources/builtin-themes.js +168 -0
  266. package/dist/integrations/pi/components/shell-components.d.ts +7 -0
  267. package/dist/integrations/pi/components/shell-components.js +7 -0
  268. package/dist/integrations/pi/components/shell-editor-autocomplete.js +298 -0
  269. package/dist/integrations/pi/components/shell-extension-ui.d.ts +35 -0
  270. package/dist/integrations/pi/components/shell-extension-ui.js +280 -0
  271. package/dist/integrations/pi/components/shell-footer-status.d.ts +7 -0
  272. package/dist/integrations/pi/components/shell-footer-status.js +248 -0
  273. package/dist/integrations/pi/components/shell-presenters-info.d.ts +43 -0
  274. package/dist/integrations/pi/components/shell-presenters-info.js +114 -0
  275. package/dist/integrations/pi/components/shell-presenters-transcript.d.ts +29 -0
  276. package/dist/integrations/pi/components/shell-presenters-transcript.js +433 -0
  277. package/dist/integrations/pi/components/shell-selectors-dialogs.d.ts +123 -0
  278. package/dist/integrations/pi/components/shell-selectors-dialogs.js +242 -0
  279. package/dist/integrations/pi/components/shell-shared-facade.d.ts +217 -0
  280. package/dist/integrations/pi/components/shell-shared-facade.js +92 -0
  281. package/dist/integrations/pi/components/submitted-prompt-adapter.d.ts +17 -0
  282. package/dist/integrations/pi/components/submitted-prompt-adapter.js +49 -0
  283. package/dist/integrations/pi/components/tool-image-presentation.d.ts +21 -0
  284. package/dist/integrations/pi/components/tool-image-presentation.js +83 -0
  285. package/dist/integrations/pi/components/tool-result-adapter.d.ts +6 -0
  286. package/dist/integrations/pi/components/tool-result-adapter.js +27 -0
  287. package/dist/integrations/pi/components/transcript-image-resolver.d.ts +7 -0
  288. package/dist/integrations/pi/components/transcript-image-resolver.js +19 -0
  289. package/dist/integrations/pi/components/upstream/adjacent/core/keybindings.d.ts +445 -0
  290. package/dist/integrations/pi/components/upstream/adjacent/core/keybindings.js +370 -0
  291. package/dist/integrations/pi/components/upstream/assets/earendil-image.json +12 -0
  292. package/dist/integrations/pi/components/upstream/components/countdown-timer.d.ts +13 -0
  293. package/dist/integrations/pi/components/upstream/components/daxnuts.d.ts +29 -0
  294. package/dist/integrations/pi/components/upstream/components/daxnuts.js +146 -0
  295. package/dist/integrations/pi/components/upstream/components/earendil-announcement.d.ts +4 -0
  296. package/dist/integrations/pi/components/upstream/components/earendil-announcement.js +48 -0
  297. package/dist/integrations/pi/components/upstream/components/extension-editor.d.ts +20 -0
  298. package/dist/integrations/pi/components/upstream/components/extension-editor.js +84 -0
  299. package/dist/integrations/pi/components/upstream/components/mermaid.js +81 -0
  300. package/dist/integrations/pi/components/upstream/components/owned-editor.d.ts +46 -0
  301. package/dist/integrations/pi/components/upstream/components/owned-editor.js +187 -0
  302. package/dist/integrations/pi/components/upstream/components/scoped-models-selector.d.ts +59 -0
  303. package/dist/integrations/pi/components/upstream/components/scoped-models-selector.js +346 -0
  304. package/dist/integrations/pi/components/upstream/components/session-footer.d.ts +11 -0
  305. package/dist/integrations/pi/components/upstream/components/session-footer.js +123 -0
  306. package/dist/integrations/pi/components/upstream/components/session-selector-search.js +161 -0
  307. package/dist/integrations/pi/components/upstream/components/session-selector.d.ts +95 -0
  308. package/dist/integrations/pi/components/upstream/components/session-selector.js +893 -0
  309. package/dist/integrations/pi/components/upstream/components/skill-invocation-message.d.ts +21 -0
  310. package/dist/integrations/pi/components/upstream/components/skill-invocation-message.js +46 -0
  311. package/dist/integrations/pi/components/upstream/components/status-indicator.d.ts +35 -0
  312. package/dist/integrations/pi/components/upstream/components/status-indicator.js +69 -0
  313. package/dist/integrations/pi/components/upstream/components/tool-execution.d.ts +67 -0
  314. package/dist/integrations/pi/components/upstream/components/tool-execution.js +365 -0
  315. package/dist/integrations/pi/components/upstream/components/tree-selector.d.ts +101 -0
  316. package/dist/integrations/pi/components/upstream/components/tree-selector.js +1275 -0
  317. package/dist/integrations/pi/components/upstream/components/trust-selector.d.ts +33 -0
  318. package/dist/integrations/pi/components/upstream/components/trust-selector.js +81 -0
  319. package/dist/integrations/pi/components/upstream/external-editor.js +43 -0
  320. package/dist/integrations/pi/components/upstream/history/editor-core.d.ts +289 -0
  321. package/dist/integrations/pi/components/upstream/history/editor-core.js +2144 -0
  322. package/dist/integrations/pi/components/upstream/history/kill-ring.d.ts +35 -0
  323. package/dist/integrations/pi/components/upstream/history/kill-ring.js +51 -0
  324. package/dist/integrations/pi/components/upstream/history/printable-key.d.ts +1 -0
  325. package/dist/integrations/pi/components/upstream/history/printable-key.js +43 -0
  326. package/dist/integrations/pi/components/upstream/history/text-helpers.d.ts +14 -0
  327. package/dist/integrations/pi/components/upstream/history/text-helpers.js +31 -0
  328. package/dist/integrations/pi/components/upstream/history/undo-stack.d.ts +25 -0
  329. package/dist/integrations/pi/components/upstream/history/undo-stack.js +39 -0
  330. package/dist/integrations/pi/components/upstream/history/word-navigation.d.ts +24 -0
  331. package/dist/integrations/pi/components/upstream/history/word-navigation.js +103 -0
  332. package/dist/integrations/pi/components/upstream/model-search.d.ts +18 -0
  333. package/dist/integrations/pi/components/upstream/theme/theme-controller.d.ts +33 -0
  334. package/dist/integrations/pi/components/upstream/theme/theme-controller.js +114 -0
  335. package/dist/integrations/pi/components/upstream/theme/theme.d.ts +61 -0
  336. package/dist/integrations/pi/components/upstream/theme/theme.js +337 -0
  337. package/dist/integrations/pi/engine/adapter.d.ts +135 -0
  338. package/dist/integrations/pi/engine/adapter.js +648 -0
  339. package/dist/integrations/pi/engine/changelog.d.ts +2 -0
  340. package/dist/integrations/pi/engine/changelog.js +63 -0
  341. package/dist/integrations/pi/engine/command-dispatch.d.ts +41 -0
  342. package/dist/integrations/pi/engine/command-dispatch.js +125 -0
  343. package/dist/integrations/pi/engine/compaction-progress.d.ts +28 -0
  344. package/dist/integrations/pi/engine/compaction-progress.js +96 -0
  345. package/dist/integrations/pi/engine/conformance.d.ts +39 -0
  346. package/dist/integrations/pi/engine/conformance.js +140 -0
  347. package/dist/integrations/pi/engine/event-delivery.d.ts +100 -0
  348. package/dist/integrations/pi/engine/event-delivery.js +184 -0
  349. package/dist/integrations/pi/engine/extension-ui-binding.d.ts +35 -0
  350. package/dist/integrations/pi/engine/extension-ui-binding.js +81 -0
  351. package/dist/integrations/pi/engine/http-dispatcher.d.ts +4 -0
  352. package/dist/integrations/pi/engine/http-dispatcher.js +25 -0
  353. package/dist/integrations/pi/engine/index.d.ts +18 -0
  354. package/dist/integrations/pi/engine/index.js +10 -0
  355. package/dist/integrations/pi/engine/message-values.d.ts +29 -0
  356. package/dist/integrations/pi/engine/message-values.js +168 -0
  357. package/dist/integrations/pi/engine/package-integration.d.ts +13 -0
  358. package/dist/integrations/pi/engine/package-integration.js +118 -0
  359. package/dist/integrations/pi/engine/pending-delivery.d.ts +30 -0
  360. package/dist/integrations/pi/engine/pending-delivery.js +156 -0
  361. package/dist/integrations/pi/engine/pi-settings-metadata.json +385 -0
  362. package/dist/integrations/pi/engine/project-trust-preflight.d.ts +22 -0
  363. package/dist/integrations/pi/engine/project-trust-preflight.js +50 -0
  364. package/dist/integrations/pi/engine/prompt-suggestions.d.ts +30 -0
  365. package/dist/integrations/pi/engine/prompt-suggestions.js +102 -0
  366. package/dist/integrations/pi/engine/provider-authentication.d.ts +34 -0
  367. package/dist/integrations/pi/engine/provider-authentication.js +209 -0
  368. package/dist/integrations/pi/engine/resource-catalog.d.ts +49 -0
  369. package/dist/integrations/pi/engine/resource-catalog.js +289 -0
  370. package/dist/integrations/pi/engine/resources/changelog.json +12 -0
  371. package/dist/integrations/pi/engine/runtime-integration.d.ts +53 -0
  372. package/dist/integrations/pi/engine/runtime-integration.js +118 -0
  373. package/dist/integrations/pi/engine/session-events.d.ts +48 -0
  374. package/dist/integrations/pi/engine/session-events.js +223 -0
  375. package/dist/integrations/pi/engine/session-integration.d.ts +67 -0
  376. package/dist/integrations/pi/engine/session-integration.js +195 -0
  377. package/dist/integrations/pi/engine/session-runtime.d.ts +84 -0
  378. package/dist/integrations/pi/engine/session-runtime.js +249 -0
  379. package/dist/integrations/pi/engine/session-selection.d.ts +28 -0
  380. package/dist/integrations/pi/engine/session-selection.js +90 -0
  381. package/dist/integrations/pi/engine/settings-bridge.d.ts +121 -0
  382. package/dist/integrations/pi/engine/settings-bridge.js +514 -0
  383. package/dist/integrations/pi/engine/settings-metadata.d.ts +31 -0
  384. package/dist/integrations/pi/engine/settings-metadata.js +67 -0
  385. package/dist/integrations/pi/engine/settings-port.d.ts +42 -0
  386. package/dist/integrations/pi/engine/settings-port.js +353 -0
  387. package/dist/integrations/pi/engine/tool-rendering.d.ts +13 -0
  388. package/dist/integrations/pi/engine/tool-rendering.js +145 -0
  389. package/dist/integrations/pi/engine/transcript-image-assets.d.ts +11 -0
  390. package/dist/integrations/pi/engine/transcript-image-assets.js +86 -0
  391. package/dist/integrations/pi/engine/transcript-projection.d.ts +39 -0
  392. package/dist/integrations/pi/engine/transcript-projection.js +405 -0
  393. package/dist/integrations/pi/engine/usage-view.d.ts +4 -0
  394. package/dist/integrations/pi/engine/usage-view.js +56 -0
  395. package/dist/integrations/pi/engine/windows-filesystem-hygiene.d.ts +21 -0
  396. package/dist/integrations/pi/engine/windows-filesystem-hygiene.js +55 -0
  397. package/dist/integrations/pi/engine/workflow-contexts.d.ts +59 -0
  398. package/dist/integrations/pi/engine/workflow-contexts.js +316 -0
  399. package/dist/integrations/pi/engine/workflow-runner.d.ts +60 -0
  400. package/dist/integrations/pi/engine/workflow-runner.js +509 -0
  401. package/dist/integrations/pi/engine/workflow-support.d.ts +33 -0
  402. package/dist/integrations/pi/engine/workflow-support.js +352 -0
  403. package/dist/integrations/pi/engine/workflows.d.ts +251 -0
  404. package/dist/integrations/pi/engine/workflows.js +63 -0
  405. package/dist/integrations/pi/startup-public.d.ts +2 -0
  406. package/dist/integrations/pi/startup-public.js +2223 -0
  407. package/dist/integrations/pi/startup-public.manifest.json +12502 -0
  408. package/dist/integrations/pi/tui-runtime/adapter.d.ts +56 -0
  409. package/dist/integrations/pi/tui-runtime/adapter.js +783 -0
  410. package/dist/integrations/pi/tui-runtime/contracts.d.ts +156 -0
  411. package/dist/integrations/pi/tui-runtime/contracts.js +1 -0
  412. package/dist/integrations/pi/tui-runtime/damage-aware-terminal.d.ts +88 -0
  413. package/dist/integrations/pi/tui-runtime/damage-aware-terminal.js +433 -0
  414. package/dist/integrations/pi/tui-runtime/index.d.ts +9 -0
  415. package/dist/integrations/pi/tui-runtime/index.js +5 -0
  416. package/dist/integrations/pi/tui-runtime/input-presentation-coordinator.d.ts +39 -0
  417. package/dist/integrations/pi/tui-runtime/input-presentation-coordinator.js +139 -0
  418. package/dist/integrations/pi/tui-runtime/mouse-report-input.d.ts +13 -0
  419. package/dist/integrations/pi/tui-runtime/mouse-report-input.js +57 -0
  420. package/dist/integrations/pi/tui-runtime/overlay-geometry.d.ts +32 -0
  421. package/dist/integrations/pi/tui-runtime/overlay-geometry.js +158 -0
  422. package/dist/integrations/pi/tui-runtime/presentation-adapter.d.ts +4 -0
  423. package/dist/integrations/pi/tui-runtime/presentation-adapter.js +48 -0
  424. package/dist/native/darwin-arm64/manifest.json +4 -4
  425. package/dist/native/darwin-arm64/process-guardian +0 -0
  426. package/dist/native/linux-x64/manifest.json +3 -3
  427. package/dist/native/linux-x64/process-guardian +0 -0
  428. package/dist/native/win32-x64/manifest.json +3 -3
  429. package/dist/native/win32-x64/process-guardian.exe +0 -0
  430. package/dist/product-identity.d.ts +37 -0
  431. package/dist/product-identity.js +119 -0
  432. package/dist/product-identity.json +85 -0
  433. package/dist/runtime-payload-inventory.json +127147 -0
  434. package/dist/ui/apps/contracts.d.ts +64 -0
  435. package/dist/ui/apps/host.d.ts +42 -0
  436. package/dist/ui/apps/host.js +156 -0
  437. package/dist/ui/apps/index.d.ts +5 -0
  438. package/dist/ui/apps/index.js +3 -0
  439. package/dist/ui/apps/registry.d.ts +12 -0
  440. package/dist/ui/apps/registry.js +33 -0
  441. package/dist/ui/components/dialog-panel.js +49 -0
  442. package/dist/ui/components/frame.d.ts +22 -0
  443. package/dist/ui/components/frame.js +55 -0
  444. package/dist/ui/components/index.d.ts +47 -0
  445. package/dist/ui/components/index.js +25 -0
  446. package/dist/ui/components/line-input.d.ts +68 -0
  447. package/dist/ui/components/line-input.js +224 -0
  448. package/dist/ui/components/list-view.d.ts +60 -0
  449. package/dist/ui/components/list-view.js +82 -0
  450. package/dist/ui/components/mouse.d.ts +25 -0
  451. package/dist/ui/components/mouse.js +70 -0
  452. package/dist/ui/components/progress-status.d.ts +2 -0
  453. package/dist/ui/components/progress-status.js +4 -0
  454. package/dist/ui/components/prompt-input.d.ts +32 -0
  455. package/dist/ui/components/prompt-input.js +51 -0
  456. package/dist/ui/components/scrollbar.d.ts +88 -0
  457. package/dist/ui/components/scrollbar.js +137 -0
  458. package/dist/ui/components/selection-copy.d.ts +24 -0
  459. package/dist/ui/components/selection-copy.js +39 -0
  460. package/dist/ui/components/shortcuts.d.ts +58 -0
  461. package/dist/ui/components/shortcuts.js +82 -0
  462. package/dist/ui/components/spans.d.ts +28 -0
  463. package/dist/ui/components/spans.js +266 -0
  464. package/dist/ui/components/submitted-prompt.d.ts +23 -0
  465. package/dist/ui/components/submitted-prompt.js +50 -0
  466. package/dist/ui/components/surface.d.ts +20 -0
  467. package/dist/ui/components/surface.js +44 -0
  468. package/dist/ui/components/text-selection.d.ts +62 -0
  469. package/dist/ui/components/text-selection.js +210 -0
  470. package/dist/ui/components/text.d.ts +38 -0
  471. package/dist/ui/components/text.js +185 -0
  472. package/dist/ui/components/transcript-viewport.d.ts +173 -0
  473. package/dist/ui/components/transcript-viewport.js +753 -0
  474. package/dist/ui/components/visible-hyperlinks.d.ts +26 -0
  475. package/dist/ui/components/visible-hyperlinks.js +97 -0
  476. package/dist/ui/settings/declarations.d.ts +141 -0
  477. package/dist/ui/settings/declarations.js +135 -0
  478. package/dist/ui/settings/index.d.ts +10 -0
  479. package/dist/ui/settings/index.js +5 -0
  480. package/dist/ui/settings/manager.d.ts +54 -0
  481. package/dist/ui/settings/manager.js +256 -0
  482. package/dist/ui/settings/migrations.d.ts +13 -0
  483. package/dist/ui/settings/migrations.js +74 -0
  484. package/dist/ui/settings/sections.d.ts +52 -0
  485. package/dist/ui/settings/sections.js +112 -0
  486. package/docs/architecture/boundaries.md +17 -13
  487. package/docs/architecture/code-documentation.md +77 -0
  488. package/docs/architecture/history-editor-provenance.md +100 -0
  489. package/docs/architecture/internal-naming.md +91 -0
  490. package/docs/architecture/process-guardian-provenance.md +3 -1
  491. package/docs/architecture/project-structure.md +69 -30
  492. package/docs/architecture/prompt-suggestions.md +68 -0
  493. package/docs/architecture/resource-and-data-policy.md +28 -2
  494. package/docs/architecture/response-copy-delivery.md +85 -0
  495. package/docs/architecture/terminal-host-proof-gate.md +1 -1
  496. package/docs/architecture/terminal-host-spike-evidence.md +1 -1
  497. package/docs/architecture/tool-image-presentation.md +62 -0
  498. package/docs/architecture/toolchain.md +32 -10
  499. package/docs/architecture/ui-reference-provenance.md +60 -6
  500. package/docs/ci-release-runbook.md +256 -79
  501. package/docs/features/launch-profiles.md +24 -17
  502. package/docs/features/modal-content-interaction.md +37 -0
  503. package/docs/features/prompt-history.md +149 -0
  504. package/docs/local-worktree-cleanup.md +212 -0
  505. package/docs/manual-code-streaming-cleanup.md +88 -0
  506. package/docs/manual-ghost-link-baseline.md +89 -0
  507. package/docs/manual-launch-instance-acceptance.md +12 -35
  508. package/docs/manual-owned-ui-checkpoint.md +79 -0
  509. package/docs/manual-pi-boundary-candidate.md +4 -5
  510. package/docs/manual-terminal-colour-check.md +4 -3
  511. package/docs/openspec-archive-automation.md +259 -0
  512. package/docs/repository-governance-live-acceptance.md +77 -0
  513. package/docs/validation.md +100 -0
  514. package/package.json +49 -34
  515. package/dist/src/cli/capabilities.d.ts +0 -15
  516. package/dist/src/cli/capabilities.js +0 -7
  517. package/dist/src/cli/dispatch.d.ts +0 -32
  518. package/dist/src/cli/dispatch.js +0 -142
  519. package/dist/src/cli/index.d.ts +0 -5
  520. package/dist/src/cli/index.js +0 -5
  521. package/dist/src/cli/packages.d.ts +0 -23
  522. package/dist/src/cli/packages.js +0 -84
  523. package/dist/src/cli/version-stats.d.ts +0 -16
  524. package/dist/src/cli/version-stats.js +0 -72
  525. package/dist/src/cli/version.d.ts +0 -2
  526. package/dist/src/cli/version.js +0 -23
  527. package/dist/src/composition/index.d.ts +0 -48
  528. package/dist/src/composition/index.js +0 -258
  529. package/dist/src/features/launch/development-launch.js +0 -28
  530. package/dist/src/features/launch/index.d.ts +0 -7
  531. package/dist/src/features/launch/index.js +0 -7
  532. package/dist/src/features/launch/intent.d.ts +0 -7
  533. package/dist/src/features/launch/intent.js +0 -4
  534. package/dist/src/features/launch/prepare-launch.d.ts +0 -13
  535. package/dist/src/features/launch/prepare-launch.js +0 -21
  536. package/dist/src/features/launch/profile-paths.d.ts +0 -15
  537. package/dist/src/features/launch/profile-paths.js +0 -31
  538. package/dist/src/features/launch/profiles.d.ts +0 -12
  539. package/dist/src/features/launch/profiles.js +0 -26
  540. package/dist/src/features/launch/runtime-selection.d.ts +0 -19
  541. package/dist/src/features/launch/runtime-selection.js +0 -13
  542. package/dist/src/features/owned-ui/customization.d.ts +0 -38
  543. package/dist/src/features/owned-ui/customization.js +0 -108
  544. package/dist/src/features/owned-ui/diagnostics.d.ts +0 -33
  545. package/dist/src/features/owned-ui/diagnostics.js +0 -94
  546. package/dist/src/features/owned-ui/index.d.ts +0 -4
  547. package/dist/src/features/owned-ui/index.js +0 -4
  548. package/dist/src/features/owned-ui/run.d.ts +0 -11
  549. package/dist/src/features/owned-ui/run.js +0 -15
  550. package/dist/src/features/owned-ui/settings-app.d.ts +0 -22
  551. package/dist/src/features/owned-ui/settings-app.js +0 -633
  552. package/dist/src/features/workspace/capabilities.d.ts +0 -31
  553. package/dist/src/features/workspace/capabilities.js +0 -75
  554. package/dist/src/features/workspace/index.d.ts +0 -6
  555. package/dist/src/features/workspace/index.js +0 -6
  556. package/dist/src/features/workspace/presentation.d.ts +0 -30
  557. package/dist/src/features/workspace/presentation.js +0 -70
  558. package/dist/src/features/workspace/reconciliation.d.ts +0 -15
  559. package/dist/src/features/workspace/reconciliation.js +0 -82
  560. package/dist/src/features/workspace/reducer.d.ts +0 -42
  561. package/dist/src/features/workspace/reducer.js +0 -213
  562. package/dist/src/features/workspace/router.d.ts +0 -31
  563. package/dist/src/features/workspace/router.js +0 -124
  564. package/dist/src/features/workspace/store.d.ts +0 -17
  565. package/dist/src/features/workspace/store.js +0 -54
  566. package/dist/src/foundation/agent-engine-contracts/capability-ports.d.ts +0 -95
  567. package/dist/src/foundation/agent-engine-contracts/domain-validation.js +0 -89
  568. package/dist/src/foundation/agent-engine-contracts/domain.d.ts +0 -116
  569. package/dist/src/foundation/agent-engine-contracts/index.d.ts +0 -8
  570. package/dist/src/foundation/agent-engine-contracts/index.js +0 -8
  571. package/dist/src/foundation/agent-engine-contracts/package-ports.d.ts +0 -54
  572. package/dist/src/foundation/launch-guardian/index.d.ts +0 -1
  573. package/dist/src/foundation/launch-guardian/index.js +0 -1
  574. package/dist/src/foundation/launch-guardian/main.d.ts +0 -31
  575. package/dist/src/foundation/launch-guardian/main.js +0 -165
  576. package/dist/src/foundation/lifecycle/index.d.ts +0 -4
  577. package/dist/src/foundation/lifecycle/index.js +0 -4
  578. package/dist/src/foundation/lifecycle/model.d.ts +0 -64
  579. package/dist/src/foundation/lifecycle/model.js +0 -40
  580. package/dist/src/foundation/lifecycle/paths.d.ts +0 -10
  581. package/dist/src/foundation/lifecycle/paths.js +0 -42
  582. package/dist/src/foundation/native-host-protocol/codec.d.ts +0 -11
  583. package/dist/src/foundation/native-host-protocol/codec.js +0 -56
  584. package/dist/src/foundation/native-host-protocol/evidence.d.ts +0 -67
  585. package/dist/src/foundation/native-host-protocol/evidence.js +0 -141
  586. package/dist/src/foundation/native-host-protocol/index.d.ts +0 -4
  587. package/dist/src/foundation/native-host-protocol/index.js +0 -4
  588. package/dist/src/foundation/native-host-protocol/messages.d.ts +0 -56
  589. package/dist/src/foundation/native-host-protocol/messages.js +0 -149
  590. package/dist/src/foundation/native-host-protocol/proof-gate.d.ts +0 -13
  591. package/dist/src/foundation/native-host-protocol/proof-gate.js +0 -33
  592. package/dist/src/foundation/owned-ui-contracts/extension-ui.d.ts +0 -302
  593. package/dist/src/foundation/owned-ui-contracts/index.d.ts +0 -3
  594. package/dist/src/foundation/owned-ui-contracts/index.js +0 -3
  595. package/dist/src/foundation/owned-ui-contracts/model.d.ts +0 -241
  596. package/dist/src/foundation/owned-ui-contracts/validation.d.ts +0 -11
  597. package/dist/src/foundation/owned-ui-contracts/validation.js +0 -395
  598. package/dist/src/foundation/owned-ui-settings/declarations.d.ts +0 -13
  599. package/dist/src/foundation/owned-ui-settings/declarations.js +0 -39
  600. package/dist/src/foundation/owned-ui-settings/index.d.ts +0 -6
  601. package/dist/src/foundation/owned-ui-settings/index.js +0 -6
  602. package/dist/src/foundation/owned-ui-settings/migrations.d.ts +0 -13
  603. package/dist/src/foundation/owned-ui-settings/migrations.js +0 -28
  604. package/dist/src/foundation/owned-ui-settings/sections.d.ts +0 -70
  605. package/dist/src/foundation/owned-ui-settings/sections.js +0 -93
  606. package/dist/src/foundation/owned-ui-settings/session.d.ts +0 -44
  607. package/dist/src/foundation/owned-ui-settings/session.js +0 -145
  608. package/dist/src/foundation/owned-ui-settings/store.d.ts +0 -28
  609. package/dist/src/foundation/owned-ui-settings/store.js +0 -90
  610. package/dist/src/foundation/pi-component-adapter/components.d.ts +0 -4
  611. package/dist/src/foundation/pi-component-adapter/components.js +0 -64
  612. package/dist/src/foundation/pi-component-adapter/conformance.d.ts +0 -17
  613. package/dist/src/foundation/pi-component-adapter/conformance.js +0 -69
  614. package/dist/src/foundation/pi-component-adapter/index.d.ts +0 -13
  615. package/dist/src/foundation/pi-component-adapter/index.js +0 -13
  616. package/dist/src/foundation/pi-component-adapter/resources/builtin-themes.d.ts +0 -165
  617. package/dist/src/foundation/pi-component-adapter/resources/builtin-themes.js +0 -166
  618. package/dist/src/foundation/pi-component-adapter/shell-components.d.ts +0 -6
  619. package/dist/src/foundation/pi-component-adapter/shell-components.js +0 -6
  620. package/dist/src/foundation/pi-component-adapter/shell-editor-autocomplete.js +0 -162
  621. package/dist/src/foundation/pi-component-adapter/shell-extension-ui.d.ts +0 -35
  622. package/dist/src/foundation/pi-component-adapter/shell-extension-ui.js +0 -279
  623. package/dist/src/foundation/pi-component-adapter/shell-footer-status.d.ts +0 -7
  624. package/dist/src/foundation/pi-component-adapter/shell-footer-status.js +0 -189
  625. package/dist/src/foundation/pi-component-adapter/shell-presenters-transcript.d.ts +0 -57
  626. package/dist/src/foundation/pi-component-adapter/shell-presenters-transcript.js +0 -429
  627. package/dist/src/foundation/pi-component-adapter/shell-selectors-dialogs.d.ts +0 -113
  628. package/dist/src/foundation/pi-component-adapter/shell-selectors-dialogs.js +0 -235
  629. package/dist/src/foundation/pi-component-adapter/shell-shared-facade.d.ts +0 -116
  630. package/dist/src/foundation/pi-component-adapter/shell-shared-facade.js +0 -87
  631. package/dist/src/foundation/pi-component-adapter/upstream/adjacent/core/keybindings.d.ts +0 -422
  632. package/dist/src/foundation/pi-component-adapter/upstream/adjacent/core/keybindings.js +0 -296
  633. package/dist/src/foundation/pi-component-adapter/upstream/components/countdown-timer.d.ts +0 -10
  634. package/dist/src/foundation/pi-component-adapter/upstream/components/custom-entry.d.ts +0 -17
  635. package/dist/src/foundation/pi-component-adapter/upstream/components/custom-entry.js +0 -51
  636. package/dist/src/foundation/pi-component-adapter/upstream/components/daxnuts.d.ts +0 -22
  637. package/dist/src/foundation/pi-component-adapter/upstream/components/daxnuts.js +0 -142
  638. package/dist/src/foundation/pi-component-adapter/upstream/components/earendil-announcement.d.ts +0 -4
  639. package/dist/src/foundation/pi-component-adapter/upstream/components/earendil-announcement.js +0 -19
  640. package/dist/src/foundation/pi-component-adapter/upstream/components/extension-editor.d.ts +0 -17
  641. package/dist/src/foundation/pi-component-adapter/upstream/components/extension-editor.js +0 -81
  642. package/dist/src/foundation/pi-component-adapter/upstream/components/first-time-setup.d.ts +0 -24
  643. package/dist/src/foundation/pi-component-adapter/upstream/components/first-time-setup.js +0 -105
  644. package/dist/src/foundation/pi-component-adapter/upstream/components/markdown-transform.d.ts +0 -2
  645. package/dist/src/foundation/pi-component-adapter/upstream/components/markdown-transform.js +0 -18
  646. package/dist/src/foundation/pi-component-adapter/upstream/components/mermaid.js +0 -77
  647. package/dist/src/foundation/pi-component-adapter/upstream/components/owned-editor.d.ts +0 -18
  648. package/dist/src/foundation/pi-component-adapter/upstream/components/owned-editor.js +0 -55
  649. package/dist/src/foundation/pi-component-adapter/upstream/components/scoped-models-selector.d.ts +0 -55
  650. package/dist/src/foundation/pi-component-adapter/upstream/components/scoped-models-selector.js +0 -342
  651. package/dist/src/foundation/pi-component-adapter/upstream/components/session-footer.d.ts +0 -10
  652. package/dist/src/foundation/pi-component-adapter/upstream/components/session-footer.js +0 -120
  653. package/dist/src/foundation/pi-component-adapter/upstream/components/session-selector-search.js +0 -159
  654. package/dist/src/foundation/pi-component-adapter/upstream/components/session-selector.d.ts +0 -95
  655. package/dist/src/foundation/pi-component-adapter/upstream/components/session-selector.js +0 -889
  656. package/dist/src/foundation/pi-component-adapter/upstream/components/skill-invocation-message.d.ts +0 -19
  657. package/dist/src/foundation/pi-component-adapter/upstream/components/skill-invocation-message.js +0 -44
  658. package/dist/src/foundation/pi-component-adapter/upstream/components/status-indicator.d.ts +0 -30
  659. package/dist/src/foundation/pi-component-adapter/upstream/components/status-indicator.js +0 -59
  660. package/dist/src/foundation/pi-component-adapter/upstream/components/tree-selector.d.ts +0 -98
  661. package/dist/src/foundation/pi-component-adapter/upstream/components/tree-selector.js +0 -1272
  662. package/dist/src/foundation/pi-component-adapter/upstream/components/trust-selector.d.ts +0 -33
  663. package/dist/src/foundation/pi-component-adapter/upstream/components/trust-selector.js +0 -76
  664. package/dist/src/foundation/pi-component-adapter/upstream/external-editor.js +0 -39
  665. package/dist/src/foundation/pi-component-adapter/upstream/model-search.d.ts +0 -15
  666. package/dist/src/foundation/pi-component-adapter/upstream/theme/theme-controller.d.ts +0 -25
  667. package/dist/src/foundation/pi-component-adapter/upstream/theme/theme-controller.js +0 -117
  668. package/dist/src/foundation/pi-component-adapter/upstream/theme/theme.d.ts +0 -61
  669. package/dist/src/foundation/pi-component-adapter/upstream/theme/theme.js +0 -326
  670. package/dist/src/foundation/pi-engine-adapter/adapter.d.ts +0 -164
  671. package/dist/src/foundation/pi-engine-adapter/adapter.js +0 -2367
  672. package/dist/src/foundation/pi-engine-adapter/conformance.d.ts +0 -37
  673. package/dist/src/foundation/pi-engine-adapter/conformance.js +0 -130
  674. package/dist/src/foundation/pi-engine-adapter/index.d.ts +0 -10
  675. package/dist/src/foundation/pi-engine-adapter/index.js +0 -10
  676. package/dist/src/foundation/pi-engine-adapter/model-auth-integration.d.ts +0 -30
  677. package/dist/src/foundation/pi-engine-adapter/model-auth-integration.js +0 -61
  678. package/dist/src/foundation/pi-engine-adapter/package-integration.d.ts +0 -13
  679. package/dist/src/foundation/pi-engine-adapter/package-integration.js +0 -112
  680. package/dist/src/foundation/pi-engine-adapter/pi-settings-metadata.json +0 -374
  681. package/dist/src/foundation/pi-engine-adapter/resource-extension-integration.d.ts +0 -31
  682. package/dist/src/foundation/pi-engine-adapter/resource-extension-integration.js +0 -80
  683. package/dist/src/foundation/pi-engine-adapter/runtime-integration.d.ts +0 -35
  684. package/dist/src/foundation/pi-engine-adapter/runtime-integration.js +0 -67
  685. package/dist/src/foundation/pi-engine-adapter/session-integration.d.ts +0 -43
  686. package/dist/src/foundation/pi-engine-adapter/session-integration.js +0 -97
  687. package/dist/src/foundation/pi-engine-adapter/settings-integration.d.ts +0 -55
  688. package/dist/src/foundation/pi-engine-adapter/settings-integration.js +0 -233
  689. package/dist/src/foundation/pi-engine-adapter/workflow-controllers.d.ts +0 -20
  690. package/dist/src/foundation/pi-engine-adapter/workflow-controllers.js +0 -48
  691. package/dist/src/foundation/pi-engine-adapter/workflows.d.ts +0 -173
  692. package/dist/src/foundation/pi-engine-adapter/workflows.js +0 -60
  693. package/dist/src/foundation/pi-owned-ui-integration/index.d.ts +0 -2
  694. package/dist/src/foundation/pi-owned-ui-integration/index.js +0 -2
  695. package/dist/src/foundation/pi-owned-ui-integration/route-host.d.ts +0 -29
  696. package/dist/src/foundation/pi-owned-ui-integration/session-shell.d.ts +0 -106
  697. package/dist/src/foundation/pi-owned-ui-integration/session-shell.js +0 -1518
  698. package/dist/src/foundation/pi-tui-runtime-adapter/adapter.d.ts +0 -39
  699. package/dist/src/foundation/pi-tui-runtime-adapter/adapter.js +0 -493
  700. package/dist/src/foundation/pi-tui-runtime-adapter/conformance.d.ts +0 -18
  701. package/dist/src/foundation/pi-tui-runtime-adapter/conformance.js +0 -145
  702. package/dist/src/foundation/pi-tui-runtime-adapter/contracts.d.ts +0 -120
  703. package/dist/src/foundation/pi-tui-runtime-adapter/index.d.ts +0 -4
  704. package/dist/src/foundation/pi-tui-runtime-adapter/index.js +0 -4
  705. package/dist/src/foundation/pi-tui-runtime-adapter/presentation-adapter.d.ts +0 -4
  706. package/dist/src/foundation/pi-tui-runtime-adapter/presentation-adapter.js +0 -48
  707. package/dist/src/foundation/presentation-contracts/index.d.ts +0 -96
  708. package/dist/src/foundation/process-containment/index.d.ts +0 -5
  709. package/dist/src/foundation/process-containment/index.js +0 -5
  710. package/dist/src/foundation/process-containment/linux-process-inspector.d.ts +0 -6
  711. package/dist/src/foundation/process-containment/linux-process-inspector.js +0 -26
  712. package/dist/src/foundation/process-containment/native-guardian-containment.d.ts +0 -16
  713. package/dist/src/foundation/process-containment/native-guardian-containment.js +0 -139
  714. package/dist/src/foundation/process-containment/windows-process-inspector.d.ts +0 -17
  715. package/dist/src/foundation/process-containment/windows-process-inspector.js +0 -53
  716. package/dist/src/foundation/protocol/client.d.ts +0 -17
  717. package/dist/src/foundation/protocol/client.js +0 -129
  718. package/dist/src/foundation/protocol/index.d.ts +0 -2
  719. package/dist/src/foundation/protocol/index.js +0 -2
  720. package/dist/src/foundation/protocol/messages.d.ts +0 -89
  721. package/dist/src/foundation/protocol/messages.js +0 -99
  722. package/dist/src/foundation/release/bootstrap.d.ts +0 -29
  723. package/dist/src/foundation/release/bootstrap.js +0 -335
  724. package/dist/src/foundation/release/cohort-state.d.ts +0 -70
  725. package/dist/src/foundation/release/cohort-state.js +0 -202
  726. package/dist/src/foundation/release/index.d.ts +0 -10
  727. package/dist/src/foundation/release/index.js +0 -10
  728. package/dist/src/foundation/release/release-gc.d.ts +0 -5
  729. package/dist/src/foundation/release/release-gc.js +0 -16
  730. package/dist/src/foundation/release/release-store.d.ts +0 -43
  731. package/dist/src/foundation/release/release-store.js +0 -175
  732. package/dist/src/foundation/release/release.d.ts +0 -38
  733. package/dist/src/foundation/release/release.js +0 -204
  734. package/dist/src/foundation/release/update-transaction.d.ts +0 -31
  735. package/dist/src/foundation/release/update-transaction.js +0 -89
  736. package/dist/src/foundation/release/update.d.ts +0 -82
  737. package/dist/src/foundation/release/update.js +0 -529
  738. package/dist/src/foundation/storage/control-store.d.ts +0 -61
  739. package/dist/src/foundation/storage/control-store.js +0 -530
  740. package/dist/src/foundation/storage/index.d.ts +0 -1
  741. package/dist/src/foundation/storage/index.js +0 -1
  742. package/dist/src/foundation/structured-agent-runtime/backpressure.d.ts +0 -46
  743. package/dist/src/foundation/structured-agent-runtime/backpressure.js +0 -118
  744. package/dist/src/foundation/structured-agent-runtime/commands.d.ts +0 -52
  745. package/dist/src/foundation/structured-agent-runtime/commands.js +0 -164
  746. package/dist/src/foundation/structured-agent-runtime/handshake.d.ts +0 -41
  747. package/dist/src/foundation/structured-agent-runtime/handshake.js +0 -151
  748. package/dist/src/foundation/structured-agent-runtime/index.d.ts +0 -5
  749. package/dist/src/foundation/structured-agent-runtime/index.js +0 -5
  750. package/dist/src/foundation/structured-agent-runtime/reconnection.d.ts +0 -37
  751. package/dist/src/foundation/structured-agent-runtime/reconnection.js +0 -129
  752. package/dist/src/foundation/structured-agent-runtime/state.d.ts +0 -56
  753. package/dist/src/foundation/structured-agent-runtime/state.js +0 -118
  754. package/dist/src/foundation/supervision/index.d.ts +0 -3
  755. package/dist/src/foundation/supervision/index.js +0 -3
  756. package/dist/src/foundation/supervision/main.d.ts +0 -1
  757. package/dist/src/foundation/supervision/main.js +0 -41
  758. package/dist/src/foundation/supervision/paths.d.ts +0 -1
  759. package/dist/src/foundation/supervision/paths.js +0 -1
  760. package/dist/src/foundation/supervision/server.d.ts +0 -22
  761. package/dist/src/foundation/supervision/server.js +0 -451
  762. package/dist/src/foundation/ui-apps/contracts.d.ts +0 -42
  763. package/dist/src/foundation/ui-apps/host.d.ts +0 -42
  764. package/dist/src/foundation/ui-apps/host.js +0 -152
  765. package/dist/src/foundation/ui-apps/index.d.ts +0 -3
  766. package/dist/src/foundation/ui-apps/index.js +0 -3
  767. package/dist/src/foundation/ui-apps/registry.d.ts +0 -11
  768. package/dist/src/foundation/ui-apps/registry.js +0 -32
  769. package/dist/src/foundation/ui-components/dialog-panel.js +0 -47
  770. package/dist/src/foundation/ui-components/frame.d.ts +0 -21
  771. package/dist/src/foundation/ui-components/frame.js +0 -54
  772. package/dist/src/foundation/ui-components/index.d.ts +0 -18
  773. package/dist/src/foundation/ui-components/index.js +0 -18
  774. package/dist/src/foundation/ui-components/line-input.d.ts +0 -74
  775. package/dist/src/foundation/ui-components/line-input.js +0 -245
  776. package/dist/src/foundation/ui-components/list-view.d.ts +0 -66
  777. package/dist/src/foundation/ui-components/list-view.js +0 -76
  778. package/dist/src/foundation/ui-components/mouse.d.ts +0 -15
  779. package/dist/src/foundation/ui-components/mouse.js +0 -46
  780. package/dist/src/foundation/ui-components/scrollbar.d.ts +0 -62
  781. package/dist/src/foundation/ui-components/scrollbar.js +0 -102
  782. package/dist/src/foundation/ui-components/shortcuts.d.ts +0 -57
  783. package/dist/src/foundation/ui-components/shortcuts.js +0 -81
  784. package/dist/src/foundation/ui-components/spans.d.ts +0 -7
  785. package/dist/src/foundation/ui-components/spans.js +0 -59
  786. package/dist/src/foundation/ui-components/surface.d.ts +0 -20
  787. package/dist/src/foundation/ui-components/surface.js +0 -38
  788. package/dist/src/foundation/ui-components/text.d.ts +0 -24
  789. package/dist/src/foundation/ui-components/text.js +0 -123
  790. package/dist/src/foundation/workspace-contracts/index.d.ts +0 -2
  791. package/dist/src/foundation/workspace-contracts/index.js +0 -2
  792. package/dist/src/foundation/workspace-contracts/model.d.ts +0 -248
  793. package/dist/src/foundation/workspace-contracts/model.js +0 -2
  794. package/dist/src/foundation/workspace-contracts/validation.d.ts +0 -13
  795. package/dist/src/foundation/workspace-contracts/validation.js +0 -335
  796. package/dist/src/product-identity.d.ts +0 -37
  797. package/dist/src/product-identity.js +0 -150
  798. package/dist/src/product-identity.json +0 -99
  799. package/docs/manual-transparent-checkpoint.md +0 -53
  800. /package/dist/{src/foundation/agent-engine-contracts/domain.js → app/session-shell/paste-helper.d.ts} +0 -0
  801. /package/dist/{src/foundation/agent-engine-contracts/ports.js → app/session-shell/paste-text-worker.d.ts} +0 -0
  802. /package/dist/{src/foundation/lifecycle/commands.js → app/session-shell/paste-types.js} +0 -0
  803. /package/dist/{src/foundation/pi-owned-ui-integration/route-host.js → app/session-shell/response-copy-helper.d.ts} +0 -0
  804. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/capability-ports.js +0 -0
  805. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/domain-validation.d.ts +0 -0
  806. /package/dist/{src/foundation/pi-tui-runtime-adapter/contracts.js → contracts/agent-engine/domain.js} +0 -0
  807. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/model.d.ts +0 -0
  808. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/model.js +0 -0
  809. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/package-ports.js +0 -0
  810. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/ports.d.ts +0 -0
  811. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/serialization.d.ts +0 -0
  812. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/serialization.js +0 -0
  813. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/validation.d.ts +0 -0
  814. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/validation.js +0 -0
  815. /package/dist/{src/foundation/owned-ui-contracts → contracts/owned-ui}/extension-ui.js +0 -0
  816. /package/dist/{src/foundation/owned-ui-contracts → contracts/owned-ui}/model.js +0 -0
  817. /package/dist/{src/foundation/presentation-contracts → contracts/presentation}/index.js +0 -0
  818. /package/dist/{src/features → features}/launch/development-launch.d.ts +0 -0
  819. /package/dist/{src/features → features}/launch/initialize-profile.d.ts +0 -0
  820. /package/dist/{src/features → features}/launch/initialize-profile.js +0 -0
  821. /package/dist/{src/foundation → foundation}/lifecycle/commands.d.ts +0 -0
  822. /package/dist/{src/foundation → foundation}/lifecycle/launch-instance.d.ts +0 -0
  823. /package/dist/{src/foundation → foundation}/lifecycle/launch-instance.js +0 -0
  824. /package/dist/{src/foundation → foundation}/process-containment/artifact.d.ts +0 -0
  825. /package/dist/{src/foundation → foundation}/process-containment/artifact.js +0 -0
  826. /package/dist/{src/foundation → foundation}/process-containment/contracts.d.ts +0 -0
  827. /package/dist/{src/foundation → foundation}/process-containment/contracts.js +0 -0
  828. /package/dist/{src/foundation → foundation}/release/cohort-selection.d.ts +0 -0
  829. /package/dist/{src/foundation → foundation}/release/cohort-selection.js +0 -0
  830. /package/dist/{src/foundation → foundation}/release/concurrency.d.ts +0 -0
  831. /package/dist/{src/foundation → foundation}/release/concurrency.js +0 -0
  832. /package/dist/{src/foundation → foundation}/release/process-cleanup.d.ts +0 -0
  833. /package/dist/{src/foundation → foundation}/release/process-cleanup.js +0 -0
  834. /package/dist/{src/foundation → foundation}/release/stable-release.d.ts +0 -0
  835. /package/dist/{src/foundation → foundation}/release/stable-release.js +0 -0
  836. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/shell-editor-autocomplete.d.ts +0 -0
  837. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/theme.d.ts +0 -0
  838. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/theme.js +0 -0
  839. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/countdown-timer.js +0 -0
  840. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/mermaid.d.ts +0 -0
  841. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/session-selector-search.d.ts +0 -0
  842. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/external-editor.d.ts +0 -0
  843. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/model-search.js +0 -0
  844. /package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/public-main-entry.d.ts +0 -0
  845. /package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/public-main-entry.js +0 -0
  846. /package/dist/{src/foundation/ui-apps → ui/apps}/contracts.js +0 -0
  847. /package/dist/{src/foundation/ui-components → ui/components}/dialog-panel.d.ts +0 -0
  848. /package/dist/{src/foundation/ui-components → ui/components}/label.d.ts +0 -0
  849. /package/dist/{src/foundation/ui-components → ui/components}/label.js +0 -0
  850. /package/dist/{src/foundation/ui-components → ui/components}/list-block.d.ts +0 -0
  851. /package/dist/{src/foundation/ui-components → ui/components}/list-block.js +0 -0
  852. /package/dist/{src/foundation/ui-components → ui/components}/pane.d.ts +0 -0
  853. /package/dist/{src/foundation/ui-components → ui/components}/pane.js +0 -0
  854. /package/dist/{src/foundation/ui-components → ui/components}/revision.d.ts +0 -0
  855. /package/dist/{src/foundation/ui-components → ui/components}/revision.js +0 -0
  856. /package/dist/{src/foundation/ui-components → ui/components}/status-line.d.ts +0 -0
  857. /package/dist/{src/foundation/ui-components → ui/components}/status-line.js +0 -0
  858. /package/dist/{src/foundation/ui-components → ui/components}/stepper.d.ts +0 -0
  859. /package/dist/{src/foundation/ui-components → ui/components}/stepper.js +0 -0
  860. /package/dist/{src/foundation/ui-components → ui/components}/theme.d.ts +0 -0
  861. /package/dist/{src/foundation/ui-components → ui/components}/theme.js +0 -0
  862. /package/dist/{src/foundation/ui-components → ui/components}/value-menu.d.ts +0 -0
  863. /package/dist/{src/foundation/ui-components → ui/components}/value-menu.js +0 -0
  864. /package/dist/{src/foundation/owned-ui-settings → ui/settings}/resolution.d.ts +0 -0
  865. /package/dist/{src/foundation/owned-ui-settings → ui/settings}/resolution.js +0 -0
@@ -0,0 +1,16 @@
1
+ import { type PromptHistoryFailure, type PromptHistorySnapshot, type PromptHistorySubmission } from "../../contracts/owned-ui/index.js";
2
+ export declare class HistoryStorageError extends Error {
3
+ readonly code: PromptHistoryFailure;
4
+ readonly certainty: "uncommitted" | "unknown";
5
+ constructor(code: PromptHistoryFailure, certainty?: "uncommitted" | "unknown");
6
+ }
7
+ export declare class PromptHistoryStore {
8
+ #private;
9
+ readonly path: string;
10
+ readonly profileId: string;
11
+ constructor(path: string, profileId: string, limit: number, imagesDir?: string);
12
+ record(input: PromptHistorySubmission): void;
13
+ snapshot(): PromptHistorySnapshot;
14
+ close(): void;
15
+ }
16
+ export declare function classifyHistoryError(error: unknown): PromptHistoryFailure;
@@ -0,0 +1,219 @@
1
+ import { DatabaseSync } from "node:sqlite";
2
+ import { chmodSync, closeSync, lstatSync, mkdirSync, openSync, statSync } from "node:fs";
3
+ import { dirname } from "node:path";
4
+ import { PRODUCT_IDENTITY } from "../../product-identity.js";
5
+ import { assertPromptHistorySubmission, PROMPT_HISTORY_MAX_ENTRY_BYTES, PROMPT_HISTORY_MAX_TEXT_BYTES } from "../../contracts/owned-ui/index.js";
6
+ import { collectImageChipIdentifiers, PromptImageSidecar } from "./image-sidecar.js";
7
+ export class HistoryStorageError extends Error {
8
+ code;
9
+ certainty;
10
+ constructor(code, certainty = "uncommitted") { super(`Prompt history ${code}`); this.code = code; this.certainty = certainty; }
11
+ }
12
+ const MAX_STORAGE_BYTES = 64 * 1024 * 1024;
13
+ export class PromptHistoryStore {
14
+ #database;
15
+ #sidecar;
16
+ path;
17
+ profileId;
18
+ constructor(path, profileId, limit, imagesDir) {
19
+ this.path = path;
20
+ this.profileId = profileId;
21
+ if (!Number.isInteger(limit) || limit < 10 || limit > 100 || limit % 10 !== 0)
22
+ throw new HistoryStorageError("schema");
23
+ this.#sidecar = imagesDir === undefined ? undefined : new PromptImageSidecar(imagesDir);
24
+ mkdirSync(dirname(path), { recursive: true, mode: 0o700 });
25
+ if (lstatSync(dirname(path)).isSymbolicLink())
26
+ throw new HistoryStorageError("unavailable");
27
+ if (process.platform !== "win32")
28
+ chmodSync(dirname(path), 0o700);
29
+ try {
30
+ closeSync(openSync(path, "wx", 0o600));
31
+ }
32
+ catch (error) {
33
+ if (!(error instanceof Error && "code" in error && error.code === "EEXIST"))
34
+ throw error;
35
+ }
36
+ if (lstatSync(path).isSymbolicLink() || !lstatSync(path).isFile())
37
+ throw new HistoryStorageError("unavailable");
38
+ if (process.platform !== "win32")
39
+ chmodSync(path, 0o600);
40
+ this.#checkSize();
41
+ this.#database = new DatabaseSync(path);
42
+ try {
43
+ this.#database.exec("PRAGMA busy_timeout = 25");
44
+ this.#transaction(() => {
45
+ const version = Number(this.#database.prepare("PRAGMA user_version").get()?.user_version);
46
+ if (version === 0) {
47
+ const tables = this.#database.prepare("SELECT name FROM sqlite_master WHERE type='table'").all();
48
+ if (tables.length !== 0)
49
+ throw new HistoryStorageError("schema");
50
+ this.#database.exec(`CREATE TABLE history_meta (id INTEGER PRIMARY KEY CHECK(id=1), schema TEXT NOT NULL, profile TEXT NOT NULL, revision INTEGER NOT NULL, limit_count INTEGER NOT NULL);
51
+ CREATE TABLE prompts (text TEXT PRIMARY KEY COLLATE BINARY, submission_id TEXT NOT NULL, sequence INTEGER NOT NULL UNIQUE, timestamp INTEGER NOT NULL, kind TEXT NOT NULL, cwd TEXT, session_id TEXT, bytes INTEGER NOT NULL CHECK(bytes>0 AND bytes<=1048576));
52
+ PRAGMA user_version=1;`);
53
+ this.#database.prepare("INSERT INTO history_meta VALUES (1,?,?,0,?)").run(PRODUCT_IDENTITY.protocol.promptHistorySchema, profileId, limit);
54
+ }
55
+ else if (version !== 1)
56
+ throw new HistoryStorageError("schema");
57
+ const meta = this.#database.prepare("SELECT schema,profile FROM history_meta WHERE id=1").get();
58
+ if (meta?.schema !== PRODUCT_IDENTITY.protocol.promptHistorySchema || meta?.profile !== profileId)
59
+ throw new HistoryStorageError("schema");
60
+ this.#database.prepare("UPDATE history_meta SET limit_count=?,revision=revision+1 WHERE id=1").run(limit);
61
+ this.#prune(limit);
62
+ });
63
+ this.#database.exec("PRAGMA journal_mode=WAL; PRAGMA synchronous=FULL; PRAGMA wal_autocheckpoint=128; PRAGMA journal_size_limit=8388608; PRAGMA max_page_count=8192;");
64
+ }
65
+ catch (error) {
66
+ this.#database.close();
67
+ throw error;
68
+ }
69
+ // Rationale: opportunistically reclaim any sidecar whose row was pruned in a prior process
70
+ // crash or by another concurrent opener. Bounded by the number of files on disk minus the
71
+ // surviving reference set; failures are swallowed to preserve honest history behavior.
72
+ this.#sweepOrphanedSidecars();
73
+ }
74
+ record(input) {
75
+ assertPromptHistorySubmission(input);
76
+ const bytes = Buffer.byteLength(input.text);
77
+ if (bytes > PROMPT_HISTORY_MAX_ENTRY_BYTES)
78
+ throw new HistoryStorageError("oversized");
79
+ this.#checkSize(true);
80
+ this.#transaction(() => {
81
+ const duplicate = this.#database.prepare("SELECT submission_id FROM prompts WHERE text=?").get(input.text);
82
+ if (duplicate?.submission_id === input.id)
83
+ return;
84
+ this.#database.exec("UPDATE history_meta SET revision=revision+1 WHERE id=1");
85
+ const meta = this.#database.prepare("SELECT revision,limit_count FROM history_meta WHERE id=1").get();
86
+ this.#database.prepare(`INSERT INTO prompts VALUES (?,?,?,?,?,?,?,?) ON CONFLICT(text) DO UPDATE SET submission_id=excluded.submission_id,sequence=excluded.sequence,timestamp=excluded.timestamp,kind=excluded.kind,cwd=excluded.cwd,session_id=excluded.session_id,bytes=excluded.bytes`)
87
+ .run(input.text, input.id, meta.revision, input.timestamp, input.kind, bounded(input.cwd, 8192), bounded(input.sessionId, 256), bytes);
88
+ this.#prune(Number(meta.limit_count));
89
+ });
90
+ }
91
+ snapshot() {
92
+ this.#database.exec("BEGIN");
93
+ try {
94
+ const meta = this.#database.prepare("SELECT revision,limit_count FROM history_meta WHERE id=1").get();
95
+ const entries = this.#database.prepare("SELECT text,submission_id FROM prompts ORDER BY sequence DESC LIMIT 100").all();
96
+ let bytes = 0;
97
+ const result = entries.map(row => {
98
+ if (typeof row.text !== "string" || typeof row.submission_id !== "string")
99
+ throw new HistoryStorageError("corrupt");
100
+ bytes += Buffer.byteLength(row.text);
101
+ if (bytes > PROMPT_HISTORY_MAX_TEXT_BYTES)
102
+ throw new HistoryStorageError("corrupt");
103
+ return { text: row.text, submissionId: row.submission_id };
104
+ });
105
+ this.#database.exec("COMMIT");
106
+ return { revision: Number(meta.revision), limit: Number(meta.limit_count), entries: result };
107
+ }
108
+ catch (error) {
109
+ this.#database.exec("ROLLBACK");
110
+ throw error;
111
+ }
112
+ }
113
+ close() { this.#database.close(); }
114
+ #transaction(work) {
115
+ try {
116
+ this.#database.exec("BEGIN IMMEDIATE");
117
+ }
118
+ catch (error) {
119
+ throw new HistoryStorageError(classifyHistoryError(error), "uncommitted");
120
+ }
121
+ try {
122
+ work();
123
+ this.#database.exec("COMMIT");
124
+ }
125
+ catch (error) {
126
+ // Invariant: only a successful rollback proves that replay cannot advance recency twice.
127
+ try {
128
+ this.#database.exec("ROLLBACK");
129
+ }
130
+ catch {
131
+ throw new HistoryStorageError(classifyHistoryError(error), "unknown");
132
+ }
133
+ throw new HistoryStorageError(classifyHistoryError(error), "uncommitted");
134
+ }
135
+ }
136
+ #prune(limit) {
137
+ const rows = this.#database.prepare("SELECT sequence,bytes FROM prompts ORDER BY sequence DESC").all();
138
+ let bytes = 0;
139
+ const dropped = [];
140
+ for (const [index, row] of rows.entries()) {
141
+ bytes += Number(row.bytes);
142
+ if (index >= limit || bytes > PROMPT_HISTORY_MAX_TEXT_BYTES)
143
+ dropped.push(row.sequence);
144
+ }
145
+ if (dropped.length === 0)
146
+ return;
147
+ // Invariant: sidecar reap uses text still referenced by SURVIVING rows so a row still
148
+ // referencing an id shared with a pruned row keeps the file. Collect surviving ids before
149
+ // deleting so a concurrent snapshot cannot see a live row whose sidecar is already gone.
150
+ const droppedTexts = dropped.map(sequence => this.#database.prepare("SELECT text FROM prompts WHERE sequence=?").get(sequence)?.text).filter((value) => typeof value === "string");
151
+ for (const sequence of dropped)
152
+ this.#database.prepare("DELETE FROM prompts WHERE sequence=?").run(sequence);
153
+ if (this.#sidecar === undefined)
154
+ return;
155
+ const survivingIds = this.#collectReferencedIdentifiers();
156
+ for (const text of droppedTexts) {
157
+ for (const id of collectImageChipIdentifiers(text)) {
158
+ if (!survivingIds.has(id))
159
+ this.#sidecar.unlink(id);
160
+ }
161
+ }
162
+ }
163
+ #collectReferencedIdentifiers() {
164
+ const identifiers = new Set();
165
+ const rows = this.#database.prepare("SELECT text FROM prompts").all();
166
+ for (const row of rows) {
167
+ if (typeof row.text !== "string")
168
+ continue;
169
+ for (const id of collectImageChipIdentifiers(row.text))
170
+ identifiers.add(id);
171
+ }
172
+ return identifiers;
173
+ }
174
+ #sweepOrphanedSidecars() {
175
+ if (this.#sidecar === undefined)
176
+ return;
177
+ try {
178
+ this.#sidecar.sweep(this.#collectReferencedIdentifiers());
179
+ }
180
+ catch { /* Rationale: sidecar sweep never blocks history readiness. */ }
181
+ }
182
+ #checkSize(maintain = false) {
183
+ let size = 0;
184
+ for (const suffix of ["", "-wal", "-shm"]) {
185
+ try {
186
+ if (lstatSync(this.path + suffix).isSymbolicLink())
187
+ throw new HistoryStorageError("unavailable");
188
+ size += statSync(this.path + suffix).size;
189
+ }
190
+ catch (error) {
191
+ if (!(error instanceof Error && "code" in error && error.code === "ENOENT"))
192
+ throw error;
193
+ }
194
+ }
195
+ if (size > MAX_STORAGE_BYTES && maintain) {
196
+ this.#database.exec("PRAGMA wal_checkpoint(TRUNCATE)");
197
+ this.#checkSize();
198
+ }
199
+ else if (size > MAX_STORAGE_BYTES)
200
+ throw new HistoryStorageError("capacity");
201
+ }
202
+ }
203
+ function bounded(value, bytes) {
204
+ return value !== undefined && Buffer.byteLength(value) <= bytes ? value : null;
205
+ }
206
+ export function classifyHistoryError(error) {
207
+ if (error instanceof HistoryStorageError)
208
+ return error.code;
209
+ if (error instanceof Error && "errcode" in error) {
210
+ const code = Number(error.errcode) & 0xff;
211
+ if (code === 5 || code === 6)
212
+ return "busy";
213
+ if (code === 11 || code === 26)
214
+ return "corrupt";
215
+ if (code === 13)
216
+ return "capacity";
217
+ }
218
+ return "unavailable";
219
+ }
@@ -0,0 +1,9 @@
1
+ import type { PromptHistorySubmission } from "../../contracts/owned-ui/index.js";
2
+ export type HistoryWorkerRequest = {
3
+ id: number;
4
+ kind: "read" | "close";
5
+ } | {
6
+ id: number;
7
+ kind: "record";
8
+ submission: PromptHistorySubmission;
9
+ };
@@ -0,0 +1,45 @@
1
+ import { parentPort, workerData } from "node:worker_threads";
2
+ import { setTimeout as delay } from "node:timers/promises";
3
+ import { HistoryStorageError, PromptHistoryStore, classifyHistoryError } from "./store.js";
4
+ const port = parentPort;
5
+ if (port !== null) {
6
+ let store;
7
+ let chain = Promise.resolve();
8
+ const options = workerData;
9
+ const open = retry(() => { store = new PromptHistoryStore(options.path, options.profileId, options.limit, options.imagesDir); });
10
+ void open.then(() => port.postMessage({ id: 0, ok: true }), error => port.postMessage({ id: 0, ok: false, code: classifyHistoryError(error) }));
11
+ port.on("message", (request) => {
12
+ chain = chain.then(async () => {
13
+ try {
14
+ await open;
15
+ if (request.kind === "close") {
16
+ store.close();
17
+ port.postMessage({ id: request.id, ok: true });
18
+ port.close();
19
+ return;
20
+ }
21
+ const value = await retry(() => request.kind === "record" ? store.record(request.submission) : store.snapshot());
22
+ port.postMessage({ id: request.id, ok: true, value });
23
+ }
24
+ catch (error) {
25
+ port.postMessage({ id: request.id, ok: false, code: classifyHistoryError(error),
26
+ certainty: error instanceof HistoryStorageError ? error.certainty : "unknown" });
27
+ }
28
+ });
29
+ });
30
+ }
31
+ async function retry(operation) {
32
+ const deadline = performance.now() + 1000;
33
+ for (;;) {
34
+ try {
35
+ return operation();
36
+ }
37
+ catch (error) {
38
+ if (classifyHistoryError(error) !== "busy"
39
+ || error instanceof HistoryStorageError && error.certainty === "unknown"
40
+ || performance.now() >= deadline)
41
+ throw error;
42
+ await delay(25);
43
+ }
44
+ }
45
+ }
@@ -0,0 +1,18 @@
1
+ import { type SuggestionDiagnosticObserver, type SuggestionDiagnosticRecord } from "../../contracts/owned-ui/index.js";
2
+ export interface SuggestionDiagnosticCaptureOptions {
3
+ readonly enabled?: boolean;
4
+ /** Explicit local destination, or an injected sink for deterministic I/O tests. */
5
+ readonly destination?: string;
6
+ readonly writeSnapshot?: (snapshot: string) => Promise<void>;
7
+ }
8
+ /** Bounded metadata snapshots; one in-flight write and one replaceable latest snapshot. */
9
+ export declare class SuggestionDiagnosticCapture implements SuggestionDiagnosticObserver {
10
+ #private;
11
+ readonly options: SuggestionDiagnosticCaptureOptions;
12
+ constructor(options?: SuggestionDiagnosticCaptureOptions);
13
+ record(record: SuggestionDiagnosticRecord): void;
14
+ snapshot(): readonly SuggestionDiagnosticRecord[];
15
+ /** Explicit evidence boundary, never awaited by input or rendering. */
16
+ flush(): Promise<void>;
17
+ dispose(): void;
18
+ }
@@ -0,0 +1,82 @@
1
+ import { writeFile } from "node:fs/promises";
2
+ import { SUGGESTION_DECISION_REASONS, SUGGESTION_DIAGNOSTIC_EVENTS, } from "../../contracts/owned-ui/index.js";
3
+ /** Bounded metadata snapshots; one in-flight write and one replaceable latest snapshot. */
4
+ export class SuggestionDiagnosticCapture {
5
+ #records = [];
6
+ #pending;
7
+ #writing;
8
+ #disposed = false;
9
+ #write;
10
+ options;
11
+ constructor(options = {}) {
12
+ this.options = options;
13
+ this.#write = options.writeSnapshot ?? (options.destination === undefined ? undefined
14
+ : snapshot => writeFile(options.destination, snapshot, { encoding: "utf8", mode: 0o600 }));
15
+ }
16
+ record(record) {
17
+ if (!this.options.enabled || this.#disposed)
18
+ return;
19
+ const safe = sanitize(record);
20
+ if (safe === null)
21
+ return;
22
+ this.#records.push(safe);
23
+ if (this.#records.length > 128)
24
+ this.#records.shift();
25
+ let snapshot = this.#serialize();
26
+ while (Buffer.byteLength(snapshot, "utf8") > 65_536) {
27
+ this.#records.shift();
28
+ snapshot = this.#serialize();
29
+ }
30
+ if (this.#write) {
31
+ this.#pending = snapshot;
32
+ this.#pump();
33
+ }
34
+ }
35
+ snapshot() { return this.#records.map(record => ({ ...record })); }
36
+ /** Explicit evidence boundary, never awaited by input or rendering. */
37
+ async flush() {
38
+ while (this.#writing)
39
+ await this.#writing;
40
+ }
41
+ dispose() {
42
+ this.#disposed = true;
43
+ this.#records = [];
44
+ this.#pending = undefined;
45
+ }
46
+ #serialize() { return JSON.stringify({ schema: "prompt-suggestion-diagnostics-v1", records: this.#records }); }
47
+ #pump() {
48
+ if (this.#writing || this.#pending === undefined || !this.#write || this.#disposed)
49
+ return;
50
+ const snapshot = this.#pending;
51
+ this.#pending = undefined;
52
+ this.#writing = Promise.resolve().then(() => this.#write(snapshot)).catch(() => {
53
+ // Security: do not retain or display raw filesystem/provider errors.
54
+ }).finally(() => {
55
+ this.#writing = undefined;
56
+ this.#pump();
57
+ });
58
+ }
59
+ }
60
+ function sanitize(record) {
61
+ if (!SUGGESTION_DIAGNOSTIC_EVENTS.includes(record.event))
62
+ return null;
63
+ const reasoning = ["ordinary", "off", "minimal", "low", "medium", "high", "xhigh", "max", "unavailable"].includes(record.reasoning)
64
+ ? record.reasoning : "unavailable";
65
+ const reason = record.reason !== undefined && SUGGESTION_DECISION_REASONS.includes(record.reason) ? record.reason : undefined;
66
+ // Security: explicit projection prevents arbitrary extra fields, including raw error payloads, from escaping.
67
+ return {
68
+ event: record.event, ...(reason === undefined ? {} : { reason }),
69
+ session: boundedNumber(record.session), run: boundedNumber(record.run), response: boundedNumber(record.response),
70
+ request: boundedNumber(record.request), provider: identifier(record.provider), model: identifier(record.model),
71
+ reasoning, elapsedMs: boundedNumber(record.elapsedMs),
72
+ };
73
+ }
74
+ function boundedNumber(value) {
75
+ return Number.isFinite(value) ? Math.min(Number.MAX_SAFE_INTEGER, Math.max(0, Math.floor(value))) : 0;
76
+ }
77
+ function identifier(value) {
78
+ // Security: identifiers are metadata, not display names or arbitrary JSON. Reject controls/path-shaped values.
79
+ if (typeof value !== "string" || /[\p{C}\\\s]/u.test(value) || value.includes(":") || value.startsWith("/"))
80
+ return "redacted";
81
+ return value.slice(0, 64);
82
+ }
@@ -0,0 +1,2 @@
1
+ export { SuggestionDiagnosticCapture } from "./diagnostics.js";
2
+ export type { SuggestionDiagnosticCaptureOptions } from "./diagnostics.js";
@@ -0,0 +1 @@
1
+ export { SuggestionDiagnosticCapture } from "./diagnostics.js";
@@ -0,0 +1,59 @@
1
+ /** The contract this build emits; supersedes the pre-cutover key set it still accepts. */
2
+ export declare const PRIVATE_LAUNCH_CONTRACT = "neutral-launch-v1";
3
+ export declare const PRIVATE_ENVIRONMENT: Readonly<{
4
+ releaseRoot: "LAUNCH_CONTEXT_RELEASE_ROOT";
5
+ releaseId: "LAUNCH_CONTEXT_RELEASE_ID";
6
+ releaseDigest: "LAUNCH_CONTEXT_RELEASE_DIGEST";
7
+ releaseLayers: "LAUNCH_CONTEXT_RELEASE_LAYERS";
8
+ launchProfile: "LAUNCH_CONTEXT_PROFILE";
9
+ immutableWarmup: "LAUNCH_CONTEXT_WARMUP";
10
+ }>;
11
+ /**
12
+ * Keys published by releases that predate the neutral cutover. They are read when
13
+ * an older launcher hands this build a process, and written when this build
14
+ * starts a release that declares no contract of its own, so an upgrade never
15
+ * depends on both sides having been rebuilt at the same moment.
16
+ */
17
+ export declare const SUPERSEDED_ENVIRONMENT: Readonly<{
18
+ releaseRoot: "A1_RELEASE_ROOT";
19
+ releaseId: "A1_RELEASE_ID";
20
+ releaseDigest: "A1_RELEASE_DIGEST";
21
+ releaseLayers: "A1_RELEASE_LAYERS";
22
+ launchProfile: "A1_LAUNCH_PROFILE";
23
+ immutableWarmup: "A1_IMMUTABLE_WARMUP";
24
+ }>;
25
+ /** A release either declares the current contract or predates contract declaration. */
26
+ export type LaunchContractTarget = typeof PRIVATE_LAUNCH_CONTRACT | "superseded";
27
+ export interface LaunchContext {
28
+ readonly releaseRoot?: string;
29
+ readonly releaseId?: string;
30
+ readonly releaseDigest?: string;
31
+ readonly releaseLayers?: string;
32
+ readonly launchProfile?: "a1" | "pi";
33
+ readonly immutableWarmup?: "1";
34
+ }
35
+ export type LaunchContextRequirement = "optional" | "profile" | "release" | "warmup";
36
+ /** Read current keys, fall back to superseded keys per field, with bounded diagnostics. */
37
+ export declare function readLaunchContext(environment: NodeJS.ProcessEnv, requirement?: LaunchContextRequirement, platform?: NodeJS.Platform): LaunchContext;
38
+ /** The key set a process started for this release must receive. */
39
+ export declare function launchEnvironmentKeys(contract: LaunchContractTarget): Readonly<Record<string, string>>;
40
+ /** Classify metadata by the contract it declares rather than rejecting what it omits. */
41
+ export declare function launchContractTarget(value: {
42
+ readonly launchContract?: unknown;
43
+ }): LaunchContractTarget;
44
+ /** Whether metadata was produced by a build that declares this contract. */
45
+ export declare function isCurrentLaunchContract(value: {
46
+ readonly launchContract?: unknown;
47
+ }): boolean;
48
+ /**
49
+ * Rebuild owned context without inheriting a prior session's private selection. The
50
+ * contract selects which key set is written, so this build can start either its
51
+ * own releases or a retained pre-cutover release it must keep serving.
52
+ */
53
+ export declare function withLaunchContext(environment: NodeJS.ProcessEnv, context: LaunchContext, platform?: NodeJS.Platform, contract?: LaunchContractTarget): NodeJS.ProcessEnv;
54
+ /** Remove both key sets, leaving user and integration settings intact. */
55
+ export declare function withoutLaunchContext(environment: NodeJS.ProcessEnv, platform?: NodeJS.Platform): NodeJS.ProcessEnv;
56
+ /** Require this build's own contract where nothing older can be accepted, such as recovery capsules. */
57
+ export declare function assertCurrentLaunchContract(value: {
58
+ readonly launchContract?: unknown;
59
+ }): void;
@@ -0,0 +1,136 @@
1
+ /** The contract this build emits; supersedes the pre-cutover key set it still accepts. */
2
+ export const PRIVATE_LAUNCH_CONTRACT = "neutral-launch-v1";
3
+ export const PRIVATE_ENVIRONMENT = Object.freeze({
4
+ releaseRoot: "LAUNCH_CONTEXT_RELEASE_ROOT",
5
+ releaseId: "LAUNCH_CONTEXT_RELEASE_ID",
6
+ releaseDigest: "LAUNCH_CONTEXT_RELEASE_DIGEST",
7
+ releaseLayers: "LAUNCH_CONTEXT_RELEASE_LAYERS",
8
+ launchProfile: "LAUNCH_CONTEXT_PROFILE",
9
+ immutableWarmup: "LAUNCH_CONTEXT_WARMUP",
10
+ });
11
+ /**
12
+ * Keys published by releases that predate the neutral cutover. They are read when
13
+ * an older launcher hands this build a process, and written when this build
14
+ * starts a release that declares no contract of its own, so an upgrade never
15
+ * depends on both sides having been rebuilt at the same moment.
16
+ */
17
+ export const SUPERSEDED_ENVIRONMENT = Object.freeze({
18
+ releaseRoot: "A1_RELEASE_ROOT",
19
+ releaseId: "A1_RELEASE_ID",
20
+ releaseDigest: "A1_RELEASE_DIGEST",
21
+ releaseLayers: "A1_RELEASE_LAYERS",
22
+ launchProfile: "A1_LAUNCH_PROFILE",
23
+ immutableWarmup: "A1_IMMUTABLE_WARMUP",
24
+ });
25
+ const PRIVATE_ENTRIES = Object.entries(PRIVATE_ENVIRONMENT);
26
+ const SUPERSEDED_ENTRIES = Object.entries(SUPERSEDED_ENVIRONMENT);
27
+ const PRIVATE_KEYS = new Set([...Object.values(PRIVATE_ENVIRONMENT), ...Object.values(SUPERSEDED_ENVIRONMENT)]);
28
+ const LOGICAL_KEYS = new Map(PRIVATE_ENTRIES.map(([logical, key]) => [key, logical]));
29
+ const SUPERSEDED_LOGICAL_KEYS = new Map(SUPERSEDED_ENTRIES.map(([logical, key]) => [key, logical]));
30
+ /** Read current keys, fall back to superseded keys per field, with bounded diagnostics. */
31
+ export function readLaunchContext(environment, requirement = "optional", platform = process.platform) {
32
+ const values = {};
33
+ const superseded = {};
34
+ // Performance: enumerate names only for Windows casing; never fetch unrelated environment values.
35
+ if (platform === "win32") {
36
+ for (const name of Object.keys(environment)) {
37
+ const upper = name.toUpperCase();
38
+ const logical = LOGICAL_KEYS.get(upper);
39
+ if (logical !== undefined)
40
+ acceptValue(values, logical, environment[name]);
41
+ const supersededLogical = SUPERSEDED_LOGICAL_KEYS.get(upper);
42
+ if (supersededLogical !== undefined)
43
+ acceptValue(superseded, supersededLogical, environment[name]);
44
+ }
45
+ }
46
+ else {
47
+ for (const [logical, key] of PRIVATE_ENTRIES) {
48
+ if (Object.prototype.propertyIsEnumerable.call(environment, key))
49
+ acceptValue(values, logical, environment[key]);
50
+ }
51
+ for (const [logical, key] of SUPERSEDED_ENTRIES) {
52
+ if (Object.prototype.propertyIsEnumerable.call(environment, key))
53
+ acceptValue(superseded, logical, environment[key]);
54
+ }
55
+ }
56
+ // Compatibility: the current key wins wherever both are present, so a launcher that
57
+ // emits this contract is never overruled by an inherited pre-cutover value.
58
+ for (const [logical, value] of Object.entries(superseded))
59
+ if (values[logical] === undefined)
60
+ values[logical] = value;
61
+ if (values.launchProfile !== undefined && values.launchProfile !== "a1" && values.launchProfile !== "pi") {
62
+ throw invalidContext("launchProfile", "unsupported profile");
63
+ }
64
+ if (values.immutableWarmup !== undefined && values.immutableWarmup !== "1")
65
+ throw invalidContext("immutableWarmup", "invalid permission flag");
66
+ if (values.releaseDigest !== undefined && !/^[a-f0-9]{64}$/.test(values.releaseDigest))
67
+ throw invalidContext("releaseDigest", "invalid digest");
68
+ if (requirement === "profile")
69
+ requireFields(values, ["launchProfile"]);
70
+ if (requirement === "release" || requirement === "warmup") {
71
+ requireFields(values, ["releaseRoot", "releaseId", "releaseDigest"]);
72
+ // Compatibility: Windows drops an empty value from a child environment block, so a
73
+ // release with no dependency layer arrives without the key it was given. The
74
+ // layer list is metadata of the release being started, never authority, and an
75
+ // absent list means the same thing the empty string does.
76
+ if (values.releaseLayers === undefined)
77
+ values.releaseLayers = "";
78
+ }
79
+ if (requirement === "warmup")
80
+ requireFields(values, ["immutableWarmup"]);
81
+ return Object.freeze(values);
82
+ }
83
+ /** The key set a process started for this release must receive. */
84
+ export function launchEnvironmentKeys(contract) {
85
+ return contract === PRIVATE_LAUNCH_CONTRACT ? PRIVATE_ENVIRONMENT : SUPERSEDED_ENVIRONMENT;
86
+ }
87
+ /** Classify metadata by the contract it declares rather than rejecting what it omits. */
88
+ export function launchContractTarget(value) {
89
+ return value.launchContract === PRIVATE_LAUNCH_CONTRACT ? PRIVATE_LAUNCH_CONTRACT : "superseded";
90
+ }
91
+ /** Whether metadata was produced by a build that declares this contract. */
92
+ export function isCurrentLaunchContract(value) {
93
+ return value.launchContract === PRIVATE_LAUNCH_CONTRACT;
94
+ }
95
+ /**
96
+ * Rebuild owned context without inheriting a prior session's private selection. The
97
+ * contract selects which key set is written, so this build can start either its
98
+ * own releases or a retained pre-cutover release it must keep serving.
99
+ */
100
+ export function withLaunchContext(environment, context, platform = process.platform, contract = PRIVATE_LAUNCH_CONTRACT) {
101
+ const result = withoutLaunchContext(environment, platform);
102
+ for (const [logical, key] of Object.entries(launchEnvironmentKeys(contract))) {
103
+ const value = context[logical];
104
+ if (value !== undefined)
105
+ result[key] = value;
106
+ }
107
+ readLaunchContext(result, "optional", platform);
108
+ return result;
109
+ }
110
+ /** Remove both key sets, leaving user and integration settings intact. */
111
+ export function withoutLaunchContext(environment, platform = process.platform) {
112
+ return Object.fromEntries(Object.entries(environment).filter(([key]) => !PRIVATE_KEYS.has(platform === "win32" ? key.toUpperCase() : key)));
113
+ }
114
+ /** Require this build's own contract where nothing older can be accepted, such as recovery capsules. */
115
+ export function assertCurrentLaunchContract(value) {
116
+ if (value.launchContract !== PRIVATE_LAUNCH_CONTRACT) {
117
+ throw new Error("Unsupported private launch contract. Stop existing processes and install the current package directly with npm; review disposable runtime/release state before any manual reset. User settings, sessions, and history must be preserved.");
118
+ }
119
+ }
120
+ function acceptValue(values, logical, value) {
121
+ if (value === undefined)
122
+ return;
123
+ if (values[logical] !== undefined && values[logical] !== value)
124
+ throw invalidContext(logical, "conflicting environment key casing");
125
+ if (typeof value !== "string" || value.includes("\0") || (value.length === 0 && logical !== "releaseLayers"))
126
+ throw invalidContext(logical, "invalid value");
127
+ values[logical] = value;
128
+ }
129
+ function requireFields(values, fields) {
130
+ for (const field of fields)
131
+ if (values[field] === undefined)
132
+ throw invalidContext(field, "required current-contract field is missing");
133
+ }
134
+ function invalidContext(logical, reason) {
135
+ return new Error(`Invalid private launch context (${logical}): ${reason}`);
136
+ }
@@ -0,0 +1,2 @@
1
+ export { runLaunchGuardian } from "./main.js";
2
+ export type { LaunchGuardianOptions } from "./main.js";
@@ -0,0 +1 @@
1
+ export { runLaunchGuardian } from "./main.js";
@@ -0,0 +1,33 @@
1
+ import type { LaunchInstanceStopIntent, LaunchProfileId, SupervisorCommand } from "../lifecycle/index.js";
2
+ import { type SessionSelection } from "../lifecycle/index.js";
3
+ import { type NativeProcessInspector, type ProcessContainment } from "../process-containment/index.js";
4
+ interface GuardianControl {
5
+ connect(endpoint: string, timeoutMs?: number): Promise<unknown>;
6
+ command(command: SupervisorCommand): Promise<{
7
+ readonly ok: boolean;
8
+ readonly error?: {
9
+ readonly code: string;
10
+ readonly message: string;
11
+ };
12
+ }>;
13
+ on(event: "stopIntent", listener: (intent: LaunchInstanceStopIntent) => void): unknown;
14
+ on(event: "disconnect", listener: () => void): unknown;
15
+ off(event: "stopIntent", listener: (intent: LaunchInstanceStopIntent) => void): unknown;
16
+ off(event: "disconnect", listener: () => void): unknown;
17
+ close(): void;
18
+ }
19
+ export interface LaunchGuardianOptions {
20
+ readonly profileId: LaunchProfileId;
21
+ readonly releaseRoot: string;
22
+ readonly uiEntry: string;
23
+ readonly sessionSelection?: SessionSelection;
24
+ readonly environment?: NodeJS.ProcessEnv;
25
+ readonly cwd?: string;
26
+ readonly helperPath?: string;
27
+ readonly inspector?: NativeProcessInspector;
28
+ readonly control?: GuardianControl;
29
+ readonly containment?: ProcessContainment;
30
+ readonly ensureHelper?: (path: string) => Promise<void>;
31
+ }
32
+ export declare function runLaunchGuardian(options: LaunchGuardianOptions): Promise<number>;
33
+ export {};