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

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 (642) 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/manual-code-streaming-cleanup.md +88 -0
  447. package/docs/manual-ghost-link-baseline.md +89 -0
  448. package/docs/manual-launch-instance-acceptance.md +12 -35
  449. package/docs/manual-owned-ui-checkpoint.md +78 -0
  450. package/docs/manual-pi-boundary-candidate.md +4 -5
  451. package/docs/manual-terminal-colour-check.md +4 -3
  452. package/docs/openspec-archive-automation.md +124 -0
  453. package/docs/repository-governance-live-acceptance.md +77 -0
  454. package/package.json +45 -28
  455. package/dist/src/cli/capabilities.d.ts +0 -15
  456. package/dist/src/cli/dispatch.js +0 -142
  457. package/dist/src/cli/version-stats.js +0 -72
  458. package/dist/src/composition/index.d.ts +0 -48
  459. package/dist/src/composition/index.js +0 -258
  460. package/dist/src/features/launch/intent.d.ts +0 -7
  461. package/dist/src/features/launch/intent.js +0 -4
  462. package/dist/src/features/launch/profiles.d.ts +0 -12
  463. package/dist/src/features/launch/profiles.js +0 -26
  464. package/dist/src/features/owned-ui/run.js +0 -15
  465. package/dist/src/foundation/lifecycle/paths.d.ts +0 -10
  466. package/dist/src/foundation/owned-ui-contracts/index.d.ts +0 -3
  467. package/dist/src/foundation/owned-ui-contracts/index.js +0 -3
  468. package/dist/src/foundation/owned-ui-settings/declarations.js +0 -39
  469. package/dist/src/foundation/owned-ui-settings/session.js +0 -145
  470. package/dist/src/foundation/pi-component-adapter/shell-editor-autocomplete.js +0 -162
  471. package/dist/src/foundation/pi-component-adapter/shell-presenters-transcript.d.ts +0 -57
  472. package/dist/src/foundation/pi-component-adapter/shell-shared-facade.d.ts +0 -116
  473. package/dist/src/foundation/pi-component-adapter/upstream/components/earendil-announcement.js +0 -19
  474. package/dist/src/foundation/pi-component-adapter/upstream/components/owned-editor.d.ts +0 -18
  475. package/dist/src/foundation/pi-component-adapter/upstream/components/owned-editor.js +0 -55
  476. package/dist/src/foundation/pi-engine-adapter/settings-integration.d.ts +0 -55
  477. package/dist/src/foundation/pi-owned-ui-integration/index.d.ts +0 -2
  478. package/dist/src/foundation/pi-owned-ui-integration/index.js +0 -2
  479. package/dist/src/foundation/pi-owned-ui-integration/route-host.d.ts +0 -29
  480. package/dist/src/foundation/pi-owned-ui-integration/session-shell.d.ts +0 -106
  481. package/dist/src/foundation/pi-owned-ui-integration/session-shell.js +0 -1518
  482. package/dist/src/foundation/pi-tui-runtime-adapter/index.d.ts +0 -4
  483. package/dist/src/foundation/pi-tui-runtime-adapter/index.js +0 -4
  484. package/dist/src/foundation/release/bootstrap.d.ts +0 -29
  485. package/dist/src/foundation/release/cohort-state.d.ts +0 -70
  486. package/dist/src/foundation/release/cohort-state.js +0 -202
  487. package/dist/src/foundation/release/release-gc.d.ts +0 -5
  488. package/dist/src/foundation/release/release-gc.js +0 -16
  489. package/dist/src/foundation/supervision/index.d.ts +0 -3
  490. package/dist/src/foundation/supervision/index.js +0 -3
  491. package/dist/src/foundation/supervision/main.d.ts +0 -1
  492. package/dist/src/foundation/supervision/main.js +0 -41
  493. package/dist/src/foundation/supervision/paths.d.ts +0 -1
  494. package/dist/src/foundation/supervision/paths.js +0 -1
  495. package/dist/src/foundation/supervision/server.d.ts +0 -22
  496. package/dist/src/foundation/ui-components/spans.d.ts +0 -7
  497. package/dist/src/foundation/ui-components/spans.js +0 -59
  498. package/docs/manual-transparent-checkpoint.md +0 -53
  499. /package/dist/{src/cli → cli}/index.d.ts +0 -0
  500. /package/dist/{src/cli → cli}/index.js +0 -0
  501. /package/dist/{src/cli → cli}/version.d.ts +0 -0
  502. /package/dist/{src/cli → cli}/version.js +0 -0
  503. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/capability-ports.js +0 -0
  504. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/domain-validation.d.ts +0 -0
  505. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/domain.js +0 -0
  506. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/index.d.ts +0 -0
  507. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/index.js +0 -0
  508. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/model.d.ts +0 -0
  509. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/model.js +0 -0
  510. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/package-ports.js +0 -0
  511. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/ports.d.ts +0 -0
  512. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/ports.js +0 -0
  513. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/serialization.d.ts +0 -0
  514. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/serialization.js +0 -0
  515. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/validation.d.ts +0 -0
  516. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/validation.js +0 -0
  517. /package/dist/{src/foundation/owned-ui-contracts → contracts/owned-ui}/extension-ui.d.ts +0 -0
  518. /package/dist/{src/foundation/owned-ui-contracts → contracts/owned-ui}/extension-ui.js +0 -0
  519. /package/dist/{src/foundation/owned-ui-contracts → contracts/owned-ui}/model.js +0 -0
  520. /package/dist/{src/foundation/presentation-contracts → contracts/presentation}/index.js +0 -0
  521. /package/dist/{src/foundation/workspace-contracts → contracts/workspace}/index.d.ts +0 -0
  522. /package/dist/{src/foundation/workspace-contracts → contracts/workspace}/index.js +0 -0
  523. /package/dist/{src/foundation/workspace-contracts → contracts/workspace}/model.d.ts +0 -0
  524. /package/dist/{src/foundation/workspace-contracts → contracts/workspace}/model.js +0 -0
  525. /package/dist/{src/foundation/workspace-contracts → contracts/workspace}/validation.d.ts +0 -0
  526. /package/dist/{src/foundation/workspace-contracts → contracts/workspace}/validation.js +0 -0
  527. /package/dist/{src/features → features}/launch/development-launch.d.ts +0 -0
  528. /package/dist/{src/features → features}/launch/initialize-profile.d.ts +0 -0
  529. /package/dist/{src/features → features}/launch/initialize-profile.js +0 -0
  530. /package/dist/{src/features → features}/launch/runtime-selection.js +0 -0
  531. /package/dist/{src/features → features}/workspace/capabilities.js +0 -0
  532. /package/dist/{src/features → features}/workspace/index.d.ts +0 -0
  533. /package/dist/{src/features → features}/workspace/index.js +0 -0
  534. /package/dist/{src/features → features}/workspace/presentation.d.ts +0 -0
  535. /package/dist/{src/features → features}/workspace/presentation.js +0 -0
  536. /package/dist/{src/features → features}/workspace/reconciliation.d.ts +0 -0
  537. /package/dist/{src/features → features}/workspace/reconciliation.js +0 -0
  538. /package/dist/{src/foundation → foundation}/launch-guardian/index.d.ts +0 -0
  539. /package/dist/{src/foundation → foundation}/launch-guardian/index.js +0 -0
  540. /package/dist/{src/foundation → foundation}/lifecycle/commands.d.ts +0 -0
  541. /package/dist/{src/foundation → foundation}/lifecycle/commands.js +0 -0
  542. /package/dist/{src/foundation → foundation}/lifecycle/launch-instance.d.ts +0 -0
  543. /package/dist/{src/foundation → foundation}/lifecycle/launch-instance.js +0 -0
  544. /package/dist/{src/foundation → foundation}/native-host-protocol/evidence.d.ts +0 -0
  545. /package/dist/{src/foundation → foundation}/native-host-protocol/evidence.js +0 -0
  546. /package/dist/{src/foundation → foundation}/native-host-protocol/index.d.ts +0 -0
  547. /package/dist/{src/foundation → foundation}/native-host-protocol/index.js +0 -0
  548. /package/dist/{src/foundation → foundation}/native-host-protocol/proof-gate.d.ts +0 -0
  549. /package/dist/{src/foundation → foundation}/native-host-protocol/proof-gate.js +0 -0
  550. /package/dist/{src/foundation → foundation}/process-containment/artifact.d.ts +0 -0
  551. /package/dist/{src/foundation → foundation}/process-containment/artifact.js +0 -0
  552. /package/dist/{src/foundation → foundation}/process-containment/contracts.d.ts +0 -0
  553. /package/dist/{src/foundation → foundation}/process-containment/contracts.js +0 -0
  554. /package/dist/{src/foundation → foundation}/protocol/index.d.ts +0 -0
  555. /package/dist/{src/foundation → foundation}/protocol/index.js +0 -0
  556. /package/dist/{src/foundation → foundation}/release/cohort-selection.d.ts +0 -0
  557. /package/dist/{src/foundation → foundation}/release/cohort-selection.js +0 -0
  558. /package/dist/{src/foundation → foundation}/release/concurrency.d.ts +0 -0
  559. /package/dist/{src/foundation → foundation}/release/concurrency.js +0 -0
  560. /package/dist/{src/foundation → foundation}/release/process-cleanup.d.ts +0 -0
  561. /package/dist/{src/foundation → foundation}/release/process-cleanup.js +0 -0
  562. /package/dist/{src/foundation → foundation}/release/stable-release.d.ts +0 -0
  563. /package/dist/{src/foundation → foundation}/release/stable-release.js +0 -0
  564. /package/dist/{src/foundation → foundation}/storage/index.d.ts +0 -0
  565. /package/dist/{src/foundation → foundation}/storage/index.js +0 -0
  566. /package/dist/{src/foundation → foundation}/structured-agent-runtime/index.d.ts +0 -0
  567. /package/dist/{src/foundation → foundation}/structured-agent-runtime/index.js +0 -0
  568. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/components.js +0 -0
  569. /package/dist/{src/foundation/pi-owned-ui-integration/route-host.js → integrations/pi/components/editor-interaction.js} +0 -0
  570. /package/dist/{src/foundation/pi-tui-runtime-adapter/contracts.js → integrations/pi/components/prompt-input-port.js} +0 -0
  571. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/resources/builtin-themes.d.ts +0 -0
  572. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/resources/builtin-themes.js +0 -0
  573. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/shell-editor-autocomplete.d.ts +0 -0
  574. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/shell-extension-ui.js +0 -0
  575. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/theme.d.ts +0 -0
  576. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/theme.js +0 -0
  577. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/countdown-timer.d.ts +0 -0
  578. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/countdown-timer.js +0 -0
  579. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/custom-entry.d.ts +0 -0
  580. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/custom-entry.js +0 -0
  581. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/daxnuts.d.ts +0 -0
  582. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/daxnuts.js +0 -0
  583. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/earendil-announcement.d.ts +0 -0
  584. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/extension-editor.d.ts +0 -0
  585. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/extension-editor.js +0 -0
  586. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/first-time-setup.d.ts +0 -0
  587. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/first-time-setup.js +0 -0
  588. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/markdown-transform.d.ts +0 -0
  589. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/markdown-transform.js +0 -0
  590. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/mermaid.d.ts +0 -0
  591. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/mermaid.js +0 -0
  592. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/session-selector-search.d.ts +0 -0
  593. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/session-selector-search.js +0 -0
  594. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/session-selector.d.ts +0 -0
  595. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/session-selector.js +0 -0
  596. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/skill-invocation-message.d.ts +0 -0
  597. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/skill-invocation-message.js +0 -0
  598. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/status-indicator.d.ts +0 -0
  599. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/status-indicator.js +0 -0
  600. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/tree-selector.d.ts +0 -0
  601. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/tree-selector.js +0 -0
  602. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/trust-selector.d.ts +0 -0
  603. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/trust-selector.js +0 -0
  604. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/external-editor.d.ts +0 -0
  605. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/external-editor.js +0 -0
  606. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/model-search.d.ts +0 -0
  607. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/model-search.js +0 -0
  608. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/theme/theme-controller.d.ts +0 -0
  609. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/theme/theme-controller.js +0 -0
  610. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/theme/theme.d.ts +0 -0
  611. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/theme/theme.js +0 -0
  612. /package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/pi-settings-metadata.json +0 -0
  613. /package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/public-main-entry.d.ts +0 -0
  614. /package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/public-main-entry.js +0 -0
  615. /package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/workflows.js +0 -0
  616. /package/dist/{src/foundation/pi-tui-runtime-adapter → integrations/pi/tui-runtime}/conformance.d.ts +0 -0
  617. /package/dist/{src/foundation/pi-tui-runtime-adapter → integrations/pi/tui-runtime}/conformance.js +0 -0
  618. /package/dist/{src/foundation/pi-tui-runtime-adapter → integrations/pi/tui-runtime}/presentation-adapter.js +0 -0
  619. /package/dist/{src/foundation/ui-apps → ui/apps}/contracts.js +0 -0
  620. /package/dist/{src/foundation/ui-apps → ui/apps}/index.d.ts +0 -0
  621. /package/dist/{src/foundation/ui-apps → ui/apps}/index.js +0 -0
  622. /package/dist/{src/foundation/ui-components → ui/components}/dialog-panel.d.ts +0 -0
  623. /package/dist/{src/foundation/ui-components → ui/components}/label.d.ts +0 -0
  624. /package/dist/{src/foundation/ui-components → ui/components}/label.js +0 -0
  625. /package/dist/{src/foundation/ui-components → ui/components}/list-block.d.ts +0 -0
  626. /package/dist/{src/foundation/ui-components → ui/components}/list-block.js +0 -0
  627. /package/dist/{src/foundation/ui-components → ui/components}/pane.d.ts +0 -0
  628. /package/dist/{src/foundation/ui-components → ui/components}/pane.js +0 -0
  629. /package/dist/{src/foundation/ui-components → ui/components}/revision.d.ts +0 -0
  630. /package/dist/{src/foundation/ui-components → ui/components}/revision.js +0 -0
  631. /package/dist/{src/foundation/ui-components → ui/components}/status-line.d.ts +0 -0
  632. /package/dist/{src/foundation/ui-components → ui/components}/status-line.js +0 -0
  633. /package/dist/{src/foundation/ui-components → ui/components}/stepper.d.ts +0 -0
  634. /package/dist/{src/foundation/ui-components → ui/components}/stepper.js +0 -0
  635. /package/dist/{src/foundation/ui-components → ui/components}/theme.d.ts +0 -0
  636. /package/dist/{src/foundation/ui-components → ui/components}/theme.js +0 -0
  637. /package/dist/{src/foundation/ui-components → ui/components}/value-menu.d.ts +0 -0
  638. /package/dist/{src/foundation/ui-components → ui/components}/value-menu.js +0 -0
  639. /package/dist/{src/foundation/owned-ui-settings → ui/settings}/index.d.ts +0 -0
  640. /package/dist/{src/foundation/owned-ui-settings → ui/settings}/index.js +0 -0
  641. /package/dist/{src/foundation/owned-ui-settings → ui/settings}/resolution.d.ts +0 -0
  642. /package/dist/{src/foundation/owned-ui-settings → ui/settings}/resolution.js +0 -0
@@ -0,0 +1,261 @@
1
+ import { interactiveLaunchIntent, parseSessionSelection } from "../features/launch/index.js";
2
+ import { packageCommandHelp, renderPackageSyntax } from "./package-messages.js";
3
+ import { PRODUCT_TEXT } from "../product-identity.js";
4
+ export function cliUsage(capabilities) {
5
+ return PRODUCT_TEXT.usage([
6
+ "",
7
+ "--session <path|id>",
8
+ "--session-dir <dir> --session <path|id>",
9
+ ...(capabilities.developmentComparison ? ["pi"] : []),
10
+ "--help",
11
+ "-h",
12
+ "--version",
13
+ "-v",
14
+ "update",
15
+ "update --develop [preview-or-version]",
16
+ "update --models",
17
+ "pi install <source>",
18
+ "pi remove <source>",
19
+ "pi uninstall <source>",
20
+ "pi list",
21
+ "pi update --extensions",
22
+ "pi update --models",
23
+ "pi update <source>",
24
+ ]);
25
+ }
26
+ export function cliHelp(capabilities) {
27
+ const command = PRODUCT_TEXT.commandName;
28
+ return [
29
+ "Common:",
30
+ ` ${command}`,
31
+ ` ${command} --session <path|id>`,
32
+ ` ${command} --session-dir <dir> --session <path|id>`,
33
+ ...(capabilities.developmentComparison ? [` ${command} pi`] : []),
34
+ ` ${command} --help`,
35
+ ` ${command} -h`,
36
+ ` ${command} --version`,
37
+ ` ${command} -v`,
38
+ "",
39
+ "Update:",
40
+ ` ${command} update`,
41
+ ` ${command} update --develop [preview-or-version]`,
42
+ ` ${command} update --models`,
43
+ "",
44
+ "Pi-compatible packages:",
45
+ ` ${command} pi install <source>`,
46
+ ` ${command} pi remove <source>`,
47
+ ` ${command} pi uninstall <source>`,
48
+ ` ${command} pi list`,
49
+ ` ${command} pi update --extensions`,
50
+ ` ${command} pi update --models`,
51
+ ` ${command} pi update <source>`,
52
+ "",
53
+ ].join("\n");
54
+ }
55
+ const PROFILE_WORDS = new Set(["pi"]);
56
+ export async function dispatchCli(arguments_, handlers, output, capabilities) {
57
+ const command = parseCliCommand(arguments_, capabilities);
58
+ if (command.kind === "noop")
59
+ return 0;
60
+ if (command.kind === "help") {
61
+ output.stdout(cliHelp(capabilities));
62
+ return 0;
63
+ }
64
+ if (command.kind === "package-help") {
65
+ output.stdout(packageCommandHelp(command.verb));
66
+ return 0;
67
+ }
68
+ if (command.kind === "package-error") {
69
+ output.stderr(renderPackageSyntax(command.diagnostic));
70
+ return 2;
71
+ }
72
+ if (command.kind === "error") {
73
+ output.stderr(`${command.message}\n`);
74
+ return 2;
75
+ }
76
+ if (command.kind === "launch")
77
+ return await handlers.launch(interactiveLaunchIntent(command.profileId, command.sessionSelection));
78
+ if (command.kind === "version")
79
+ return await handlers.version();
80
+ if (command.kind === "packages")
81
+ return await handlers.packages(command.request);
82
+ return await handlers.update(command.channel, command.target);
83
+ }
84
+ export function parseCliCommand(arguments_, capabilities) {
85
+ if (arguments_.length === 0)
86
+ return { kind: "launch", profileId: "a1" };
87
+ const [command, ...rest] = arguments_;
88
+ if (command === "--session" || command === "--session-dir") {
89
+ try {
90
+ const sessionSelection = parseSessionSelection(arguments_);
91
+ return { kind: "launch", profileId: "a1", ...(sessionSelection === undefined ? {} : { sessionSelection }) };
92
+ }
93
+ catch (error) {
94
+ return { kind: "error", message: PRODUCT_TEXT.diagnostic(`could not parse session launch: ${error instanceof Error ? error.message : String(error)}`) };
95
+ }
96
+ }
97
+ if (command === "--help" || command === "-h")
98
+ return withoutArguments(rest, { kind: "help" });
99
+ if (command === "--version" || command === "-v")
100
+ return withoutArguments(rest, { kind: "version" });
101
+ if (command === "pi") {
102
+ if (rest.length > 0)
103
+ return parsePiPackageCommand(rest);
104
+ return capabilities.developmentComparison ? { kind: "launch", profileId: "pi" } : { kind: "noop" };
105
+ }
106
+ if (command === "update")
107
+ return parseUpdate(rest);
108
+ if (command?.startsWith("update:"))
109
+ return { kind: "noop" };
110
+ // Rationale: unsupported and reserved command spaces are deliberately quiet. Help is
111
+ // explicit, and a typo must never start an interactive or maintenance path.
112
+ return { kind: "noop" };
113
+ }
114
+ /**
115
+ * Stable update is the empty form. `--develop` selects the moving development
116
+ * head or one immutable numbered preview, while model refresh remains a separate
117
+ * operation that cannot be combined with either update channel.
118
+ */
119
+ function parseUpdate(rest) {
120
+ if (rest.length === 0)
121
+ return { kind: "update", channel: "stable" };
122
+ const [selector, ...values] = rest;
123
+ // Compatibility: removed notation is unsupported rather than deprecated.
124
+ if (selector === "self")
125
+ return { kind: "noop" };
126
+ if (selector === "--develop") {
127
+ if (values.length === 0)
128
+ return { kind: "update", channel: "next" };
129
+ if (values.length > 1)
130
+ return updateGrammarError("--develop accepts at most one preview number or version.");
131
+ const [target] = values;
132
+ if (target === undefined || !isDevelopmentTarget(target)) {
133
+ return updateGrammarError(`--develop received an unusable preview: ${target ?? ""}`);
134
+ }
135
+ return { kind: "update", channel: "next", target };
136
+ }
137
+ if (selector === "--models") {
138
+ if (values.length > 0)
139
+ return updateGrammarError("--models cannot be combined with another update selector.");
140
+ return { kind: "packages", request: { verb: "refresh-models", source: null } };
141
+ }
142
+ if (selector === "pi")
143
+ return pinnedPiUpdateError();
144
+ if (selector !== undefined && selector.startsWith("-"))
145
+ return unknownOption(selector, "update");
146
+ // Rationale: positional update targets are reserved for a future A1-native plugin model.
147
+ return { kind: "noop" };
148
+ }
149
+ function isDevelopmentTarget(target) {
150
+ return /^[1-9]\d*$/.test(target) || /^\d+\.\d+\.\d+-dev\.[1-9]\d*$/.test(target);
151
+ }
152
+ function updateGrammarError(detail) {
153
+ return { kind: "error", message: PRODUCT_TEXT.diagnostic(`could not parse update: ${detail}`) };
154
+ }
155
+ function parsePiPackageCommand(arguments_) {
156
+ const [verb, ...rest] = arguments_;
157
+ if ((verb === "install" || verb === "remove" || verb === "uninstall" || verb === "list" || verb === "update")
158
+ && rest.some(value => value === "--help" || value === "-h")) {
159
+ return { kind: "package-help", verb: verb === "uninstall" ? "remove" : verb };
160
+ }
161
+ if (verb === "install" || verb === "remove" || verb === "uninstall") {
162
+ return parseSourceCommand(verb === "install" ? "install" : "remove", rest);
163
+ }
164
+ if (verb === "list") {
165
+ const flag = rest.find(argument => argument.startsWith("-"));
166
+ if (flag !== undefined)
167
+ return packageOptionError(flag, "list");
168
+ if (rest[0] !== undefined)
169
+ return packageSyntax({ verb: "list", kind: "unexpected-argument", value: rest[0] });
170
+ return { kind: "packages", request: { verb: "list", source: null } };
171
+ }
172
+ if (verb === "update")
173
+ return parsePiPackageUpdate(rest);
174
+ return { kind: "noop" };
175
+ }
176
+ function parsePiPackageUpdate(rest) {
177
+ if (rest.length === 0)
178
+ return pinnedPiUpdateError();
179
+ if (rest.length > 1) {
180
+ const unknown = rest.find(value => value.startsWith("-") && !["--extensions", "--models", "--self", "--all"].includes(value));
181
+ if (unknown !== undefined)
182
+ return packageOptionError(unknown, "update");
183
+ if (rest.includes("--self") || rest.includes("--all") || rest.includes("self") || rest.includes("pi"))
184
+ return pinnedPiUpdateError();
185
+ if (rest.every(value => value === rest[0]) && rest[0]?.startsWith("-")) {
186
+ return { kind: "error", message: PRODUCT_TEXT.diagnostic("pi update accepts one target.") };
187
+ }
188
+ const sources = rest.filter(value => !value.startsWith("-"));
189
+ if (sources[1] !== undefined)
190
+ return packageSyntax({ verb: "update", kind: "unexpected-argument", value: sources[1] });
191
+ const message = rest.includes("--models")
192
+ ? rest.includes("--extensions")
193
+ ? "--models cannot be combined with --self, --extensions, --all, or --extension"
194
+ : "--models cannot be combined with a positional source"
195
+ : "positional update targets cannot be combined with --self, --extensions, or --all";
196
+ return packageSyntax({ verb: "update", kind: "conflict", message });
197
+ }
198
+ const [target] = rest;
199
+ if (target === "--extensions")
200
+ return { kind: "packages", request: { verb: "update", source: null } };
201
+ if (target === "--models")
202
+ return { kind: "packages", request: { verb: "refresh-models", source: null } };
203
+ if (target === "--self" || target === "--all" || target === "self" || target === "pi")
204
+ return pinnedPiUpdateError();
205
+ if (target === undefined || target.startsWith("-"))
206
+ return packageOptionError(target ?? "", "update");
207
+ return { kind: "packages", request: { verb: "update", source: target } };
208
+ }
209
+ function pinnedPiUpdateError() {
210
+ return {
211
+ kind: "error",
212
+ message: [
213
+ PRODUCT_TEXT.diagnostic("pins its certified Pi runtime and cannot update it independently."),
214
+ "Use:",
215
+ ` ${PRODUCT_TEXT.commandName} update Update a1`,
216
+ ` ${PRODUCT_TEXT.commandName} pi update --extensions Update Pi-compatible packages`,
217
+ ` ${PRODUCT_TEXT.commandName} pi update --models Refresh model catalogs`,
218
+ ].join("\n"),
219
+ };
220
+ }
221
+ function parseSourceCommand(verb, rest) {
222
+ const flag = rest.find(argument => argument.startsWith("-"));
223
+ if (flag !== undefined)
224
+ return packageOptionError(flag, verb);
225
+ const [source, extra] = rest;
226
+ if (extra !== undefined)
227
+ return packageSyntax({ verb, kind: "unexpected-argument", value: extra });
228
+ if (source === undefined)
229
+ return packageSyntax({ verb, kind: "missing-source" });
230
+ if (PROFILE_WORDS.has(source))
231
+ return profileRejection(verb);
232
+ return { kind: "packages", request: { verb, source } };
233
+ }
234
+ function packageSyntax(diagnostic) {
235
+ return { kind: "package-error", diagnostic };
236
+ }
237
+ function packageOptionError(option, verb) {
238
+ if (option.startsWith("--profile") || option === "-l" || option === "--local")
239
+ return profileRejection(verb);
240
+ // Compatibility: these recognized Pi flags remain outside A1's supported subset.
241
+ if (["--extension", "--approve", "--no-approve", "-a", "-na", "--force"].includes(option)) {
242
+ return unknownOption(option, `pi ${verb}`);
243
+ }
244
+ return packageSyntax({ verb, kind: "unknown-option", value: option });
245
+ }
246
+ function withoutArguments(rest, command) {
247
+ if (rest.length === 0)
248
+ return command;
249
+ return { kind: "error", message: PRODUCT_TEXT.diagnostic("commands do not accept additional arguments.") };
250
+ }
251
+ function profileRejection(verb) {
252
+ return {
253
+ kind: "error",
254
+ message: PRODUCT_TEXT.diagnostic(`manages packages in its own profile, so ${verb} takes no profile; Pi manages Pi's own profile.`),
255
+ };
256
+ }
257
+ function unknownOption(option, verb) {
258
+ if (option.startsWith("--profile"))
259
+ return profileRejection(verb);
260
+ return { kind: "error", message: PRODUCT_TEXT.diagnostic(`received an unknown option for ${verb}: ${option}`) };
261
+ }
@@ -0,0 +1,26 @@
1
+ import chalk from "chalk";
2
+ /** Supported subset of pinned Pi's package-manager CLI presentation. */
3
+ export type PackageCliVerb = "install" | "remove" | "list" | "update";
4
+ export type PackageSyntaxDiagnostic = {
5
+ readonly verb: PackageCliVerb;
6
+ readonly kind: "missing-source";
7
+ } | {
8
+ readonly verb: PackageCliVerb;
9
+ readonly kind: "unknown-option";
10
+ readonly value: string;
11
+ } | {
12
+ readonly verb: PackageCliVerb;
13
+ readonly kind: "unexpected-argument";
14
+ readonly value: string;
15
+ } | {
16
+ readonly verb: "update";
17
+ readonly kind: "conflict";
18
+ readonly message: string;
19
+ };
20
+ type MessageStyle = Pick<typeof chalk, "red" | "dim" | "bold">;
21
+ export declare function packageCommandUsage(verb: PackageCliVerb): string;
22
+ /** Diagnostic facts stay unstyled until the terminal boundary decides color support. */
23
+ export declare function renderPackageSyntax(diagnostic: PackageSyntaxDiagnostic, style?: MessageStyle): string;
24
+ /** Pi's help layout, with unsupported options and examples deliberately absent. */
25
+ export declare function packageCommandHelp(verb: PackageCliVerb, style?: MessageStyle): string;
26
+ export {};
@@ -0,0 +1,71 @@
1
+ // Provenance: wording/layout adapted from Pi 0.84.2 packages/coding-agent/src/package-manager-cli.ts
2
+ // at 914cf1472e715297caa30db4b9535d534a9eb718 (MIT); grammar is restricted to A1's supported subset.
3
+ import chalk from "chalk";
4
+ import { PRODUCT_TEXT } from "../product-identity.js";
5
+ export function packageCommandUsage(verb) {
6
+ const command = `${PRODUCT_TEXT.commandName} pi ${verb}`;
7
+ if (verb === "install" || verb === "remove")
8
+ return `${command} <source>`;
9
+ if (verb === "update")
10
+ return `${command} [source|--extensions|--models]`;
11
+ return command;
12
+ }
13
+ /** Diagnostic facts stay unstyled until the terminal boundary decides color support. */
14
+ export function renderPackageSyntax(diagnostic, style = chalk) {
15
+ const usage = packageCommandUsage(diagnostic.verb);
16
+ let message;
17
+ if (diagnostic.kind === "unknown-option") {
18
+ return `${style.red(`Unknown option ${diagnostic.value} for "${diagnostic.verb}".`)}\n`
19
+ + `${style.dim(`Use "${PRODUCT_TEXT.commandName} --help" or "${usage}".`)}\n`;
20
+ }
21
+ if (diagnostic.kind === "missing-source")
22
+ message = `Missing ${diagnostic.verb} source.`;
23
+ else if (diagnostic.kind === "unexpected-argument")
24
+ message = `Unexpected argument ${diagnostic.value}.`;
25
+ else
26
+ message = diagnostic.message;
27
+ return `${style.red(message)}\n${style.dim(`Usage: ${usage}`)}\n`;
28
+ }
29
+ /** Pi's help layout, with unsupported options and examples deliberately absent. */
30
+ export function packageCommandHelp(verb, style = chalk) {
31
+ const command = `${PRODUCT_TEXT.commandName} pi`;
32
+ const header = `${style.bold("Usage:")}\n ${packageCommandUsage(verb)}\n\n`;
33
+ switch (verb) {
34
+ case "install":
35
+ return header + `Install a package and add it to settings.
36
+
37
+ Examples:
38
+ ${command} install npm:@foo/bar
39
+ ${command} install git:github.com/user/repo
40
+ ${command} install git:git@github.com:user/repo
41
+ ${command} install https://github.com/user/repo
42
+ ${command} install ssh://git@github.com/user/repo
43
+ ${command} install ./local/path
44
+
45
+ `;
46
+ case "remove":
47
+ return header + `Remove a package and its source from settings.
48
+ Alias: ${command} uninstall <source>
49
+
50
+ Examples:
51
+ ${command} remove npm:@foo/bar
52
+ ${command} uninstall npm:@foo/bar
53
+
54
+ `;
55
+ case "list":
56
+ return header + "List installed packages from user settings.\n\n";
57
+ case "update":
58
+ return header + `Update installed packages or model catalogs.
59
+
60
+ Options:
61
+ --extensions Update installed packages only
62
+ --models Refresh model catalogs only
63
+
64
+ Short forms:
65
+ ${command} update --extensions Update installed packages only
66
+ ${command} update --models Refresh model catalogs only
67
+ ${command} update <source> Update one package
68
+
69
+ `;
70
+ }
71
+ }
@@ -1,5 +1,5 @@
1
1
  import { initializeProductProfile } from "../features/launch/index.js";
2
- import type { AgentPackageOutcome, AgentPackagesPort, AgentPackagesPortInput } from "../foundation/agent-engine-contracts/index.js";
2
+ import type { AgentPackageOutcome, AgentPackagesPort, AgentPackagesPortInput } from "../contracts/agent-engine/index.js";
3
3
  /**
4
4
  * Package commands manage A1's own profile and nothing else, so no request carries
5
5
  * a profile: `update` with no source means every installed package, and refreshing
@@ -11,6 +11,13 @@ export interface PackageCommandRequest {
11
11
  readonly verb: PackageCommandVerb;
12
12
  readonly source: string | null;
13
13
  }
14
+ export interface PackageCommandStyle {
15
+ readonly dim: (message: string) => string;
16
+ readonly bold: (message: string) => string;
17
+ readonly green: (message: string) => string;
18
+ readonly red: (message: string) => string;
19
+ readonly yellow: (message: string) => string;
20
+ }
14
21
  export interface PackageCommandEnvironment {
15
22
  readonly createPort: (input: AgentPackagesPortInput) => AgentPackagesPort;
16
23
  readonly cwd?: string;
@@ -18,6 +25,8 @@ export interface PackageCommandEnvironment {
18
25
  readonly stdout?: (message: string) => void;
19
26
  readonly stderr?: (message: string) => void;
20
27
  readonly initializeProfile?: typeof initializeProductProfile;
28
+ /** Defaults to Chalk's terminal-aware styles; injectable for transcript tests. */
29
+ readonly style?: PackageCommandStyle;
21
30
  }
22
31
  export declare function runPackageCommand(request: PackageCommandRequest, environment: PackageCommandEnvironment): Promise<number>;
23
- export declare function renderPackageOutcome(outcome: AgentPackageOutcome, profileRoot: string): string;
32
+ export declare function renderPackageOutcome(outcome: AgentPackageOutcome, style?: PackageCommandStyle): string;
@@ -1,3 +1,4 @@
1
+ import chalk from "chalk";
1
2
  import { configurationRootForProfile, initializeProductProfile, resolveLaunchProfilePaths } from "../features/launch/index.js";
2
3
  import { PRODUCT_TEXT } from "../product-identity.js";
3
4
  export async function runPackageCommand(request, environment) {
@@ -5,6 +6,7 @@ export async function runPackageCommand(request, environment) {
5
6
  const stderr = environment.stderr ?? (message => process.stderr.write(message));
6
7
  const cwd = environment.cwd ?? process.cwd();
7
8
  const processEnvironment = environment.environment ?? process.env;
9
+ const style = environment.style ?? chalk;
8
10
  const paths = resolveLaunchProfilePaths({ environment: processEnvironment });
9
11
  const profileRoot = configurationRootForProfile("a1", paths);
10
12
  if (profileRoot === null)
@@ -19,10 +21,15 @@ export async function runPackageCommand(request, environment) {
19
21
  const port = environment.createPort({
20
22
  profileRoot,
21
23
  cwd,
22
- onProgress: progress => stdout(`${progress.message}\n`),
24
+ onProgress: progress => stdout(style.dim(`${progress.message}\n`)),
25
+ onDiagnostic: diagnostic => {
26
+ stderr(`${style.yellow(diagnostic.message)}\n`);
27
+ if (diagnostic.detail)
28
+ stderr(`${style.dim(diagnostic.detail)}\n`);
29
+ },
23
30
  });
24
31
  const outcome = await runVerb(port, request);
25
- const rendered = renderPackageOutcome(outcome, profileRoot);
32
+ const rendered = renderPackageOutcome(outcome, style);
26
33
  (outcome.status === "completed" ? stdout : stderr)(rendered);
27
34
  return outcome.status === "completed" ? 0 : 1;
28
35
  }
@@ -37,48 +44,38 @@ async function runVerb(port, request) {
37
44
  throw new Error(PRODUCT_TEXT.diagnostic(`requires a source for ${request.verb}`));
38
45
  return request.verb === "install" ? await port.install(request.source) : await port.remove(request.source);
39
46
  }
40
- export function renderPackageOutcome(outcome, profileRoot) {
41
- const name = PRODUCT_TEXT.displayName;
47
+ export function renderPackageOutcome(outcome, style = chalk) {
42
48
  if (outcome.status === "failed") {
43
- return `${PRODUCT_TEXT.diagnostic(`could not ${describeOperation(outcome.operation)}: ${outcome.detail ?? "unknown failure"}`)}\n`;
49
+ const fallback = outcome.operation === "refresh-models" ? "Unknown model catalog refresh error" : "Unknown package command error";
50
+ return `${style.red(`Error: ${outcome.detail ?? fallback}`)}\n`;
44
51
  }
45
52
  if (outcome.status === "not-found") {
46
- return `${PRODUCT_TEXT.diagnostic(`found no package matching ${outcome.source ?? "that source"} in ${profileRoot}.`)}\n`;
53
+ return `${style.red(`No matching package found for ${outcome.source ?? "that source"}`)}\n`;
47
54
  }
48
55
  switch (outcome.operation) {
56
+ case "refresh-models":
57
+ return `${style.green("Model catalogs refreshed")}\n`;
49
58
  case "install":
50
- return `${name} installed ${outcome.source} into ${profileRoot}.\n`
51
- + `Restart ${PRODUCT_TEXT.commandName} for a running session to load it.\n`;
59
+ return `${style.green(`Installed ${outcome.source}`)}\n`;
52
60
  case "remove":
53
- return `${name} removed ${outcome.source} from ${profileRoot}.\n`;
61
+ return `${style.green(`Removed ${outcome.source}`)}\n`;
54
62
  case "update":
55
- return outcome.source === null
56
- ? `${name} updated the packages in ${profileRoot}.\n`
57
- : `${name} updated ${outcome.source}.\n`;
58
- case "refresh-models":
59
- return `${name} refreshed the model catalogs in ${profileRoot}.\n`;
63
+ return `${style.green(outcome.source === null ? "Updated packages" : `Updated ${outcome.source}`)}\n`;
60
64
  case "list":
61
- return renderPackageList(outcome, profileRoot);
65
+ return renderPackageList(outcome, style);
62
66
  }
63
67
  }
64
- function renderPackageList(outcome, profileRoot) {
68
+ function renderPackageList(outcome, style) {
65
69
  if (outcome.packages.length === 0)
66
- return `${PRODUCT_TEXT.displayName} has no packages installed in ${profileRoot}.\n`;
67
- const lines = [`Packages installed for ${PRODUCT_TEXT.commandName} in ${profileRoot}:`];
70
+ return `${style.dim("No packages installed.")}\n`;
71
+ const lines = [style.bold("User packages:")];
68
72
  for (const entry of outcome.packages) {
69
- lines.push(` ${entry.source}${entry.filtered ? " (partly enabled)" : ""}`);
73
+ lines.push(` ${entry.source}${entry.filtered ? " (filtered)" : ""}`);
70
74
  if (entry.installedPath !== null)
71
- lines.push(` ${entry.installedPath}`);
75
+ lines.push(style.dim(` ${entry.installedPath}`));
72
76
  }
73
77
  return `${lines.join("\n")}\n`;
74
78
  }
75
- function describeOperation(operation) {
76
- if (operation === "refresh-models")
77
- return "refresh the model catalogs";
78
- if (operation === "list")
79
- return "list installed packages";
80
- return `${operation} the package`;
81
- }
82
79
  function message(error) {
83
80
  return (error instanceof Error ? error.message : String(error)).replace(/\s+/g, " ").trim();
84
81
  }
@@ -3,6 +3,11 @@ interface VersionProcessResult {
3
3
  readonly stdout: string;
4
4
  }
5
5
  type VersionProcessRunner = (command: string, arguments_: readonly string[]) => Promise<VersionProcessResult>;
6
+ type RegistryFetcher = (url: string) => Promise<{
7
+ readonly ok: boolean;
8
+ readonly status: number;
9
+ text(): Promise<string>;
10
+ }>;
6
11
  interface VersionOutput {
7
12
  stdout(message: string): void;
8
13
  stderr(message: string): void;
@@ -11,6 +16,7 @@ export interface VersionStatsOptions {
11
16
  readonly packageRoot: string;
12
17
  readonly output?: VersionOutput;
13
18
  readonly runner?: VersionProcessRunner;
19
+ readonly fetcher?: RegistryFetcher;
14
20
  }
15
21
  export declare function runVersionStats(options: VersionStatsOptions): Promise<number>;
16
22
  export {};
@@ -0,0 +1,112 @@
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 { prerelease, 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
+ // Compatibility: match Pi's release behavior: stable builds print only their installed version.
24
+ // Development builds retain channel visibility for preview comparison and updates.
25
+ if (prerelease(installed) === null) {
26
+ output.stdout(`${installed}\n`);
27
+ return 0;
28
+ }
29
+ const remote = await queryDistTags(runner, options.fetcher ?? defaultRegistryFetcher);
30
+ output.stdout(`Current: ${installed}\nDevelop: ${remote.develop ?? "unavailable"}\nRelease: ${remote.release ?? "unavailable"}\n`);
31
+ if (remote.error)
32
+ output.stderr(`${PRODUCT_TEXT.diagnostic(`could not resolve npm dist-tags: ${remote.error}`)}\n`);
33
+ return 0;
34
+ }
35
+ // Rationale: npm view respects the user's .npmrc registry and proxy, so it stays primary; the direct
36
+ // registry fetch below covers npm CLI versions whose --json output shape we cannot parse.
37
+ async function queryDistTags(runner, fetcher) {
38
+ const fromNpm = await queryDistTagsViaNpm(runner);
39
+ if (fromNpm.error === null)
40
+ return fromNpm;
41
+ const fromRegistry = await queryDistTagsViaRegistry(fetcher);
42
+ if (fromRegistry.error === null)
43
+ return fromRegistry;
44
+ return unavailable(`${fromNpm.error}; registry fallback failed: ${fromRegistry.error}`);
45
+ }
46
+ async function queryDistTagsViaNpm(runner) {
47
+ let result;
48
+ try {
49
+ result = await runner("npm", ["view", PRODUCT_TEXT.packageName, "dist-tags", "--json"]);
50
+ }
51
+ catch (error) {
52
+ return unavailable(message(error));
53
+ }
54
+ if (result.code !== 0)
55
+ return unavailable(`npm exited with status ${result.code ?? "unknown"}`);
56
+ try {
57
+ const parsed = JSON.parse(result.stdout);
58
+ // Compatibility: npm 12 wraps `npm view <pkg> dist-tags --json` output in a one-element array; older npm returns the bare object.
59
+ const metadata = Array.isArray(parsed) && parsed.length === 1 ? parsed[0] : parsed;
60
+ return parseDistTags(metadata, "npm");
61
+ }
62
+ catch (error) {
63
+ return unavailable(message(error));
64
+ }
65
+ }
66
+ async function queryDistTagsViaRegistry(fetcher) {
67
+ try {
68
+ const response = await fetcher(`https://registry.npmjs.org/-/package/${encodeURIComponent(PRODUCT_TEXT.packageName)}/dist-tags`);
69
+ if (!response.ok)
70
+ return unavailable(`registry responded with status ${response.status}`);
71
+ return parseDistTags(JSON.parse(await response.text()), "registry");
72
+ }
73
+ catch (error) {
74
+ return unavailable(message(error));
75
+ }
76
+ }
77
+ function parseDistTags(metadata, source) {
78
+ if (typeof metadata !== "object" || metadata === null || Array.isArray(metadata)) {
79
+ return unavailable(`${source} returned a non-object dist-tags value`);
80
+ }
81
+ try {
82
+ const tags = metadata;
83
+ const release = parseVersion(tags.latest, `${source} latest`);
84
+ const develop = tags.next === undefined ? null : parseVersion(tags.next, `${source} development channel`);
85
+ return { release, develop, error: null };
86
+ }
87
+ catch (error) {
88
+ return unavailable(message(error));
89
+ }
90
+ }
91
+ function unavailable(error) {
92
+ return { release: null, develop: null, error };
93
+ }
94
+ const defaultRegistryFetcher = async (url) => await fetch(url, { headers: { accept: "application/json" }, signal: AbortSignal.timeout(10_000) });
95
+ function createVersionProcessRunner() {
96
+ return async (command, arguments_) => await new Promise((resolvePromise, rejectPromise) => {
97
+ const child = process.platform === "win32"
98
+ ? crossSpawn(command, [...arguments_], { stdio: ["ignore", "pipe", "ignore"] })
99
+ : spawn(command, [...arguments_], { stdio: ["ignore", "pipe", "ignore"] });
100
+ const stdout = [];
101
+ child.stdout?.on("data", chunk => stdout.push(Buffer.from(chunk)));
102
+ child.once("error", rejectPromise);
103
+ child.once("close", code => resolvePromise({ code, stdout: Buffer.concat(stdout).toString("utf8") }));
104
+ });
105
+ }
106
+ function parseVersion(value, source) {
107
+ const parsed = typeof value === "string" ? validSemver(value) : null;
108
+ if (!parsed)
109
+ throw new Error(`${source} did not provide a valid semantic version`);
110
+ return parsed;
111
+ }
112
+ function message(error) { return error instanceof Error ? error.message : String(error); }
@@ -0,0 +1,3 @@
1
+ import { type AgentEnginePort } from "../contracts/agent-engine/index.js";
2
+ import type { PiEngineAdapter } from "../integrations/pi/engine/index.js";
3
+ export declare function createPiAgentEngineBridge(adapter: PiEngineAdapter, cwd: string): AgentEnginePort;