@timurproko/a1 0.1.8-dev.3b54f21 → 0.1.8-dev.407

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 (643) hide show
  1. package/README.md +159 -65
  2. package/bin/cli.js +28 -10
  3. package/bin/guardian.js +12 -6
  4. package/bin/module-identity.js +69 -35
  5. package/bin/pi-tui.d.ts +6 -0
  6. package/bin/pi-tui.js +28 -0
  7. package/bin/release-cleanup.js +8 -0
  8. package/bin/supervisor.js +2 -2
  9. package/bin/sync-pi-tui-proxy.js +97 -0
  10. package/bin/ui.js +62 -21
  11. package/bin/update-recovery.js +274 -0
  12. package/bin/warmup.js +27 -0
  13. package/dist/cli/capabilities.d.ts +6 -0
  14. package/dist/{src/cli → cli}/capabilities.js +1 -1
  15. package/dist/{src/cli → cli}/dispatch.d.ts +15 -1
  16. package/dist/cli/dispatch.js +261 -0
  17. package/dist/cli/package-messages.d.ts +26 -0
  18. package/dist/cli/package-messages.js +71 -0
  19. package/dist/{src/cli → cli}/packages.d.ts +11 -2
  20. package/dist/{src/cli → cli}/packages.js +24 -27
  21. package/dist/{src/cli → cli}/version-stats.d.ts +6 -0
  22. package/dist/cli/version-stats.js +112 -0
  23. package/dist/composition/agent-engine-bridge.d.ts +3 -0
  24. package/dist/composition/agent-engine-bridge.js +108 -0
  25. package/dist/composition/index.d.ts +3 -0
  26. package/dist/composition/index.js +3 -0
  27. package/dist/composition/owned-ui.d.ts +35 -0
  28. package/dist/composition/owned-ui.js +118 -0
  29. package/dist/composition/process.d.ts +16 -0
  30. package/dist/composition/process.js +45 -0
  31. package/dist/composition/settings-route-host.d.ts +8 -0
  32. package/dist/composition/settings-route-host.js +75 -0
  33. package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/capability-ports.d.ts +2 -2
  34. package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/domain-validation.js +22 -4
  35. package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/domain.d.ts +17 -0
  36. package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/package-ports.d.ts +6 -0
  37. package/dist/contracts/owned-ui/image-attachments.d.ts +36 -0
  38. package/dist/contracts/owned-ui/image-attachments.js +67 -0
  39. package/dist/contracts/owned-ui/index.d.ts +8 -0
  40. package/dist/contracts/owned-ui/index.js +8 -0
  41. package/dist/{src/foundation/owned-ui-contracts → contracts/owned-ui}/model.d.ts +123 -0
  42. package/dist/contracts/owned-ui/prompt-history.d.ts +55 -0
  43. package/dist/contracts/owned-ui/prompt-history.js +23 -0
  44. package/dist/contracts/owned-ui/prompt-suggestions.d.ts +3 -0
  45. package/dist/contracts/owned-ui/prompt-suggestions.js +44 -0
  46. package/dist/contracts/owned-ui/suggestion-diagnostics.d.ts +22 -0
  47. package/dist/contracts/owned-ui/suggestion-diagnostics.js +9 -0
  48. package/dist/contracts/owned-ui/transcript-lifecycle.d.ts +5 -0
  49. package/dist/contracts/owned-ui/transcript-lifecycle.js +33 -0
  50. package/dist/{src/foundation/owned-ui-contracts → contracts/owned-ui}/validation.d.ts +5 -1
  51. package/dist/{src/foundation/owned-ui-contracts → contracts/owned-ui}/validation.js +129 -4
  52. package/dist/{src/foundation/presentation-contracts → contracts/presentation}/index.d.ts +8 -0
  53. package/dist/{src/features → features}/launch/development-launch.js +11 -3
  54. package/dist/{src/features → features}/launch/index.d.ts +0 -1
  55. package/dist/{src/features → features}/launch/index.js +0 -1
  56. package/dist/features/launch/intent.d.ts +10 -0
  57. package/dist/features/launch/intent.js +8 -0
  58. package/dist/{src/features → features}/launch/prepare-launch.d.ts +0 -2
  59. package/dist/{src/features → features}/launch/prepare-launch.js +2 -9
  60. package/dist/{src/features → features}/launch/profile-paths.d.ts +3 -2
  61. package/dist/{src/features → features}/launch/profile-paths.js +13 -8
  62. package/dist/{src/features → features}/launch/runtime-selection.d.ts +2 -5
  63. package/dist/{src/features → features}/owned-ui/customization.d.ts +3 -1
  64. package/dist/{src/features → features}/owned-ui/customization.js +3 -1
  65. package/dist/{src/features → features}/owned-ui/diagnostics.d.ts +2 -1
  66. package/dist/{src/features → features}/owned-ui/diagnostics.js +1 -0
  67. package/dist/{src/features → features}/owned-ui/index.d.ts +2 -0
  68. package/dist/{src/features → features}/owned-ui/index.js +2 -0
  69. package/dist/features/owned-ui/project-trust-prompt.d.ts +25 -0
  70. package/dist/features/owned-ui/project-trust-prompt.js +149 -0
  71. package/dist/{src/features → features}/owned-ui/run.d.ts +2 -2
  72. package/dist/features/owned-ui/run.js +32 -0
  73. package/dist/features/owned-ui/session-fork-prompt.d.ts +8 -0
  74. package/dist/features/owned-ui/session-fork-prompt.js +34 -0
  75. package/dist/{src/features → features}/owned-ui/settings-app.d.ts +3 -3
  76. package/dist/{src/features → features}/owned-ui/settings-app.js +105 -56
  77. package/dist/features/prompt-history/image-sidecar.d.ts +32 -0
  78. package/dist/features/prompt-history/image-sidecar.js +130 -0
  79. package/dist/features/prompt-history/index.d.ts +4 -0
  80. package/dist/features/prompt-history/index.js +3 -0
  81. package/dist/features/prompt-history/paths.d.ts +5 -0
  82. package/dist/features/prompt-history/paths.js +17 -0
  83. package/dist/features/prompt-history/service.d.ts +54 -0
  84. package/dist/features/prompt-history/service.js +425 -0
  85. package/dist/features/prompt-history/store.d.ts +16 -0
  86. package/dist/features/prompt-history/store.js +223 -0
  87. package/dist/features/prompt-history/worker.d.ts +9 -0
  88. package/dist/features/prompt-history/worker.js +45 -0
  89. package/dist/features/prompt-suggestions/diagnostics.d.ts +18 -0
  90. package/dist/features/prompt-suggestions/diagnostics.js +82 -0
  91. package/dist/features/prompt-suggestions/index.d.ts +1 -0
  92. package/dist/features/prompt-suggestions/index.js +1 -0
  93. package/dist/{src/features → features}/workspace/capabilities.d.ts +1 -1
  94. package/dist/{src/features → features}/workspace/reducer.d.ts +2 -1
  95. package/dist/{src/features → features}/workspace/reducer.js +2 -1
  96. package/dist/{src/features → features}/workspace/router.d.ts +2 -1
  97. package/dist/{src/features → features}/workspace/router.js +1 -0
  98. package/dist/{src/features → features}/workspace/store.d.ts +2 -1
  99. package/dist/{src/features → features}/workspace/store.js +1 -0
  100. package/dist/foundation/launch-context/index.d.ts +59 -0
  101. package/dist/foundation/launch-context/index.js +136 -0
  102. package/dist/{src/foundation → foundation}/launch-guardian/main.d.ts +2 -0
  103. package/dist/{src/foundation → foundation}/launch-guardian/main.js +23 -8
  104. package/dist/{src/foundation → foundation}/lifecycle/index.d.ts +2 -0
  105. package/dist/{src/foundation → foundation}/lifecycle/index.js +2 -0
  106. package/dist/{src/foundation → foundation}/lifecycle/model.d.ts +1 -1
  107. package/dist/{src/foundation → foundation}/lifecycle/model.js +1 -1
  108. package/dist/foundation/lifecycle/paths.d.ts +30 -0
  109. package/dist/{src/foundation → foundation}/lifecycle/paths.js +29 -1
  110. package/dist/foundation/lifecycle/session-selection.d.ts +9 -0
  111. package/dist/foundation/lifecycle/session-selection.js +39 -0
  112. package/dist/foundation/lifecycle/supervisor-startup.d.ts +30 -0
  113. package/dist/foundation/lifecycle/supervisor-startup.js +106 -0
  114. package/dist/{src/foundation → foundation}/native-host-protocol/codec.d.ts +2 -0
  115. package/dist/{src/foundation → foundation}/native-host-protocol/codec.js +2 -0
  116. package/dist/{src/foundation → foundation}/native-host-protocol/messages.d.ts +1 -1
  117. package/dist/{src/foundation → foundation}/native-host-protocol/messages.js +1 -1
  118. package/dist/foundation/process-containment/darwin-process-inspector.d.ts +5 -0
  119. package/dist/foundation/process-containment/darwin-process-inspector.js +7 -0
  120. package/dist/{src/foundation → foundation}/process-containment/index.d.ts +1 -0
  121. package/dist/{src/foundation → foundation}/process-containment/index.js +1 -0
  122. package/dist/{src/foundation → foundation}/process-containment/linux-process-inspector.d.ts +1 -0
  123. package/dist/{src/foundation → foundation}/process-containment/linux-process-inspector.js +1 -0
  124. package/dist/{src/foundation → foundation}/process-containment/native-guardian-containment.d.ts +1 -0
  125. package/dist/{src/foundation → foundation}/process-containment/native-guardian-containment.js +1 -0
  126. package/dist/{src/foundation → foundation}/process-containment/windows-process-inspector.d.ts +3 -1
  127. package/dist/{src/foundation → foundation}/process-containment/windows-process-inspector.js +5 -2
  128. package/dist/{src/foundation → foundation}/protocol/client.d.ts +1 -0
  129. package/dist/{src/foundation → foundation}/protocol/client.js +1 -0
  130. package/dist/{src/foundation → foundation}/protocol/messages.d.ts +1 -0
  131. package/dist/{src/foundation → foundation}/protocol/messages.js +1 -0
  132. package/dist/foundation/release/bootstrap.d.ts +55 -0
  133. package/dist/{src/foundation → foundation}/release/bootstrap.js +219 -46
  134. package/dist/foundation/release/cohort-state.d.ts +157 -0
  135. package/dist/foundation/release/cohort-state.js +472 -0
  136. package/dist/foundation/release/dependency-certification-retention.d.ts +7 -0
  137. package/dist/foundation/release/dependency-certification-retention.js +88 -0
  138. package/dist/foundation/release/dependency-certification.d.ts +24 -0
  139. package/dist/foundation/release/dependency-certification.js +266 -0
  140. package/dist/foundation/release/dependency-layer.d.ts +81 -0
  141. package/dist/foundation/release/dependency-layer.js +466 -0
  142. package/dist/foundation/release/endpoints.d.ts +20 -0
  143. package/dist/foundation/release/endpoints.js +50 -0
  144. package/dist/foundation/release/immutable-platform.d.ts +6 -0
  145. package/dist/foundation/release/immutable-platform.js +13 -0
  146. package/dist/{src/foundation → foundation}/release/index.d.ts +6 -0
  147. package/dist/{src/foundation → foundation}/release/index.js +6 -0
  148. package/dist/foundation/release/release-gc.d.ts +71 -0
  149. package/dist/foundation/release/release-gc.js +764 -0
  150. package/dist/{src/foundation → foundation}/release/release-store.d.ts +9 -3
  151. package/dist/{src/foundation → foundation}/release/release-store.js +74 -14
  152. package/dist/{src/foundation → foundation}/release/release.d.ts +6 -1
  153. package/dist/{src/foundation → foundation}/release/release.js +15 -4
  154. package/dist/foundation/release/restart-certification.d.ts +68 -0
  155. package/dist/foundation/release/restart-certification.js +227 -0
  156. package/dist/foundation/release/update-launch.d.ts +6 -0
  157. package/dist/foundation/release/update-launch.js +17 -0
  158. package/dist/foundation/release/update-recovery.d.ts +76 -0
  159. package/dist/foundation/release/update-recovery.js +356 -0
  160. package/dist/{src/foundation → foundation}/release/update-transaction.d.ts +11 -0
  161. package/dist/{src/foundation → foundation}/release/update-transaction.js +13 -1
  162. package/dist/{src/foundation → foundation}/release/update.d.ts +40 -4
  163. package/dist/{src/foundation → foundation}/release/update.js +196 -78
  164. package/dist/foundation/release/warmup.d.ts +3 -0
  165. package/dist/foundation/release/warmup.js +47 -0
  166. package/dist/foundation/startup/index.d.ts +1 -0
  167. package/dist/foundation/startup/index.js +1 -0
  168. package/dist/foundation/startup/startup-runtime.d.ts +36 -0
  169. package/dist/foundation/startup/startup-runtime.js +142 -0
  170. package/dist/{src/foundation → foundation}/storage/control-store.d.ts +2 -1
  171. package/dist/{src/foundation → foundation}/storage/control-store.js +39 -4
  172. package/dist/{src/foundation → foundation}/structured-agent-runtime/backpressure.d.ts +2 -1
  173. package/dist/{src/foundation → foundation}/structured-agent-runtime/backpressure.js +2 -1
  174. package/dist/{src/foundation → foundation}/structured-agent-runtime/commands.d.ts +2 -1
  175. package/dist/{src/foundation → foundation}/structured-agent-runtime/commands.js +2 -1
  176. package/dist/{src/foundation → foundation}/structured-agent-runtime/handshake.d.ts +1 -1
  177. package/dist/{src/foundation → foundation}/structured-agent-runtime/handshake.js +1 -1
  178. package/dist/{src/foundation → foundation}/structured-agent-runtime/reconnection.d.ts +2 -1
  179. package/dist/{src/foundation → foundation}/structured-agent-runtime/reconnection.js +2 -1
  180. package/dist/{src/foundation → foundation}/structured-agent-runtime/state.d.ts +2 -1
  181. package/dist/{src/foundation → foundation}/structured-agent-runtime/state.js +2 -1
  182. package/dist/foundation/supervision/index.d.ts +3 -0
  183. package/dist/foundation/supervision/index.js +3 -0
  184. package/dist/foundation/supervision/main.d.ts +1 -0
  185. package/dist/foundation/supervision/main.js +84 -0
  186. package/dist/foundation/supervision/paths.d.ts +1 -0
  187. package/dist/foundation/supervision/paths.js +1 -0
  188. package/dist/foundation/supervision/server.d.ts +51 -0
  189. package/dist/{src/foundation → foundation}/supervision/server.js +142 -20
  190. package/dist/foundation/terminal-cleanup/fatal-exit.d.ts +12 -0
  191. package/dist/foundation/terminal-cleanup/fatal-exit.js +85 -0
  192. package/dist/foundation/terminal-cleanup/index.d.ts +2 -0
  193. package/dist/foundation/terminal-cleanup/index.js +2 -0
  194. package/dist/foundation/terminal-cleanup/terminal-reset.d.ts +4 -0
  195. package/dist/foundation/terminal-cleanup/terminal-reset.js +40 -0
  196. package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/components.d.ts +1 -1
  197. package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/conformance.d.ts +1 -0
  198. package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/conformance.js +3 -2
  199. package/dist/integrations/pi/components/editor-interaction.d.ts +38 -0
  200. package/dist/integrations/pi/components/history-editor-loader.d.ts +5 -0
  201. package/dist/integrations/pi/components/history-editor-loader.js +5 -0
  202. package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/index.d.ts +2 -1
  203. package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/index.js +2 -1
  204. package/dist/integrations/pi/components/owned-editor-ux.d.ts +74 -0
  205. package/dist/integrations/pi/components/owned-editor-ux.js +1093 -0
  206. package/dist/integrations/pi/components/path-word-ranges.d.ts +2 -0
  207. package/dist/integrations/pi/components/path-word-ranges.js +37 -0
  208. package/dist/integrations/pi/components/prompt-input-port.d.ts +18 -0
  209. package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/shell-components.d.ts +1 -0
  210. package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/shell-components.js +1 -0
  211. package/dist/integrations/pi/components/shell-editor-autocomplete.js +297 -0
  212. package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/shell-extension-ui.d.ts +1 -1
  213. package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/shell-footer-status.d.ts +4 -4
  214. package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/shell-footer-status.js +58 -23
  215. package/dist/integrations/pi/components/shell-presenters-info.d.ts +43 -0
  216. package/dist/integrations/pi/components/shell-presenters-info.js +114 -0
  217. package/dist/integrations/pi/components/shell-presenters-transcript.d.ts +29 -0
  218. package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/shell-presenters-transcript.js +174 -170
  219. package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/shell-selectors-dialogs.d.ts +8 -4
  220. package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/shell-selectors-dialogs.js +10 -6
  221. package/dist/integrations/pi/components/shell-shared-facade.d.ts +213 -0
  222. package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/shell-shared-facade.js +5 -2
  223. package/dist/integrations/pi/components/submitted-prompt-adapter.d.ts +15 -0
  224. package/dist/integrations/pi/components/submitted-prompt-adapter.js +43 -0
  225. package/dist/integrations/pi/components/tool-image-presentation.d.ts +21 -0
  226. package/dist/integrations/pi/components/tool-image-presentation.js +86 -0
  227. package/dist/integrations/pi/components/tool-result-adapter.d.ts +6 -0
  228. package/dist/integrations/pi/components/tool-result-adapter.js +27 -0
  229. package/dist/integrations/pi/components/transcript-image-resolver.d.ts +7 -0
  230. package/dist/integrations/pi/components/transcript-image-resolver.js +19 -0
  231. package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/adjacent/core/keybindings.d.ts +11 -2
  232. package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/adjacent/core/keybindings.js +41 -3
  233. package/dist/integrations/pi/components/upstream/assets/earendil-image.json +12 -0
  234. package/dist/integrations/pi/components/upstream/components/earendil-announcement.js +42 -0
  235. package/dist/integrations/pi/components/upstream/components/owned-editor.d.ts +40 -0
  236. package/dist/integrations/pi/components/upstream/components/owned-editor.js +166 -0
  237. package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/scoped-models-selector.d.ts +1 -1
  238. package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/scoped-models-selector.js +3 -1
  239. package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/session-footer.d.ts +3 -2
  240. package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/session-footer.js +12 -7
  241. package/dist/integrations/pi/components/upstream/components/tool-execution.d.ts +61 -0
  242. package/dist/integrations/pi/components/upstream/components/tool-execution.js +344 -0
  243. package/dist/integrations/pi/components/upstream/history/editor-core.d.ts +280 -0
  244. package/dist/integrations/pi/components/upstream/history/editor-core.js +2062 -0
  245. package/dist/integrations/pi/components/upstream/history/kill-ring.d.ts +32 -0
  246. package/dist/integrations/pi/components/upstream/history/kill-ring.js +48 -0
  247. package/dist/integrations/pi/components/upstream/history/printable-key.d.ts +1 -0
  248. package/dist/integrations/pi/components/upstream/history/printable-key.js +40 -0
  249. package/dist/integrations/pi/components/upstream/history/text-helpers.d.ts +14 -0
  250. package/dist/integrations/pi/components/upstream/history/text-helpers.js +28 -0
  251. package/dist/integrations/pi/components/upstream/history/undo-stack.d.ts +22 -0
  252. package/dist/integrations/pi/components/upstream/history/undo-stack.js +36 -0
  253. package/dist/integrations/pi/components/upstream/history/word-navigation.d.ts +24 -0
  254. package/dist/integrations/pi/components/upstream/history/word-navigation.js +100 -0
  255. package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/adapter.d.ts +74 -6
  256. package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/adapter.js +1340 -228
  257. package/dist/integrations/pi/engine/changelog.d.ts +2 -0
  258. package/dist/integrations/pi/engine/changelog.js +63 -0
  259. package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/conformance.d.ts +4 -2
  260. package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/conformance.js +15 -5
  261. package/dist/integrations/pi/engine/http-dispatcher.d.ts +4 -0
  262. package/dist/integrations/pi/engine/http-dispatcher.js +25 -0
  263. package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/index.d.ts +4 -0
  264. package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/index.js +4 -0
  265. package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/model-auth-integration.d.ts +2 -1
  266. package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/model-auth-integration.js +1 -0
  267. package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/package-integration.d.ts +1 -1
  268. package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/package-integration.js +32 -26
  269. package/dist/integrations/pi/engine/pending-delivery.d.ts +30 -0
  270. package/dist/integrations/pi/engine/pending-delivery.js +158 -0
  271. package/dist/integrations/pi/engine/project-trust-preflight.d.ts +22 -0
  272. package/dist/integrations/pi/engine/project-trust-preflight.js +50 -0
  273. package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/resource-extension-integration.d.ts +2 -1
  274. package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/resource-extension-integration.js +1 -0
  275. package/dist/integrations/pi/engine/resources/changelog.json +12 -0
  276. package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/runtime-integration.d.ts +19 -1
  277. package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/runtime-integration.js +56 -5
  278. package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/session-integration.d.ts +4 -2
  279. package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/session-integration.js +19 -4
  280. package/dist/integrations/pi/engine/session-selection.d.ts +28 -0
  281. package/dist/integrations/pi/engine/session-selection.js +90 -0
  282. package/dist/integrations/pi/engine/settings-effects.d.ts +66 -0
  283. package/dist/integrations/pi/engine/settings-effects.js +249 -0
  284. package/dist/integrations/pi/engine/settings-integration.d.ts +43 -0
  285. package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/settings-integration.js +102 -108
  286. package/dist/integrations/pi/engine/tool-rendering.d.ts +13 -0
  287. package/dist/integrations/pi/engine/tool-rendering.js +145 -0
  288. package/dist/integrations/pi/engine/transcript-image-assets.d.ts +11 -0
  289. package/dist/integrations/pi/engine/transcript-image-assets.js +86 -0
  290. package/dist/integrations/pi/engine/windows-filesystem-hygiene.d.ts +21 -0
  291. package/dist/integrations/pi/engine/windows-filesystem-hygiene.js +55 -0
  292. package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/workflow-controllers.d.ts +3 -2
  293. package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/workflow-controllers.js +1 -0
  294. package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/workflows.d.ts +19 -2
  295. package/dist/integrations/pi/session-ui/clipboard-diagnostics.d.ts +16 -0
  296. package/dist/integrations/pi/session-ui/clipboard-diagnostics.js +65 -0
  297. package/dist/integrations/pi/session-ui/clipboard-image.d.ts +11 -0
  298. package/dist/integrations/pi/session-ui/clipboard-image.js +38 -0
  299. package/dist/integrations/pi/session-ui/editor-hyperlink-budget.d.ts +9 -0
  300. package/dist/integrations/pi/session-ui/editor-hyperlink-budget.js +23 -0
  301. package/dist/integrations/pi/session-ui/image-preparation-client.d.ts +20 -0
  302. package/dist/integrations/pi/session-ui/image-preparation-client.js +145 -0
  303. package/dist/integrations/pi/session-ui/image-preparation.d.ts +18 -0
  304. package/dist/integrations/pi/session-ui/image-preparation.js +126 -0
  305. package/dist/integrations/pi/session-ui/image-source.d.ts +13 -0
  306. package/dist/integrations/pi/session-ui/image-source.js +171 -0
  307. package/dist/integrations/pi/session-ui/image-worker.d.ts +17 -0
  308. package/dist/integrations/pi/session-ui/image-worker.js +23 -0
  309. package/dist/integrations/pi/session-ui/index.d.ts +5 -0
  310. package/dist/integrations/pi/session-ui/index.js +5 -0
  311. package/dist/integrations/pi/session-ui/paste-executor.d.ts +10 -0
  312. package/dist/integrations/pi/session-ui/paste-executor.js +232 -0
  313. package/dist/integrations/pi/session-ui/paste-helper.d.ts +1 -0
  314. package/dist/integrations/pi/session-ui/paste-helper.js +173 -0
  315. package/dist/integrations/pi/session-ui/paste-preparation-client.d.ts +16 -0
  316. package/dist/integrations/pi/session-ui/paste-preparation-client.js +159 -0
  317. package/dist/integrations/pi/session-ui/paste-protocol.d.ts +78 -0
  318. package/dist/integrations/pi/session-ui/paste-protocol.js +18 -0
  319. package/dist/integrations/pi/session-ui/paste-text-preparation.d.ts +20 -0
  320. package/dist/integrations/pi/session-ui/paste-text-preparation.js +134 -0
  321. package/dist/integrations/pi/session-ui/paste-text-worker.d.ts +1 -0
  322. package/dist/integrations/pi/session-ui/paste-text-worker.js +12 -0
  323. package/dist/integrations/pi/session-ui/path-chip-presentation.d.ts +7 -0
  324. package/dist/integrations/pi/session-ui/path-chip-presentation.js +24 -0
  325. package/dist/integrations/pi/session-ui/prompt-chips.d.ts +72 -0
  326. package/dist/integrations/pi/session-ui/prompt-chips.js +503 -0
  327. package/dist/integrations/pi/session-ui/prompt-history-controller.d.ts +36 -0
  328. package/dist/integrations/pi/session-ui/prompt-history-controller.js +170 -0
  329. package/dist/integrations/pi/session-ui/prompt-suggestion-controller.d.ts +35 -0
  330. package/dist/integrations/pi/session-ui/prompt-suggestion-controller.js +207 -0
  331. package/dist/integrations/pi/session-ui/response-copy-coordinator.d.ts +27 -0
  332. package/dist/integrations/pi/session-ui/response-copy-coordinator.js +189 -0
  333. package/dist/integrations/pi/session-ui/response-copy-helper.d.ts +1 -0
  334. package/dist/integrations/pi/session-ui/response-copy-helper.js +122 -0
  335. package/dist/integrations/pi/session-ui/response-copy-protocol.d.ts +56 -0
  336. package/dist/integrations/pi/session-ui/response-copy-protocol.js +5 -0
  337. package/dist/integrations/pi/session-ui/response-copy-transport.d.ts +31 -0
  338. package/dist/integrations/pi/session-ui/response-copy-transport.js +187 -0
  339. package/dist/integrations/pi/session-ui/route-host.d.ts +5 -0
  340. package/dist/integrations/pi/session-ui/route-host.js +1 -0
  341. package/dist/integrations/pi/session-ui/session-shell-root.d.ts +221 -0
  342. package/dist/integrations/pi/session-ui/session-shell-root.js +1305 -0
  343. package/dist/integrations/pi/session-ui/session-shell.d.ts +55 -0
  344. package/dist/integrations/pi/session-ui/session-shell.js +1792 -0
  345. package/dist/integrations/pi/session-ui/session-viewport-controller.d.ts +56 -0
  346. package/dist/integrations/pi/session-ui/session-viewport-controller.js +569 -0
  347. package/dist/integrations/pi/session-ui/stream-presentation-coalescer.d.ts +29 -0
  348. package/dist/integrations/pi/session-ui/stream-presentation-coalescer.js +79 -0
  349. package/dist/integrations/pi/session-ui/system-clipboard.d.ts +20 -0
  350. package/dist/integrations/pi/session-ui/system-clipboard.js +156 -0
  351. package/dist/integrations/pi/session-ui/text-paste.d.ts +5 -0
  352. package/dist/integrations/pi/session-ui/text-paste.js +16 -0
  353. package/dist/{src/foundation/pi-tui-runtime-adapter → integrations/pi/tui-runtime}/adapter.d.ts +10 -1
  354. package/dist/{src/foundation/pi-tui-runtime-adapter → integrations/pi/tui-runtime}/adapter.js +255 -11
  355. package/dist/{src/foundation/pi-tui-runtime-adapter → integrations/pi/tui-runtime}/contracts.d.ts +32 -6
  356. package/dist/integrations/pi/tui-runtime/contracts.js +1 -0
  357. package/dist/integrations/pi/tui-runtime/damage-aware-terminal.d.ts +81 -0
  358. package/dist/integrations/pi/tui-runtime/damage-aware-terminal.js +424 -0
  359. package/dist/integrations/pi/tui-runtime/index.d.ts +7 -0
  360. package/dist/integrations/pi/tui-runtime/index.js +7 -0
  361. package/dist/integrations/pi/tui-runtime/input-presentation-coordinator.d.ts +39 -0
  362. package/dist/integrations/pi/tui-runtime/input-presentation-coordinator.js +139 -0
  363. package/dist/integrations/pi/tui-runtime/mouse-report-input.d.ts +13 -0
  364. package/dist/integrations/pi/tui-runtime/mouse-report-input.js +59 -0
  365. package/dist/integrations/pi/tui-runtime/overlay-geometry.d.ts +32 -0
  366. package/dist/integrations/pi/tui-runtime/overlay-geometry.js +159 -0
  367. package/dist/{src/foundation/pi-tui-runtime-adapter → integrations/pi/tui-runtime}/presentation-adapter.d.ts +1 -1
  368. package/dist/native/darwin-arm64/manifest.json +4 -4
  369. package/dist/native/darwin-arm64/process-guardian +0 -0
  370. package/dist/native/linux-x64/manifest.json +3 -3
  371. package/dist/native/linux-x64/process-guardian +0 -0
  372. package/dist/native/win32-x64/manifest.json +3 -3
  373. package/dist/native/win32-x64/process-guardian.exe +0 -0
  374. package/dist/{src/product-identity.d.ts → product-identity.d.ts} +4 -4
  375. package/dist/{src/product-identity.js → product-identity.js} +7 -38
  376. package/dist/{src/product-identity.json → product-identity.json} +13 -27
  377. package/dist/runtime-payload-inventory.json +122333 -0
  378. package/dist/{src/foundation/ui-apps → ui/apps}/contracts.d.ts +23 -1
  379. package/dist/{src/foundation/ui-apps → ui/apps}/host.d.ts +1 -1
  380. package/dist/{src/foundation/ui-apps → ui/apps}/host.js +14 -10
  381. package/dist/{src/foundation/ui-apps → ui/apps}/registry.d.ts +1 -0
  382. package/dist/{src/foundation/ui-apps → ui/apps}/registry.js +1 -0
  383. package/dist/{src/foundation/ui-components → ui/components}/dialog-panel.js +5 -3
  384. package/dist/{src/foundation/ui-components → ui/components}/frame.d.ts +1 -0
  385. package/dist/{src/foundation/ui-components → ui/components}/frame.js +1 -0
  386. package/dist/{src/foundation/ui-components → ui/components}/index.d.ts +7 -0
  387. package/dist/{src/foundation/ui-components → ui/components}/index.js +7 -0
  388. package/dist/{src/foundation/ui-components → ui/components}/line-input.d.ts +2 -8
  389. package/dist/{src/foundation/ui-components → ui/components}/line-input.js +7 -28
  390. package/dist/{src/foundation/ui-components → ui/components}/list-view.d.ts +0 -6
  391. package/dist/{src/foundation/ui-components → ui/components}/list-view.js +14 -7
  392. package/dist/{src/foundation/ui-components → ui/components}/mouse.d.ts +10 -0
  393. package/dist/{src/foundation/ui-components → ui/components}/mouse.js +24 -0
  394. package/dist/ui/components/progress-status.d.ts +2 -0
  395. package/dist/ui/components/progress-status.js +4 -0
  396. package/dist/ui/components/prompt-input.d.ts +32 -0
  397. package/dist/ui/components/prompt-input.js +54 -0
  398. package/dist/ui/components/prompt-row.d.ts +14 -0
  399. package/dist/ui/components/prompt-row.js +20 -0
  400. package/dist/{src/foundation/ui-components → ui/components}/scrollbar.d.ts +26 -0
  401. package/dist/{src/foundation/ui-components → ui/components}/scrollbar.js +35 -0
  402. package/dist/ui/components/selection-copy.d.ts +24 -0
  403. package/dist/ui/components/selection-copy.js +39 -0
  404. package/dist/{src/foundation/ui-components → ui/components}/shortcuts.d.ts +1 -0
  405. package/dist/{src/foundation/ui-components → ui/components}/shortcuts.js +1 -0
  406. package/dist/ui/components/spans.d.ts +28 -0
  407. package/dist/ui/components/spans.js +266 -0
  408. package/dist/ui/components/submitted-prompt.d.ts +23 -0
  409. package/dist/ui/components/submitted-prompt.js +50 -0
  410. package/dist/{src/foundation/ui-components → ui/components}/surface.d.ts +0 -5
  411. package/dist/{src/foundation/ui-components → ui/components}/surface.js +1 -5
  412. package/dist/ui/components/text-selection.d.ts +62 -0
  413. package/dist/ui/components/text-selection.js +210 -0
  414. package/dist/{src/foundation/ui-components → ui/components}/text.d.ts +14 -0
  415. package/dist/{src/foundation/ui-components → ui/components}/text.js +67 -5
  416. package/dist/ui/components/transcript-viewport.d.ts +173 -0
  417. package/dist/ui/components/transcript-viewport.js +753 -0
  418. package/dist/ui/components/visible-hyperlinks.d.ts +26 -0
  419. package/dist/ui/components/visible-hyperlinks.js +97 -0
  420. package/dist/{src/foundation/owned-ui-settings → ui/settings}/declarations.d.ts +8 -1
  421. package/dist/ui/settings/declarations.js +94 -0
  422. package/dist/{src/foundation/owned-ui-settings → ui/settings}/migrations.d.ts +1 -1
  423. package/dist/{src/foundation/owned-ui-settings → ui/settings}/migrations.js +28 -2
  424. package/dist/{src/foundation/owned-ui-settings → ui/settings}/sections.d.ts +6 -19
  425. package/dist/{src/foundation/owned-ui-settings → ui/settings}/sections.js +41 -22
  426. package/dist/{src/foundation/owned-ui-settings → ui/settings}/session.d.ts +9 -17
  427. package/dist/ui/settings/session.js +164 -0
  428. package/dist/{src/foundation/owned-ui-settings → ui/settings}/store.d.ts +1 -0
  429. package/dist/{src/foundation/owned-ui-settings → ui/settings}/store.js +2 -1
  430. package/docs/architecture/boundaries.md +14 -10
  431. package/docs/architecture/code-documentation.md +77 -0
  432. package/docs/architecture/history-editor-provenance.md +100 -0
  433. package/docs/architecture/internal-naming.md +91 -0
  434. package/docs/architecture/process-guardian-provenance.md +3 -1
  435. package/docs/architecture/project-structure.md +69 -30
  436. package/docs/architecture/prompt-suggestions.md +68 -0
  437. package/docs/architecture/resource-and-data-policy.md +28 -2
  438. package/docs/architecture/response-copy-delivery.md +83 -0
  439. package/docs/architecture/tool-image-presentation.md +62 -0
  440. package/docs/architecture/toolchain.md +24 -10
  441. package/docs/architecture/ui-reference-provenance.md +59 -5
  442. package/docs/ci-release-runbook.md +236 -79
  443. package/docs/features/launch-profiles.md +24 -17
  444. package/docs/features/modal-content-interaction.md +37 -0
  445. package/docs/features/prompt-history.md +149 -0
  446. package/docs/local-worktree-cleanup.md +128 -0
  447. package/docs/manual-code-streaming-cleanup.md +88 -0
  448. package/docs/manual-ghost-link-baseline.md +89 -0
  449. package/docs/manual-launch-instance-acceptance.md +12 -35
  450. package/docs/manual-owned-ui-checkpoint.md +78 -0
  451. package/docs/manual-pi-boundary-candidate.md +4 -5
  452. package/docs/manual-terminal-colour-check.md +4 -3
  453. package/docs/openspec-archive-automation.md +128 -0
  454. package/docs/repository-governance-live-acceptance.md +77 -0
  455. package/package.json +45 -28
  456. package/dist/src/cli/capabilities.d.ts +0 -15
  457. package/dist/src/cli/dispatch.js +0 -142
  458. package/dist/src/cli/version-stats.js +0 -72
  459. package/dist/src/composition/index.d.ts +0 -48
  460. package/dist/src/composition/index.js +0 -258
  461. package/dist/src/features/launch/intent.d.ts +0 -7
  462. package/dist/src/features/launch/intent.js +0 -4
  463. package/dist/src/features/launch/profiles.d.ts +0 -12
  464. package/dist/src/features/launch/profiles.js +0 -26
  465. package/dist/src/features/owned-ui/run.js +0 -15
  466. package/dist/src/foundation/lifecycle/paths.d.ts +0 -10
  467. package/dist/src/foundation/owned-ui-contracts/index.d.ts +0 -3
  468. package/dist/src/foundation/owned-ui-contracts/index.js +0 -3
  469. package/dist/src/foundation/owned-ui-settings/declarations.js +0 -39
  470. package/dist/src/foundation/owned-ui-settings/session.js +0 -145
  471. package/dist/src/foundation/pi-component-adapter/shell-editor-autocomplete.js +0 -162
  472. package/dist/src/foundation/pi-component-adapter/shell-presenters-transcript.d.ts +0 -57
  473. package/dist/src/foundation/pi-component-adapter/shell-shared-facade.d.ts +0 -116
  474. package/dist/src/foundation/pi-component-adapter/upstream/components/earendil-announcement.js +0 -19
  475. package/dist/src/foundation/pi-component-adapter/upstream/components/owned-editor.d.ts +0 -18
  476. package/dist/src/foundation/pi-component-adapter/upstream/components/owned-editor.js +0 -55
  477. package/dist/src/foundation/pi-engine-adapter/settings-integration.d.ts +0 -55
  478. package/dist/src/foundation/pi-owned-ui-integration/index.d.ts +0 -2
  479. package/dist/src/foundation/pi-owned-ui-integration/index.js +0 -2
  480. package/dist/src/foundation/pi-owned-ui-integration/route-host.d.ts +0 -29
  481. package/dist/src/foundation/pi-owned-ui-integration/session-shell.d.ts +0 -106
  482. package/dist/src/foundation/pi-owned-ui-integration/session-shell.js +0 -1518
  483. package/dist/src/foundation/pi-tui-runtime-adapter/index.d.ts +0 -4
  484. package/dist/src/foundation/pi-tui-runtime-adapter/index.js +0 -4
  485. package/dist/src/foundation/release/bootstrap.d.ts +0 -29
  486. package/dist/src/foundation/release/cohort-state.d.ts +0 -70
  487. package/dist/src/foundation/release/cohort-state.js +0 -202
  488. package/dist/src/foundation/release/release-gc.d.ts +0 -5
  489. package/dist/src/foundation/release/release-gc.js +0 -16
  490. package/dist/src/foundation/supervision/index.d.ts +0 -3
  491. package/dist/src/foundation/supervision/index.js +0 -3
  492. package/dist/src/foundation/supervision/main.d.ts +0 -1
  493. package/dist/src/foundation/supervision/main.js +0 -41
  494. package/dist/src/foundation/supervision/paths.d.ts +0 -1
  495. package/dist/src/foundation/supervision/paths.js +0 -1
  496. package/dist/src/foundation/supervision/server.d.ts +0 -22
  497. package/dist/src/foundation/ui-components/spans.d.ts +0 -7
  498. package/dist/src/foundation/ui-components/spans.js +0 -59
  499. package/docs/manual-transparent-checkpoint.md +0 -53
  500. /package/dist/{src/cli → cli}/index.d.ts +0 -0
  501. /package/dist/{src/cli → cli}/index.js +0 -0
  502. /package/dist/{src/cli → cli}/version.d.ts +0 -0
  503. /package/dist/{src/cli → cli}/version.js +0 -0
  504. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/capability-ports.js +0 -0
  505. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/domain-validation.d.ts +0 -0
  506. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/domain.js +0 -0
  507. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/index.d.ts +0 -0
  508. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/index.js +0 -0
  509. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/model.d.ts +0 -0
  510. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/model.js +0 -0
  511. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/package-ports.js +0 -0
  512. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/ports.d.ts +0 -0
  513. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/ports.js +0 -0
  514. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/serialization.d.ts +0 -0
  515. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/serialization.js +0 -0
  516. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/validation.d.ts +0 -0
  517. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/validation.js +0 -0
  518. /package/dist/{src/foundation/owned-ui-contracts → contracts/owned-ui}/extension-ui.d.ts +0 -0
  519. /package/dist/{src/foundation/owned-ui-contracts → contracts/owned-ui}/extension-ui.js +0 -0
  520. /package/dist/{src/foundation/owned-ui-contracts → contracts/owned-ui}/model.js +0 -0
  521. /package/dist/{src/foundation/presentation-contracts → contracts/presentation}/index.js +0 -0
  522. /package/dist/{src/foundation/workspace-contracts → contracts/workspace}/index.d.ts +0 -0
  523. /package/dist/{src/foundation/workspace-contracts → contracts/workspace}/index.js +0 -0
  524. /package/dist/{src/foundation/workspace-contracts → contracts/workspace}/model.d.ts +0 -0
  525. /package/dist/{src/foundation/workspace-contracts → contracts/workspace}/model.js +0 -0
  526. /package/dist/{src/foundation/workspace-contracts → contracts/workspace}/validation.d.ts +0 -0
  527. /package/dist/{src/foundation/workspace-contracts → contracts/workspace}/validation.js +0 -0
  528. /package/dist/{src/features → features}/launch/development-launch.d.ts +0 -0
  529. /package/dist/{src/features → features}/launch/initialize-profile.d.ts +0 -0
  530. /package/dist/{src/features → features}/launch/initialize-profile.js +0 -0
  531. /package/dist/{src/features → features}/launch/runtime-selection.js +0 -0
  532. /package/dist/{src/features → features}/workspace/capabilities.js +0 -0
  533. /package/dist/{src/features → features}/workspace/index.d.ts +0 -0
  534. /package/dist/{src/features → features}/workspace/index.js +0 -0
  535. /package/dist/{src/features → features}/workspace/presentation.d.ts +0 -0
  536. /package/dist/{src/features → features}/workspace/presentation.js +0 -0
  537. /package/dist/{src/features → features}/workspace/reconciliation.d.ts +0 -0
  538. /package/dist/{src/features → features}/workspace/reconciliation.js +0 -0
  539. /package/dist/{src/foundation → foundation}/launch-guardian/index.d.ts +0 -0
  540. /package/dist/{src/foundation → foundation}/launch-guardian/index.js +0 -0
  541. /package/dist/{src/foundation → foundation}/lifecycle/commands.d.ts +0 -0
  542. /package/dist/{src/foundation → foundation}/lifecycle/commands.js +0 -0
  543. /package/dist/{src/foundation → foundation}/lifecycle/launch-instance.d.ts +0 -0
  544. /package/dist/{src/foundation → foundation}/lifecycle/launch-instance.js +0 -0
  545. /package/dist/{src/foundation → foundation}/native-host-protocol/evidence.d.ts +0 -0
  546. /package/dist/{src/foundation → foundation}/native-host-protocol/evidence.js +0 -0
  547. /package/dist/{src/foundation → foundation}/native-host-protocol/index.d.ts +0 -0
  548. /package/dist/{src/foundation → foundation}/native-host-protocol/index.js +0 -0
  549. /package/dist/{src/foundation → foundation}/native-host-protocol/proof-gate.d.ts +0 -0
  550. /package/dist/{src/foundation → foundation}/native-host-protocol/proof-gate.js +0 -0
  551. /package/dist/{src/foundation → foundation}/process-containment/artifact.d.ts +0 -0
  552. /package/dist/{src/foundation → foundation}/process-containment/artifact.js +0 -0
  553. /package/dist/{src/foundation → foundation}/process-containment/contracts.d.ts +0 -0
  554. /package/dist/{src/foundation → foundation}/process-containment/contracts.js +0 -0
  555. /package/dist/{src/foundation → foundation}/protocol/index.d.ts +0 -0
  556. /package/dist/{src/foundation → foundation}/protocol/index.js +0 -0
  557. /package/dist/{src/foundation → foundation}/release/cohort-selection.d.ts +0 -0
  558. /package/dist/{src/foundation → foundation}/release/cohort-selection.js +0 -0
  559. /package/dist/{src/foundation → foundation}/release/concurrency.d.ts +0 -0
  560. /package/dist/{src/foundation → foundation}/release/concurrency.js +0 -0
  561. /package/dist/{src/foundation → foundation}/release/process-cleanup.d.ts +0 -0
  562. /package/dist/{src/foundation → foundation}/release/process-cleanup.js +0 -0
  563. /package/dist/{src/foundation → foundation}/release/stable-release.d.ts +0 -0
  564. /package/dist/{src/foundation → foundation}/release/stable-release.js +0 -0
  565. /package/dist/{src/foundation → foundation}/storage/index.d.ts +0 -0
  566. /package/dist/{src/foundation → foundation}/storage/index.js +0 -0
  567. /package/dist/{src/foundation → foundation}/structured-agent-runtime/index.d.ts +0 -0
  568. /package/dist/{src/foundation → foundation}/structured-agent-runtime/index.js +0 -0
  569. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/components.js +0 -0
  570. /package/dist/{src/foundation/pi-owned-ui-integration/route-host.js → integrations/pi/components/editor-interaction.js} +0 -0
  571. /package/dist/{src/foundation/pi-tui-runtime-adapter/contracts.js → integrations/pi/components/prompt-input-port.js} +0 -0
  572. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/resources/builtin-themes.d.ts +0 -0
  573. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/resources/builtin-themes.js +0 -0
  574. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/shell-editor-autocomplete.d.ts +0 -0
  575. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/shell-extension-ui.js +0 -0
  576. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/theme.d.ts +0 -0
  577. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/theme.js +0 -0
  578. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/countdown-timer.d.ts +0 -0
  579. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/countdown-timer.js +0 -0
  580. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/custom-entry.d.ts +0 -0
  581. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/custom-entry.js +0 -0
  582. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/daxnuts.d.ts +0 -0
  583. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/daxnuts.js +0 -0
  584. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/earendil-announcement.d.ts +0 -0
  585. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/extension-editor.d.ts +0 -0
  586. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/extension-editor.js +0 -0
  587. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/first-time-setup.d.ts +0 -0
  588. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/first-time-setup.js +0 -0
  589. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/markdown-transform.d.ts +0 -0
  590. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/markdown-transform.js +0 -0
  591. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/mermaid.d.ts +0 -0
  592. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/mermaid.js +0 -0
  593. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/session-selector-search.d.ts +0 -0
  594. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/session-selector-search.js +0 -0
  595. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/session-selector.d.ts +0 -0
  596. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/session-selector.js +0 -0
  597. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/skill-invocation-message.d.ts +0 -0
  598. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/skill-invocation-message.js +0 -0
  599. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/status-indicator.d.ts +0 -0
  600. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/status-indicator.js +0 -0
  601. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/tree-selector.d.ts +0 -0
  602. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/tree-selector.js +0 -0
  603. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/trust-selector.d.ts +0 -0
  604. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/trust-selector.js +0 -0
  605. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/external-editor.d.ts +0 -0
  606. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/external-editor.js +0 -0
  607. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/model-search.d.ts +0 -0
  608. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/model-search.js +0 -0
  609. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/theme/theme-controller.d.ts +0 -0
  610. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/theme/theme-controller.js +0 -0
  611. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/theme/theme.d.ts +0 -0
  612. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/theme/theme.js +0 -0
  613. /package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/pi-settings-metadata.json +0 -0
  614. /package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/public-main-entry.d.ts +0 -0
  615. /package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/public-main-entry.js +0 -0
  616. /package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/workflows.js +0 -0
  617. /package/dist/{src/foundation/pi-tui-runtime-adapter → integrations/pi/tui-runtime}/conformance.d.ts +0 -0
  618. /package/dist/{src/foundation/pi-tui-runtime-adapter → integrations/pi/tui-runtime}/conformance.js +0 -0
  619. /package/dist/{src/foundation/pi-tui-runtime-adapter → integrations/pi/tui-runtime}/presentation-adapter.js +0 -0
  620. /package/dist/{src/foundation/ui-apps → ui/apps}/contracts.js +0 -0
  621. /package/dist/{src/foundation/ui-apps → ui/apps}/index.d.ts +0 -0
  622. /package/dist/{src/foundation/ui-apps → ui/apps}/index.js +0 -0
  623. /package/dist/{src/foundation/ui-components → ui/components}/dialog-panel.d.ts +0 -0
  624. /package/dist/{src/foundation/ui-components → ui/components}/label.d.ts +0 -0
  625. /package/dist/{src/foundation/ui-components → ui/components}/label.js +0 -0
  626. /package/dist/{src/foundation/ui-components → ui/components}/list-block.d.ts +0 -0
  627. /package/dist/{src/foundation/ui-components → ui/components}/list-block.js +0 -0
  628. /package/dist/{src/foundation/ui-components → ui/components}/pane.d.ts +0 -0
  629. /package/dist/{src/foundation/ui-components → ui/components}/pane.js +0 -0
  630. /package/dist/{src/foundation/ui-components → ui/components}/revision.d.ts +0 -0
  631. /package/dist/{src/foundation/ui-components → ui/components}/revision.js +0 -0
  632. /package/dist/{src/foundation/ui-components → ui/components}/status-line.d.ts +0 -0
  633. /package/dist/{src/foundation/ui-components → ui/components}/status-line.js +0 -0
  634. /package/dist/{src/foundation/ui-components → ui/components}/stepper.d.ts +0 -0
  635. /package/dist/{src/foundation/ui-components → ui/components}/stepper.js +0 -0
  636. /package/dist/{src/foundation/ui-components → ui/components}/theme.d.ts +0 -0
  637. /package/dist/{src/foundation/ui-components → ui/components}/theme.js +0 -0
  638. /package/dist/{src/foundation/ui-components → ui/components}/value-menu.d.ts +0 -0
  639. /package/dist/{src/foundation/ui-components → ui/components}/value-menu.js +0 -0
  640. /package/dist/{src/foundation/owned-ui-settings → ui/settings}/index.d.ts +0 -0
  641. /package/dist/{src/foundation/owned-ui-settings → ui/settings}/index.js +0 -0
  642. /package/dist/{src/foundation/owned-ui-settings → ui/settings}/resolution.d.ts +0 -0
  643. /package/dist/{src/foundation/owned-ui-settings → ui/settings}/resolution.js +0 -0
@@ -21,12 +21,11 @@ Use the exact generated filename if wildcard expansion is unavailable.
21
21
  1. **Bare owned UI:** run `& $Candidate`. Confirm startup, typing, submission, transcript streaming, selector focus, mouse/keyboard scrolling, and ordinary shutdown.
22
22
  2. **Extension surfaces:** in bare UI use `/reload`, then exercise configured extension notification, select, confirm, input, editor, replacement custom surface, and overlay custom surface. Confirm cancellation restores editor focus.
23
23
  3. **Vanilla oracle:** run `& $Candidate pi`. Confirm untouched Pi uses the ordinary `~/.pi/agent` profile and does not show owned-UI or workspace surfaces.
24
- 4. **Isolated profile:** run `& $Candidate sandbox`. Confirm Pi uses `~/.a1/sandbox` and starts with project approval disabled for that run.
25
- 5. **Resize and input:** while each mode is active, narrow and widen the terminal, enter Unicode and multiline text, use history/navigation keys, and scroll in both directions.
26
- 6. **Shutdown:** exit normally, then repeat and use Ctrl+C during work. Confirm the parent prompt remains usable and no child remains attached.
27
- 7. **Recovery:** after any owned-UI failure, run `& $Candidate pi`; confirm the vanilla oracle remains available. Restart bare UI and confirm its normal profile remains intact.
24
+ 4. **Resize and input:** while each mode is active, narrow and widen the terminal, enter Unicode and multiline text, use history/navigation keys, and scroll in both directions.
25
+ 5. **Shutdown:** exit normally, then repeat and use Ctrl+C during work. Confirm the parent prompt remains usable and no child remains attached.
26
+ 6. **Recovery:** after any owned-UI failure, run `& $Candidate pi`; confirm the vanilla oracle remains available. Restart bare UI and confirm its normal profile remains intact.
28
27
 
29
- Do not remove `~/.a1/agent`, `~/.pi/agent`, or `~/.a1/sandbox` during this checkpoint.
28
+ Do not remove `~/.a1/agent` or `~/.pi/agent` during this checkpoint.
30
29
 
31
30
  ## Verdict recording
32
31
 
@@ -29,9 +29,10 @@ leave the launch without a terminal on its input; the launcher says so and stops
29
29
  rather than opening a session that closes as it starts. Running `scripts/dev`
30
30
  from the shell is the direct path.
31
31
 
32
- A directly launched `node scripts/start-local.mjs` under Git Bash does not, and
33
- neither does a directly launched `node …/pi/dist/cli.js`: the collapse belongs to
34
- the launch, not to either application.
32
+ A directly launched `node scripts/development/dev-launch.mjs` or
33
+ `node scripts/development/start-local.mjs` under Git Bash does not, and neither
34
+ does a directly launched `node …/pi/dist/cli.js`: the collapse belongs to the
35
+ launch, not to either application.
35
36
 
36
37
  ## Checking a terminal
37
38
 
@@ -0,0 +1,128 @@
1
+ # Automatic OpenSpec archival
2
+
3
+ The archive workflow handles merged OpenSpec implementations, visible acceptance review, a daily 90-day catch-up, and targeted retries. When acceptance is missing, it creates or reuses `Accept: <change> — implementation #<number>`; only an authorized maintainer's verified manual merge of that exact record grants PR-backed acceptance. It then creates an OpenSpec-only archive PR, which existing documentation automation squash-integrates after real current-head CI. An open acceptance or archive PR is not completed acceptance or archival.
4
+
5
+ Documentation CI installs only the pinned OpenSpec archive tool into runner temporary storage, not the repository dependency tree. Candidate validation selects that installation with `--tool-root`; the override is unavailable to publication and audit modes. The documentation job has read-only contents, PR, and Actions permissions; the existing merge owner also declares Actions read access for checking source validation.
6
+
7
+ ## One PR: specs, implementation, CI, validation, merge, archive, cleanup
8
+
9
+ A new implementation-bound change starts as OpenSpec-only artifacts in one draft PR, not a plan merged ahead of its implementation. Planning requests authorize no code. The agent prepares the link below while opening that draft. After explicit plan approval and an implementation request, continue in the same worktree, branch, history, and PR; reconcile approved planning refinements before their code edits and include related product documentation there too.
10
+
11
+ Use this delivery sequence:
12
+
13
+ 1. **Specs:** prepare and approve the plan in the draft PR. Planning does not authorize implementation by itself.
14
+ 2. **Implementation:** after explicit approval/request, implement in that same worktree, branch, history, and PR. Keep it draft while implementation is unfinished.
15
+ 3. **CI:** push the completed candidate and mark the PR **ready for review before running required CI**. Normal `ready_for_review`/`synchronize` events provide PR-visible test progress. Do not manually dispatch ordinary CI merely to keep the completed candidate draft and then run it again on readiness. Dedicated Full regression/native workflows remain separate required evidence where applicable.
16
+ 4. **Implementation review:** after applicable CI passes, obtain actual maintainer validation of the exact final head. Readiness, plan approval, and green CI are not acceptance or merge authorization. A changed candidate requires current-head CI and renewed review.
17
+ 5. **Implementation merge:** merge manually only after explicit authorization; implementation auto-merge stays disabled. This integrates code but does not invent post-merge archival acceptance.
18
+ 6. **Visible acceptance:** trusted automation creates or reuses one acceptance PR from exact source and CI evidence. Pending substantive tasks and unknown outcomes keep it draft/blocked. Reconcile only evidence-backed stale bookkeeping in that same PR. After its current-head CI passes, an authorized maintainer manually merges it; auto-merge is always forbidden. That merge records archival acceptance without a JSON comment or acceptance-of-acceptance PR.
19
+ 7. **Docs/specs auto-merge:** the verified acceptance merge resumes conservative synchronization and prepares the OpenSpec-only archive PR. Documentation automation merges that follow-up after its own required CI. Do not separately merge specs/docs or archive before implementation and acceptance integration.
20
+ 8. **Cleanup:** verify implementation, acceptance, and archive integration before removing retained local task/acceptance worktrees. Preserve ownership, clean-tree, and closed/unmerged safety checks. The owning agent performs eligible local cleanup or explicitly releases a registered checkout to the opt-in [local cleanup worker](local-worktree-cleanup.md); no always-running service is provisioned automatically. Hosted remote-branch cleanup remains independently gated on the corresponding PR's verified merge.
21
+
22
+ When a PR check fails, repair routine failures in its existing worktree, branch, and PR and repush; a separate proposal or PR is not required solely for the repair, including a narrowly scoped inherited failure. Preserve the tested behavior, assertions, coverage, and required checks, record the cause and validation, and obtain fresh current-head CI and renewed implementation review; post-merge acceptance remains separately recorded. Substantive new scope still requires clarification. Reclaim a registered released checkout before resuming work; a repair grants no live cleanup or merge authority.
23
+
24
+ The implementation, acceptance, and archive PRs each need their own CI because they carry different decisions and bytes. The redundant draft-dispatch-then-ready implementation run is what this sequence avoids. The documentation merge owner holds implementation-associated PRs, new active changes, and acceptance records/branches even if marked ready or their editable marker is removed. PR body edits trigger reconciliation and disable an excluded armed merge. Ordinary docs, standalone revisions to existing merged plans, and verified archive moves remain automatic under the exact path allowlist.
25
+
26
+ ## Normal implementation handoff
27
+
28
+ The delivery agent adds one version-2 block to the initial draft PR description. It identifies the plan and implementation in that same PR, without `specificationPr`:
29
+
30
+ ````markdown
31
+ ```openspec-implementation
32
+ {
33
+ "version": 2,
34
+ "change": "example-change",
35
+ "archivePreparationTasks": { "recordEvidence": "7.1", "stageArchive": "7.2" }
36
+ }
37
+ ```
38
+ ````
39
+
40
+ The minimal link is `{ "version": 2, "change": "example-change" }`. Version 2 verifies that the linked artifacts are present and identical in the accepted source and implementation merge; it never invents a separate specification PR. Omit `archivePreparationTasks` when no mechanical task mapping is needed. If used, the mapped task IDs must have exactly these descriptions:
41
+
42
+ ```markdown
43
+ - [ ] 7.1 Record verified implementation acceptance and merge evidence for archive preparation.
44
+ - [ ] 7.2 Stage and verify delta synchronization and the archive move in an OpenSpec-only candidate.
45
+ ```
46
+
47
+ All implementation, tests, CI, and manual-review tasks must be completed separately before acceptance. Never combine physical review or merge authorization into these mechanical tasks. An old mixed task is a blocker, not permission to tick unperformed work.
48
+
49
+ After implementation merge, automation commits one version-1 JSON request at `openspec/acceptance/<change>/<source-head>.json` on `docs/accept-<change>-<source-pr>`. Its PR body shows the exact implementation head/merge, spec baseline, final-head source CI, recorded evidence, every original task and continuation line, unfinished work, known gaps, and this sentence: **Merging this PR records your acceptance.** It is a review record, not another proposal.
50
+
51
+ A generated record expresses only the conditional decision `accept-on-manual-merge`; it never names a reviewer or claims the merge already occurred. Completed source tasks stay recorded. An unchecked substantive task remains pending until actual evidence is linked and its unchanged task identity is explicitly marked `evidenced`. Only the exact pure task `Record maintainer acceptance by manually merging the acceptance PR.` may use `signoff-on-merge`. Implementation, test, live/physical review, mixed, unknown, or known-gap work cannot use that shortcut. Archive-preparation tasks retain their existing mechanical handling.
52
+
53
+ The acceptance PR starts draft whenever source CI or substantive evidence is incomplete. Edit the record on its existing bot-owned branch without unrelated files; automation preserves reviewer edits and makes a complete draft ready on a later synchronize/scheduled/targeted pass. Closing it without merging records no acceptance; replacement requires an authorized targeted retry. Never enable auto-merge. Reserved paths, branch identity, complete diff, both rename names, and authoritative base/head state preserve the manual hold even if title, label, or body metadata is removed.
54
+
55
+ Candidate CI checks the exact single added record using trusted base policy and read-only permissions; it does not execute candidate scripts or wait for its own result. After manual merge, the reader separately verifies exact committed bytes, current-head CI including the acceptance check, source identities, develop ancestry, write/maintain/admin human merger, and absence of automatic/App/merge-queue provenance. Archive evidence retains acceptance PR/head/merge, record digest, author and reviewed task reconciliation. Acceptance integration alone never authorizes local deletion.
56
+
57
+ Existing valid version-1 `openspec-acceptance` comments remain supported. Their author still needs repository write/maintain/admin authority, and edited, contradictory, revoked, stale, known-gap, or current-head conflicts fail closed. Automation never creates a synthetic comment or chooses between conflicting comment-backed and PR-backed authority.
58
+
59
+ The code PR still requires explicit manual merge authorization. After a verified acceptance merge, no additional archive command is needed for an eligible change. Planning-only and archive PRs never count as implemented changes. Existing `acceptance.md` files require manual reconciliation rather than being silently overwritten.
60
+
61
+ ## Rejection, standalone docs, and legacy migration
62
+
63
+ - **New draft rejected:** if `example-change` never merged, close its PR. Neither its plan nor code lands on `develop`, and no main-branch reconciliation or completed-change archive is required. Closing alone does not authorize deleting an unmerged branch or dirty worktree; follow separate cleanup approvals.
64
+ - **Legacy merged plan rejected:** preserve its historical merge. Obtain an explicit reconciliation disposition; do not claim successful implementation or archive it as complete.
65
+ - **Legacy implementation continues:** keep the existing PR (for example #376 following #362), or create an isolated implementation stream only if none exists and implementation is explicitly requested. Retain the original version-1 link; the historical specification merge and ancestry are still verified. Unknown versions and version-2 links containing `specificationPr` are rejected.
66
+ - **Standalone docs/revision:** an unassociated non-draft README/docs PR or revision of an already-present active change retains the usual CI-gated automatic path. Renaming an archive into a new active plan establishes a hold; moving a completed active change into its archive does not.
67
+
68
+ Legacy link example:
69
+
70
+ ````markdown
71
+ ```openspec-implementation
72
+ { "version": 1, "change": "legacy-change", "specificationPr": 123 }
73
+ ```
74
+ ````
75
+
76
+ The repository-owned [change-delivery skill](../.agents/skills/change-delivery/SKILL.md) follows these boundaries without changing external or globally installed skills. This bootstrap still needs live evidence of the new draft/approval/same-PR/refinement lifecycle, a ready-but-unimplemented plan remaining held, rejection without archival, an ordinary docs control, and accepted merge through automatic archival. Unit tests are not that evidence.
77
+
78
+ ## One-time publication setup
79
+
80
+ Provisioning is a separate maintainer-approved operation, not performed by installing or running the script.
81
+
82
+ 1. Create and install a repository-scoped GitHub App for this repository, without administration permissions or ruleset bypass.
83
+ 2. Grant repository contents and pull-request read/write permissions. The workflow's ordinary token reads contents, PR metadata, and Actions validation; the App token is restricted to publication and status comments.
84
+ 3. Set repository Actions secrets `OPENSPEC_ARCHIVE_APP_ID` and `OPENSPEC_ARCHIVE_APP_PRIVATE_KEY`. Do not paste keys into PRs, source, reports, or acceptance evidence.
85
+ 4. Verify trusted default-branch deployment and run a read-only audit before the isolated live lifecycle test.
86
+ 5. Record a real App-authored archive PR triggering ordinary CI, automatic protected squash integration, and exact-head branch cleanup before accepting live operation.
87
+
88
+ The script mints and revokes a short-lived installation token. It does not publish with `GITHUB_TOKEN`: GitHub can suppress the resulting PR events, leaving a PR without required CI. Missing App setup blocks mutation and does not relax protection. No extra merge owner, status spoofing, or automatic repository-settings application is introduced.
89
+
90
+ ## Audit and retry
91
+
92
+ From a dependency-installed checkout, run a read-only audit using existing GitHub CLI authentication:
93
+
94
+ ```bash
95
+ GH_TOKEN="$(gh auth token)" node scripts/governance/reconcile-openspec-archive.mjs --dry-run
96
+ ```
97
+
98
+ To inspect one implementation PR, including one older than the scheduled window:
99
+
100
+ ```bash
101
+ GH_TOKEN="$(gh auth token)" node scripts/governance/reconcile-openspec-archive.mjs --dry-run --pr 123
102
+ ```
103
+
104
+ These commands do not launch the product UI and do not require a product build. They never mutate remote refs, PRs, comments, source specs/tasks, or persistent scan checkpoints. Disposable local staging verifies the proposed archive; the audit report is written to `.artifacts/openspec-archive/report.json`.
105
+
106
+ For authorized publication or retry, use the **OpenSpec archive** Actions dispatch. Keep `dry_run` enabled for inspection. Set a specific PR and `retry_closed` only when deliberately authorizing replacement of its closed/unmerged archive PR. Closing an archive PR otherwise stops automatic recreation.
107
+
108
+ ## Outcomes and bounds
109
+
110
+ - **awaiting-evidence**: an acceptance PR exists but lists missing CI, substantive tasks, or actual outcomes; update that same request without fabricating results.
111
+ - **awaiting-manual-acceptance-merge**: the validated acceptance request needs explicit maintainer review and manual merge.
112
+ - **eligible**: accepted evidence and isolated archive staging passed; dry-run did not publish.
113
+ - **accepted-archive-blocked**: acceptance is verified, but tasks, synchronization, archive CI, or publication still blocks archival.
114
+ - **blocked**: a named evidence/task/spec/setup/ownership/conflict problem requires attention.
115
+ - **pending**: archive PR exists; current-head CI and automatic merge are not yet complete.
116
+ - **already-archived**: merged archive identity and retained evidence were verified.
117
+ - **deferred**: the queue or scan budget prevented work this run.
118
+ - **unlinked**: no explicit implementation metadata; not presumed accepted or archived.
119
+
120
+ Only one automatic archive PR is outstanding at a time. Runs never wait on CI. A failing pending PR blocks the queue until fixed or explicitly closed; neither a rerun nor a successful old head bypasses its required checks. Human-edited branches and unrelated paths are preserved.
121
+
122
+ Catch-up scans a fixed 90-day window, up to 500 PRs per pass, with a 10-minute workflow budget and one publication per run. A small versioned cursor resumes unfinished windows; reports and cursors are retained for 14 days. Missing/expired cursors restart a bounded scan, not an assumed complete audit. Older PRs remain targetable. Exceptionally dense search buckets or incomplete GitHub search results are explicit blockers rather than silent truncation.
123
+
124
+ Known-gap archival remains a separately authorized manual path. The existing backlog is not bulk-approved when automation starts. Local worktree cleanup remains local: the owning agent can release an explicitly registered checkout to the separately enabled [local reconciler](local-worktree-cleanup.md) after stopping its use. The reconciler waits for verified archive integration and remote-ref absence, checks ownership and all local content, and never force-discards dirty work. Unregistered or unreleased worktrees remain untouched.
125
+
126
+ ## Disable or roll back
127
+
128
+ Disable the **OpenSpec archive** workflow or revoke its App publication credentials to stop new request/archive publication. Preserve authoritative acceptance records, their manual auto-merge hold, active changes, and open review/archive PRs. Do not delete receipts, undo synchronized specs, or modify repository rulesets merely to stop automation. Readers must remain compatible with existing PR-backed and legacy comment receipts or fail closed. Existing documentation auto-merge and remote branch cleanup remain independently governed.
@@ -0,0 +1,77 @@
1
+ # Repository governance live acceptance
2
+
3
+ ## Implementation lifecycle
4
+
5
+ - PR #165 was manually squash-merged by `timurproko` from validated head
6
+ `45aab61c5e4568d3d26dc970f76e9ec86918f323` to `develop` commit
7
+ `e4cdc67555e9f25d03f251be19baa8fc446ac313`.
8
+ - Cleanup run `33185942656` used trusted `develop` policy with `contents: write` only
9
+ and reported `already-absent`; the implementation branch remained absent.
10
+ - The read-only live governance report matched every declared field after merge.
11
+
12
+ ## Acceptance defect and correction
13
+
14
+ - Initial OpenSpec probe PR #166 automatically squash-merged validated head
15
+ `c30c0a091a6a6a727057befcdd775422988be382` to
16
+ `f8d60080cfd9925b33a19a5d40c707637ac00b08`, but GitHub suppressed the recursive
17
+ close-event workflow because integration was authored with `GITHUB_TOKEN`.
18
+ - Its exact unchanged branch remained, proving the first implementation incomplete.
19
+ The branch was manually deleted only after its expected SHA and lack of an open PR
20
+ were reverified.
21
+ - Corrective PR #167 was manually squash-merged from validated head
22
+ `3a09042386df2501accc1eec3b424b94ae84daa4` to
23
+ `e8d639985a811f01cd5daeb027db5069d1724596`. Cleanup run `33188206793`
24
+ succeeded with `already-absent`.
25
+
26
+ ## Automatic OpenSpec acceptance
27
+
28
+ - PR #168 contained only `openspec/**` paths.
29
+ - Development validation run `33188285639` passed for exact head
30
+ `6678d9237ca7c4109beaed0d97d5fb1183fe5f97` without product tests.
31
+ - `github-actions` automatically squash-merged it to
32
+ `c2fa730a4b070f9f6717329c24158def5c766f11`.
33
+ - Trusted documentation reconciliation run `33188329123` reported `deleted` for the
34
+ same expected head SHA, and the remote branch was verified absent.
35
+
36
+ ## Automatic root README acceptance
37
+
38
+ - PR #169 changed only root `README.md`.
39
+ - Development validation run `33188400573` passed for exact head
40
+ `165c5159031d80059c4d93c36c6d10113ec7ba8e` without product tests.
41
+ - `github-actions` automatically squash-merged it to
42
+ `0180088a42b7cdacaf84ec66ff5a87be1a697155`.
43
+ - Trusted documentation reconciliation run `33188434277` reported `deleted` for the
44
+ same expected head SHA, and the remote branch was verified absent.
45
+
46
+ ## Mixed-path manual acceptance
47
+
48
+ PR #170 combined this evidence file outside the exact automatic allowlist with an
49
+ OpenSpec task update. Development validation run `33188542485` passed for exact head
50
+ `b95bdbf08ad6db76c5fab2bfca254026a3c4bcc1` without product tests. Auto-merge
51
+ remained disabled and the pull request remained open and mergeable until `timurproko`
52
+ manually squash-merged it to `6ab1e4d29b9edec8501bac774bc755e66240ea40`.
53
+ Close-event cleanup run `33188616709` reported `already-absent`, and the remote branch
54
+ was verified absent after the explicit merge.
55
+
56
+ ## Automatic maintained-documentation acceptance
57
+
58
+ - Implementation PR #180 was manually squash-merged after required validation from
59
+ head `8f40bfaaa5e8410e77b1c9cc0667c62bc4c62d4b` to
60
+ `45a59a7b696d537a4dc8fe62000a60c20e504ab2`.
61
+ - PR #181 changes only this maintained `docs/**` file and is the live acceptance
62
+ probe for the expanded allowlist.
63
+ - Acceptance requires current-head documentation validation, automatic squash
64
+ integration without maintainer merge action, and exact-head remote branch cleanup.
65
+ Exact run and merge evidence is recorded with the completed OpenSpec change.
66
+
67
+ ## Advanced-ref refusal and final policy state
68
+
69
+ The isolated mocked-GitHub fixture executed the production shared reconciler with
70
+ expected SHA `1111111111111111111111111111111111111111` and advanced live SHA
71
+ `2222222222222222222222222222222222222222`. It returned `refused` with reason
72
+ `live branch advanced after merge` and issued zero DELETE requests. The bounded
73
+ record is archived as `evidence/advanced-ref-refusal.json`.
74
+
75
+ The final read-only live report matched all declared repository settings, Actions
76
+ policy, security capabilities, environments, protected refs, complete rulesets, and
77
+ workflow inventory with zero differences. No policy apply was run.
package/package.json CHANGED
@@ -1,17 +1,15 @@
1
1
  {
2
2
  "name": "@timurproko/a1",
3
- "version": "0.1.8-dev.3b54f21",
3
+ "version": "0.1.8-dev.407",
4
4
  "description": "Standalone terminal workspace for supervised native and managed agents",
5
5
  "type": "module",
6
+ "privateLaunchContract": "neutral-launch-v1",
6
7
  "packageManager": "npm@11.13.0",
7
8
  "bin": {
8
9
  "a1": "bin/cli.js"
9
10
  },
10
11
  "imports": {
11
- "#pi-tui": [
12
- "./node_modules/@earendil-works/pi-coding-agent/node_modules/@earendil-works/pi-tui/dist/index.js",
13
- "@earendil-works/pi-tui"
14
- ]
12
+ "#pi-tui": "./bin/pi-tui.js"
15
13
  },
16
14
  "files": [
17
15
  "bin",
@@ -24,44 +22,59 @@
24
22
  "node": ">=22.19.0 <25"
25
23
  },
26
24
  "scripts": {
25
+ "postinstall": "node bin/sync-pi-tui-proxy.js",
27
26
  "clean": "node scripts/clean.mjs",
28
- "build": "npm run clean && tsc -p tsconfig.build.json && node scripts/build-process-guardian.mjs",
29
- "build:process-guardian": "node scripts/build-process-guardian.mjs",
27
+ "build": "npm run clean && tsc -p tsconfig.build.json && node scripts/development/build-process-guardian.mjs && node scripts/release/generate-runtime-payload-inventory.mjs",
28
+ "build:process-guardian": "node scripts/development/build-process-guardian.mjs",
30
29
  "typecheck": "tsgo -p tsconfig.json --noEmit",
31
- "check:architecture": "node scripts/check-architecture.mjs && node scripts/product-identifier-policy.mjs --check && node scripts/check-product-identity-boundaries.mjs && node scripts/check-package-identity.mjs && node scripts/check-pinned-pi-source-ledger.mjs && node scripts/check-terminal-host-provenance.mjs",
32
- "check:customization-ready": "node scripts/check-owned-ui-customization-prerequisites.mjs",
33
- "check:deprecated": "node scripts/check-deprecated-dependencies.mjs",
30
+ "check:architecture": "node scripts/governance/check-architecture.mjs && node scripts/governance/check-product-identity-boundaries.mjs && node scripts/governance/check-package-identity.mjs && node scripts/governance/check-pinned-pi-source-ledger.mjs && node scripts/governance/check-terminal-host-provenance.mjs",
31
+ "check:names": "node scripts/governance/product-identifier-policy.mjs --check",
32
+ "check:names:changed": "node scripts/governance/product-identifier-policy.mjs --check --selection .artifacts/validation/impact.json",
33
+ "check:code-documentation": "node scripts/governance/check-code-documentation.mjs --mode full",
34
+ "check:code-documentation:changed": "node scripts/release/run-changed-documentation.mjs",
35
+ "select:validation-impact": "node scripts/release/select-validation-impact.mjs",
36
+ "check:customization-ready": "node scripts/governance/check-owned-ui-customization-prerequisites.mjs",
37
+ "check:deprecated": "node scripts/governance/check-deprecated-dependencies.mjs",
38
+ "check:docs-governance": "node scripts/governance/check-docs-governance.mjs",
39
+ "check:repository-governance": "node scripts/governance/check-github-repository-governance.mjs --check",
34
40
  "branches:prune": "node scripts/prune-merged-branches.mjs",
35
41
  "check": "npm run test:fast",
36
- "release": "node scripts/release.mjs",
42
+ "develop": "node scripts/development/develop.mjs",
43
+ "release": "node scripts/release/release.mjs",
37
44
  "test": "npm run test:fast",
38
- "test:fast": "node scripts/run-validation-tier.mjs typecheck fast",
39
- "test:scope": "node scripts/run-validation-tier.mjs",
40
- "test:full": "node scripts/run-validation-tier.mjs full-release",
41
- "test:release": "node scripts/run-release-gates.mjs",
42
- "test:terminal-host": "node scripts/run-terminal-host-probe.mjs",
43
- "test:pi-engine-conformance": "vitest run test/foundation/pi-engine-adapter/conformance.test.ts test/foundation/pi-engine-adapter/runtime-integration.test.ts test/foundation/pi-engine-adapter/session-integration.test.ts",
44
- "report:pi-engine-conformance": "npm run build --silent && node scripts/run-pi-engine-conformance.mjs",
45
+ "test:fast": "node scripts/release/run-validation-tier.mjs typecheck documentation-changed fast",
46
+ "test:scope": "node scripts/release/run-validation-tier.mjs",
47
+ "test:full": "node scripts/release/run-validation-tier.mjs full-release",
48
+ "test:release": "node scripts/release/run-release-gates.mjs",
49
+ "test:terminal-host": "node scripts/development/run-terminal-host-probe.mjs",
50
+ "test:pi-engine-conformance": "vitest run test/integrations/pi/engine/conformance.test.ts test/integrations/pi/engine/runtime-integration.test.ts test/integrations/pi/engine/session-integration.test.ts",
51
+ "report:pi-engine-conformance": "npm run build --silent && node scripts/pi/run-pi-engine-conformance.mjs",
52
+ "report:rendering-stability": "tsx scripts/pi/report-rendering-stability.ts",
53
+ "report:input-responsiveness": "tsx scripts/pi/report-input-responsiveness.ts",
45
54
  "sync:pi-ui": "npm run update:pi-component-parity && npm run update:pi-event-frame-parity && npm run update:pi-settings-metadata",
46
- "update:pi-component-parity": "tsx scripts/update-pi-component-parity.ts",
47
- "update:pi-event-frame-parity": "tsx scripts/update-pi-event-frame-parity.ts",
48
- "proof:terminal-host": "node scripts/run-terminal-host.mjs",
49
- "start": "npm run build && node scripts/dev-launch.mjs",
50
- "start:pi": "npm run build && node scripts/dev-launch.mjs pi",
51
- "start:sandbox": "npm run build && node scripts/dev-launch.mjs sandbox",
52
- "prepack": "node scripts/prepack-gate.mjs",
55
+ "update:pi-component-parity": "tsx scripts/pi/update-pi-component-parity.ts",
56
+ "update:pi-event-frame-parity": "tsx scripts/pi/update-pi-event-frame-parity.ts",
57
+ "proof:terminal-host": "node scripts/development/run-terminal-host.mjs",
58
+ "start": "npm run build && node scripts/development/dev-launch.mjs",
59
+ "start:pi": "npm run build && node scripts/development/dev-launch.mjs pi",
60
+ "prepack": "node scripts/release/prepack-gate.mjs",
53
61
  "prepublishOnly": "npm run test:release",
54
62
  "prepare": "npm run build",
55
- "update:pi-settings-metadata": "node scripts/update-pi-settings-metadata.mjs"
63
+ "update:pi-settings-metadata": "node scripts/pi/update-pi-settings-metadata.mjs"
56
64
  },
57
65
  "dependencies": {
58
66
  "@earendil-works/pi-coding-agent": "0.84.2",
59
67
  "@earendil-works/pi-tui": "0.84.2",
68
+ "@silvia-odwyer/photon-node": "0.3.4",
69
+ "chalk": "5.6.2",
60
70
  "cross-spawn": "7.0.6",
61
71
  "grok-mermaid": "0.2.2",
62
- "semver": "7.8.5"
72
+ "semver": "7.8.5",
73
+ "undici": "8.9.0"
63
74
  },
64
75
  "devDependencies": {
76
+ "@fission-ai/openspec": "1.11.0",
77
+ "@lezer/python": "1.1.19",
65
78
  "@types/cross-spawn": "6.0.6",
66
79
  "@types/node": "24.2.1",
67
80
  "@types/semver": "7.8.0",
@@ -70,7 +83,8 @@
70
83
  "node-pty": "1.1.0",
71
84
  "tsx": "4.20.3",
72
85
  "typescript": "5.9.2",
73
- "vitest": "3.2.7"
86
+ "vitest": "3.2.7",
87
+ "yaml": "2.9.1"
74
88
  },
75
89
  "keywords": [
76
90
  "cli",
@@ -87,5 +101,8 @@
87
101
  },
88
102
  "publishConfig": {
89
103
  "access": "public"
104
+ },
105
+ "optionalDependencies": {
106
+ "@mariozechner/clipboard": "^0.3.9"
90
107
  }
91
108
  }
@@ -1,15 +0,0 @@
1
- /**
2
- * `pi` and `sandbox` exist to compare A1 against pinned Pi and to try resources
3
- * against an isolated profile. Both are development instruments rather than
4
- * product, so a stable release does not carry them: what a released `a1` exposes
5
- * is the product plus its maintenance and package commands.
6
- *
7
- * Which build this is comes from its own version. A prerelease version is a
8
- * `next`-channel build, which is where that work happens; a release version is
9
- * not. Nothing to configure, and no way for a released build to be talked into it.
10
- */
11
- export interface CliCapabilities {
12
- readonly developmentProfiles: boolean;
13
- }
14
- export declare function cliCapabilities(version: string): CliCapabilities;
15
- export declare function isPrereleaseVersion(version: string): boolean;
@@ -1,142 +0,0 @@
1
- import { interactiveLaunchIntent } from "../features/launch/index.js";
2
- import { PRODUCT_TEXT } from "../product-identity.js";
3
- export function cliUsage(capabilities) {
4
- return PRODUCT_TEXT.usage([
5
- "",
6
- ...(capabilities.developmentProfiles ? ["pi", "sandbox"] : []),
7
- "version",
8
- "update [self|<source>|--extensions|--models]",
9
- "update:next",
10
- "update:<commit>",
11
- "install <source>",
12
- "remove <source>",
13
- "list",
14
- ]);
15
- }
16
- const PROFILE_WORDS = new Set(["pi", "sandbox"]);
17
- export async function dispatchCli(arguments_, handlers, output, capabilities) {
18
- const command = parseCliCommand(arguments_, capabilities);
19
- if (command.kind === "error") {
20
- output.stderr(`${command.message}\n${cliUsage(capabilities)}\n`);
21
- return 2;
22
- }
23
- if (command.kind === "launch")
24
- return await handlers.launch(interactiveLaunchIntent(command.profileId));
25
- if (command.kind === "version")
26
- return await handlers.version();
27
- if (command.kind === "packages")
28
- return await handlers.packages(command.request);
29
- return await handlers.update(command.channel, command.target);
30
- }
31
- export function parseCliCommand(arguments_, capabilities) {
32
- if (arguments_.length === 0)
33
- return { kind: "launch", profileId: "a1" };
34
- const [command, ...rest] = arguments_;
35
- if (capabilities.developmentProfiles && (command === "pi" || command === "sandbox")) {
36
- return withoutArguments(rest, { kind: "launch", profileId: command });
37
- }
38
- if (command === "version")
39
- return withoutArguments(rest, { kind: "version" });
40
- if (command !== undefined && command.startsWith("update:"))
41
- return parseColonUpdate(command.slice("update:".length), rest);
42
- if (command === "update")
43
- return parseUpdate(rest);
44
- if (command === "install" || command === "remove" || command === "uninstall") {
45
- return parseSourceCommand(command === "install" ? "install" : "remove", rest);
46
- }
47
- if (command === "list")
48
- return withoutArguments(rest, { kind: "packages", request: { verb: "list", source: null } });
49
- if (command === "ui")
50
- return { kind: "error", message: `The ui subcommand was removed; run bare ${PRODUCT_TEXT.commandName} for the owned UI.` };
51
- if (command === "agent")
52
- return { kind: "error", message: `Bare ${PRODUCT_TEXT.commandName} is the ${PRODUCT_TEXT.displayName} agent experience; there is no agent subcommand.` };
53
- return { kind: "error", message: PRODUCT_TEXT.diagnostic(`received an unknown command: ${command ?? ""}`) };
54
- }
55
- /**
56
- * What follows the colon says which build to move to. `next` is the newest
57
- * preview; anything else names one outright, by the commit it was built from or by
58
- * its full version — a preview is published as `<version>-dev.<commit>`, so the
59
- * commit alone is enough to find it.
60
- */
61
- function parseColonUpdate(suffix, rest) {
62
- if (rest.length > 0)
63
- return { kind: "error", message: PRODUCT_TEXT.diagnostic("update takes what to move to after the colon, and nothing else.") };
64
- if (suffix === "next")
65
- return { kind: "update", channel: "next" };
66
- if (suffix.length === 0)
67
- return { kind: "error", message: PRODUCT_TEXT.diagnostic(`update: needs a preview after the colon, as in ${PRODUCT_TEXT.commandName} update:next.`) };
68
- if (!/^[0-9a-z][0-9a-z.+-]*$/i.test(suffix)) {
69
- return { kind: "error", message: PRODUCT_TEXT.diagnostic(`received an unusable preview: ${suffix}`) };
70
- }
71
- return { kind: "update", channel: "next", target: suffix };
72
- }
73
- /**
74
- * `update` carries both meanings pinned Pi gives it: itself by default, and the
75
- * profile's packages when a target says so. Pi is refused as a target because A1
76
- * certifies each release against one pinned Pi, so moving Pi underneath it would
77
- * invalidate what was certified.
78
- */
79
- function parseUpdate(rest) {
80
- if (rest.length === 0)
81
- return { kind: "update", channel: "stable" };
82
- if (rest.length > 1)
83
- return { kind: "error", message: PRODUCT_TEXT.diagnostic("update accepts one target.") };
84
- const [target] = rest;
85
- if (target === "self")
86
- return { kind: "update", channel: "stable" };
87
- if (target === "pi") {
88
- return {
89
- kind: "error",
90
- message: PRODUCT_TEXT.diagnostic(`pins the Pi version it was certified against; run ${PRODUCT_TEXT.commandName} update to move ${PRODUCT_TEXT.displayName} itself.`),
91
- };
92
- }
93
- // A release channel is spelled with the colon. Taking the bare word as a package
94
- // source would turn a near miss into a confident search for a package nobody has.
95
- if (target === "next" || target === "stable") {
96
- const form = target === "next" ? `${PRODUCT_TEXT.commandName} update:next` : `${PRODUCT_TEXT.commandName} update`;
97
- return { kind: "error", message: PRODUCT_TEXT.diagnostic(`selects a release channel with a colon; run ${form}.`) };
98
- }
99
- if (target === "--extensions")
100
- return { kind: "packages", request: { verb: "update", source: null } };
101
- if (target === "--models")
102
- return { kind: "packages", request: { verb: "refresh-models", source: null } };
103
- if (target === undefined || target.startsWith("-"))
104
- return unknownOption(target ?? "", "update");
105
- if (PROFILE_WORDS.has(target))
106
- return profileRejection("update");
107
- return { kind: "packages", request: { verb: "update", source: target } };
108
- }
109
- function parseSourceCommand(verb, rest) {
110
- const flag = rest.find(argument => argument.startsWith("-"));
111
- if (flag !== undefined)
112
- return unknownOption(flag, verb);
113
- if (rest.length === 0)
114
- return { kind: "error", message: PRODUCT_TEXT.diagnostic(`${verb} requires a package source.`) };
115
- if (rest.length > 1)
116
- return { kind: "error", message: PRODUCT_TEXT.diagnostic(`${verb} accepts one package source.`) };
117
- const [source] = rest;
118
- if (source === undefined)
119
- return { kind: "error", message: PRODUCT_TEXT.diagnostic(`${verb} requires a package source.`) };
120
- if (PROFILE_WORDS.has(source))
121
- return profileRejection(verb);
122
- return { kind: "packages", request: { verb, source } };
123
- }
124
- function withoutArguments(rest, command) {
125
- if (rest.length === 0)
126
- return command;
127
- const [argument] = rest;
128
- if (argument !== undefined && (PROFILE_WORDS.has(argument) || argument.startsWith("--profile")))
129
- return profileRejection("list");
130
- return { kind: "error", message: PRODUCT_TEXT.diagnostic("commands do not accept additional arguments.") };
131
- }
132
- function profileRejection(verb) {
133
- return {
134
- kind: "error",
135
- message: PRODUCT_TEXT.diagnostic(`manages packages in its own profile, so ${verb} takes no profile; Pi manages Pi's own profile.`),
136
- };
137
- }
138
- function unknownOption(option, verb) {
139
- if (option.startsWith("--profile"))
140
- return profileRejection(verb);
141
- return { kind: "error", message: PRODUCT_TEXT.diagnostic(`received an unknown option for ${verb}: ${option}`) };
142
- }
@@ -1,72 +0,0 @@
1
- import { spawn } from "node:child_process";
2
- import { readFile } from "node:fs/promises";
3
- import { resolve } from "node:path";
4
- import crossSpawn from "cross-spawn";
5
- import { valid as validSemver } from "semver";
6
- import { PRODUCT_TEXT } from "../product-identity.js";
7
- const defaultOutput = {
8
- stdout(message) { process.stdout.write(message); },
9
- stderr(message) { process.stderr.write(message); },
10
- };
11
- export async function runVersionStats(options) {
12
- const output = options.output ?? defaultOutput;
13
- const runner = options.runner ?? createVersionProcessRunner();
14
- let installed;
15
- try {
16
- const manifest = JSON.parse(await readFile(resolve(options.packageRoot, "package.json"), "utf8"));
17
- installed = parseVersion(manifest.version, "installed package");
18
- }
19
- catch (error) {
20
- output.stderr(`${PRODUCT_TEXT.diagnostic(`could not read its installed version: ${message(error)}`)}\n`);
21
- return 1;
22
- }
23
- const remote = await queryDistTags(runner);
24
- output.stdout(`Installed: ${installed}\nRelease: ${remote.release ?? "unavailable"}\nNext: ${remote.next ?? "unavailable"}\n`);
25
- if (remote.error)
26
- output.stderr(`${PRODUCT_TEXT.diagnostic(`could not resolve npm dist-tags: ${remote.error}`)}\n`);
27
- return 0;
28
- }
29
- async function queryDistTags(runner) {
30
- let result;
31
- try {
32
- result = await runner("npm", ["view", PRODUCT_TEXT.packageName, "dist-tags", "--json"]);
33
- }
34
- catch (error) {
35
- return unavailable(message(error));
36
- }
37
- if (result.code !== 0)
38
- return unavailable(`npm exited with status ${result.code ?? "unknown"}`);
39
- try {
40
- const metadata = JSON.parse(result.stdout);
41
- if (typeof metadata !== "object" || metadata === null || Array.isArray(metadata))
42
- throw new TypeError("npm returned a non-object dist-tags value");
43
- const tags = metadata;
44
- const release = parseVersion(tags.latest, "npm latest");
45
- const next = tags.next === undefined ? null : parseVersion(tags.next, "npm next");
46
- return { release, next, error: null };
47
- }
48
- catch (error) {
49
- return unavailable(message(error));
50
- }
51
- }
52
- function unavailable(error) {
53
- return { release: null, next: null, error };
54
- }
55
- function createVersionProcessRunner() {
56
- return async (command, arguments_) => await new Promise((resolvePromise, rejectPromise) => {
57
- const child = process.platform === "win32"
58
- ? crossSpawn(command, [...arguments_], { stdio: ["ignore", "pipe", "ignore"] })
59
- : spawn(command, [...arguments_], { stdio: ["ignore", "pipe", "ignore"] });
60
- const stdout = [];
61
- child.stdout?.on("data", chunk => stdout.push(Buffer.from(chunk)));
62
- child.once("error", rejectPromise);
63
- child.once("close", code => resolvePromise({ code, stdout: Buffer.concat(stdout).toString("utf8") }));
64
- });
65
- }
66
- function parseVersion(value, source) {
67
- const parsed = typeof value === "string" ? validSemver(value) : null;
68
- if (!parsed)
69
- throw new Error(`${source} did not provide a valid semantic version`);
70
- return parsed;
71
- }
72
- function message(error) { return error instanceof Error ? error.message : String(error); }