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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (880) hide show
  1. package/README.md +209 -63
  2. package/bin/activate.js +8 -0
  3. package/bin/cli.js +33 -11
  4. package/bin/guardian.js +16 -6
  5. package/bin/module-identity.js +76 -69
  6. package/bin/module-resolver.js +138 -0
  7. package/bin/pinned-pi-public.d.ts +3 -0
  8. package/bin/pinned-pi-public.js +93 -0
  9. package/bin/release-cleanup.js +8 -0
  10. package/bin/supervisor.js +2 -2
  11. package/bin/sync-pi-tui-proxy.js +7 -0
  12. package/bin/ui.js +67 -22
  13. package/bin/update-recovery.js +343 -0
  14. package/bin/warmup.js +28 -0
  15. package/dist/app/session-shell/clipboard-diagnostics.d.ts +16 -0
  16. package/dist/app/session-shell/clipboard-diagnostics.js +65 -0
  17. package/dist/app/session-shell/clipboard-image.d.ts +11 -0
  18. package/dist/app/session-shell/clipboard-image.js +38 -0
  19. package/dist/app/session-shell/editor-hyperlink-budget.d.ts +9 -0
  20. package/dist/app/session-shell/editor-hyperlink-budget.js +23 -0
  21. package/dist/app/session-shell/helper-pool.d.ts +33 -0
  22. package/dist/app/session-shell/helper-pool.js +98 -0
  23. package/dist/app/session-shell/image-preparation-client.d.ts +20 -0
  24. package/dist/app/session-shell/image-preparation-client.js +145 -0
  25. package/dist/app/session-shell/image-preparation.d.ts +18 -0
  26. package/dist/app/session-shell/image-preparation.js +126 -0
  27. package/dist/app/session-shell/image-source.d.ts +13 -0
  28. package/dist/app/session-shell/image-source.js +171 -0
  29. package/dist/app/session-shell/image-worker.d.ts +17 -0
  30. package/dist/app/session-shell/image-worker.js +23 -0
  31. package/dist/app/session-shell/index.d.ts +7 -0
  32. package/dist/app/session-shell/index.js +4 -0
  33. package/dist/app/session-shell/paste-executor.d.ts +18 -0
  34. package/dist/app/session-shell/paste-executor.js +253 -0
  35. package/dist/app/session-shell/paste-helper.js +173 -0
  36. package/dist/app/session-shell/paste-preparation-client.d.ts +31 -0
  37. package/dist/app/session-shell/paste-preparation-client.js +170 -0
  38. package/dist/app/session-shell/paste-protocol.d.ts +78 -0
  39. package/dist/app/session-shell/paste-protocol.js +18 -0
  40. package/dist/app/session-shell/paste-text-preparation.d.ts +6 -0
  41. package/dist/app/session-shell/paste-text-preparation.js +134 -0
  42. package/dist/app/session-shell/paste-text-worker.js +12 -0
  43. package/dist/app/session-shell/paste-types.d.ts +17 -0
  44. package/dist/app/session-shell/path-chip-presentation.d.ts +7 -0
  45. package/dist/app/session-shell/path-chip-presentation.js +24 -0
  46. package/dist/app/session-shell/prompt-chips.d.ts +76 -0
  47. package/dist/app/session-shell/prompt-chips.js +507 -0
  48. package/dist/app/session-shell/prompt-history-controller.d.ts +36 -0
  49. package/dist/app/session-shell/prompt-history-controller.js +170 -0
  50. package/dist/app/session-shell/prompt-suggestion-controller.d.ts +37 -0
  51. package/dist/app/session-shell/prompt-suggestion-controller.js +219 -0
  52. package/dist/app/session-shell/quit-outro-effects.d.ts +29 -0
  53. package/dist/app/session-shell/quit-outro-effects.js +242 -0
  54. package/dist/app/session-shell/quit-outro.d.ts +38 -0
  55. package/dist/app/session-shell/quit-outro.js +98 -0
  56. package/dist/app/session-shell/response-copy-coordinator.d.ts +27 -0
  57. package/dist/app/session-shell/response-copy-coordinator.js +187 -0
  58. package/dist/app/session-shell/response-copy-helper.js +122 -0
  59. package/dist/app/session-shell/response-copy-protocol.d.ts +56 -0
  60. package/dist/app/session-shell/response-copy-protocol.js +5 -0
  61. package/dist/app/session-shell/response-copy-transport.d.ts +39 -0
  62. package/dist/app/session-shell/response-copy-transport.js +217 -0
  63. package/dist/app/session-shell/session-shell-root.d.ts +275 -0
  64. package/dist/app/session-shell/session-shell-root.js +1376 -0
  65. package/dist/app/session-shell/session-shell.d.ts +66 -0
  66. package/dist/app/session-shell/session-shell.js +2116 -0
  67. package/dist/app/session-shell/session-viewport-controller.d.ts +61 -0
  68. package/dist/app/session-shell/session-viewport-controller.js +597 -0
  69. package/dist/app/session-shell/stream-presentation-coalescer.d.ts +29 -0
  70. package/dist/app/session-shell/stream-presentation-coalescer.js +79 -0
  71. package/dist/app/session-shell/system-clipboard.d.ts +20 -0
  72. package/dist/app/session-shell/system-clipboard.js +159 -0
  73. package/dist/app/session-shell/text-paste.d.ts +5 -0
  74. package/dist/app/session-shell/text-paste.js +16 -0
  75. package/dist/cli/capabilities.d.ts +6 -0
  76. package/dist/cli/capabilities.js +7 -0
  77. package/dist/cli/dispatch.d.ts +46 -0
  78. package/dist/cli/dispatch.js +261 -0
  79. package/dist/cli/index.d.ts +8 -0
  80. package/dist/cli/index.js +4 -0
  81. package/dist/cli/package-messages.d.ts +26 -0
  82. package/dist/cli/package-messages.js +71 -0
  83. package/dist/cli/packages.d.ts +32 -0
  84. package/dist/cli/packages.js +81 -0
  85. package/dist/cli/version-stats.d.ts +22 -0
  86. package/dist/cli/version-stats.js +112 -0
  87. package/dist/composition/index.d.ts +2 -0
  88. package/dist/composition/index.js +2 -0
  89. package/dist/composition/owned-ui.d.ts +37 -0
  90. package/dist/composition/owned-ui.js +154 -0
  91. package/dist/composition/settings-route-host.d.ts +20 -0
  92. package/dist/composition/settings-route-host.js +141 -0
  93. package/dist/contracts/agent-engine/capability-ports.d.ts +95 -0
  94. package/dist/contracts/agent-engine/domain-validation.js +107 -0
  95. package/dist/contracts/agent-engine/domain.d.ts +138 -0
  96. package/dist/contracts/agent-engine/index.d.ts +11 -0
  97. package/dist/contracts/agent-engine/index.js +6 -0
  98. package/dist/contracts/agent-engine/package-ports.d.ts +60 -0
  99. package/dist/contracts/agent-engine/ports.js +1 -0
  100. package/dist/contracts/owned-ui/extension-ui.d.ts +310 -0
  101. package/dist/contracts/owned-ui/image-attachments.d.ts +36 -0
  102. package/dist/contracts/owned-ui/image-attachments.js +67 -0
  103. package/dist/contracts/owned-ui/index.d.ts +12 -0
  104. package/dist/contracts/owned-ui/index.js +8 -0
  105. package/dist/contracts/owned-ui/model.d.ts +374 -0
  106. package/dist/contracts/owned-ui/prompt-history.d.ts +55 -0
  107. package/dist/contracts/owned-ui/prompt-history.js +23 -0
  108. package/dist/contracts/owned-ui/prompt-suggestions.d.ts +3 -0
  109. package/dist/contracts/owned-ui/prompt-suggestions.js +44 -0
  110. package/dist/contracts/owned-ui/suggestion-diagnostics.d.ts +22 -0
  111. package/dist/contracts/owned-ui/suggestion-diagnostics.js +9 -0
  112. package/dist/contracts/owned-ui/transcript-lifecycle.d.ts +5 -0
  113. package/dist/contracts/owned-ui/transcript-lifecycle.js +33 -0
  114. package/dist/contracts/owned-ui/validation.d.ts +15 -0
  115. package/dist/contracts/owned-ui/validation.js +523 -0
  116. package/dist/contracts/presentation/index.d.ts +104 -0
  117. package/dist/features/launch/development-launch.js +36 -0
  118. package/dist/features/launch/index.d.ts +12 -0
  119. package/dist/features/launch/index.js +6 -0
  120. package/dist/features/launch/intent.d.ts +12 -0
  121. package/dist/features/launch/intent.js +8 -0
  122. package/dist/features/launch/prepare-launch.d.ts +11 -0
  123. package/dist/features/launch/prepare-launch.js +14 -0
  124. package/dist/features/launch/profile-paths.d.ts +16 -0
  125. package/dist/features/launch/profile-paths.js +36 -0
  126. package/dist/features/launch/runtime-selection.d.ts +16 -0
  127. package/dist/features/launch/runtime-selection.js +13 -0
  128. package/dist/features/owned-ui/index.d.ts +9 -0
  129. package/dist/features/owned-ui/index.js +6 -0
  130. package/dist/features/owned-ui/project-trust-prompt.d.ts +25 -0
  131. package/dist/features/owned-ui/project-trust-prompt.js +149 -0
  132. package/dist/features/owned-ui/reference-routes.d.ts +6 -0
  133. package/dist/features/owned-ui/reference-routes.js +6 -0
  134. package/dist/features/owned-ui/reference-screen-app.d.ts +37 -0
  135. package/dist/features/owned-ui/reference-screen-app.js +232 -0
  136. package/dist/features/owned-ui/run.d.ts +17 -0
  137. package/dist/features/owned-ui/run.js +64 -0
  138. package/dist/features/owned-ui/session-fork-prompt.d.ts +8 -0
  139. package/dist/features/owned-ui/session-fork-prompt.js +34 -0
  140. package/dist/features/owned-ui/settings-app.d.ts +21 -0
  141. package/dist/features/owned-ui/settings-app.js +802 -0
  142. package/dist/features/owned-ui/settings-route.d.ts +2 -0
  143. package/dist/features/owned-ui/settings-route.js +2 -0
  144. package/dist/features/prompt-history/image-sidecar.d.ts +32 -0
  145. package/dist/features/prompt-history/image-sidecar.js +130 -0
  146. package/dist/features/prompt-history/index.d.ts +4 -0
  147. package/dist/features/prompt-history/index.js +3 -0
  148. package/dist/features/prompt-history/paths.d.ts +5 -0
  149. package/dist/features/prompt-history/paths.js +17 -0
  150. package/dist/features/prompt-history/service.d.ts +54 -0
  151. package/dist/features/prompt-history/service.js +425 -0
  152. package/dist/features/prompt-history/store.d.ts +16 -0
  153. package/dist/features/prompt-history/store.js +219 -0
  154. package/dist/features/prompt-history/worker.d.ts +9 -0
  155. package/dist/features/prompt-history/worker.js +45 -0
  156. package/dist/features/prompt-suggestions/diagnostics.d.ts +18 -0
  157. package/dist/features/prompt-suggestions/diagnostics.js +82 -0
  158. package/dist/features/prompt-suggestions/index.d.ts +2 -0
  159. package/dist/features/prompt-suggestions/index.js +1 -0
  160. package/dist/foundation/launch-context/index.d.ts +59 -0
  161. package/dist/foundation/launch-context/index.js +136 -0
  162. package/dist/foundation/launch-guardian/index.d.ts +2 -0
  163. package/dist/foundation/launch-guardian/index.js +1 -0
  164. package/dist/foundation/launch-guardian/main.d.ts +33 -0
  165. package/dist/foundation/launch-guardian/main.js +180 -0
  166. package/dist/foundation/lifecycle/commands.js +1 -0
  167. package/dist/foundation/lifecycle/index.d.ts +11 -0
  168. package/dist/foundation/lifecycle/index.js +5 -0
  169. package/dist/foundation/lifecycle/model.d.ts +64 -0
  170. package/dist/foundation/lifecycle/model.js +40 -0
  171. package/dist/foundation/lifecycle/paths.d.ts +30 -0
  172. package/dist/foundation/lifecycle/paths.js +70 -0
  173. package/dist/foundation/lifecycle/session-selection.d.ts +9 -0
  174. package/dist/foundation/lifecycle/session-selection.js +39 -0
  175. package/dist/foundation/lifecycle/supervisor-startup.d.ts +30 -0
  176. package/dist/foundation/lifecycle/supervisor-startup.js +106 -0
  177. package/dist/foundation/process-containment/darwin-process-inspector.d.ts +5 -0
  178. package/dist/foundation/process-containment/darwin-process-inspector.js +7 -0
  179. package/dist/foundation/process-containment/index.d.ts +8 -0
  180. package/dist/foundation/process-containment/index.js +6 -0
  181. package/dist/foundation/process-containment/linux-process-inspector.d.ts +7 -0
  182. package/dist/foundation/process-containment/linux-process-inspector.js +27 -0
  183. package/dist/foundation/process-containment/native-guardian-containment.d.ts +17 -0
  184. package/dist/foundation/process-containment/native-guardian-containment.js +140 -0
  185. package/dist/foundation/process-containment/windows-process-inspector.d.ts +19 -0
  186. package/dist/foundation/process-containment/windows-process-inspector.js +56 -0
  187. package/dist/foundation/protocol/client.d.ts +18 -0
  188. package/dist/foundation/protocol/client.js +130 -0
  189. package/dist/foundation/protocol/index.d.ts +3 -0
  190. package/dist/foundation/protocol/index.js +2 -0
  191. package/dist/foundation/protocol/messages.d.ts +90 -0
  192. package/dist/foundation/protocol/messages.js +100 -0
  193. package/dist/foundation/release/bootstrap.d.ts +51 -0
  194. package/dist/foundation/release/bootstrap.js +427 -0
  195. package/dist/foundation/release/cohort-state.d.ts +157 -0
  196. package/dist/foundation/release/cohort-state.js +472 -0
  197. package/dist/foundation/release/dependency-certification-retention.d.ts +7 -0
  198. package/dist/foundation/release/dependency-certification-retention.js +88 -0
  199. package/dist/foundation/release/dependency-certification.d.ts +24 -0
  200. package/dist/foundation/release/dependency-certification.js +266 -0
  201. package/dist/foundation/release/dependency-layer.d.ts +78 -0
  202. package/dist/foundation/release/dependency-layer.js +466 -0
  203. package/dist/foundation/release/endpoints.d.ts +24 -0
  204. package/dist/foundation/release/endpoints.js +134 -0
  205. package/dist/foundation/release/immutable-platform.d.ts +6 -0
  206. package/dist/foundation/release/immutable-platform.js +13 -0
  207. package/dist/foundation/release/index.d.ts +32 -0
  208. package/dist/foundation/release/index.js +17 -0
  209. package/dist/foundation/release/release-gc.d.ts +71 -0
  210. package/dist/foundation/release/release-gc.js +764 -0
  211. package/dist/foundation/release/release-store.d.ts +49 -0
  212. package/dist/foundation/release/release-store.js +235 -0
  213. package/dist/foundation/release/release.d.ts +43 -0
  214. package/dist/foundation/release/release.js +215 -0
  215. package/dist/foundation/release/restart-certification.d.ts +68 -0
  216. package/dist/foundation/release/restart-certification.js +227 -0
  217. package/dist/foundation/release/types.d.ts +11 -0
  218. package/dist/foundation/release/types.js +1 -0
  219. package/dist/foundation/release/update-activation.d.ts +72 -0
  220. package/dist/foundation/release/update-activation.js +204 -0
  221. package/dist/foundation/release/update-launch.d.ts +6 -0
  222. package/dist/foundation/release/update-launch.js +17 -0
  223. package/dist/foundation/release/update-recovery.d.ts +76 -0
  224. package/dist/foundation/release/update-recovery.js +356 -0
  225. package/dist/foundation/release/update-transaction.d.ts +42 -0
  226. package/dist/foundation/release/update-transaction.js +101 -0
  227. package/dist/foundation/release/update.d.ts +114 -0
  228. package/dist/foundation/release/update.js +633 -0
  229. package/dist/foundation/release/warmup.d.ts +3 -0
  230. package/dist/foundation/release/warmup.js +47 -0
  231. package/dist/foundation/startup/index.d.ts +4 -0
  232. package/dist/foundation/startup/index.js +2 -0
  233. package/dist/foundation/startup/startup-budget.d.ts +46 -0
  234. package/dist/foundation/startup/startup-budget.js +42 -0
  235. package/dist/foundation/startup/startup-descriptor.js +34 -0
  236. package/dist/foundation/startup/startup-runtime.d.ts +27 -0
  237. package/dist/foundation/startup/startup-runtime.js +128 -0
  238. package/dist/foundation/storage/control-store.d.ts +18 -0
  239. package/dist/foundation/storage/control-store.js +342 -0
  240. package/dist/foundation/storage/index.d.ts +1 -0
  241. package/dist/foundation/storage/index.js +1 -0
  242. package/dist/foundation/supervision/index.d.ts +3 -0
  243. package/dist/foundation/supervision/index.js +3 -0
  244. package/dist/foundation/supervision/main.d.ts +1 -0
  245. package/dist/foundation/supervision/main.js +84 -0
  246. package/dist/foundation/supervision/paths.d.ts +1 -0
  247. package/dist/foundation/supervision/paths.js +1 -0
  248. package/dist/foundation/supervision/server.d.ts +46 -0
  249. package/dist/foundation/supervision/server.js +573 -0
  250. package/dist/foundation/terminal-cleanup/fatal-exit.d.ts +12 -0
  251. package/dist/foundation/terminal-cleanup/fatal-exit.js +87 -0
  252. package/dist/foundation/terminal-cleanup/index.d.ts +3 -0
  253. package/dist/foundation/terminal-cleanup/index.js +2 -0
  254. package/dist/foundation/terminal-cleanup/terminal-reset.d.ts +4 -0
  255. package/dist/foundation/terminal-cleanup/terminal-reset.js +40 -0
  256. package/dist/integrations/pi/components/components.d.ts +4 -0
  257. package/dist/integrations/pi/components/components.js +64 -0
  258. package/dist/integrations/pi/components/conformance.d.ts +18 -0
  259. package/dist/integrations/pi/components/conformance.js +70 -0
  260. package/dist/integrations/pi/components/editor-interaction.d.ts +38 -0
  261. package/dist/integrations/pi/components/editor-interaction.js +1 -0
  262. package/dist/integrations/pi/components/history-editor-loader.d.ts +5 -0
  263. package/dist/integrations/pi/components/history-editor-loader.js +5 -0
  264. package/dist/integrations/pi/components/index.d.ts +23 -0
  265. package/dist/integrations/pi/components/index.js +14 -0
  266. package/dist/integrations/pi/components/models-dialog.d.ts +55 -0
  267. package/dist/integrations/pi/components/models-dialog.js +310 -0
  268. package/dist/integrations/pi/components/owned-editor-ux.d.ts +74 -0
  269. package/dist/integrations/pi/components/owned-editor-ux.js +1094 -0
  270. package/dist/integrations/pi/components/path-word-ranges.d.ts +2 -0
  271. package/dist/integrations/pi/components/path-word-ranges.js +37 -0
  272. package/dist/integrations/pi/components/prompt-input-port.d.ts +18 -0
  273. package/dist/integrations/pi/components/prompt-input-port.js +1 -0
  274. package/dist/integrations/pi/components/resources/builtin-themes.d.ts +167 -0
  275. package/dist/integrations/pi/components/resources/builtin-themes.js +168 -0
  276. package/dist/integrations/pi/components/shell-components.d.ts +7 -0
  277. package/dist/integrations/pi/components/shell-components.js +7 -0
  278. package/dist/integrations/pi/components/shell-editor-autocomplete.d.ts +21 -0
  279. package/dist/integrations/pi/components/shell-editor-autocomplete.js +322 -0
  280. package/dist/integrations/pi/components/shell-extension-ui.d.ts +35 -0
  281. package/dist/integrations/pi/components/shell-extension-ui.js +280 -0
  282. package/dist/integrations/pi/components/shell-footer-status.d.ts +7 -0
  283. package/dist/integrations/pi/components/shell-footer-status.js +249 -0
  284. package/dist/integrations/pi/components/shell-presenters-info.d.ts +53 -0
  285. package/dist/integrations/pi/components/shell-presenters-info.js +134 -0
  286. package/dist/integrations/pi/components/shell-presenters-transcript.d.ts +29 -0
  287. package/dist/integrations/pi/components/shell-presenters-transcript.js +433 -0
  288. package/dist/integrations/pi/components/shell-selectors-dialogs.d.ts +133 -0
  289. package/dist/integrations/pi/components/shell-selectors-dialogs.js +255 -0
  290. package/dist/integrations/pi/components/shell-shared-facade.d.ts +225 -0
  291. package/dist/integrations/pi/components/shell-shared-facade.js +92 -0
  292. package/dist/integrations/pi/components/skills-command.d.ts +47 -0
  293. package/dist/integrations/pi/components/skills-command.js +118 -0
  294. package/dist/integrations/pi/components/skills-dialog.d.ts +9 -0
  295. package/dist/integrations/pi/components/skills-dialog.js +112 -0
  296. package/dist/integrations/pi/components/submitted-prompt-adapter.d.ts +17 -0
  297. package/dist/integrations/pi/components/submitted-prompt-adapter.js +49 -0
  298. package/dist/integrations/pi/components/tool-image-presentation.d.ts +21 -0
  299. package/dist/integrations/pi/components/tool-image-presentation.js +83 -0
  300. package/dist/integrations/pi/components/tool-result-adapter.d.ts +6 -0
  301. package/dist/integrations/pi/components/tool-result-adapter.js +27 -0
  302. package/dist/integrations/pi/components/transcript-image-resolver.d.ts +7 -0
  303. package/dist/integrations/pi/components/transcript-image-resolver.js +19 -0
  304. package/dist/integrations/pi/components/upstream/adjacent/core/keybindings.d.ts +445 -0
  305. package/dist/integrations/pi/components/upstream/adjacent/core/keybindings.js +370 -0
  306. package/dist/integrations/pi/components/upstream/assets/earendil-image.json +12 -0
  307. package/dist/integrations/pi/components/upstream/components/countdown-timer.d.ts +13 -0
  308. package/dist/integrations/pi/components/upstream/components/daxnuts.d.ts +29 -0
  309. package/dist/integrations/pi/components/upstream/components/daxnuts.js +146 -0
  310. package/dist/integrations/pi/components/upstream/components/earendil-announcement.d.ts +4 -0
  311. package/dist/integrations/pi/components/upstream/components/earendil-announcement.js +48 -0
  312. package/dist/integrations/pi/components/upstream/components/extension-editor.d.ts +20 -0
  313. package/dist/integrations/pi/components/upstream/components/extension-editor.js +84 -0
  314. package/dist/integrations/pi/components/upstream/components/mermaid.js +81 -0
  315. package/dist/integrations/pi/components/upstream/components/owned-editor.d.ts +52 -0
  316. package/dist/integrations/pi/components/upstream/components/owned-editor.js +222 -0
  317. package/dist/integrations/pi/components/upstream/components/scoped-models-selector.d.ts +59 -0
  318. package/dist/integrations/pi/components/upstream/components/scoped-models-selector.js +346 -0
  319. package/dist/integrations/pi/components/upstream/components/session-footer.d.ts +11 -0
  320. package/dist/integrations/pi/components/upstream/components/session-footer.js +123 -0
  321. package/dist/integrations/pi/components/upstream/components/session-selector-search.js +161 -0
  322. package/dist/integrations/pi/components/upstream/components/session-selector.d.ts +95 -0
  323. package/dist/integrations/pi/components/upstream/components/session-selector.js +893 -0
  324. package/dist/integrations/pi/components/upstream/components/skill-invocation-message.d.ts +21 -0
  325. package/dist/integrations/pi/components/upstream/components/skill-invocation-message.js +46 -0
  326. package/dist/integrations/pi/components/upstream/components/status-indicator.d.ts +35 -0
  327. package/dist/integrations/pi/components/upstream/components/status-indicator.js +69 -0
  328. package/dist/integrations/pi/components/upstream/components/tool-execution.d.ts +67 -0
  329. package/dist/integrations/pi/components/upstream/components/tool-execution.js +365 -0
  330. package/dist/integrations/pi/components/upstream/components/tree-selector.d.ts +101 -0
  331. package/dist/integrations/pi/components/upstream/components/tree-selector.js +1275 -0
  332. package/dist/integrations/pi/components/upstream/components/trust-selector.d.ts +33 -0
  333. package/dist/integrations/pi/components/upstream/components/trust-selector.js +81 -0
  334. package/dist/integrations/pi/components/upstream/external-editor.js +43 -0
  335. package/dist/integrations/pi/components/upstream/history/editor-core.d.ts +289 -0
  336. package/dist/integrations/pi/components/upstream/history/editor-core.js +2144 -0
  337. package/dist/integrations/pi/components/upstream/history/kill-ring.d.ts +35 -0
  338. package/dist/integrations/pi/components/upstream/history/kill-ring.js +51 -0
  339. package/dist/integrations/pi/components/upstream/history/printable-key.d.ts +1 -0
  340. package/dist/integrations/pi/components/upstream/history/printable-key.js +43 -0
  341. package/dist/integrations/pi/components/upstream/history/text-helpers.d.ts +14 -0
  342. package/dist/integrations/pi/components/upstream/history/text-helpers.js +31 -0
  343. package/dist/integrations/pi/components/upstream/history/undo-stack.d.ts +25 -0
  344. package/dist/integrations/pi/components/upstream/history/undo-stack.js +39 -0
  345. package/dist/integrations/pi/components/upstream/history/word-navigation.d.ts +24 -0
  346. package/dist/integrations/pi/components/upstream/history/word-navigation.js +103 -0
  347. package/dist/integrations/pi/components/upstream/model-search.d.ts +18 -0
  348. package/dist/integrations/pi/components/upstream/theme/theme-controller.d.ts +33 -0
  349. package/dist/integrations/pi/components/upstream/theme/theme-controller.js +114 -0
  350. package/dist/integrations/pi/components/upstream/theme/theme.d.ts +61 -0
  351. package/dist/integrations/pi/components/upstream/theme/theme.js +337 -0
  352. package/dist/integrations/pi/engine/adapter.d.ts +139 -0
  353. package/dist/integrations/pi/engine/adapter.js +660 -0
  354. package/dist/integrations/pi/engine/changelog.d.ts +2 -0
  355. package/dist/integrations/pi/engine/changelog.js +63 -0
  356. package/dist/integrations/pi/engine/command-dispatch.d.ts +41 -0
  357. package/dist/integrations/pi/engine/command-dispatch.js +125 -0
  358. package/dist/integrations/pi/engine/compaction-progress.d.ts +28 -0
  359. package/dist/integrations/pi/engine/compaction-progress.js +96 -0
  360. package/dist/integrations/pi/engine/conformance.d.ts +39 -0
  361. package/dist/integrations/pi/engine/conformance.js +140 -0
  362. package/dist/integrations/pi/engine/event-delivery.d.ts +100 -0
  363. package/dist/integrations/pi/engine/event-delivery.js +184 -0
  364. package/dist/integrations/pi/engine/extension-ui-binding.d.ts +35 -0
  365. package/dist/integrations/pi/engine/extension-ui-binding.js +81 -0
  366. package/dist/integrations/pi/engine/http-dispatcher.d.ts +4 -0
  367. package/dist/integrations/pi/engine/http-dispatcher.js +25 -0
  368. package/dist/integrations/pi/engine/index.d.ts +18 -0
  369. package/dist/integrations/pi/engine/index.js +10 -0
  370. package/dist/integrations/pi/engine/message-values.d.ts +29 -0
  371. package/dist/integrations/pi/engine/message-values.js +168 -0
  372. package/dist/integrations/pi/engine/package-integration.d.ts +13 -0
  373. package/dist/integrations/pi/engine/package-integration.js +118 -0
  374. package/dist/integrations/pi/engine/pending-delivery.d.ts +30 -0
  375. package/dist/integrations/pi/engine/pending-delivery.js +156 -0
  376. package/dist/integrations/pi/engine/pi-settings-metadata.json +385 -0
  377. package/dist/integrations/pi/engine/project-trust-preflight.d.ts +22 -0
  378. package/dist/integrations/pi/engine/project-trust-preflight.js +50 -0
  379. package/dist/integrations/pi/engine/prompt-suggestions.d.ts +30 -0
  380. package/dist/integrations/pi/engine/prompt-suggestions.js +102 -0
  381. package/dist/integrations/pi/engine/provider-authentication.d.ts +34 -0
  382. package/dist/integrations/pi/engine/provider-authentication.js +209 -0
  383. package/dist/integrations/pi/engine/resource-catalog.d.ts +50 -0
  384. package/dist/integrations/pi/engine/resource-catalog.js +299 -0
  385. package/dist/integrations/pi/engine/resources/changelog.json +12 -0
  386. package/dist/integrations/pi/engine/runtime-integration.d.ts +53 -0
  387. package/dist/integrations/pi/engine/runtime-integration.js +118 -0
  388. package/dist/integrations/pi/engine/session-events.d.ts +48 -0
  389. package/dist/integrations/pi/engine/session-events.js +223 -0
  390. package/dist/integrations/pi/engine/session-integration.d.ts +67 -0
  391. package/dist/integrations/pi/engine/session-integration.js +195 -0
  392. package/dist/integrations/pi/engine/session-runtime.d.ts +84 -0
  393. package/dist/integrations/pi/engine/session-runtime.js +249 -0
  394. package/dist/integrations/pi/engine/session-selection.d.ts +28 -0
  395. package/dist/integrations/pi/engine/session-selection.js +90 -0
  396. package/dist/integrations/pi/engine/settings-bridge.d.ts +121 -0
  397. package/dist/integrations/pi/engine/settings-bridge.js +514 -0
  398. package/dist/integrations/pi/engine/settings-metadata.d.ts +31 -0
  399. package/dist/integrations/pi/engine/settings-metadata.js +67 -0
  400. package/dist/integrations/pi/engine/settings-port.d.ts +42 -0
  401. package/dist/integrations/pi/engine/settings-port.js +353 -0
  402. package/dist/integrations/pi/engine/tool-rendering.d.ts +13 -0
  403. package/dist/integrations/pi/engine/tool-rendering.js +145 -0
  404. package/dist/integrations/pi/engine/transcript-image-assets.d.ts +11 -0
  405. package/dist/integrations/pi/engine/transcript-image-assets.js +86 -0
  406. package/dist/integrations/pi/engine/transcript-projection.d.ts +39 -0
  407. package/dist/integrations/pi/engine/transcript-projection.js +405 -0
  408. package/dist/integrations/pi/engine/usage-view.d.ts +4 -0
  409. package/dist/integrations/pi/engine/usage-view.js +56 -0
  410. package/dist/integrations/pi/engine/windows-filesystem-hygiene.d.ts +21 -0
  411. package/dist/integrations/pi/engine/windows-filesystem-hygiene.js +55 -0
  412. package/dist/integrations/pi/engine/workflow-contexts.d.ts +66 -0
  413. package/dist/integrations/pi/engine/workflow-contexts.js +360 -0
  414. package/dist/integrations/pi/engine/workflow-runner.d.ts +60 -0
  415. package/dist/integrations/pi/engine/workflow-runner.js +533 -0
  416. package/dist/integrations/pi/engine/workflow-support.d.ts +33 -0
  417. package/dist/integrations/pi/engine/workflow-support.js +352 -0
  418. package/dist/integrations/pi/engine/workflows.d.ts +275 -0
  419. package/dist/integrations/pi/engine/workflows.js +71 -0
  420. package/dist/integrations/pi/startup-public.d.ts +2 -0
  421. package/dist/integrations/pi/startup-public.js +2223 -0
  422. package/dist/integrations/pi/startup-public.manifest.json +12502 -0
  423. package/dist/integrations/pi/tui-runtime/adapter.d.ts +56 -0
  424. package/dist/integrations/pi/tui-runtime/adapter.js +783 -0
  425. package/dist/integrations/pi/tui-runtime/contracts.d.ts +156 -0
  426. package/dist/integrations/pi/tui-runtime/contracts.js +1 -0
  427. package/dist/integrations/pi/tui-runtime/damage-aware-terminal.d.ts +88 -0
  428. package/dist/integrations/pi/tui-runtime/damage-aware-terminal.js +433 -0
  429. package/dist/integrations/pi/tui-runtime/index.d.ts +9 -0
  430. package/dist/integrations/pi/tui-runtime/index.js +5 -0
  431. package/dist/integrations/pi/tui-runtime/input-presentation-coordinator.d.ts +39 -0
  432. package/dist/integrations/pi/tui-runtime/input-presentation-coordinator.js +139 -0
  433. package/dist/integrations/pi/tui-runtime/mouse-report-input.d.ts +13 -0
  434. package/dist/integrations/pi/tui-runtime/mouse-report-input.js +57 -0
  435. package/dist/integrations/pi/tui-runtime/overlay-geometry.d.ts +32 -0
  436. package/dist/integrations/pi/tui-runtime/overlay-geometry.js +158 -0
  437. package/dist/integrations/pi/tui-runtime/presentation-adapter.d.ts +4 -0
  438. package/dist/integrations/pi/tui-runtime/presentation-adapter.js +48 -0
  439. package/dist/native/darwin-arm64/manifest.json +4 -4
  440. package/dist/native/darwin-arm64/process-guardian +0 -0
  441. package/dist/native/linux-x64/manifest.json +3 -3
  442. package/dist/native/linux-x64/process-guardian +0 -0
  443. package/dist/native/win32-x64/manifest.json +3 -3
  444. package/dist/native/win32-x64/process-guardian.exe +0 -0
  445. package/dist/product-identity.d.ts +37 -0
  446. package/dist/product-identity.js +119 -0
  447. package/dist/product-identity.json +85 -0
  448. package/dist/runtime-payload-inventory.json +127148 -0
  449. package/dist/ui/apps/contracts.d.ts +72 -0
  450. package/dist/ui/apps/host.d.ts +42 -0
  451. package/dist/ui/apps/host.js +156 -0
  452. package/dist/ui/apps/index.d.ts +5 -0
  453. package/dist/ui/apps/index.js +3 -0
  454. package/dist/ui/apps/registry.d.ts +12 -0
  455. package/dist/ui/apps/registry.js +33 -0
  456. package/dist/ui/components/dialog-panel.js +49 -0
  457. package/dist/ui/components/frame.d.ts +22 -0
  458. package/dist/ui/components/frame.js +55 -0
  459. package/dist/ui/components/index.d.ts +47 -0
  460. package/dist/ui/components/index.js +25 -0
  461. package/dist/ui/components/line-input.d.ts +68 -0
  462. package/dist/ui/components/line-input.js +224 -0
  463. package/dist/ui/components/list-view.d.ts +60 -0
  464. package/dist/ui/components/list-view.js +82 -0
  465. package/dist/ui/components/mouse.d.ts +25 -0
  466. package/dist/ui/components/mouse.js +70 -0
  467. package/dist/ui/components/progress-status.d.ts +2 -0
  468. package/dist/ui/components/progress-status.js +4 -0
  469. package/dist/ui/components/prompt-input.d.ts +32 -0
  470. package/dist/ui/components/prompt-input.js +51 -0
  471. package/dist/ui/components/scrollbar.d.ts +88 -0
  472. package/dist/ui/components/scrollbar.js +137 -0
  473. package/dist/ui/components/selection-copy.d.ts +24 -0
  474. package/dist/ui/components/selection-copy.js +39 -0
  475. package/dist/ui/components/shortcuts.d.ts +58 -0
  476. package/dist/ui/components/shortcuts.js +82 -0
  477. package/dist/ui/components/spans.d.ts +28 -0
  478. package/dist/ui/components/spans.js +266 -0
  479. package/dist/ui/components/submitted-prompt.d.ts +23 -0
  480. package/dist/ui/components/submitted-prompt.js +50 -0
  481. package/dist/ui/components/surface.d.ts +20 -0
  482. package/dist/ui/components/surface.js +44 -0
  483. package/dist/ui/components/text-selection.d.ts +62 -0
  484. package/dist/ui/components/text-selection.js +210 -0
  485. package/dist/ui/components/text.d.ts +38 -0
  486. package/dist/ui/components/text.js +185 -0
  487. package/dist/ui/components/transcript-viewport.d.ts +173 -0
  488. package/dist/ui/components/transcript-viewport.js +753 -0
  489. package/dist/ui/components/visible-hyperlinks.d.ts +26 -0
  490. package/dist/ui/components/visible-hyperlinks.js +97 -0
  491. package/dist/ui/settings/declarations.d.ts +127 -0
  492. package/dist/ui/settings/declarations.js +124 -0
  493. package/dist/ui/settings/index.d.ts +10 -0
  494. package/dist/ui/settings/index.js +5 -0
  495. package/dist/ui/settings/manager.d.ts +54 -0
  496. package/dist/ui/settings/manager.js +256 -0
  497. package/dist/ui/settings/migrations.d.ts +13 -0
  498. package/dist/ui/settings/migrations.js +92 -0
  499. package/dist/ui/settings/sections.d.ts +52 -0
  500. package/dist/ui/settings/sections.js +112 -0
  501. package/docs/architecture/boundaries.md +17 -13
  502. package/docs/architecture/code-documentation.md +77 -0
  503. package/docs/architecture/history-editor-provenance.md +100 -0
  504. package/docs/architecture/internal-naming.md +93 -0
  505. package/docs/architecture/process-guardian-provenance.md +3 -1
  506. package/docs/architecture/project-structure.md +69 -30
  507. package/docs/architecture/prompt-suggestions.md +68 -0
  508. package/docs/architecture/resource-and-data-policy.md +28 -2
  509. package/docs/architecture/response-copy-delivery.md +85 -0
  510. package/docs/architecture/terminal-host-proof-gate.md +1 -1
  511. package/docs/architecture/terminal-host-spike-evidence.md +1 -1
  512. package/docs/architecture/tool-image-presentation.md +62 -0
  513. package/docs/architecture/toolchain.md +32 -10
  514. package/docs/architecture/ui-reference-provenance.md +61 -6
  515. package/docs/ci-release-runbook.md +256 -79
  516. package/docs/features/launch-profiles.md +24 -17
  517. package/docs/features/modal-content-interaction.md +38 -0
  518. package/docs/features/prompt-history.md +149 -0
  519. package/docs/local-worktree-cleanup.md +212 -0
  520. package/docs/manual-code-streaming-cleanup.md +88 -0
  521. package/docs/manual-ghost-link-baseline.md +89 -0
  522. package/docs/manual-launch-instance-acceptance.md +12 -35
  523. package/docs/manual-owned-ui-checkpoint.md +79 -0
  524. package/docs/manual-pi-boundary-candidate.md +4 -5
  525. package/docs/manual-terminal-colour-check.md +4 -3
  526. package/docs/openspec-archive-automation.md +259 -0
  527. package/docs/repository-governance-live-acceptance.md +77 -0
  528. package/docs/validation.md +100 -0
  529. package/package.json +52 -34
  530. package/dist/src/cli/capabilities.d.ts +0 -15
  531. package/dist/src/cli/capabilities.js +0 -7
  532. package/dist/src/cli/dispatch.d.ts +0 -32
  533. package/dist/src/cli/dispatch.js +0 -142
  534. package/dist/src/cli/index.d.ts +0 -5
  535. package/dist/src/cli/index.js +0 -5
  536. package/dist/src/cli/packages.d.ts +0 -23
  537. package/dist/src/cli/packages.js +0 -84
  538. package/dist/src/cli/version-stats.d.ts +0 -16
  539. package/dist/src/cli/version-stats.js +0 -72
  540. package/dist/src/cli/version.d.ts +0 -2
  541. package/dist/src/cli/version.js +0 -23
  542. package/dist/src/composition/index.d.ts +0 -48
  543. package/dist/src/composition/index.js +0 -258
  544. package/dist/src/features/launch/development-launch.js +0 -28
  545. package/dist/src/features/launch/index.d.ts +0 -7
  546. package/dist/src/features/launch/index.js +0 -7
  547. package/dist/src/features/launch/intent.d.ts +0 -7
  548. package/dist/src/features/launch/intent.js +0 -4
  549. package/dist/src/features/launch/prepare-launch.d.ts +0 -13
  550. package/dist/src/features/launch/prepare-launch.js +0 -21
  551. package/dist/src/features/launch/profile-paths.d.ts +0 -15
  552. package/dist/src/features/launch/profile-paths.js +0 -31
  553. package/dist/src/features/launch/profiles.d.ts +0 -12
  554. package/dist/src/features/launch/profiles.js +0 -26
  555. package/dist/src/features/launch/runtime-selection.d.ts +0 -19
  556. package/dist/src/features/launch/runtime-selection.js +0 -13
  557. package/dist/src/features/owned-ui/customization.d.ts +0 -38
  558. package/dist/src/features/owned-ui/customization.js +0 -108
  559. package/dist/src/features/owned-ui/diagnostics.d.ts +0 -33
  560. package/dist/src/features/owned-ui/diagnostics.js +0 -94
  561. package/dist/src/features/owned-ui/index.d.ts +0 -4
  562. package/dist/src/features/owned-ui/index.js +0 -4
  563. package/dist/src/features/owned-ui/run.d.ts +0 -11
  564. package/dist/src/features/owned-ui/run.js +0 -15
  565. package/dist/src/features/owned-ui/settings-app.d.ts +0 -22
  566. package/dist/src/features/owned-ui/settings-app.js +0 -633
  567. package/dist/src/features/workspace/capabilities.d.ts +0 -31
  568. package/dist/src/features/workspace/capabilities.js +0 -75
  569. package/dist/src/features/workspace/index.d.ts +0 -6
  570. package/dist/src/features/workspace/index.js +0 -6
  571. package/dist/src/features/workspace/presentation.d.ts +0 -30
  572. package/dist/src/features/workspace/presentation.js +0 -70
  573. package/dist/src/features/workspace/reconciliation.d.ts +0 -15
  574. package/dist/src/features/workspace/reconciliation.js +0 -82
  575. package/dist/src/features/workspace/reducer.d.ts +0 -42
  576. package/dist/src/features/workspace/reducer.js +0 -213
  577. package/dist/src/features/workspace/router.d.ts +0 -31
  578. package/dist/src/features/workspace/router.js +0 -124
  579. package/dist/src/features/workspace/store.d.ts +0 -17
  580. package/dist/src/features/workspace/store.js +0 -54
  581. package/dist/src/foundation/agent-engine-contracts/capability-ports.d.ts +0 -95
  582. package/dist/src/foundation/agent-engine-contracts/domain-validation.js +0 -89
  583. package/dist/src/foundation/agent-engine-contracts/domain.d.ts +0 -116
  584. package/dist/src/foundation/agent-engine-contracts/index.d.ts +0 -8
  585. package/dist/src/foundation/agent-engine-contracts/index.js +0 -8
  586. package/dist/src/foundation/agent-engine-contracts/package-ports.d.ts +0 -54
  587. package/dist/src/foundation/launch-guardian/index.d.ts +0 -1
  588. package/dist/src/foundation/launch-guardian/index.js +0 -1
  589. package/dist/src/foundation/launch-guardian/main.d.ts +0 -31
  590. package/dist/src/foundation/launch-guardian/main.js +0 -165
  591. package/dist/src/foundation/lifecycle/index.d.ts +0 -4
  592. package/dist/src/foundation/lifecycle/index.js +0 -4
  593. package/dist/src/foundation/lifecycle/model.d.ts +0 -64
  594. package/dist/src/foundation/lifecycle/model.js +0 -40
  595. package/dist/src/foundation/lifecycle/paths.d.ts +0 -10
  596. package/dist/src/foundation/lifecycle/paths.js +0 -42
  597. package/dist/src/foundation/native-host-protocol/codec.d.ts +0 -11
  598. package/dist/src/foundation/native-host-protocol/codec.js +0 -56
  599. package/dist/src/foundation/native-host-protocol/evidence.d.ts +0 -67
  600. package/dist/src/foundation/native-host-protocol/evidence.js +0 -141
  601. package/dist/src/foundation/native-host-protocol/index.d.ts +0 -4
  602. package/dist/src/foundation/native-host-protocol/index.js +0 -4
  603. package/dist/src/foundation/native-host-protocol/messages.d.ts +0 -56
  604. package/dist/src/foundation/native-host-protocol/messages.js +0 -149
  605. package/dist/src/foundation/native-host-protocol/proof-gate.d.ts +0 -13
  606. package/dist/src/foundation/native-host-protocol/proof-gate.js +0 -33
  607. package/dist/src/foundation/owned-ui-contracts/extension-ui.d.ts +0 -302
  608. package/dist/src/foundation/owned-ui-contracts/index.d.ts +0 -3
  609. package/dist/src/foundation/owned-ui-contracts/index.js +0 -3
  610. package/dist/src/foundation/owned-ui-contracts/model.d.ts +0 -241
  611. package/dist/src/foundation/owned-ui-contracts/validation.d.ts +0 -11
  612. package/dist/src/foundation/owned-ui-contracts/validation.js +0 -395
  613. package/dist/src/foundation/owned-ui-settings/declarations.d.ts +0 -13
  614. package/dist/src/foundation/owned-ui-settings/declarations.js +0 -39
  615. package/dist/src/foundation/owned-ui-settings/index.d.ts +0 -6
  616. package/dist/src/foundation/owned-ui-settings/index.js +0 -6
  617. package/dist/src/foundation/owned-ui-settings/migrations.d.ts +0 -13
  618. package/dist/src/foundation/owned-ui-settings/migrations.js +0 -28
  619. package/dist/src/foundation/owned-ui-settings/sections.d.ts +0 -70
  620. package/dist/src/foundation/owned-ui-settings/sections.js +0 -93
  621. package/dist/src/foundation/owned-ui-settings/session.d.ts +0 -44
  622. package/dist/src/foundation/owned-ui-settings/session.js +0 -145
  623. package/dist/src/foundation/owned-ui-settings/store.d.ts +0 -28
  624. package/dist/src/foundation/owned-ui-settings/store.js +0 -90
  625. package/dist/src/foundation/pi-component-adapter/components.d.ts +0 -4
  626. package/dist/src/foundation/pi-component-adapter/components.js +0 -64
  627. package/dist/src/foundation/pi-component-adapter/conformance.d.ts +0 -17
  628. package/dist/src/foundation/pi-component-adapter/conformance.js +0 -69
  629. package/dist/src/foundation/pi-component-adapter/index.d.ts +0 -13
  630. package/dist/src/foundation/pi-component-adapter/index.js +0 -13
  631. package/dist/src/foundation/pi-component-adapter/resources/builtin-themes.d.ts +0 -165
  632. package/dist/src/foundation/pi-component-adapter/resources/builtin-themes.js +0 -166
  633. package/dist/src/foundation/pi-component-adapter/shell-components.d.ts +0 -6
  634. package/dist/src/foundation/pi-component-adapter/shell-components.js +0 -6
  635. package/dist/src/foundation/pi-component-adapter/shell-editor-autocomplete.d.ts +0 -11
  636. package/dist/src/foundation/pi-component-adapter/shell-editor-autocomplete.js +0 -162
  637. package/dist/src/foundation/pi-component-adapter/shell-extension-ui.d.ts +0 -35
  638. package/dist/src/foundation/pi-component-adapter/shell-extension-ui.js +0 -279
  639. package/dist/src/foundation/pi-component-adapter/shell-footer-status.d.ts +0 -7
  640. package/dist/src/foundation/pi-component-adapter/shell-footer-status.js +0 -189
  641. package/dist/src/foundation/pi-component-adapter/shell-presenters-transcript.d.ts +0 -57
  642. package/dist/src/foundation/pi-component-adapter/shell-presenters-transcript.js +0 -429
  643. package/dist/src/foundation/pi-component-adapter/shell-selectors-dialogs.d.ts +0 -113
  644. package/dist/src/foundation/pi-component-adapter/shell-selectors-dialogs.js +0 -235
  645. package/dist/src/foundation/pi-component-adapter/shell-shared-facade.d.ts +0 -116
  646. package/dist/src/foundation/pi-component-adapter/shell-shared-facade.js +0 -87
  647. package/dist/src/foundation/pi-component-adapter/upstream/adjacent/core/keybindings.d.ts +0 -422
  648. package/dist/src/foundation/pi-component-adapter/upstream/adjacent/core/keybindings.js +0 -296
  649. package/dist/src/foundation/pi-component-adapter/upstream/components/countdown-timer.d.ts +0 -10
  650. package/dist/src/foundation/pi-component-adapter/upstream/components/custom-entry.d.ts +0 -17
  651. package/dist/src/foundation/pi-component-adapter/upstream/components/custom-entry.js +0 -51
  652. package/dist/src/foundation/pi-component-adapter/upstream/components/daxnuts.d.ts +0 -22
  653. package/dist/src/foundation/pi-component-adapter/upstream/components/daxnuts.js +0 -142
  654. package/dist/src/foundation/pi-component-adapter/upstream/components/earendil-announcement.d.ts +0 -4
  655. package/dist/src/foundation/pi-component-adapter/upstream/components/earendil-announcement.js +0 -19
  656. package/dist/src/foundation/pi-component-adapter/upstream/components/extension-editor.d.ts +0 -17
  657. package/dist/src/foundation/pi-component-adapter/upstream/components/extension-editor.js +0 -81
  658. package/dist/src/foundation/pi-component-adapter/upstream/components/first-time-setup.d.ts +0 -24
  659. package/dist/src/foundation/pi-component-adapter/upstream/components/first-time-setup.js +0 -105
  660. package/dist/src/foundation/pi-component-adapter/upstream/components/markdown-transform.d.ts +0 -2
  661. package/dist/src/foundation/pi-component-adapter/upstream/components/markdown-transform.js +0 -18
  662. package/dist/src/foundation/pi-component-adapter/upstream/components/mermaid.js +0 -77
  663. package/dist/src/foundation/pi-component-adapter/upstream/components/owned-editor.d.ts +0 -18
  664. package/dist/src/foundation/pi-component-adapter/upstream/components/owned-editor.js +0 -55
  665. package/dist/src/foundation/pi-component-adapter/upstream/components/scoped-models-selector.d.ts +0 -55
  666. package/dist/src/foundation/pi-component-adapter/upstream/components/scoped-models-selector.js +0 -342
  667. package/dist/src/foundation/pi-component-adapter/upstream/components/session-footer.d.ts +0 -10
  668. package/dist/src/foundation/pi-component-adapter/upstream/components/session-footer.js +0 -120
  669. package/dist/src/foundation/pi-component-adapter/upstream/components/session-selector-search.js +0 -159
  670. package/dist/src/foundation/pi-component-adapter/upstream/components/session-selector.d.ts +0 -95
  671. package/dist/src/foundation/pi-component-adapter/upstream/components/session-selector.js +0 -889
  672. package/dist/src/foundation/pi-component-adapter/upstream/components/skill-invocation-message.d.ts +0 -19
  673. package/dist/src/foundation/pi-component-adapter/upstream/components/skill-invocation-message.js +0 -44
  674. package/dist/src/foundation/pi-component-adapter/upstream/components/status-indicator.d.ts +0 -30
  675. package/dist/src/foundation/pi-component-adapter/upstream/components/status-indicator.js +0 -59
  676. package/dist/src/foundation/pi-component-adapter/upstream/components/tree-selector.d.ts +0 -98
  677. package/dist/src/foundation/pi-component-adapter/upstream/components/tree-selector.js +0 -1272
  678. package/dist/src/foundation/pi-component-adapter/upstream/components/trust-selector.d.ts +0 -33
  679. package/dist/src/foundation/pi-component-adapter/upstream/components/trust-selector.js +0 -76
  680. package/dist/src/foundation/pi-component-adapter/upstream/external-editor.js +0 -39
  681. package/dist/src/foundation/pi-component-adapter/upstream/model-search.d.ts +0 -15
  682. package/dist/src/foundation/pi-component-adapter/upstream/theme/theme-controller.d.ts +0 -25
  683. package/dist/src/foundation/pi-component-adapter/upstream/theme/theme-controller.js +0 -117
  684. package/dist/src/foundation/pi-component-adapter/upstream/theme/theme.d.ts +0 -61
  685. package/dist/src/foundation/pi-component-adapter/upstream/theme/theme.js +0 -326
  686. package/dist/src/foundation/pi-engine-adapter/adapter.d.ts +0 -164
  687. package/dist/src/foundation/pi-engine-adapter/adapter.js +0 -2367
  688. package/dist/src/foundation/pi-engine-adapter/conformance.d.ts +0 -37
  689. package/dist/src/foundation/pi-engine-adapter/conformance.js +0 -130
  690. package/dist/src/foundation/pi-engine-adapter/index.d.ts +0 -10
  691. package/dist/src/foundation/pi-engine-adapter/index.js +0 -10
  692. package/dist/src/foundation/pi-engine-adapter/model-auth-integration.d.ts +0 -30
  693. package/dist/src/foundation/pi-engine-adapter/model-auth-integration.js +0 -61
  694. package/dist/src/foundation/pi-engine-adapter/package-integration.d.ts +0 -13
  695. package/dist/src/foundation/pi-engine-adapter/package-integration.js +0 -112
  696. package/dist/src/foundation/pi-engine-adapter/pi-settings-metadata.json +0 -374
  697. package/dist/src/foundation/pi-engine-adapter/resource-extension-integration.d.ts +0 -31
  698. package/dist/src/foundation/pi-engine-adapter/resource-extension-integration.js +0 -80
  699. package/dist/src/foundation/pi-engine-adapter/runtime-integration.d.ts +0 -35
  700. package/dist/src/foundation/pi-engine-adapter/runtime-integration.js +0 -67
  701. package/dist/src/foundation/pi-engine-adapter/session-integration.d.ts +0 -43
  702. package/dist/src/foundation/pi-engine-adapter/session-integration.js +0 -97
  703. package/dist/src/foundation/pi-engine-adapter/settings-integration.d.ts +0 -55
  704. package/dist/src/foundation/pi-engine-adapter/settings-integration.js +0 -233
  705. package/dist/src/foundation/pi-engine-adapter/workflow-controllers.d.ts +0 -20
  706. package/dist/src/foundation/pi-engine-adapter/workflow-controllers.js +0 -48
  707. package/dist/src/foundation/pi-engine-adapter/workflows.d.ts +0 -173
  708. package/dist/src/foundation/pi-engine-adapter/workflows.js +0 -60
  709. package/dist/src/foundation/pi-owned-ui-integration/index.d.ts +0 -2
  710. package/dist/src/foundation/pi-owned-ui-integration/index.js +0 -2
  711. package/dist/src/foundation/pi-owned-ui-integration/route-host.d.ts +0 -29
  712. package/dist/src/foundation/pi-owned-ui-integration/session-shell.d.ts +0 -106
  713. package/dist/src/foundation/pi-owned-ui-integration/session-shell.js +0 -1518
  714. package/dist/src/foundation/pi-tui-runtime-adapter/adapter.d.ts +0 -39
  715. package/dist/src/foundation/pi-tui-runtime-adapter/adapter.js +0 -493
  716. package/dist/src/foundation/pi-tui-runtime-adapter/conformance.d.ts +0 -18
  717. package/dist/src/foundation/pi-tui-runtime-adapter/conformance.js +0 -145
  718. package/dist/src/foundation/pi-tui-runtime-adapter/contracts.d.ts +0 -120
  719. package/dist/src/foundation/pi-tui-runtime-adapter/index.d.ts +0 -4
  720. package/dist/src/foundation/pi-tui-runtime-adapter/index.js +0 -4
  721. package/dist/src/foundation/pi-tui-runtime-adapter/presentation-adapter.d.ts +0 -4
  722. package/dist/src/foundation/pi-tui-runtime-adapter/presentation-adapter.js +0 -48
  723. package/dist/src/foundation/presentation-contracts/index.d.ts +0 -96
  724. package/dist/src/foundation/process-containment/index.d.ts +0 -5
  725. package/dist/src/foundation/process-containment/index.js +0 -5
  726. package/dist/src/foundation/process-containment/linux-process-inspector.d.ts +0 -6
  727. package/dist/src/foundation/process-containment/linux-process-inspector.js +0 -26
  728. package/dist/src/foundation/process-containment/native-guardian-containment.d.ts +0 -16
  729. package/dist/src/foundation/process-containment/native-guardian-containment.js +0 -139
  730. package/dist/src/foundation/process-containment/windows-process-inspector.d.ts +0 -17
  731. package/dist/src/foundation/process-containment/windows-process-inspector.js +0 -53
  732. package/dist/src/foundation/protocol/client.d.ts +0 -17
  733. package/dist/src/foundation/protocol/client.js +0 -129
  734. package/dist/src/foundation/protocol/index.d.ts +0 -2
  735. package/dist/src/foundation/protocol/index.js +0 -2
  736. package/dist/src/foundation/protocol/messages.d.ts +0 -89
  737. package/dist/src/foundation/protocol/messages.js +0 -99
  738. package/dist/src/foundation/release/bootstrap.d.ts +0 -29
  739. package/dist/src/foundation/release/bootstrap.js +0 -335
  740. package/dist/src/foundation/release/cohort-state.d.ts +0 -70
  741. package/dist/src/foundation/release/cohort-state.js +0 -202
  742. package/dist/src/foundation/release/index.d.ts +0 -10
  743. package/dist/src/foundation/release/index.js +0 -10
  744. package/dist/src/foundation/release/release-gc.d.ts +0 -5
  745. package/dist/src/foundation/release/release-gc.js +0 -16
  746. package/dist/src/foundation/release/release-store.d.ts +0 -43
  747. package/dist/src/foundation/release/release-store.js +0 -175
  748. package/dist/src/foundation/release/release.d.ts +0 -38
  749. package/dist/src/foundation/release/release.js +0 -204
  750. package/dist/src/foundation/release/update-transaction.d.ts +0 -31
  751. package/dist/src/foundation/release/update-transaction.js +0 -89
  752. package/dist/src/foundation/release/update.d.ts +0 -82
  753. package/dist/src/foundation/release/update.js +0 -527
  754. package/dist/src/foundation/storage/control-store.d.ts +0 -61
  755. package/dist/src/foundation/storage/control-store.js +0 -530
  756. package/dist/src/foundation/storage/index.d.ts +0 -1
  757. package/dist/src/foundation/storage/index.js +0 -1
  758. package/dist/src/foundation/structured-agent-runtime/backpressure.d.ts +0 -46
  759. package/dist/src/foundation/structured-agent-runtime/backpressure.js +0 -118
  760. package/dist/src/foundation/structured-agent-runtime/commands.d.ts +0 -52
  761. package/dist/src/foundation/structured-agent-runtime/commands.js +0 -164
  762. package/dist/src/foundation/structured-agent-runtime/handshake.d.ts +0 -41
  763. package/dist/src/foundation/structured-agent-runtime/handshake.js +0 -151
  764. package/dist/src/foundation/structured-agent-runtime/index.d.ts +0 -5
  765. package/dist/src/foundation/structured-agent-runtime/index.js +0 -5
  766. package/dist/src/foundation/structured-agent-runtime/reconnection.d.ts +0 -37
  767. package/dist/src/foundation/structured-agent-runtime/reconnection.js +0 -129
  768. package/dist/src/foundation/structured-agent-runtime/state.d.ts +0 -56
  769. package/dist/src/foundation/structured-agent-runtime/state.js +0 -118
  770. package/dist/src/foundation/supervision/index.d.ts +0 -3
  771. package/dist/src/foundation/supervision/index.js +0 -3
  772. package/dist/src/foundation/supervision/main.d.ts +0 -1
  773. package/dist/src/foundation/supervision/main.js +0 -41
  774. package/dist/src/foundation/supervision/paths.d.ts +0 -1
  775. package/dist/src/foundation/supervision/paths.js +0 -1
  776. package/dist/src/foundation/supervision/server.d.ts +0 -22
  777. package/dist/src/foundation/supervision/server.js +0 -451
  778. package/dist/src/foundation/ui-apps/contracts.d.ts +0 -42
  779. package/dist/src/foundation/ui-apps/host.d.ts +0 -42
  780. package/dist/src/foundation/ui-apps/host.js +0 -152
  781. package/dist/src/foundation/ui-apps/index.d.ts +0 -3
  782. package/dist/src/foundation/ui-apps/index.js +0 -3
  783. package/dist/src/foundation/ui-apps/registry.d.ts +0 -11
  784. package/dist/src/foundation/ui-apps/registry.js +0 -32
  785. package/dist/src/foundation/ui-components/dialog-panel.js +0 -47
  786. package/dist/src/foundation/ui-components/frame.d.ts +0 -21
  787. package/dist/src/foundation/ui-components/frame.js +0 -54
  788. package/dist/src/foundation/ui-components/index.d.ts +0 -18
  789. package/dist/src/foundation/ui-components/index.js +0 -18
  790. package/dist/src/foundation/ui-components/line-input.d.ts +0 -74
  791. package/dist/src/foundation/ui-components/line-input.js +0 -245
  792. package/dist/src/foundation/ui-components/list-view.d.ts +0 -66
  793. package/dist/src/foundation/ui-components/list-view.js +0 -76
  794. package/dist/src/foundation/ui-components/mouse.d.ts +0 -15
  795. package/dist/src/foundation/ui-components/mouse.js +0 -46
  796. package/dist/src/foundation/ui-components/scrollbar.d.ts +0 -62
  797. package/dist/src/foundation/ui-components/scrollbar.js +0 -102
  798. package/dist/src/foundation/ui-components/shortcuts.d.ts +0 -57
  799. package/dist/src/foundation/ui-components/shortcuts.js +0 -81
  800. package/dist/src/foundation/ui-components/spans.d.ts +0 -7
  801. package/dist/src/foundation/ui-components/spans.js +0 -59
  802. package/dist/src/foundation/ui-components/surface.d.ts +0 -20
  803. package/dist/src/foundation/ui-components/surface.js +0 -38
  804. package/dist/src/foundation/ui-components/text.d.ts +0 -24
  805. package/dist/src/foundation/ui-components/text.js +0 -123
  806. package/dist/src/foundation/workspace-contracts/index.d.ts +0 -2
  807. package/dist/src/foundation/workspace-contracts/index.js +0 -2
  808. package/dist/src/foundation/workspace-contracts/model.d.ts +0 -248
  809. package/dist/src/foundation/workspace-contracts/model.js +0 -2
  810. package/dist/src/foundation/workspace-contracts/validation.d.ts +0 -13
  811. package/dist/src/foundation/workspace-contracts/validation.js +0 -335
  812. package/dist/src/product-identity.d.ts +0 -37
  813. package/dist/src/product-identity.js +0 -150
  814. package/dist/src/product-identity.json +0 -99
  815. package/docs/manual-transparent-checkpoint.md +0 -53
  816. /package/dist/{src/foundation/agent-engine-contracts/domain.js → app/session-shell/paste-helper.d.ts} +0 -0
  817. /package/dist/{src/foundation/agent-engine-contracts/ports.js → app/session-shell/paste-text-worker.d.ts} +0 -0
  818. /package/dist/{src/foundation/lifecycle/commands.js → app/session-shell/paste-types.js} +0 -0
  819. /package/dist/{src/foundation/pi-owned-ui-integration/route-host.js → app/session-shell/response-copy-helper.d.ts} +0 -0
  820. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/capability-ports.js +0 -0
  821. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/domain-validation.d.ts +0 -0
  822. /package/dist/{src/foundation/pi-tui-runtime-adapter/contracts.js → contracts/agent-engine/domain.js} +0 -0
  823. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/model.d.ts +0 -0
  824. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/model.js +0 -0
  825. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/package-ports.js +0 -0
  826. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/ports.d.ts +0 -0
  827. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/serialization.d.ts +0 -0
  828. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/serialization.js +0 -0
  829. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/validation.d.ts +0 -0
  830. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/validation.js +0 -0
  831. /package/dist/{src/foundation/owned-ui-contracts → contracts/owned-ui}/extension-ui.js +0 -0
  832. /package/dist/{src/foundation/owned-ui-contracts → contracts/owned-ui}/model.js +0 -0
  833. /package/dist/{src/foundation/presentation-contracts → contracts/presentation}/index.js +0 -0
  834. /package/dist/{src/features → features}/launch/development-launch.d.ts +0 -0
  835. /package/dist/{src/features → features}/launch/initialize-profile.d.ts +0 -0
  836. /package/dist/{src/features → features}/launch/initialize-profile.js +0 -0
  837. /package/dist/{src/foundation → foundation}/lifecycle/commands.d.ts +0 -0
  838. /package/dist/{src/foundation → foundation}/lifecycle/launch-instance.d.ts +0 -0
  839. /package/dist/{src/foundation → foundation}/lifecycle/launch-instance.js +0 -0
  840. /package/dist/{src/foundation → foundation}/process-containment/artifact.d.ts +0 -0
  841. /package/dist/{src/foundation → foundation}/process-containment/artifact.js +0 -0
  842. /package/dist/{src/foundation → foundation}/process-containment/contracts.d.ts +0 -0
  843. /package/dist/{src/foundation → foundation}/process-containment/contracts.js +0 -0
  844. /package/dist/{src/foundation → foundation}/release/cohort-selection.d.ts +0 -0
  845. /package/dist/{src/foundation → foundation}/release/cohort-selection.js +0 -0
  846. /package/dist/{src/foundation → foundation}/release/concurrency.d.ts +0 -0
  847. /package/dist/{src/foundation → foundation}/release/concurrency.js +0 -0
  848. /package/dist/{src/foundation → foundation}/release/process-cleanup.d.ts +0 -0
  849. /package/dist/{src/foundation → foundation}/release/process-cleanup.js +0 -0
  850. /package/dist/{src/foundation → foundation}/release/stable-release.d.ts +0 -0
  851. /package/dist/{src/foundation → foundation}/release/stable-release.js +0 -0
  852. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/theme.d.ts +0 -0
  853. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/theme.js +0 -0
  854. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/countdown-timer.js +0 -0
  855. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/mermaid.d.ts +0 -0
  856. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/session-selector-search.d.ts +0 -0
  857. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/external-editor.d.ts +0 -0
  858. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/model-search.js +0 -0
  859. /package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/public-main-entry.d.ts +0 -0
  860. /package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/public-main-entry.js +0 -0
  861. /package/dist/{src/foundation/ui-apps → ui/apps}/contracts.js +0 -0
  862. /package/dist/{src/foundation/ui-components → ui/components}/dialog-panel.d.ts +0 -0
  863. /package/dist/{src/foundation/ui-components → ui/components}/label.d.ts +0 -0
  864. /package/dist/{src/foundation/ui-components → ui/components}/label.js +0 -0
  865. /package/dist/{src/foundation/ui-components → ui/components}/list-block.d.ts +0 -0
  866. /package/dist/{src/foundation/ui-components → ui/components}/list-block.js +0 -0
  867. /package/dist/{src/foundation/ui-components → ui/components}/pane.d.ts +0 -0
  868. /package/dist/{src/foundation/ui-components → ui/components}/pane.js +0 -0
  869. /package/dist/{src/foundation/ui-components → ui/components}/revision.d.ts +0 -0
  870. /package/dist/{src/foundation/ui-components → ui/components}/revision.js +0 -0
  871. /package/dist/{src/foundation/ui-components → ui/components}/status-line.d.ts +0 -0
  872. /package/dist/{src/foundation/ui-components → ui/components}/status-line.js +0 -0
  873. /package/dist/{src/foundation/ui-components → ui/components}/stepper.d.ts +0 -0
  874. /package/dist/{src/foundation/ui-components → ui/components}/stepper.js +0 -0
  875. /package/dist/{src/foundation/ui-components → ui/components}/theme.d.ts +0 -0
  876. /package/dist/{src/foundation/ui-components → ui/components}/theme.js +0 -0
  877. /package/dist/{src/foundation/ui-components → ui/components}/value-menu.d.ts +0 -0
  878. /package/dist/{src/foundation/ui-components → ui/components}/value-menu.js +0 -0
  879. /package/dist/{src/foundation/owned-ui-settings → ui/settings}/resolution.d.ts +0 -0
  880. /package/dist/{src/foundation/owned-ui-settings → ui/settings}/resolution.js +0 -0
package/README.md CHANGED
@@ -6,107 +6,253 @@
6
6
  npm install --global @timurproko/a1@latest
7
7
  ```
8
8
 
9
- ## Commands
9
+ Any channel can also be installed or updated directly with npm, without the
10
+ `a1 update` commands:
10
11
 
11
12
  ```sh
12
- a1 # A1-owned UI and profile: ~/.a1/agent
13
- a1 version # show Installed, Release (latest), and Next versions
14
- a1 update # update to npm latest
15
- a1 update:next # update to npm next (or a1 update:<commit> for a specific preview)
13
+ # dev channel (next tag)
14
+ npm install -g @timurproko/a1@next
15
+
16
+ # stable release
17
+ npm install -g @timurproko/a1@latest
18
+
19
+ # exact version
20
+ npm install -g @timurproko/a1@0.1.8-dev.107
16
21
  ```
17
22
 
18
- Prerelease builds — what `a1 update:next` installs — add two development profiles
19
- for comparing against pinned Pi and for experimenting against an isolated profile.
20
- A release build does not carry them.
23
+ ## Use
21
24
 
22
25
  ```sh
23
- a1 pi # untouched vanilla Pi oracle: ~/.pi/agent
24
- a1 sandbox # unchanged isolated vanilla Pi profile: ~/.a1/sandbox
26
+ a1 # launch A1 (profile: ~/.a1/agent)
27
+ a1 --help # show all commands (short form: a1 -h)
28
+ a1 --version # show the version (short form: a1 -v)
29
+ a1 update # install the newest stable release
30
+ a1 update --develop # install the current development preview
31
+ a1 update --develop 107 # install numbered preview 107
32
+ a1 update --develop 0.1.8-dev.107 # install that exact preview
33
+ a1 update --models # refresh A1's model catalogs
25
34
  ```
26
35
 
36
+ Stable builds print only their installed version. Development builds also show the
37
+ current development and stable channel versions.
38
+
39
+ Development previews add the Pi comparison profile; release builds do not carry it.
40
+
41
+ ```sh
42
+ a1 pi # vanilla Pi oracle: ~/.pi/agent
43
+ ```
44
+
45
+ Unsupported commands exit quietly without launching anything. The removed
46
+ `update:<preview>` forms are not aliases; use `update --develop`.
47
+
48
+ ## Agent input
49
+
50
+ The agent prompt and Settings search share one input component: neutral white
51
+ bars and an undimmed arrow matching submitted prompts. Thinking-level color is
52
+ shown on the level name in the status bar, not on the input bars.
53
+
54
+ In bare A1, **Ctrl+L cycles the thinking level**. **Shift+Tab is unassigned** and
55
+ performs no agent-input action, including while a suggestion is visible. Model
56
+ selection has **no default shortcut**; use `/models`. Explicit keybinding overrides
57
+ remain configurable, and `/hotkeys` shows the resolved bindings. The `a1 pi`
58
+ comparison profile keeps its original presentation and shortcuts.
59
+
60
+ ## Models
61
+
62
+ Bare A1 has one model command, `/models`, which replaces the pinned `/model` and
63
+ `/scoped-models` pair (those remain in the `a1 pi` comparison profile). The dialog
64
+ lists every authenticated model with `all` and `scoped` filters (Tab), a search box,
65
+ a scope marker before each model id, and the active checkmark after `[provider]`.
66
+ Enter switches to the highlighted model and persists it as the default; Space adds or
67
+ removes it from the Ctrl+P cycling scope for this session only; Ctrl+S saves that scope
68
+ to settings. While the scope or its order differs from the last save, the title reads
69
+ `Models (unsaved)`; Escape closes without saving and keeps the session-only scope.
70
+ `/models <text>` seeds the search instead of switching. The bulk, provider, and reorder
71
+ scope actions keep their existing bindings and appear under `/hotkeys`.
72
+
73
+ ## Reference screens
74
+
75
+ In bare A1, `/changelog` and `/hotkeys` open a full-screen read-only reference
76
+ screen over the session instead of appending a long document to the
77
+ conversation: `What's New` shows the complete pinned changelog and
78
+ `Keyboard Shortcuts` shows the bare-A1 keybinding tables, including extension
79
+ shortcuts as bound when the screen opens. Scroll with ↑/↓, PageUp/PageDown,
80
+ Home/End, the mouse wheel, or the scrollbar rail, which follows the
81
+ `/settings` → Scroll appearance, style, and speed; press `Esc` to close. The
82
+ screen is framed between two border-coloured rules with the hint below, as the
83
+ v2 extension drew it. After
84
+ an upgrade, the release notes newer than the last acknowledged version open the
85
+ same `What's New` screen once at startup while the feed keeps only the
86
+ `Run /changelog to view the full release notes.` hint. If another dialog is up
87
+ at that moment, the screen is not opened for that launch. The `a1 pi`
88
+ comparison profile keeps Pi's in-feed changelog and hotkeys documents.
89
+
90
+ ## Prompt suggestions
91
+
92
+ Bare A1's `/settings` → Agent → Prompt suggestions controls faint next-prompt
93
+ predictions. It is enabled by default and uses one additional background request
94
+ with the selected model for eligible turns. Disabling it takes effect immediately.
95
+ Tab accepts a suggestion as editable text; Enter submits it afterward. The setting
96
+ remains stored in A1's profile, and `a1 pi` is unchanged.
97
+
98
+ Suggestions use the selected model's lowest supported reasoning effort without
99
+ changing your main thinking level. Clear next actions such as `archive it` are
100
+ preferred when consistent with your intent; genuinely unclear cases can remain
101
+ empty. [Private diagnostic capture](docs/architecture/prompt-suggestions.md)
102
+ explains how to distinguish skipped, empty, rejected, and timed-out suggestions.
103
+
104
+ ## Skills
105
+
106
+ Bare A1's `/settings` → Agent → Skills chooses how discovered skills appear in the
107
+ slash-command menu. `collapse` (the default) replaces the per-skill `/skill:<name>`
108
+ entries with one `/skills` command: bare `/skills` opens a searchable Skills dialog,
109
+ `/skills <name> [args]` applies a skill directly (an unknown name reports
110
+ `Unknown skill: <name>`), and typing `/skills:` lists every skill inline so
111
+ `/skills:<name> args` runs as `/skill:<name> args`. With the `skills` row selected in
112
+ the menu, typing `:` completes to `/skills:`. `expand` lists every `/skill:<name>`
113
+ command as before. Both take effect immediately; a typed `/skill:<name>` always
114
+ works, and the engine's own Skill commands toggle still governs whether skills are
115
+ offered at all. The `a1 pi` comparison profile is unchanged.
116
+
117
+ ## Quitting
118
+
119
+ `/quit`, `Ctrl+C` twice, and `Ctrl+D` on an empty prompt end a bare A1 session.
120
+ The last screen dissolves on the alternate screen, the terminal is restored once,
121
+ and only the dim `To resume this session:` hint is printed; the conversation is
122
+ not echoed into your scrollback. `/settings` → Quit chooses the effect (`fall`,
123
+ `dissolve`, `starburst`, `waves`, or `off`) and its duration (300–2000 ms). The
124
+ `a1 pi` comparison profile keeps Pi's `fullscreenExitOutput` behavior.
125
+
126
+ ## Prompt history
127
+
128
+ Bare A1 recalls recent unique prompts across sessions with Up/Down. History is
129
+ stored in a separate profile-local SQLite database at
130
+ `~/.a1/data/history/<profile-id>.sqlite3`, or under `<A1_DATA_DIR>/history` when
131
+ explicitly overridden. Other application data stays in its existing location.
132
+ `/settings` → History controls persistence and the 10-100-entry limit (default
133
+ 100), effective on next start. The new default starts fresh: old platform history
134
+ is neither imported nor automatically deleted. Ordinary upgrades and npm
135
+ uninstall/reinstall preserve saved history. History is unencrypted user text;
136
+ images are not reattached. See
137
+ [prompt history](docs/features/prompt-history.md) for privacy, storage, and removal.
138
+
27
139
  ## Extensions
28
140
 
29
- Pi extension packages install into A1's own profile, so bare `a1` loads them and
30
- `a1 pi` and `a1 sandbox` do not. Sources are Pi's: `npm:`, git, or a local path.
141
+ Pi extension packages install into A1's own profile (`~/.a1/agent`), so bare `a1`
142
+ loads them and `a1 pi` does not. Sources are Pi's: `npm:`, git, or a
143
+ local path.
31
144
 
32
145
  ```sh
33
- a1 install npm:pi-mcp-adapter # install a package into ~/.a1/agent
34
- a1 remove npm:pi-mcp-adapter # remove it again (alias: a1 uninstall)
35
- a1 list # list packages installed for a1
36
- a1 update --extensions # update every installed package
37
- a1 update npm:pi-mcp-adapter # update one of them
38
- a1 update --models # refresh model catalogs
146
+ a1 pi install npm:pi-mcp-adapter # install a package
147
+ a1 pi remove npm:pi-mcp-adapter # remove it (alias: a1 pi uninstall)
148
+ a1 pi list # list installed packages
149
+ a1 pi update --extensions # update every installed package
150
+ a1 pi update npm:pi-mcp-adapter # update one
151
+ a1 pi update --models # refresh A1's model catalogs
39
152
  ```
40
153
 
41
- A running session loads a newly installed package after a restart. Pi's own
42
- profile at `~/.pi/agent` is managed by Pi itself.
154
+ A1 pins the Pi runtime carried by each release, so Pi self-update forms are refused.
155
+ Update A1 itself with `a1 update` or `a1 update --develop`.
156
+
157
+ A running session picks up a newly installed package after a restart.
158
+ Configuration is isolated the same way: bare `a1` reads `~/.a1/agent` (or the
159
+ project), never `~/.pi/agent`. Configure MCP with `/mcp setup` inside bare `a1`.
43
160
 
44
161
  ## Develop
45
162
 
46
163
  ```sh
47
164
  npm ci # install exact locked dependencies
48
165
  npm run build # compile TypeScript and the process guardian into dist
49
- npm start # build and launch an isolated development `a1`
50
- npm run start:pi # build and launch an isolated development `a1 pi`
51
- npm run start:sandbox # build and launch an isolated development `a1 sandbox`
52
- npm run test:fast # typecheck + fast suite, no build needed
53
- npm test # same as test:fast
166
+ npm start # build and launch a development `a1`
167
+ npm run start:pi # build and launch a development `a1 pi`
168
+ npm run test:fast # typecheck + fast suite (alias: npm test)
54
169
  npm run test:full # complete non-physical suite
55
170
  ```
56
171
 
172
+ Create every task worktree at `{working-dir}/.worktrees/<task-id>`, where
173
+ `{working-dir}` is the session's initial working directory. For working directory
174
+ `D:/Git/a1`, use `D:/Git/a1/.worktrees/<task-id>`—never a sibling such as
175
+ `D:/Git/a1-<task-id>`. The primary worktree remains on `develop` for integration only.
176
+
177
+ ## Pull request integration
178
+
179
+ Pull requests whose complete diff is only under `openspec/**`, under `docs/**`,
180
+ exactly the root `README.md`, or a combination of those paths are automatically
181
+ squash-merged after `Development validation required` succeeds. The automation
182
+ reads the complete GitHub changed-file list, including both sides of renames, and
183
+ runs only for trusted branches in this repository.
184
+
185
+ Any other path makes the pull request code/operational. That includes source, tests,
186
+ scripts, workflows, configuration, generated baselines, arbitrary root Markdown,
187
+ and a mixed documentation-plus-code change. Those pull requests remain open after
188
+ CI for local maintainer validation and explicit manual merge; automation disables
189
+ auto-merge if it was armed. Documentation remains exempt from product builds and
190
+ tests, but docs-sensitive generated governance and strict OpenSpec consistency are
191
+ checked before integration.
192
+
193
+ After any same-repository pull request into `develop` merges, trusted automation
194
+ reconciles its remote topic branch. Human merges use the close-event workflow;
195
+ documentation merges authored by `GITHUB_TOKEN` use a synchronous fallback because
196
+ GitHub suppresses recursive workflow events. Both delete only an unprotected live
197
+ ref that still equals the pull request's exact merged head SHA. Fork, advanced,
198
+ reserved, protected, malformed, and unmerged refs are preserved and reported.
199
+
200
+ Specification approval and implementation remain separate pull requests. An
201
+ implementation starts from updated `origin/develop` only after its specification
202
+ has merged and implementation was explicitly requested.
203
+
57
204
  ## Release
58
205
 
59
- Two channels, both published by CI from the exact bytes it validated. Nothing is
60
- ever published from a workstation.
206
+ Two channels, both published by CI from the exact bytes it validated never from
207
+ a workstation.
61
208
 
62
- ### Previews — npm `next`
209
+ ### Development previews
63
210
 
64
- Automatic. Every push to `develop` publishes one, versioned
65
- `<major.minor.patch>-dev.<short commit>` the base from whatever `package.json`
66
- declares, the suffix naming the commit it was built from. It is stamped at publish
67
- time and never committed, so previews cost no commits and need no command, and an
68
- installed preview says exactly which source produced it.
211
+ A preview is `<major.minor.patch>-dev.<pull-request number>`, e.g. `0.1.8-dev.107`.
212
+ The nightly run (`03:17 UTC`) verifies current `origin/develop` and publishes only
213
+ when that source's preview is absent. `npm run develop` requests the same GitHub
214
+ Actions run and waits for it. The published version list is authoritative: an
215
+ unpublished number is refused.
216
+
217
+ Publish:
69
218
 
70
219
  ```sh
71
- a1 update:next # install the newest preview
72
- a1 update:7eabe9e # install the preview built from that commit
220
+ npm run develop # request the preview publish run and wait for it
73
221
  ```
74
222
 
75
- Naming a commit is what the version suffix is for: read it off `a1 version`, a
76
- pull request, or a commit list, and install exactly that build — you never need to
77
- know which version it went out under. A commit that was never published is refused
78
- rather than guessed at. A full preview version works in the same place, so a string
79
- pasted back from `a1 version` is understood too.
80
-
81
- ### Stable — npm `latest`
82
-
83
- One command, from a clean `develop` that matches its remote:
223
+ Install:
84
224
 
85
225
  ```sh
86
- npm run release -- patch # 0.1.1 -> 0.1.2
87
- npm run release -- minor # 0.1.1 -> 0.2.0
88
- npm run release -- major # 0.1.1 -> 1.0.0
89
- npm run release -- 0.4.0 # an exact version
226
+ a1 update --develop 107 # install preview 107
227
+ a1 update --develop 0.1.8-dev.107 # install that exact full preview version
90
228
  ```
91
229
 
92
- It lands the version on `develop` through a pull request that merges itself.
93
- **Landing it is what publishes** — the workflow builds, validates the packed release
94
- on Windows, Linux, and macOS, publishes to npm `latest` with provenance, and only
95
- then writes the `v<version>` tag and records the GitHub Release. The command waits
96
- for that to succeed, then opens the next `-dev` line so previews resume
97
- immediately.
230
+ ### Stable
98
231
 
99
232
  ```sh
100
- a1 update # install the newest stable release
233
+ npm run release -- patch # 0.1.8-dev -> 0.1.8; already-stable 0.1.8 -> 0.1.9
234
+ npm run release -- minor # 0.1.8-dev -> 0.2.0
235
+ npm run release -- major # 0.1.8-dev -> 1.0.0
236
+ npm run release -- 0.4.0 # an exact stable version
101
237
  ```
102
238
 
103
- After a stable publish, `master` fast-forwards to the released commit, so `master`
104
- always points at what npm `latest` serves while `develop` carries the work.
239
+ Run from the repository root on a clean `develop` matching `origin/develop`.
240
+ A target is required; bare `npm run release` displays usage and releases nothing.
241
+ `patch` promotes the current prerelease rather than skipping its stable version.
242
+
243
+ The command prepares a version-only PR in an isolated detached worktree, prints
244
+ its URL, and waits for you to validate and **merge it manually**. Neither this PR
245
+ nor the next-development PR is auto-merged, and green CI alone does not advance
246
+ the release. After the stable PR merges, the command dispatches publication for
247
+ that exact authoritative commit and waits for success. CI validates the packed
248
+ release on Windows, Linux, and macOS, publishes to npm `latest` with provenance,
249
+ then writes the `v<version>` tag and GitHub Release and fast-forwards `master`.
105
250
 
106
- A release that fails leaves nothing behind: no tag, no GitHub Release, no moved
107
- branch. Every version you can see somewhere is a version the registry actually
108
- serves. Release tags are protected from deletion and movement; a wrong tag is
109
- superseded by the next version, never repointed.
251
+ Only after confirmed publication of `0.1.8` does the command prepare the separate
252
+ `0.1.9-dev` PR. It reports development reopened only after you manually merge that
253
+ PR too. Work added to your checkout during either wait is preserved, not reset.
254
+ If publication fails or is uncertain, no reopening PR is prepared. If publication
255
+ succeeded but reopening failed, inspect the reported phase and PR; do not republish
256
+ the immutable stable version.
110
257
 
111
- `docs/ci-release-runbook.md` has the full picture, including what happens when a
112
- publish fails partway.
258
+ `docs/ci-release-runbook.md` has the full picture.
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env node
2
+
3
+ // Protocol: the updater that installed this tree starts this entry with --data-dir and
4
+ // --target-version and reads one JSON progress event per line. The tree activates itself
5
+ // with its own release code, so the updater needs to know nothing else about its layout.
6
+ const { runActivationEntry } = await import("../dist/foundation/release/update-activation.js");
7
+
8
+ process.exitCode = await runActivationEntry(process.argv.slice(2), import.meta.url);
package/bin/cli.js CHANGED
@@ -1,38 +1,60 @@
1
1
  #!/usr/bin/env node
2
2
 
3
+ const commandStartedAtMs = performance.timeOrigin + performance.now();
3
4
  const packageRoot = new URL("..", import.meta.url);
5
+ // Invariant: one terminal module identity per process, decided before any A1 or Pi module loads.
6
+ const [{ installPinnedPiTuiResolver }, { fileURLToPath: toPath }] = await Promise.all([import("./module-resolver.js"), import("node:url")]);
7
+ installPinnedPiTuiResolver(toPath(packageRoot));
8
+ const startup = await import("../dist/foundation/startup/startup-runtime.js");
9
+ const startupProfile = process.argv[2] === "pi" ? "pi" : "a1";
10
+ startup.initializeStartupTrace(process.env, startupProfile, commandStartedAtMs);
11
+ startup.enableEnvironmentCompileCache(process.env);
12
+ await startup.markStartupPhase(process.env, "command-invoked");
4
13
  const { fileURLToPath } = await import("node:url");
5
14
  const { readFile } = await import("node:fs/promises");
6
- const { cliCapabilities, dispatchCli } = await import("../dist/src/cli/index.js");
15
+ const [{ cliCapabilities }, { dispatchCli }] = await Promise.all([
16
+ import("../dist/cli/capabilities.js"),
17
+ import("../dist/cli/dispatch.js"),
18
+ ]);
7
19
 
8
- // Which commands this build exposes follows from the build's own version, so a
20
+ // Compatibility: which commands this build exposes follows from the build's own version, so a
9
21
  // released a1 cannot be argued into offering the development profiles.
10
22
  const capabilities = cliCapabilities(JSON.parse(await readFile(new URL("package.json", packageRoot), "utf8")).version);
11
23
 
12
24
  process.exitCode = await dispatchCli(process.argv.slice(2), {
13
25
  launch: async intent => {
14
- const [{ prepareInteractiveLaunch }, { runBootstrap }] = await Promise.all([
15
- import("../dist/src/features/launch/index.js"),
16
- import("../dist/src/foundation/release/index.js"),
26
+ const [{ prepareInteractiveLaunch }, { runBootstrap }, { releaseCopyIsLaunchable }] = await Promise.all([
27
+ import("../dist/features/launch/prepare-launch.js"),
28
+ import("../dist/foundation/release/bootstrap.js"),
29
+ import("./module-identity.js"),
17
30
  ]);
31
+ const packageRootPath = fileURLToPath(packageRoot);
18
32
  const prepared = await prepareInteractiveLaunch(intent);
19
- return await runBootstrap({ packageRoot: fileURLToPath(packageRoot), launchIntent: intent, environment: prepared.environment });
33
+ return await runBootstrap({
34
+ packageRoot: packageRootPath,
35
+ launchIntent: intent,
36
+ environment: prepared.environment,
37
+ releaseIsLaunchable: releaseCopyIsLaunchable,
38
+ });
20
39
  },
21
40
  version: async () => {
22
- const { runVersionStats } = await import("../dist/src/cli/index.js");
41
+ const { runVersionStats } = await import("../dist/cli/version-stats.js");
23
42
  return await runVersionStats({ packageRoot: fileURLToPath(packageRoot) });
24
43
  },
25
44
  update: async (channel, target) => {
26
- const { runSelfUpdate } = await import("../dist/src/foundation/release/index.js");
45
+ const { runSelfUpdate } = await import("../dist/foundation/release/update.js");
27
46
  return await runSelfUpdate({ packageRoot: fileURLToPath(packageRoot), channel, ...(target === undefined ? {} : { target }) });
28
47
  },
29
48
  packages: async request => {
30
- const [{ runPackageCommand }, { createPiPackagesPort }] = await Promise.all([
31
- import("../dist/src/cli/index.js"),
32
- import("../dist/src/foundation/pi-engine-adapter/index.js"),
49
+ const [{ runPackageCommand }, identity] = await Promise.all([
50
+ import("../dist/cli/packages.js"),
51
+ import("./module-identity.js"),
33
52
  ]);
53
+ identity.configurePinnedPiPublicPackage(fileURLToPath(packageRoot));
54
+ const { createPiPackagesPort } = await import("../dist/integrations/pi/engine/package-integration.js");
34
55
  return await runPackageCommand(request, { createPort: createPiPackagesPort });
35
56
  },
36
57
  }, {
58
+ stdout: message => process.stdout.write(message),
37
59
  stderr: message => process.stderr.write(message),
38
60
  }, capabilities);
package/bin/guardian.js CHANGED
@@ -1,19 +1,29 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- const { fileURLToPath } = await import("node:url");
3
+ const startup = await import("../dist/foundation/startup/startup-runtime.js");
4
+ startup.enableEnvironmentCompileCache(process.env);
5
+ await startup.markStartupPhase(process.env, "guardian-start");
4
6
  const { resolve } = await import("node:path");
5
- const { runLaunchGuardian } = await import("../dist/src/foundation/launch-guardian/index.js");
7
+ const { parseSessionSelection } = await import("../dist/foundation/lifecycle/session-selection.js");
8
+ const { runLaunchGuardian } = await import("../dist/foundation/launch-guardian/main.js");
6
9
 
7
- const releaseRoot = process.env.A1_RELEASE_ROOT ?? fileURLToPath(new URL("..", import.meta.url));
8
- const profileId = process.env.A1_LAUNCH_PROFILE ?? "a1";
10
+ const { readLaunchContext } = await import("../dist/foundation/launch-context/index.js");
11
+ const launchContext = readLaunchContext(process.env, "release");
12
+ const releaseRoot = launchContext.releaseRoot;
13
+ const profileId = readLaunchContext(process.env, "profile").launchProfile;
14
+ // Invariant: the "release" and "profile" requirements above already refused an environment without
15
+ // these values; the checks give the type checker the same certainty.
16
+ if (releaseRoot === undefined || profileId === undefined) throw new Error("A1 launch context is incomplete");
9
17
 
10
- runLaunchGuardian({
18
+ const sessionSelection = parseSessionSelection(process.argv.slice(2));
19
+ Promise.resolve().then(() => runLaunchGuardian({
20
+ ...(sessionSelection === undefined ? {} : { sessionSelection }),
11
21
  profileId,
12
22
  releaseRoot,
13
23
  uiEntry: resolve(releaseRoot, "bin", "ui.js"),
14
24
  environment: process.env,
15
25
  cwd: process.cwd(),
16
- }).then(
26
+ })).then(
17
27
  code => { process.exitCode = code; },
18
28
  error => {
19
29
  console.error(error instanceof Error ? error.message : String(error));
@@ -1,94 +1,82 @@
1
1
  /**
2
- * One pi-tui module identity per process.
2
+ * One pi-tui module identity per process: the check that the resolver hook worked.
3
3
  *
4
- * npm materializes @earendil-works/pi-tui twice under A1's package root: once
5
- * as A1's direct dependency at the node_modules root, and once nested inside
6
- * @earendil-works/pi-coding-agent, whose published npm-shrinkwrap.json makes
7
- * npm build its dependency tree exactly as shrinkwrapped instead of sharing a
8
- * hoisted copy. Both are the same version; npm just cannot tell them apart.
4
+ * bin/module-resolver.js decides identity at the loader by rewriting every pi-tui module
5
+ * URL to the copy pinned Pi resolves. What remains here is the assertion, made by asking
6
+ * Node itself: with the hook installed, resolving `@earendil-works/pi-tui` from A1's own
7
+ * package root must answer with the same real path pinned Pi answers with. When it does not,
8
+ * launch says so loudly and once, instead of leaving a user to discover it as missing
9
+ * extension UI.
9
10
  *
10
- * Two copies means two of every TUI class. Pinned Pi hands extensions the
11
- * nested copy its extension loader aliases the specifier to whatever it
12
- * resolves from its own directory — so an extension's `instanceof` check and
13
- * its prototype patches land on classes A1's renderer never uses. Extension
14
- * chrome silently disappears and routed input dead-ends, with no error.
15
- *
16
- * A1 therefore does not import the specifier at all. Its package declares the
17
- * subpath import `#pi-tui`, resolving to pinned Pi's copy first and to the
18
- * hoisted one only when that is absent — which is exactly the case where there
19
- * is one copy and both sides agree anyway. Every A1 module imports `#pi-tui`,
20
- * so which copy A1 uses is stated in package.json and enforced by Node at
21
- * resolution, rather than arranged by rewriting an installed tree.
22
- *
23
- * What remains here is the check that it worked. The alias names one path
24
- * inside pinned Pi; if a future layout moved that copy, resolution would fall
25
- * back to A1's own and the split would return — silently, which is what made
26
- * this expensive the first time. So launch compares the two resolutions and
27
- * says so when they differ, loudly and once, instead of leaving a user to
28
- * discover it as missing extension UI.
29
- *
30
- * This lives in bin/ (shipped, plain JS) because it inspects dependency
31
- * resolution, which the Pi API boundary policy rightly forbids ordinary
32
- * production code from touching.
11
+ * This lives in bin/ (shipped, plain JS) because it inspects dependency resolution, which
12
+ * the Pi API boundary policy rightly forbids ordinary production code from touching.
33
13
  */
34
14
  import { createRequire } from "node:module";
35
15
  import { existsSync, readFileSync, realpathSync } from "node:fs";
36
16
  import { dirname, join } from "node:path";
37
- import { pathToFileURL } from "node:url";
17
+ import { fileURLToPath, pathToFileURL } from "node:url";
18
+ import { pinnedPiTuiPackageRoot } from "./module-resolver.js";
38
19
 
39
20
  /**
40
- * What A1's own modules resolve `#pi-tui` to, as a real path.
21
+ * @typedef {{ kind: "unified"; path: string } | { kind: "split"; own: string; pinned: string } | { kind: "unresolved"; side: "a1" | "pi"; message: string }} ModuleIdentityOutcome
22
+ */
23
+
24
+
25
+ const OWN_PACKAGE_ROOT = canonical(fileURLToPath(new URL("..", import.meta.url)));
26
+
27
+ /**
28
+ * What A1's own modules resolve `@earendil-works/pi-tui` to, as a real path.
41
29
  *
42
- * The alias is read from the manifest and its entries tried in order, which is
43
- * what Node does for a subpath import: a relative target is a file within the
44
- * package, and a bare one goes through ordinary resolution. Asking Node
45
- * directly is not an option here `import.meta.resolve` ignores the parent it
46
- * is given unless an experimental flag is set, so it would always answer for
47
- * the running process rather than for the installation being inspected.
30
+ * Compatibility: the resolver hook governs ESM loading, and on Node 22 CommonJS resolution does
31
+ * not consult synchronous hooks at all, so the process's own package is measured through the ESM
32
+ * resolver from this file, which sits in that package. Any other root is measured by plain
33
+ * resolution, which is what its own entries would see before installing the hook. A test
34
+ * transformer that offers no `import.meta.resolve` falls back to plain resolution too.
35
+ * @param {string} packageRoot
48
36
  */
49
37
  function resolveOwnPiTui(packageRoot) {
50
- const manifest = JSON.parse(readFileSync(join(packageRoot, "package.json"), "utf8"));
51
- const alias = manifest.imports?.["#pi-tui"];
52
- const targets = Array.isArray(alias) ? alias : alias === undefined ? [] : [alias];
53
- if (targets.length === 0) throw new Error("package.json declares no #pi-tui alias");
54
- for (const target of targets) {
55
- if (typeof target !== "string") continue;
56
- if (target.startsWith("./") || target.startsWith("../")) {
57
- const candidate = join(packageRoot, target);
58
- if (existsSync(candidate)) return canonical(candidate);
59
- continue;
60
- }
61
- try {
62
- return canonical(createRequire(pathToFileURL(join(packageRoot, "package.json")).href).resolve(target));
63
- } catch {
64
- continue;
65
- }
38
+ if (canonical(packageRoot) === OWN_PACKAGE_ROOT && typeof import.meta.resolve === "function") {
39
+ return canonical(fileURLToPath(import.meta.resolve("@earendil-works/pi-tui")));
66
40
  }
67
- throw new Error(`no #pi-tui target resolves: ${targets.join(", ")}`);
41
+ const requireFromRoot = createRequire(pathToFileURL(join(packageRoot, "package.json")).href);
42
+ return canonical(requireFromRoot.resolve("@earendil-works/pi-tui"));
68
43
  }
69
44
 
70
45
  /**
71
- * What pinned Pi resolves the same specifier to, as a real path — asked from
72
- * inside Pi's own directory, which is where Pi asks it.
73
- *
74
- * Pi's directory is located by walking node_modules outward, the way Node
75
- * itself would, rather than by resolving Pi's entry: its `exports` map offers
76
- * no CommonJS condition, so an ordinary require cannot name it. From there a
77
- * require resolves pi-tui, which publishes no `exports` map at all.
46
+ * What pinned Pi resolves `@earendil-works/pi-tui` to, as a real path.
47
+ * @param {string} packageRoot
48
+ */
49
+ export function resolvePinnedPiTui(packageRoot) {
50
+ return canonical(join(pinnedPiTuiPackageRoot(packageRoot), "dist", "index.js"));
51
+ }
52
+
53
+ /**
54
+ * @param {string} packageRoot
55
+ * @param {NodeJS.ProcessEnv} [environment]
78
56
  */
79
- function resolvePinnedPiTui(packageRoot) {
57
+ export function configurePinnedPiPublicPackage(packageRoot, environment = process.env) {
58
+ const pinnedRoot = resolvePinnedPiRoot(packageRoot);
59
+ const manifest = JSON.parse(readFileSync(join(pinnedRoot, "package.json"), "utf8"));
60
+ if (manifest.name !== "@earendil-works/pi-coding-agent" || typeof manifest.version !== "string") {
61
+ throw new Error("pinned Pi public package identity is invalid");
62
+ }
63
+ environment.PI_PACKAGE_DIR = pinnedRoot;
64
+ return { root: pinnedRoot, version: manifest.version };
65
+ }
66
+
67
+ /** @param {string} packageRoot */
68
+ function resolvePinnedPiRoot(packageRoot) {
80
69
  let directory = packageRoot;
81
70
  while (true) {
82
71
  const candidate = join(directory, "node_modules", "@earendil-works", "pi-coding-agent");
83
- if (existsSync(join(candidate, "package.json"))) {
84
- return canonical(createRequire(pathToFileURL(join(candidate, "package.json")).href).resolve("@earendil-works/pi-tui"));
85
- }
72
+ if (existsSync(join(candidate, "package.json"))) return canonical(candidate);
86
73
  const parent = dirname(directory);
87
74
  if (parent === directory) throw new Error("pinned Pi is not installed beneath this package root");
88
75
  directory = parent;
89
76
  }
90
77
  }
91
78
 
79
+ /** @param {string} path */
92
80
  function canonical(path) {
93
81
  try {
94
82
  return realpathSync.native(path);
@@ -98,8 +86,10 @@ function canonical(path) {
98
86
  }
99
87
 
100
88
  /**
101
- * Report whether A1 and pinned Pi resolve pi-tui to the same file.
102
- * Returns a discriminated outcome; never throws.
89
+ * Compare what A1 and pinned Pi resolve. With the resolver hook installed in this process the
90
+ * two agree whatever layout npm built; without it they agree only when npm hoisted one copy.
91
+ * @param {string} packageRoot
92
+ * @returns {ModuleIdentityOutcome}
103
93
  */
104
94
  export function inspectPiTuiModuleIdentity(packageRoot) {
105
95
  let own;
@@ -117,15 +107,32 @@ export function inspectPiTuiModuleIdentity(packageRoot) {
117
107
  return own === pinned ? { kind: "unified", path: own } : { kind: "split", own, pinned };
118
108
  }
119
109
 
110
+ /** @param {unknown} error */
120
111
  function message(error) {
121
112
  return error instanceof Error ? error.message : String(error);
122
113
  }
123
114
 
124
- /** Launch-entry wrapper: warn on stderr when the two sides disagree. */
115
+ /**
116
+ * A release copy is launchable when pinned Pi inside it resolves its terminal package.
117
+ * @param {string} releaseRoot
118
+ */
119
+ export function releaseCopyIsLaunchable(releaseRoot) {
120
+ try {
121
+ resolvePinnedPiTui(releaseRoot);
122
+ return true;
123
+ } catch {
124
+ return false;
125
+ }
126
+ }
127
+
128
+ /**
129
+ * @param {string} packageRoot
130
+ * @param {(message: string) => void} warn
131
+ */
125
132
  export function assertSinglePiTuiModuleAtLaunch(packageRoot, warn) {
126
133
  const outcome = inspectPiTuiModuleIdentity(packageRoot);
127
134
  if (outcome.kind === "split") {
128
- warn(`a1: pi-tui resolves to two different copies (${outcome.own} for a1, ${outcome.pinned} for Pi); extension UI may not render. The #pi-tui alias in a1's package.json no longer names Pi's copy.\n`);
135
+ warn(`a1: pi-tui resolves to two different copies (${outcome.own} for a1, ${outcome.pinned} for Pi); extension UI may not render. The pinned pi-tui resolver hook is not active in this process.\n`);
129
136
  } else if (outcome.kind === "unresolved") {
130
137
  warn(`a1: could not resolve pi-tui from ${outcome.side === "a1" ? "a1" : "pinned Pi"} (${outcome.message}); extension UI may not render.\n`);
131
138
  }