@timurproko/a1 0.1.8-dev.235df0e → 0.1.8-dev.259

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 (485) hide show
  1. package/README.md +107 -67
  2. package/bin/cli.js +28 -10
  3. package/bin/guardian.js +8 -3
  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 +47 -20
  11. package/bin/warmup.js +27 -0
  12. package/dist/cli/capabilities.d.ts +6 -0
  13. package/dist/{src/cli → cli}/capabilities.js +1 -1
  14. package/dist/{src/cli → cli}/dispatch.d.ts +15 -1
  15. package/dist/cli/dispatch.js +261 -0
  16. package/dist/cli/package-messages.d.ts +26 -0
  17. package/dist/cli/package-messages.js +71 -0
  18. package/dist/{src/cli → cli}/packages.d.ts +11 -2
  19. package/dist/{src/cli → cli}/packages.js +24 -27
  20. package/dist/{src/cli → cli}/version-stats.d.ts +6 -0
  21. package/dist/cli/version-stats.js +112 -0
  22. package/dist/composition/agent-engine-bridge.d.ts +3 -0
  23. package/dist/composition/agent-engine-bridge.js +108 -0
  24. package/dist/composition/index.d.ts +3 -0
  25. package/dist/composition/index.js +3 -0
  26. package/dist/composition/owned-ui.d.ts +31 -0
  27. package/dist/composition/owned-ui.js +66 -0
  28. package/dist/composition/process.d.ts +16 -0
  29. package/dist/composition/process.js +45 -0
  30. package/dist/composition/settings-route-host.d.ts +8 -0
  31. package/dist/composition/settings-route-host.js +75 -0
  32. package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/capability-ports.d.ts +2 -2
  33. package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/domain-validation.js +22 -4
  34. package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/domain.d.ts +17 -0
  35. package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/package-ports.d.ts +6 -0
  36. package/dist/{src/foundation/owned-ui-contracts → contracts/owned-ui}/model.d.ts +36 -0
  37. package/dist/{src/foundation/owned-ui-contracts → contracts/owned-ui}/validation.js +25 -0
  38. package/dist/{src/features → features}/launch/development-launch.js +11 -3
  39. package/dist/{src/features → features}/launch/index.d.ts +0 -1
  40. package/dist/{src/features → features}/launch/index.js +0 -1
  41. package/dist/features/launch/intent.d.ts +10 -0
  42. package/dist/features/launch/intent.js +8 -0
  43. package/dist/{src/features → features}/launch/prepare-launch.d.ts +0 -2
  44. package/dist/{src/features → features}/launch/prepare-launch.js +2 -9
  45. package/dist/{src/features → features}/launch/profile-paths.d.ts +1 -2
  46. package/dist/{src/features → features}/launch/profile-paths.js +2 -8
  47. package/dist/{src/features → features}/launch/runtime-selection.d.ts +2 -5
  48. package/dist/{src/features → features}/owned-ui/customization.d.ts +3 -1
  49. package/dist/{src/features → features}/owned-ui/customization.js +3 -1
  50. package/dist/{src/features → features}/owned-ui/diagnostics.d.ts +2 -1
  51. package/dist/{src/features → features}/owned-ui/diagnostics.js +1 -0
  52. package/dist/{src/features → features}/owned-ui/index.d.ts +2 -0
  53. package/dist/{src/features → features}/owned-ui/index.js +2 -0
  54. package/dist/features/owned-ui/project-trust-prompt.d.ts +25 -0
  55. package/dist/features/owned-ui/project-trust-prompt.js +149 -0
  56. package/dist/{src/features → features}/owned-ui/run.d.ts +2 -2
  57. package/dist/{src/features → features}/owned-ui/run.js +2 -0
  58. package/dist/features/owned-ui/session-fork-prompt.d.ts +8 -0
  59. package/dist/features/owned-ui/session-fork-prompt.js +34 -0
  60. package/dist/{src/features → features}/owned-ui/settings-app.d.ts +3 -3
  61. package/dist/{src/features → features}/owned-ui/settings-app.js +103 -54
  62. package/dist/{src/features → features}/workspace/capabilities.d.ts +1 -1
  63. package/dist/{src/features → features}/workspace/reducer.d.ts +2 -1
  64. package/dist/{src/features → features}/workspace/reducer.js +2 -1
  65. package/dist/{src/features → features}/workspace/router.d.ts +2 -1
  66. package/dist/{src/features → features}/workspace/router.js +1 -0
  67. package/dist/{src/features → features}/workspace/store.d.ts +2 -1
  68. package/dist/{src/features → features}/workspace/store.js +1 -0
  69. package/dist/{src/foundation → foundation}/launch-guardian/main.d.ts +2 -0
  70. package/dist/{src/foundation → foundation}/launch-guardian/main.js +18 -5
  71. package/dist/{src/foundation → foundation}/lifecycle/index.d.ts +2 -0
  72. package/dist/{src/foundation → foundation}/lifecycle/index.js +2 -0
  73. package/dist/{src/foundation → foundation}/lifecycle/model.d.ts +1 -1
  74. package/dist/{src/foundation → foundation}/lifecycle/model.js +1 -1
  75. package/dist/foundation/lifecycle/paths.d.ts +30 -0
  76. package/dist/{src/foundation → foundation}/lifecycle/paths.js +29 -1
  77. package/dist/foundation/lifecycle/session-selection.d.ts +9 -0
  78. package/dist/foundation/lifecycle/session-selection.js +39 -0
  79. package/dist/foundation/lifecycle/supervisor-startup.d.ts +30 -0
  80. package/dist/foundation/lifecycle/supervisor-startup.js +106 -0
  81. package/dist/{src/foundation → foundation}/native-host-protocol/codec.d.ts +2 -0
  82. package/dist/{src/foundation → foundation}/native-host-protocol/codec.js +2 -0
  83. package/dist/{src/foundation → foundation}/native-host-protocol/messages.d.ts +1 -1
  84. package/dist/{src/foundation → foundation}/native-host-protocol/messages.js +1 -1
  85. package/dist/foundation/process-containment/darwin-process-inspector.d.ts +5 -0
  86. package/dist/foundation/process-containment/darwin-process-inspector.js +7 -0
  87. package/dist/{src/foundation → foundation}/process-containment/index.d.ts +1 -0
  88. package/dist/{src/foundation → foundation}/process-containment/index.js +1 -0
  89. package/dist/{src/foundation → foundation}/process-containment/linux-process-inspector.d.ts +1 -0
  90. package/dist/{src/foundation → foundation}/process-containment/linux-process-inspector.js +1 -0
  91. package/dist/{src/foundation → foundation}/process-containment/native-guardian-containment.d.ts +1 -0
  92. package/dist/{src/foundation → foundation}/process-containment/native-guardian-containment.js +1 -0
  93. package/dist/{src/foundation → foundation}/process-containment/windows-process-inspector.d.ts +3 -1
  94. package/dist/{src/foundation → foundation}/process-containment/windows-process-inspector.js +5 -2
  95. package/dist/{src/foundation → foundation}/protocol/client.d.ts +1 -0
  96. package/dist/{src/foundation → foundation}/protocol/client.js +1 -0
  97. package/dist/{src/foundation → foundation}/protocol/messages.d.ts +1 -0
  98. package/dist/{src/foundation → foundation}/protocol/messages.js +1 -0
  99. package/dist/{src/foundation → foundation}/release/bootstrap.d.ts +23 -6
  100. package/dist/{src/foundation → foundation}/release/bootstrap.js +120 -34
  101. package/dist/foundation/release/cohort-state.d.ts +156 -0
  102. package/dist/foundation/release/cohort-state.js +471 -0
  103. package/dist/foundation/release/dependency-layer.d.ts +78 -0
  104. package/dist/foundation/release/dependency-layer.js +488 -0
  105. package/dist/foundation/release/endpoints.d.ts +20 -0
  106. package/dist/foundation/release/endpoints.js +50 -0
  107. package/dist/foundation/release/immutable-platform.d.ts +6 -0
  108. package/dist/foundation/release/immutable-platform.js +13 -0
  109. package/dist/{src/foundation → foundation}/release/index.d.ts +4 -0
  110. package/dist/{src/foundation → foundation}/release/index.js +4 -0
  111. package/dist/foundation/release/release-gc.d.ts +71 -0
  112. package/dist/foundation/release/release-gc.js +734 -0
  113. package/dist/{src/foundation → foundation}/release/release-store.d.ts +4 -2
  114. package/dist/{src/foundation → foundation}/release/release-store.js +64 -12
  115. package/dist/{src/foundation → foundation}/release/release.d.ts +4 -1
  116. package/dist/{src/foundation → foundation}/release/release.js +10 -3
  117. package/dist/foundation/release/restart-certification.d.ts +67 -0
  118. package/dist/foundation/release/restart-certification.js +211 -0
  119. package/dist/{src/foundation → foundation}/release/update-transaction.d.ts +1 -0
  120. package/dist/{src/foundation → foundation}/release/update-transaction.js +1 -0
  121. package/dist/{src/foundation → foundation}/release/update.d.ts +19 -3
  122. package/dist/{src/foundation → foundation}/release/update.js +116 -56
  123. package/dist/foundation/release/warmup.d.ts +3 -0
  124. package/dist/foundation/release/warmup.js +35 -0
  125. package/dist/foundation/startup/index.d.ts +1 -0
  126. package/dist/foundation/startup/index.js +1 -0
  127. package/dist/foundation/startup/startup-runtime.d.ts +36 -0
  128. package/dist/foundation/startup/startup-runtime.js +140 -0
  129. package/dist/{src/foundation → foundation}/storage/control-store.d.ts +2 -1
  130. package/dist/{src/foundation → foundation}/storage/control-store.js +39 -4
  131. package/dist/{src/foundation → foundation}/structured-agent-runtime/backpressure.d.ts +2 -1
  132. package/dist/{src/foundation → foundation}/structured-agent-runtime/backpressure.js +2 -1
  133. package/dist/{src/foundation → foundation}/structured-agent-runtime/commands.d.ts +2 -1
  134. package/dist/{src/foundation → foundation}/structured-agent-runtime/commands.js +2 -1
  135. package/dist/{src/foundation → foundation}/structured-agent-runtime/handshake.d.ts +1 -1
  136. package/dist/{src/foundation → foundation}/structured-agent-runtime/handshake.js +1 -1
  137. package/dist/{src/foundation → foundation}/structured-agent-runtime/reconnection.d.ts +2 -1
  138. package/dist/{src/foundation → foundation}/structured-agent-runtime/reconnection.js +2 -1
  139. package/dist/{src/foundation → foundation}/structured-agent-runtime/state.d.ts +2 -1
  140. package/dist/{src/foundation → foundation}/structured-agent-runtime/state.js +2 -1
  141. package/dist/foundation/supervision/index.d.ts +3 -0
  142. package/dist/foundation/supervision/index.js +3 -0
  143. package/dist/foundation/supervision/main.d.ts +1 -0
  144. package/dist/foundation/supervision/main.js +77 -0
  145. package/dist/foundation/supervision/paths.d.ts +1 -0
  146. package/dist/foundation/supervision/paths.js +1 -0
  147. package/dist/{src/foundation → foundation}/supervision/server.d.ts +19 -1
  148. package/dist/{src/foundation → foundation}/supervision/server.js +65 -3
  149. package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/components.d.ts +1 -1
  150. package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/conformance.d.ts +1 -0
  151. package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/conformance.js +3 -2
  152. package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/index.d.ts +1 -1
  153. package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/index.js +1 -1
  154. package/dist/integrations/pi/components/owned-editor-ux.d.ts +55 -0
  155. package/dist/integrations/pi/components/owned-editor-ux.js +778 -0
  156. package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/shell-components.d.ts +1 -0
  157. package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/shell-components.js +1 -0
  158. package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/shell-editor-autocomplete.js +54 -6
  159. package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/shell-extension-ui.d.ts +1 -1
  160. package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/shell-footer-status.d.ts +3 -3
  161. package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/shell-footer-status.js +49 -18
  162. package/dist/integrations/pi/components/shell-presenters-info.d.ts +36 -0
  163. package/dist/integrations/pi/components/shell-presenters-info.js +78 -0
  164. package/dist/integrations/pi/components/shell-presenters-transcript.d.ts +25 -0
  165. package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/shell-presenters-transcript.js +92 -131
  166. package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/shell-selectors-dialogs.d.ts +5 -2
  167. package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/shell-selectors-dialogs.js +2 -1
  168. package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/shell-shared-facade.d.ts +57 -8
  169. package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/shell-shared-facade.js +4 -2
  170. package/dist/integrations/pi/components/submitted-prompt-adapter.d.ts +13 -0
  171. package/dist/integrations/pi/components/submitted-prompt-adapter.js +27 -0
  172. package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/adjacent/core/keybindings.d.ts +10 -2
  173. package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/adjacent/core/keybindings.js +36 -3
  174. package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/session-footer.d.ts +1 -1
  175. package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/adapter.d.ts +28 -4
  176. package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/adapter.js +714 -127
  177. package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/conformance.d.ts +2 -0
  178. package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/conformance.js +4 -2
  179. package/dist/integrations/pi/engine/http-dispatcher.d.ts +4 -0
  180. package/dist/integrations/pi/engine/http-dispatcher.js +25 -0
  181. package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/index.d.ts +4 -0
  182. package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/index.js +4 -0
  183. package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/model-auth-integration.d.ts +2 -1
  184. package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/model-auth-integration.js +1 -0
  185. package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/package-integration.d.ts +1 -1
  186. package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/package-integration.js +32 -26
  187. package/dist/integrations/pi/engine/project-trust-preflight.d.ts +22 -0
  188. package/dist/integrations/pi/engine/project-trust-preflight.js +50 -0
  189. package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/resource-extension-integration.d.ts +2 -1
  190. package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/resource-extension-integration.js +1 -0
  191. package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/runtime-integration.d.ts +19 -1
  192. package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/runtime-integration.js +47 -5
  193. package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/session-integration.d.ts +4 -2
  194. package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/session-integration.js +19 -4
  195. package/dist/integrations/pi/engine/session-selection.d.ts +28 -0
  196. package/dist/integrations/pi/engine/session-selection.js +90 -0
  197. package/dist/integrations/pi/engine/settings-effects.d.ts +66 -0
  198. package/dist/integrations/pi/engine/settings-effects.js +249 -0
  199. package/dist/integrations/pi/engine/settings-integration.d.ts +43 -0
  200. package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/settings-integration.js +102 -108
  201. package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/workflow-controllers.d.ts +3 -2
  202. package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/workflow-controllers.js +1 -0
  203. package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/workflows.d.ts +18 -1
  204. package/dist/integrations/pi/session-ui/clipboard-image.d.ts +11 -0
  205. package/dist/integrations/pi/session-ui/clipboard-image.js +29 -0
  206. package/dist/{src/foundation/pi-owned-ui-integration → integrations/pi/session-ui}/index.d.ts +1 -0
  207. package/dist/{src/foundation/pi-owned-ui-integration → integrations/pi/session-ui}/index.js +1 -0
  208. package/dist/integrations/pi/session-ui/prompt-chips.d.ts +23 -0
  209. package/dist/integrations/pi/session-ui/prompt-chips.js +246 -0
  210. package/dist/integrations/pi/session-ui/route-host.d.ts +5 -0
  211. package/dist/integrations/pi/session-ui/session-shell-root.d.ts +141 -0
  212. package/dist/integrations/pi/session-ui/session-shell-root.js +1158 -0
  213. package/dist/integrations/pi/session-ui/session-shell.d.ts +55 -0
  214. package/dist/{src/foundation/pi-owned-ui-integration → integrations/pi/session-ui}/session-shell.js +479 -719
  215. package/dist/integrations/pi/session-ui/session-viewport-controller.d.ts +45 -0
  216. package/dist/integrations/pi/session-ui/session-viewport-controller.js +463 -0
  217. package/dist/integrations/pi/session-ui/stream-presentation-coalescer.d.ts +29 -0
  218. package/dist/integrations/pi/session-ui/stream-presentation-coalescer.js +79 -0
  219. package/dist/integrations/pi/session-ui/system-clipboard.d.ts +20 -0
  220. package/dist/integrations/pi/session-ui/system-clipboard.js +130 -0
  221. package/dist/{src/foundation/pi-tui-runtime-adapter → integrations/pi/tui-runtime}/adapter.d.ts +8 -1
  222. package/dist/{src/foundation/pi-tui-runtime-adapter → integrations/pi/tui-runtime}/adapter.js +216 -9
  223. package/dist/{src/foundation/pi-tui-runtime-adapter → integrations/pi/tui-runtime}/contracts.d.ts +29 -6
  224. package/dist/integrations/pi/tui-runtime/damage-aware-terminal.d.ts +74 -0
  225. package/dist/integrations/pi/tui-runtime/damage-aware-terminal.js +380 -0
  226. package/dist/{src/foundation/pi-tui-runtime-adapter → integrations/pi/tui-runtime}/index.d.ts +2 -0
  227. package/dist/{src/foundation/pi-tui-runtime-adapter → integrations/pi/tui-runtime}/index.js +2 -0
  228. package/dist/integrations/pi/tui-runtime/input-presentation-coordinator.d.ts +39 -0
  229. package/dist/integrations/pi/tui-runtime/input-presentation-coordinator.js +139 -0
  230. package/dist/{src/foundation/pi-tui-runtime-adapter → integrations/pi/tui-runtime}/presentation-adapter.d.ts +1 -1
  231. package/dist/native/darwin-arm64/manifest.json +4 -4
  232. package/dist/native/darwin-arm64/process-guardian +0 -0
  233. package/dist/native/linux-x64/manifest.json +3 -3
  234. package/dist/native/linux-x64/process-guardian +0 -0
  235. package/dist/native/win32-x64/manifest.json +3 -3
  236. package/dist/native/win32-x64/process-guardian.exe +0 -0
  237. package/dist/{src/product-identity.d.ts → product-identity.d.ts} +3 -3
  238. package/dist/{src/product-identity.js → product-identity.js} +7 -5
  239. package/dist/{src/product-identity.json → product-identity.json} +11 -6
  240. package/dist/runtime-payload-inventory.json +122328 -0
  241. package/dist/{src/foundation/ui-apps → ui/apps}/contracts.d.ts +23 -1
  242. package/dist/{src/foundation/ui-apps → ui/apps}/host.d.ts +1 -1
  243. package/dist/{src/foundation/ui-apps → ui/apps}/host.js +14 -10
  244. package/dist/{src/foundation/ui-apps → ui/apps}/registry.d.ts +1 -0
  245. package/dist/{src/foundation/ui-apps → ui/apps}/registry.js +1 -0
  246. package/dist/{src/foundation/ui-components → ui/components}/dialog-panel.js +5 -3
  247. package/dist/{src/foundation/ui-components → ui/components}/frame.d.ts +1 -0
  248. package/dist/{src/foundation/ui-components → ui/components}/frame.js +1 -0
  249. package/dist/{src/foundation/ui-components → ui/components}/index.d.ts +5 -0
  250. package/dist/{src/foundation/ui-components → ui/components}/index.js +5 -0
  251. package/dist/{src/foundation/ui-components → ui/components}/line-input.d.ts +1 -6
  252. package/dist/{src/foundation/ui-components → ui/components}/line-input.js +4 -9
  253. package/dist/{src/foundation/ui-components → ui/components}/list-view.d.ts +0 -6
  254. package/dist/{src/foundation/ui-components → ui/components}/list-view.js +14 -7
  255. package/dist/{src/foundation/ui-components → ui/components}/mouse.d.ts +10 -0
  256. package/dist/{src/foundation/ui-components → ui/components}/mouse.js +23 -0
  257. package/dist/ui/components/progress-status.d.ts +2 -0
  258. package/dist/ui/components/progress-status.js +4 -0
  259. package/dist/ui/components/prompt-row.d.ts +14 -0
  260. package/dist/ui/components/prompt-row.js +20 -0
  261. package/dist/{src/foundation/ui-components → ui/components}/scrollbar.d.ts +26 -0
  262. package/dist/{src/foundation/ui-components → ui/components}/scrollbar.js +35 -0
  263. package/dist/{src/foundation/ui-components → ui/components}/shortcuts.d.ts +1 -0
  264. package/dist/{src/foundation/ui-components → ui/components}/shortcuts.js +1 -0
  265. package/dist/ui/components/spans.d.ts +25 -0
  266. package/dist/ui/components/spans.js +257 -0
  267. package/dist/ui/components/submitted-prompt.d.ts +23 -0
  268. package/dist/ui/components/submitted-prompt.js +50 -0
  269. package/dist/{src/foundation/ui-components → ui/components}/surface.d.ts +0 -5
  270. package/dist/{src/foundation/ui-components → ui/components}/surface.js +1 -5
  271. package/dist/ui/components/text-selection.d.ts +62 -0
  272. package/dist/ui/components/text-selection.js +208 -0
  273. package/dist/{src/foundation/ui-components → ui/components}/text.d.ts +14 -0
  274. package/dist/{src/foundation/ui-components → ui/components}/text.js +66 -4
  275. package/dist/ui/components/transcript-viewport.d.ts +152 -0
  276. package/dist/ui/components/transcript-viewport.js +631 -0
  277. package/dist/ui/components/visible-hyperlinks.d.ts +19 -0
  278. package/dist/ui/components/visible-hyperlinks.js +64 -0
  279. package/dist/{src/foundation/owned-ui-settings → ui/settings}/declarations.d.ts +8 -1
  280. package/dist/{src/foundation/owned-ui-settings → ui/settings}/declarations.js +33 -5
  281. package/dist/{src/foundation/owned-ui-settings → ui/settings}/migrations.d.ts +1 -1
  282. package/dist/{src/foundation/owned-ui-settings → ui/settings}/migrations.js +21 -2
  283. package/dist/{src/foundation/owned-ui-settings → ui/settings}/sections.d.ts +6 -19
  284. package/dist/{src/foundation/owned-ui-settings → ui/settings}/sections.js +32 -23
  285. package/dist/{src/foundation/owned-ui-settings → ui/settings}/session.d.ts +9 -17
  286. package/dist/{src/foundation/owned-ui-settings → ui/settings}/session.js +65 -55
  287. package/dist/{src/foundation/owned-ui-settings → ui/settings}/store.d.ts +1 -0
  288. package/dist/{src/foundation/owned-ui-settings → ui/settings}/store.js +2 -1
  289. package/docs/architecture/boundaries.md +9 -9
  290. package/docs/architecture/code-documentation.md +77 -0
  291. package/docs/architecture/process-guardian-provenance.md +3 -1
  292. package/docs/architecture/project-structure.md +67 -30
  293. package/docs/architecture/resource-and-data-policy.md +1 -1
  294. package/docs/architecture/toolchain.md +10 -10
  295. package/docs/architecture/ui-reference-provenance.md +36 -5
  296. package/docs/ci-release-runbook.md +186 -79
  297. package/docs/features/launch-profiles.md +24 -17
  298. package/docs/manual-ghost-link-baseline.md +89 -0
  299. package/docs/manual-launch-instance-acceptance.md +12 -35
  300. package/docs/manual-owned-ui-checkpoint.md +78 -0
  301. package/docs/manual-pi-boundary-candidate.md +4 -5
  302. package/docs/manual-terminal-colour-check.md +4 -3
  303. package/docs/repository-governance-live-acceptance.md +77 -0
  304. package/package.json +37 -27
  305. package/dist/src/cli/capabilities.d.ts +0 -15
  306. package/dist/src/cli/dispatch.js +0 -177
  307. package/dist/src/cli/version-stats.js +0 -72
  308. package/dist/src/composition/index.d.ts +0 -48
  309. package/dist/src/composition/index.js +0 -258
  310. package/dist/src/features/launch/intent.d.ts +0 -7
  311. package/dist/src/features/launch/intent.js +0 -4
  312. package/dist/src/features/launch/profiles.d.ts +0 -12
  313. package/dist/src/features/launch/profiles.js +0 -26
  314. package/dist/src/foundation/lifecycle/paths.d.ts +0 -10
  315. package/dist/src/foundation/pi-component-adapter/shell-presenters-transcript.d.ts +0 -57
  316. package/dist/src/foundation/pi-engine-adapter/settings-integration.d.ts +0 -55
  317. package/dist/src/foundation/pi-owned-ui-integration/route-host.d.ts +0 -29
  318. package/dist/src/foundation/pi-owned-ui-integration/session-shell.d.ts +0 -106
  319. package/dist/src/foundation/release/cohort-state.d.ts +0 -70
  320. package/dist/src/foundation/release/cohort-state.js +0 -202
  321. package/dist/src/foundation/release/release-gc.d.ts +0 -5
  322. package/dist/src/foundation/release/release-gc.js +0 -16
  323. package/dist/src/foundation/supervision/index.d.ts +0 -3
  324. package/dist/src/foundation/supervision/index.js +0 -3
  325. package/dist/src/foundation/supervision/main.d.ts +0 -1
  326. package/dist/src/foundation/supervision/main.js +0 -41
  327. package/dist/src/foundation/supervision/paths.d.ts +0 -1
  328. package/dist/src/foundation/supervision/paths.js +0 -1
  329. package/dist/src/foundation/ui-components/spans.d.ts +0 -7
  330. package/dist/src/foundation/ui-components/spans.js +0 -59
  331. package/docs/manual-transparent-checkpoint.md +0 -53
  332. /package/dist/{src/cli → cli}/index.d.ts +0 -0
  333. /package/dist/{src/cli → cli}/index.js +0 -0
  334. /package/dist/{src/cli → cli}/version.d.ts +0 -0
  335. /package/dist/{src/cli → cli}/version.js +0 -0
  336. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/capability-ports.js +0 -0
  337. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/domain-validation.d.ts +0 -0
  338. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/domain.js +0 -0
  339. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/index.d.ts +0 -0
  340. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/index.js +0 -0
  341. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/model.d.ts +0 -0
  342. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/model.js +0 -0
  343. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/package-ports.js +0 -0
  344. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/ports.d.ts +0 -0
  345. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/ports.js +0 -0
  346. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/serialization.d.ts +0 -0
  347. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/serialization.js +0 -0
  348. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/validation.d.ts +0 -0
  349. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/validation.js +0 -0
  350. /package/dist/{src/foundation/owned-ui-contracts → contracts/owned-ui}/extension-ui.d.ts +0 -0
  351. /package/dist/{src/foundation/owned-ui-contracts → contracts/owned-ui}/extension-ui.js +0 -0
  352. /package/dist/{src/foundation/owned-ui-contracts → contracts/owned-ui}/index.d.ts +0 -0
  353. /package/dist/{src/foundation/owned-ui-contracts → contracts/owned-ui}/index.js +0 -0
  354. /package/dist/{src/foundation/owned-ui-contracts → contracts/owned-ui}/model.js +0 -0
  355. /package/dist/{src/foundation/owned-ui-contracts → contracts/owned-ui}/validation.d.ts +0 -0
  356. /package/dist/{src/foundation/presentation-contracts → contracts/presentation}/index.d.ts +0 -0
  357. /package/dist/{src/foundation/presentation-contracts → contracts/presentation}/index.js +0 -0
  358. /package/dist/{src/foundation/workspace-contracts → contracts/workspace}/index.d.ts +0 -0
  359. /package/dist/{src/foundation/workspace-contracts → contracts/workspace}/index.js +0 -0
  360. /package/dist/{src/foundation/workspace-contracts → contracts/workspace}/model.d.ts +0 -0
  361. /package/dist/{src/foundation/workspace-contracts → contracts/workspace}/model.js +0 -0
  362. /package/dist/{src/foundation/workspace-contracts → contracts/workspace}/validation.d.ts +0 -0
  363. /package/dist/{src/foundation/workspace-contracts → contracts/workspace}/validation.js +0 -0
  364. /package/dist/{src/features → features}/launch/development-launch.d.ts +0 -0
  365. /package/dist/{src/features → features}/launch/initialize-profile.d.ts +0 -0
  366. /package/dist/{src/features → features}/launch/initialize-profile.js +0 -0
  367. /package/dist/{src/features → features}/launch/runtime-selection.js +0 -0
  368. /package/dist/{src/features → features}/workspace/capabilities.js +0 -0
  369. /package/dist/{src/features → features}/workspace/index.d.ts +0 -0
  370. /package/dist/{src/features → features}/workspace/index.js +0 -0
  371. /package/dist/{src/features → features}/workspace/presentation.d.ts +0 -0
  372. /package/dist/{src/features → features}/workspace/presentation.js +0 -0
  373. /package/dist/{src/features → features}/workspace/reconciliation.d.ts +0 -0
  374. /package/dist/{src/features → features}/workspace/reconciliation.js +0 -0
  375. /package/dist/{src/foundation → foundation}/launch-guardian/index.d.ts +0 -0
  376. /package/dist/{src/foundation → foundation}/launch-guardian/index.js +0 -0
  377. /package/dist/{src/foundation → foundation}/lifecycle/commands.d.ts +0 -0
  378. /package/dist/{src/foundation → foundation}/lifecycle/commands.js +0 -0
  379. /package/dist/{src/foundation → foundation}/lifecycle/launch-instance.d.ts +0 -0
  380. /package/dist/{src/foundation → foundation}/lifecycle/launch-instance.js +0 -0
  381. /package/dist/{src/foundation → foundation}/native-host-protocol/evidence.d.ts +0 -0
  382. /package/dist/{src/foundation → foundation}/native-host-protocol/evidence.js +0 -0
  383. /package/dist/{src/foundation → foundation}/native-host-protocol/index.d.ts +0 -0
  384. /package/dist/{src/foundation → foundation}/native-host-protocol/index.js +0 -0
  385. /package/dist/{src/foundation → foundation}/native-host-protocol/proof-gate.d.ts +0 -0
  386. /package/dist/{src/foundation → foundation}/native-host-protocol/proof-gate.js +0 -0
  387. /package/dist/{src/foundation → foundation}/process-containment/artifact.d.ts +0 -0
  388. /package/dist/{src/foundation → foundation}/process-containment/artifact.js +0 -0
  389. /package/dist/{src/foundation → foundation}/process-containment/contracts.d.ts +0 -0
  390. /package/dist/{src/foundation → foundation}/process-containment/contracts.js +0 -0
  391. /package/dist/{src/foundation → foundation}/protocol/index.d.ts +0 -0
  392. /package/dist/{src/foundation → foundation}/protocol/index.js +0 -0
  393. /package/dist/{src/foundation → foundation}/release/cohort-selection.d.ts +0 -0
  394. /package/dist/{src/foundation → foundation}/release/cohort-selection.js +0 -0
  395. /package/dist/{src/foundation → foundation}/release/concurrency.d.ts +0 -0
  396. /package/dist/{src/foundation → foundation}/release/concurrency.js +0 -0
  397. /package/dist/{src/foundation → foundation}/release/process-cleanup.d.ts +0 -0
  398. /package/dist/{src/foundation → foundation}/release/process-cleanup.js +0 -0
  399. /package/dist/{src/foundation → foundation}/release/stable-release.d.ts +0 -0
  400. /package/dist/{src/foundation → foundation}/release/stable-release.js +0 -0
  401. /package/dist/{src/foundation → foundation}/storage/index.d.ts +0 -0
  402. /package/dist/{src/foundation → foundation}/storage/index.js +0 -0
  403. /package/dist/{src/foundation → foundation}/structured-agent-runtime/index.d.ts +0 -0
  404. /package/dist/{src/foundation → foundation}/structured-agent-runtime/index.js +0 -0
  405. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/components.js +0 -0
  406. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/resources/builtin-themes.d.ts +0 -0
  407. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/resources/builtin-themes.js +0 -0
  408. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/shell-editor-autocomplete.d.ts +0 -0
  409. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/shell-extension-ui.js +0 -0
  410. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/theme.d.ts +0 -0
  411. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/theme.js +0 -0
  412. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/countdown-timer.d.ts +0 -0
  413. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/countdown-timer.js +0 -0
  414. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/custom-entry.d.ts +0 -0
  415. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/custom-entry.js +0 -0
  416. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/daxnuts.d.ts +0 -0
  417. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/daxnuts.js +0 -0
  418. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/earendil-announcement.d.ts +0 -0
  419. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/earendil-announcement.js +0 -0
  420. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/extension-editor.d.ts +0 -0
  421. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/extension-editor.js +0 -0
  422. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/first-time-setup.d.ts +0 -0
  423. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/first-time-setup.js +0 -0
  424. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/markdown-transform.d.ts +0 -0
  425. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/markdown-transform.js +0 -0
  426. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/mermaid.d.ts +0 -0
  427. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/mermaid.js +0 -0
  428. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/owned-editor.d.ts +0 -0
  429. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/owned-editor.js +0 -0
  430. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/scoped-models-selector.d.ts +0 -0
  431. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/scoped-models-selector.js +0 -0
  432. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/session-footer.js +0 -0
  433. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/session-selector-search.d.ts +0 -0
  434. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/session-selector-search.js +0 -0
  435. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/session-selector.d.ts +0 -0
  436. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/session-selector.js +0 -0
  437. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/skill-invocation-message.d.ts +0 -0
  438. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/skill-invocation-message.js +0 -0
  439. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/status-indicator.d.ts +0 -0
  440. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/status-indicator.js +0 -0
  441. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/tree-selector.d.ts +0 -0
  442. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/tree-selector.js +0 -0
  443. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/trust-selector.d.ts +0 -0
  444. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/trust-selector.js +0 -0
  445. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/external-editor.d.ts +0 -0
  446. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/external-editor.js +0 -0
  447. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/model-search.d.ts +0 -0
  448. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/model-search.js +0 -0
  449. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/theme/theme-controller.d.ts +0 -0
  450. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/theme/theme-controller.js +0 -0
  451. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/theme/theme.d.ts +0 -0
  452. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/theme/theme.js +0 -0
  453. /package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/pi-settings-metadata.json +0 -0
  454. /package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/public-main-entry.d.ts +0 -0
  455. /package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/public-main-entry.js +0 -0
  456. /package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/workflows.js +0 -0
  457. /package/dist/{src/foundation/pi-owned-ui-integration → integrations/pi/session-ui}/route-host.js +0 -0
  458. /package/dist/{src/foundation/pi-tui-runtime-adapter → integrations/pi/tui-runtime}/conformance.d.ts +0 -0
  459. /package/dist/{src/foundation/pi-tui-runtime-adapter → integrations/pi/tui-runtime}/conformance.js +0 -0
  460. /package/dist/{src/foundation/pi-tui-runtime-adapter → integrations/pi/tui-runtime}/contracts.js +0 -0
  461. /package/dist/{src/foundation/pi-tui-runtime-adapter → integrations/pi/tui-runtime}/presentation-adapter.js +0 -0
  462. /package/dist/{src/foundation/ui-apps → ui/apps}/contracts.js +0 -0
  463. /package/dist/{src/foundation/ui-apps → ui/apps}/index.d.ts +0 -0
  464. /package/dist/{src/foundation/ui-apps → ui/apps}/index.js +0 -0
  465. /package/dist/{src/foundation/ui-components → ui/components}/dialog-panel.d.ts +0 -0
  466. /package/dist/{src/foundation/ui-components → ui/components}/label.d.ts +0 -0
  467. /package/dist/{src/foundation/ui-components → ui/components}/label.js +0 -0
  468. /package/dist/{src/foundation/ui-components → ui/components}/list-block.d.ts +0 -0
  469. /package/dist/{src/foundation/ui-components → ui/components}/list-block.js +0 -0
  470. /package/dist/{src/foundation/ui-components → ui/components}/pane.d.ts +0 -0
  471. /package/dist/{src/foundation/ui-components → ui/components}/pane.js +0 -0
  472. /package/dist/{src/foundation/ui-components → ui/components}/revision.d.ts +0 -0
  473. /package/dist/{src/foundation/ui-components → ui/components}/revision.js +0 -0
  474. /package/dist/{src/foundation/ui-components → ui/components}/status-line.d.ts +0 -0
  475. /package/dist/{src/foundation/ui-components → ui/components}/status-line.js +0 -0
  476. /package/dist/{src/foundation/ui-components → ui/components}/stepper.d.ts +0 -0
  477. /package/dist/{src/foundation/ui-components → ui/components}/stepper.js +0 -0
  478. /package/dist/{src/foundation/ui-components → ui/components}/theme.d.ts +0 -0
  479. /package/dist/{src/foundation/ui-components → ui/components}/theme.js +0 -0
  480. /package/dist/{src/foundation/ui-components → ui/components}/value-menu.d.ts +0 -0
  481. /package/dist/{src/foundation/ui-components → ui/components}/value-menu.js +0 -0
  482. /package/dist/{src/foundation/owned-ui-settings → ui/settings}/index.d.ts +0 -0
  483. /package/dist/{src/foundation/owned-ui-settings → ui/settings}/index.js +0 -0
  484. /package/dist/{src/foundation/owned-ui-settings → ui/settings}/resolution.d.ts +0 -0
  485. /package/dist/{src/foundation/owned-ui-settings → ui/settings}/resolution.js +0 -0
@@ -0,0 +1,78 @@
1
+ # Manual owned-UI checkpoint
2
+
3
+ This checkpoint is user-controlled. Tests and coding agents must not launch or focus a terminal, inject desktop input, resize windows, close applications, or clean up workstation processes.
4
+
5
+ ## Prepare an exact candidate
6
+
7
+ For a checkout smoke test in Git Bash, build once and launch with `./scripts/dev` or `./scripts/dev pi`. Do not invoke `node scripts/development/dev-launch.mjs` or `node scripts/development/start-local.mjs` directly: that bypasses the color-preserving shell `exec` shape and can collapse the pinned 24-bit palette to Git Bash's 16 terminal colors. Run `node scripts/check-terminal-colour.mjs` first when color fidelity is in doubt; the first color block must differ from the terminal-palette cyan block.
8
+
9
+ From the candidate checkout, pack once and install that tarball into a disposable prefix:
10
+
11
+ ```powershell
12
+ npm ci
13
+ npm run build
14
+ npm pack --ignore-scripts --pack-destination .artifacts/manual-owned-ui
15
+ npm install --prefix .artifacts/manual-owned-ui/install --ignore-scripts .artifacts/manual-owned-ui/<exact-tarball>.tgz
16
+ ```
17
+
18
+ Use isolated A1 control state:
19
+
20
+ ```powershell
21
+ $manualRoot = (Resolve-Path ".artifacts/manual-owned-ui").Path
22
+ $env:A1_CONFIG_DIR = "$manualRoot\state\config"
23
+ $env:A1_DATA_DIR = "$manualRoot\state\data"
24
+ $env:A1_RUNTIME_DIR = "$manualRoot\state\runtime"
25
+ $env:A1_DATABASE_PATH = "$manualRoot\state\data\control.sqlite3"
26
+ ```
27
+
28
+ Run each installed launch form yourself:
29
+
30
+ ```powershell
31
+ & ".artifacts/manual-owned-ui/install/node_modules/.bin/a1.cmd"
32
+ & ".artifacts/manual-owned-ui/install/node_modules/.bin/a1.cmd" pi
33
+ ```
34
+
35
+ Both commands use the same A1-owned rendering and input pipeline. Bare `a1` enables A1-owned screens. `a1 pi` withholds those screens and reads the ordinary Pi profile. Confirm that files created through `/settings`, `/login`, sessions, and resource directories remain under the selected profile root.
36
+
37
+ Physical automation is not part of this repository baseline. Future certification tooling may run only on dedicated disposable workers or VMs with exclusive test desktops, never on this workstation.
38
+
39
+ ## Compare bare A1 with `a1 pi`
40
+
41
+ Use the same terminal, working directory, dimensions, environment, and equivalent profile resources. Bare A1 and the comparison profile intentionally use separate profile roots.
42
+
43
+ - [ ] Startup resources, logo, notices, spacing, editor, and footer match.
44
+ - [ ] Text, Unicode, emoji, styles, cursor, and layout match.
45
+ - [ ] Rapid typing has no visible delay or dropped or duplicated characters.
46
+ - [ ] Ctrl+C, Ctrl+P, arrows, paste, focus, dialogs, mouse, and wheel behave correctly.
47
+ - [ ] Selection, copy, clipboard, scrollback, and resize behave correctly.
48
+ - [ ] Normal and error exits return a usable parent prompt.
49
+ - [ ] Parent typing, cursor movement, Backspace, Delete, and submission work after exit.
50
+
51
+ ### Setting-controlled visual matrix
52
+
53
+ Use equivalent values in bare A1 and the Pi comparison profile. Exercise both a wide frame and a narrow frame that forces wrapping/clipping.
54
+
55
+ - [ ] `/settings`: selected cursor, label and value accent; unselected values muted; descriptions and hints dim; search uses `> ` with inverse cursor; scalar menus, numeric controls, warning-parts dialog, deferred notice, failed write, section spacing, clipping, and hidden-entry absence match their pinned semantic roles.
56
+ - [ ] Transcript: toggle images and image width, thinking level/visibility, Mermaid mode, output padding, cache notices, warnings, auto-compaction, queue modes, command autocomplete, provider timeout/retry/error, and changelog collapse. Existing and streaming blocks must re-render without focus, selection, scroll, or queued-work loss.
57
+ - [ ] Trust startup: from an undecided project, compare selected Trust/Do not trust rows, arrow navigation, Enter, Escape/Ctrl+C, clearing, cursor state, and restoration. No project extension/theme/prompt/skill may run before selection, and a fail-closed diagnostic must appear once on the restored parent rather than above a blank fullscreen frame.
58
+ - [ ] Terminal lifecycle: toggle hardware cursor, clear-on-shrink, and terminal progress; resize smaller/larger; open/close selectors; select and copy transcript text; verify no duplicate rows, stale OSC progress, leaked mouse mode, misplaced cursor, or broken parent input.
59
+ - [ ] Images: in Kitty or iTerm2 verify inline width and clipping; in Windows Terminal verify the textual fallback and absence of image protocol bytes without hiding `showImages`.
60
+ - [ ] Fullscreen exit `transcript`: verify the parent is restored before styled user, assistant Markdown, thinking, tool, notice, warning, error, and spacing rows are printed. No overlay, draft, animation, scrollbar, or inline-image payload may appear.
61
+ - [ ] Fullscreen exit `resume-hint`: verify only dim `To resume this session:` plus `a1 --session <compact-id>` is printed for the default directory. A custom directory must place quoted `--session-dir <dir>` before `--session`; the raw default `.jsonl` path must never print.
62
+
63
+ Record acceptance with:
64
+
65
+ ```text
66
+ A1 commit/tarball:
67
+ Pi package: @earendil-works/pi-coding-agent 0.84.2
68
+ OS/version:
69
+ Terminal/version:
70
+ Terminal dimensions (wide/narrow):
71
+ Image protocol result:
72
+ Settings values exercised:
73
+ Outcome and any declared substitutions:
74
+ ```
75
+
76
+ Report failures with bare-versus-comparison behavior, platform and terminal versions, exact command, dimensions, settings values, reproducibility, and optional manually captured evidence.
77
+
78
+ For recovery, use `a1 pi`; do not use the removed `a1 ui` command. Manual acceptance can authorize an exact uncertified development preview after non-desktop gates pass. It does not certify stable presentation parity or platform support.
@@ -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,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,6 +1,6 @@
1
1
  {
2
2
  "name": "@timurproko/a1",
3
- "version": "0.1.8-dev.235df0e",
3
+ "version": "0.1.8-dev.259",
4
4
  "description": "Standalone terminal workspace for supervised native and managed agents",
5
5
  "type": "module",
6
6
  "packageManager": "npm@11.13.0",
@@ -8,10 +8,7 @@
8
8
  "a1": "bin/cli.js"
9
9
  },
10
10
  "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
- ]
11
+ "#pi-tui": "./bin/pi-tui.js"
15
12
  },
16
13
  "files": [
17
14
  "bin",
@@ -24,42 +21,52 @@
24
21
  "node": ">=22.19.0 <25"
25
22
  },
26
23
  "scripts": {
24
+ "postinstall": "node bin/sync-pi-tui-proxy.js",
27
25
  "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",
26
+ "build": "npm run clean && tsc -p tsconfig.build.json && node scripts/development/build-process-guardian.mjs && node scripts/release/generate-runtime-payload-inventory.mjs",
27
+ "build:process-guardian": "node scripts/development/build-process-guardian.mjs",
30
28
  "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",
29
+ "check:architecture": "node scripts/governance/check-architecture.mjs && node scripts/governance/product-identifier-policy.mjs --check && 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",
30
+ "check:code-documentation": "node scripts/governance/check-code-documentation.mjs --mode full",
31
+ "check:code-documentation:changed": "node scripts/release/run-changed-documentation.mjs",
32
+ "select:validation-impact": "node scripts/release/select-validation-impact.mjs",
33
+ "check:customization-ready": "node scripts/governance/check-owned-ui-customization-prerequisites.mjs",
34
+ "check:deprecated": "node scripts/governance/check-deprecated-dependencies.mjs",
35
+ "check:docs-governance": "node scripts/governance/check-docs-governance.mjs",
36
+ "check:repository-governance": "node scripts/governance/check-github-repository-governance.mjs --check",
34
37
  "branches:prune": "node scripts/prune-merged-branches.mjs",
35
38
  "check": "npm run test:fast",
36
- "release": "node scripts/release.mjs",
39
+ "develop": "node scripts/development/develop.mjs",
40
+ "release": "node scripts/release/release.mjs",
37
41
  "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",
42
+ "test:fast": "node scripts/release/run-validation-tier.mjs typecheck documentation-changed fast",
43
+ "test:scope": "node scripts/release/run-validation-tier.mjs",
44
+ "test:full": "node scripts/release/run-validation-tier.mjs full-release",
45
+ "test:release": "node scripts/release/run-release-gates.mjs",
46
+ "test:terminal-host": "node scripts/development/run-terminal-host-probe.mjs",
47
+ "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",
48
+ "report:pi-engine-conformance": "npm run build --silent && node scripts/pi/run-pi-engine-conformance.mjs",
49
+ "report:rendering-stability": "tsx scripts/pi/report-rendering-stability.ts",
50
+ "report:input-responsiveness": "tsx scripts/pi/report-input-responsiveness.ts",
45
51
  "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",
52
+ "update:pi-component-parity": "tsx scripts/pi/update-pi-component-parity.ts",
53
+ "update:pi-event-frame-parity": "tsx scripts/pi/update-pi-event-frame-parity.ts",
54
+ "proof:terminal-host": "node scripts/development/run-terminal-host.mjs",
55
+ "start": "npm run build && node scripts/development/dev-launch.mjs",
56
+ "start:pi": "npm run build && node scripts/development/dev-launch.mjs pi",
57
+ "prepack": "node scripts/release/prepack-gate.mjs",
53
58
  "prepublishOnly": "npm run test:release",
54
59
  "prepare": "npm run build",
55
- "update:pi-settings-metadata": "node scripts/update-pi-settings-metadata.mjs"
60
+ "update:pi-settings-metadata": "node scripts/pi/update-pi-settings-metadata.mjs"
56
61
  },
57
62
  "dependencies": {
58
63
  "@earendil-works/pi-coding-agent": "0.84.2",
59
64
  "@earendil-works/pi-tui": "0.84.2",
65
+ "chalk": "5.6.2",
60
66
  "cross-spawn": "7.0.6",
61
67
  "grok-mermaid": "0.2.2",
62
- "semver": "7.8.5"
68
+ "semver": "7.8.5",
69
+ "undici": "8.9.0"
63
70
  },
64
71
  "devDependencies": {
65
72
  "@types/cross-spawn": "6.0.6",
@@ -87,5 +94,8 @@
87
94
  },
88
95
  "publishConfig": {
89
96
  "access": "public"
97
+ },
98
+ "optionalDependencies": {
99
+ "@mariozechner/clipboard": "^0.3.9"
90
100
  }
91
101
  }
@@ -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,177 +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|--models]",
9
- "update:next",
10
- "update:<commit>",
11
- "pi install <source>",
12
- "pi remove <source>",
13
- "pi list",
14
- "pi update [--extensions|<source>]",
15
- ]);
16
- }
17
- const PROFILE_WORDS = new Set(["pi", "sandbox"]);
18
- export async function dispatchCli(arguments_, handlers, output, capabilities) {
19
- const command = parseCliCommand(arguments_, capabilities);
20
- if (command.kind === "error") {
21
- output.stderr(`${command.message}\n${cliUsage(capabilities)}\n`);
22
- return 2;
23
- }
24
- if (command.kind === "launch")
25
- return await handlers.launch(interactiveLaunchIntent(command.profileId));
26
- if (command.kind === "version")
27
- return await handlers.version();
28
- if (command.kind === "packages")
29
- return await handlers.packages(command.request);
30
- return await handlers.update(command.channel, command.target);
31
- }
32
- export function parseCliCommand(arguments_, capabilities) {
33
- if (arguments_.length === 0)
34
- return { kind: "launch", profileId: "a1" };
35
- const [command, ...rest] = arguments_;
36
- if (command === "pi") {
37
- if (rest.length > 0)
38
- return parsePiPackageCommand(rest);
39
- if (capabilities.developmentProfiles)
40
- return { kind: "launch", profileId: "pi" };
41
- }
42
- if (capabilities.developmentProfiles && command === "sandbox") {
43
- return withoutArguments(rest, { kind: "launch", profileId: command });
44
- }
45
- if (command === "version")
46
- return withoutArguments(rest, { kind: "version" });
47
- if (command !== undefined && command.startsWith("update:"))
48
- return parseColonUpdate(command.slice("update:".length), rest);
49
- if (command === "update")
50
- return parseUpdate(rest);
51
- if (command === "install" || command === "remove" || command === "uninstall" || command === "list") {
52
- return packageNamespaceRejection(command, rest.join(" ") || undefined);
53
- }
54
- if (command === "ui")
55
- return { kind: "error", message: `The ui subcommand was removed; run bare ${PRODUCT_TEXT.commandName} for the owned UI.` };
56
- if (command === "agent")
57
- return { kind: "error", message: `Bare ${PRODUCT_TEXT.commandName} is the ${PRODUCT_TEXT.displayName} agent experience; there is no agent subcommand.` };
58
- return { kind: "error", message: PRODUCT_TEXT.diagnostic(`received an unknown command: ${command ?? ""}`) };
59
- }
60
- /**
61
- * What follows the colon says which build to move to. `next` is the newest
62
- * preview; anything else names one outright, by the commit it was built from or by
63
- * its full version — a preview is published as `<version>-dev.<commit>`, so the
64
- * commit alone is enough to find it.
65
- */
66
- function parseColonUpdate(suffix, rest) {
67
- if (rest.length > 0)
68
- return { kind: "error", message: PRODUCT_TEXT.diagnostic("update takes what to move to after the colon, and nothing else.") };
69
- if (suffix === "next")
70
- return { kind: "update", channel: "next" };
71
- if (suffix.length === 0)
72
- return { kind: "error", message: PRODUCT_TEXT.diagnostic(`update: needs a preview after the colon, as in ${PRODUCT_TEXT.commandName} update:next.`) };
73
- if (!/^[0-9a-z][0-9a-z.+-]*$/i.test(suffix)) {
74
- return { kind: "error", message: PRODUCT_TEXT.diagnostic(`received an unusable preview: ${suffix}`) };
75
- }
76
- return { kind: "update", channel: "next", target: suffix };
77
- }
78
- /**
79
- * Top-level `update` owns A1 itself and A1's model catalogs. Extension package
80
- * maintenance lives under the `pi` compatibility namespace, while updating the
81
- * pinned Pi runtime remains impossible.
82
- */
83
- function parseUpdate(rest) {
84
- if (rest.length === 0)
85
- return { kind: "update", channel: "stable" };
86
- if (rest.length > 1)
87
- return { kind: "error", message: PRODUCT_TEXT.diagnostic("update accepts one target.") };
88
- const [target] = rest;
89
- if (target === "self")
90
- return { kind: "update", channel: "stable" };
91
- if (target === "pi") {
92
- return {
93
- kind: "error",
94
- message: PRODUCT_TEXT.diagnostic(`pins the Pi version it was certified against; run ${PRODUCT_TEXT.commandName} update to move ${PRODUCT_TEXT.displayName} itself.`),
95
- };
96
- }
97
- if (target === "next" || target === "stable") {
98
- const form = target === "next" ? `${PRODUCT_TEXT.commandName} update:next` : `${PRODUCT_TEXT.commandName} update`;
99
- return { kind: "error", message: PRODUCT_TEXT.diagnostic(`selects a release channel with a colon; run ${form}.`) };
100
- }
101
- if (target === "--models")
102
- return { kind: "packages", request: { verb: "refresh-models", source: null } };
103
- if (target === "--extensions" || (target !== undefined && !target.startsWith("-"))) {
104
- return packageNamespaceRejection("update", target === "--extensions" ? "--extensions" : target);
105
- }
106
- return unknownOption(target ?? "", "update");
107
- }
108
- function parsePiPackageCommand(arguments_) {
109
- const [verb, ...rest] = arguments_;
110
- if (verb === "install" || verb === "remove" || verb === "uninstall") {
111
- return parseSourceCommand(verb === "install" ? "install" : "remove", rest);
112
- }
113
- if (verb === "list")
114
- return withoutArguments(rest, { kind: "packages", request: { verb: "list", source: null } });
115
- if (verb === "update")
116
- return parsePiPackageUpdate(rest);
117
- return { kind: "error", message: PRODUCT_TEXT.diagnostic(`received an unknown pi package command: ${verb ?? ""}`) };
118
- }
119
- function parsePiPackageUpdate(rest) {
120
- if (rest.length === 0) {
121
- return { kind: "error", message: PRODUCT_TEXT.diagnostic(`pi update needs --extensions or a package source.`) };
122
- }
123
- if (rest.length > 1)
124
- return { kind: "error", message: PRODUCT_TEXT.diagnostic("pi update accepts one target.") };
125
- const [target] = rest;
126
- if (target === "--extensions")
127
- return { kind: "packages", request: { verb: "update", source: null } };
128
- if (target === "--models") {
129
- return { kind: "error", message: PRODUCT_TEXT.diagnostic(`refreshes its model catalogs at the top level; run ${PRODUCT_TEXT.commandName} update --models.`) };
130
- }
131
- if (target === undefined || target.startsWith("-"))
132
- return unknownOption(target ?? "", "pi update");
133
- if (PROFILE_WORDS.has(target))
134
- return profileRejection("update");
135
- return { kind: "packages", request: { verb: "update", source: target } };
136
- }
137
- function parseSourceCommand(verb, rest) {
138
- const flag = rest.find(argument => argument.startsWith("-"));
139
- if (flag !== undefined)
140
- return unknownOption(flag, verb);
141
- if (rest.length === 0)
142
- return { kind: "error", message: PRODUCT_TEXT.diagnostic(`${verb} requires a package source.`) };
143
- if (rest.length > 1)
144
- return { kind: "error", message: PRODUCT_TEXT.diagnostic(`${verb} accepts one package source.`) };
145
- const [source] = rest;
146
- if (source === undefined)
147
- return { kind: "error", message: PRODUCT_TEXT.diagnostic(`${verb} requires a package source.`) };
148
- if (PROFILE_WORDS.has(source))
149
- return profileRejection(verb);
150
- return { kind: "packages", request: { verb, source } };
151
- }
152
- function withoutArguments(rest, command) {
153
- if (rest.length === 0)
154
- return command;
155
- const [argument] = rest;
156
- if (argument !== undefined && (PROFILE_WORDS.has(argument) || argument.startsWith("--profile")))
157
- return profileRejection("list");
158
- return { kind: "error", message: PRODUCT_TEXT.diagnostic("commands do not accept additional arguments.") };
159
- }
160
- function packageNamespaceRejection(verb, target) {
161
- const suffix = target === undefined ? "" : ` ${target}`;
162
- return {
163
- kind: "error",
164
- message: PRODUCT_TEXT.diagnostic(`manages extension packages under its pi namespace; run ${PRODUCT_TEXT.commandName} pi ${verb}${suffix}.`),
165
- };
166
- }
167
- function profileRejection(verb) {
168
- return {
169
- kind: "error",
170
- message: PRODUCT_TEXT.diagnostic(`manages packages in its own profile, so ${verb} takes no profile; Pi manages Pi's own profile.`),
171
- };
172
- }
173
- function unknownOption(option, verb) {
174
- if (option.startsWith("--profile"))
175
- return profileRejection(verb);
176
- return { kind: "error", message: PRODUCT_TEXT.diagnostic(`received an unknown option for ${verb}: ${option}`) };
177
- }
@@ -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); }
@@ -1,48 +0,0 @@
1
- import { type AgentEnginePort } from "../foundation/agent-engine-contracts/index.js";
2
- import { type PiEngineAdapter } from "../foundation/pi-engine-adapter/index.js";
3
- import { type OwnedUiApplicationPort, type PresentationComponentPort, type PresentationRuntimePort, type PresentationTerminalPort } from "../foundation/presentation-contracts/index.js";
4
- import { OwnedUiSettingsSession } from "../foundation/owned-ui-settings/index.js";
5
- import type { UiRouteHost } from "../foundation/pi-owned-ui-integration/index.js";
6
- export interface ProcessCompositionOptions {
7
- readonly cwd?: string;
8
- readonly sessionId?: string;
9
- readonly engine?: AgentEnginePort;
10
- readonly presentationFactory?: (root: PresentationComponentPort, terminal: PresentationTerminalPort) => PresentationRuntimePort;
11
- readonly createPiAdapter?: () => Promise<PiEngineAdapter>;
12
- }
13
- export interface OwnedUiCompositionOptions {
14
- readonly cwd?: string;
15
- readonly terminal?: PresentationTerminalPort;
16
- readonly createPiAdapter?: () => Promise<PiEngineAdapter>;
17
- /**
18
- * A1 profile whose settings this session reads and writes. Omitted keeps the
19
- * session settings-free, which is what the pinned comparison paths use.
20
- */
21
- readonly profileId?: string;
22
- /**
23
- * Whether A1's own surfaces are reachable. Withheld for the rendering parity
24
- * comparison, which measures this composition against pinned Pi and so must
25
- * present Pi's interface and nothing of A1's own. It is the same composition
26
- * either way: a parity run built beside the product would measure itself.
27
- */
28
- readonly ownedSurfaces?: "on" | "off";
29
- }
30
- export interface OwnedUiComposition {
31
- readonly application: OwnedUiApplicationPort;
32
- /** Present when a profile was supplied, so the caller can resolve settings before start. */
33
- readonly settings: OwnedUiSettingsSession | null;
34
- }
35
- export declare function composeOwnedUiApplication(options?: OwnedUiCompositionOptions): Promise<OwnedUiApplicationPort>;
36
- export declare function composeOwnedUi(options?: OwnedUiCompositionOptions): Promise<OwnedUiComposition>;
37
- export interface ProcessComposition {
38
- readonly engine: AgentEnginePort;
39
- createPresentation(root: PresentationComponentPort, terminal: PresentationTerminalPort): PresentationRuntimePort;
40
- dispose(): Promise<void>;
41
- }
42
- export declare function composeProcess(options?: ProcessCompositionOptions): Promise<ProcessComposition>;
43
- /**
44
- * Registers the A1-owned screens and adapts the app host to the shell's route
45
- * seam. The shell mounts whatever surface it is handed and forwards keys; it
46
- * never learns what an app is.
47
- */
48
- export declare function createOwnedRouteHost(settings: OwnedUiSettingsSession): UiRouteHost;