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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (642) hide show
  1. package/README.md +159 -65
  2. package/bin/cli.js +28 -10
  3. package/bin/guardian.js +12 -6
  4. package/bin/module-identity.js +69 -35
  5. package/bin/pi-tui.d.ts +6 -0
  6. package/bin/pi-tui.js +28 -0
  7. package/bin/release-cleanup.js +8 -0
  8. package/bin/supervisor.js +2 -2
  9. package/bin/sync-pi-tui-proxy.js +97 -0
  10. package/bin/ui.js +62 -21
  11. package/bin/update-recovery.js +274 -0
  12. package/bin/warmup.js +27 -0
  13. package/dist/cli/capabilities.d.ts +6 -0
  14. package/dist/{src/cli → cli}/capabilities.js +1 -1
  15. package/dist/{src/cli → cli}/dispatch.d.ts +15 -1
  16. package/dist/cli/dispatch.js +261 -0
  17. package/dist/cli/package-messages.d.ts +26 -0
  18. package/dist/cli/package-messages.js +71 -0
  19. package/dist/{src/cli → cli}/packages.d.ts +11 -2
  20. package/dist/{src/cli → cli}/packages.js +24 -27
  21. package/dist/{src/cli → cli}/version-stats.d.ts +6 -0
  22. package/dist/cli/version-stats.js +112 -0
  23. package/dist/composition/agent-engine-bridge.d.ts +3 -0
  24. package/dist/composition/agent-engine-bridge.js +108 -0
  25. package/dist/composition/index.d.ts +3 -0
  26. package/dist/composition/index.js +3 -0
  27. package/dist/composition/owned-ui.d.ts +35 -0
  28. package/dist/composition/owned-ui.js +118 -0
  29. package/dist/composition/process.d.ts +16 -0
  30. package/dist/composition/process.js +45 -0
  31. package/dist/composition/settings-route-host.d.ts +8 -0
  32. package/dist/composition/settings-route-host.js +75 -0
  33. package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/capability-ports.d.ts +2 -2
  34. package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/domain-validation.js +22 -4
  35. package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/domain.d.ts +17 -0
  36. package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/package-ports.d.ts +6 -0
  37. package/dist/contracts/owned-ui/image-attachments.d.ts +36 -0
  38. package/dist/contracts/owned-ui/image-attachments.js +67 -0
  39. package/dist/contracts/owned-ui/index.d.ts +8 -0
  40. package/dist/contracts/owned-ui/index.js +8 -0
  41. package/dist/{src/foundation/owned-ui-contracts → contracts/owned-ui}/model.d.ts +123 -0
  42. package/dist/contracts/owned-ui/prompt-history.d.ts +55 -0
  43. package/dist/contracts/owned-ui/prompt-history.js +23 -0
  44. package/dist/contracts/owned-ui/prompt-suggestions.d.ts +3 -0
  45. package/dist/contracts/owned-ui/prompt-suggestions.js +44 -0
  46. package/dist/contracts/owned-ui/suggestion-diagnostics.d.ts +22 -0
  47. package/dist/contracts/owned-ui/suggestion-diagnostics.js +9 -0
  48. package/dist/contracts/owned-ui/transcript-lifecycle.d.ts +5 -0
  49. package/dist/contracts/owned-ui/transcript-lifecycle.js +33 -0
  50. package/dist/{src/foundation/owned-ui-contracts → contracts/owned-ui}/validation.d.ts +5 -1
  51. package/dist/{src/foundation/owned-ui-contracts → contracts/owned-ui}/validation.js +129 -4
  52. package/dist/{src/foundation/presentation-contracts → contracts/presentation}/index.d.ts +8 -0
  53. package/dist/{src/features → features}/launch/development-launch.js +11 -3
  54. package/dist/{src/features → features}/launch/index.d.ts +0 -1
  55. package/dist/{src/features → features}/launch/index.js +0 -1
  56. package/dist/features/launch/intent.d.ts +10 -0
  57. package/dist/features/launch/intent.js +8 -0
  58. package/dist/{src/features → features}/launch/prepare-launch.d.ts +0 -2
  59. package/dist/{src/features → features}/launch/prepare-launch.js +2 -9
  60. package/dist/{src/features → features}/launch/profile-paths.d.ts +3 -2
  61. package/dist/{src/features → features}/launch/profile-paths.js +13 -8
  62. package/dist/{src/features → features}/launch/runtime-selection.d.ts +2 -5
  63. package/dist/{src/features → features}/owned-ui/customization.d.ts +3 -1
  64. package/dist/{src/features → features}/owned-ui/customization.js +3 -1
  65. package/dist/{src/features → features}/owned-ui/diagnostics.d.ts +2 -1
  66. package/dist/{src/features → features}/owned-ui/diagnostics.js +1 -0
  67. package/dist/{src/features → features}/owned-ui/index.d.ts +2 -0
  68. package/dist/{src/features → features}/owned-ui/index.js +2 -0
  69. package/dist/features/owned-ui/project-trust-prompt.d.ts +25 -0
  70. package/dist/features/owned-ui/project-trust-prompt.js +149 -0
  71. package/dist/{src/features → features}/owned-ui/run.d.ts +2 -2
  72. package/dist/features/owned-ui/run.js +32 -0
  73. package/dist/features/owned-ui/session-fork-prompt.d.ts +8 -0
  74. package/dist/features/owned-ui/session-fork-prompt.js +34 -0
  75. package/dist/{src/features → features}/owned-ui/settings-app.d.ts +3 -3
  76. package/dist/{src/features → features}/owned-ui/settings-app.js +105 -56
  77. package/dist/features/prompt-history/image-sidecar.d.ts +32 -0
  78. package/dist/features/prompt-history/image-sidecar.js +130 -0
  79. package/dist/features/prompt-history/index.d.ts +4 -0
  80. package/dist/features/prompt-history/index.js +3 -0
  81. package/dist/features/prompt-history/paths.d.ts +5 -0
  82. package/dist/features/prompt-history/paths.js +17 -0
  83. package/dist/features/prompt-history/service.d.ts +54 -0
  84. package/dist/features/prompt-history/service.js +425 -0
  85. package/dist/features/prompt-history/store.d.ts +16 -0
  86. package/dist/features/prompt-history/store.js +223 -0
  87. package/dist/features/prompt-history/worker.d.ts +9 -0
  88. package/dist/features/prompt-history/worker.js +45 -0
  89. package/dist/features/prompt-suggestions/diagnostics.d.ts +18 -0
  90. package/dist/features/prompt-suggestions/diagnostics.js +82 -0
  91. package/dist/features/prompt-suggestions/index.d.ts +1 -0
  92. package/dist/features/prompt-suggestions/index.js +1 -0
  93. package/dist/{src/features → features}/workspace/capabilities.d.ts +1 -1
  94. package/dist/{src/features → features}/workspace/reducer.d.ts +2 -1
  95. package/dist/{src/features → features}/workspace/reducer.js +2 -1
  96. package/dist/{src/features → features}/workspace/router.d.ts +2 -1
  97. package/dist/{src/features → features}/workspace/router.js +1 -0
  98. package/dist/{src/features → features}/workspace/store.d.ts +2 -1
  99. package/dist/{src/features → features}/workspace/store.js +1 -0
  100. package/dist/foundation/launch-context/index.d.ts +59 -0
  101. package/dist/foundation/launch-context/index.js +136 -0
  102. package/dist/{src/foundation → foundation}/launch-guardian/main.d.ts +2 -0
  103. package/dist/{src/foundation → foundation}/launch-guardian/main.js +23 -8
  104. package/dist/{src/foundation → foundation}/lifecycle/index.d.ts +2 -0
  105. package/dist/{src/foundation → foundation}/lifecycle/index.js +2 -0
  106. package/dist/{src/foundation → foundation}/lifecycle/model.d.ts +1 -1
  107. package/dist/{src/foundation → foundation}/lifecycle/model.js +1 -1
  108. package/dist/foundation/lifecycle/paths.d.ts +30 -0
  109. package/dist/{src/foundation → foundation}/lifecycle/paths.js +29 -1
  110. package/dist/foundation/lifecycle/session-selection.d.ts +9 -0
  111. package/dist/foundation/lifecycle/session-selection.js +39 -0
  112. package/dist/foundation/lifecycle/supervisor-startup.d.ts +30 -0
  113. package/dist/foundation/lifecycle/supervisor-startup.js +106 -0
  114. package/dist/{src/foundation → foundation}/native-host-protocol/codec.d.ts +2 -0
  115. package/dist/{src/foundation → foundation}/native-host-protocol/codec.js +2 -0
  116. package/dist/{src/foundation → foundation}/native-host-protocol/messages.d.ts +1 -1
  117. package/dist/{src/foundation → foundation}/native-host-protocol/messages.js +1 -1
  118. package/dist/foundation/process-containment/darwin-process-inspector.d.ts +5 -0
  119. package/dist/foundation/process-containment/darwin-process-inspector.js +7 -0
  120. package/dist/{src/foundation → foundation}/process-containment/index.d.ts +1 -0
  121. package/dist/{src/foundation → foundation}/process-containment/index.js +1 -0
  122. package/dist/{src/foundation → foundation}/process-containment/linux-process-inspector.d.ts +1 -0
  123. package/dist/{src/foundation → foundation}/process-containment/linux-process-inspector.js +1 -0
  124. package/dist/{src/foundation → foundation}/process-containment/native-guardian-containment.d.ts +1 -0
  125. package/dist/{src/foundation → foundation}/process-containment/native-guardian-containment.js +1 -0
  126. package/dist/{src/foundation → foundation}/process-containment/windows-process-inspector.d.ts +3 -1
  127. package/dist/{src/foundation → foundation}/process-containment/windows-process-inspector.js +5 -2
  128. package/dist/{src/foundation → foundation}/protocol/client.d.ts +1 -0
  129. package/dist/{src/foundation → foundation}/protocol/client.js +1 -0
  130. package/dist/{src/foundation → foundation}/protocol/messages.d.ts +1 -0
  131. package/dist/{src/foundation → foundation}/protocol/messages.js +1 -0
  132. package/dist/foundation/release/bootstrap.d.ts +55 -0
  133. package/dist/{src/foundation → foundation}/release/bootstrap.js +219 -46
  134. package/dist/foundation/release/cohort-state.d.ts +157 -0
  135. package/dist/foundation/release/cohort-state.js +472 -0
  136. package/dist/foundation/release/dependency-certification-retention.d.ts +7 -0
  137. package/dist/foundation/release/dependency-certification-retention.js +88 -0
  138. package/dist/foundation/release/dependency-certification.d.ts +24 -0
  139. package/dist/foundation/release/dependency-certification.js +266 -0
  140. package/dist/foundation/release/dependency-layer.d.ts +81 -0
  141. package/dist/foundation/release/dependency-layer.js +466 -0
  142. package/dist/foundation/release/endpoints.d.ts +20 -0
  143. package/dist/foundation/release/endpoints.js +50 -0
  144. package/dist/foundation/release/immutable-platform.d.ts +6 -0
  145. package/dist/foundation/release/immutable-platform.js +13 -0
  146. package/dist/{src/foundation → foundation}/release/index.d.ts +6 -0
  147. package/dist/{src/foundation → foundation}/release/index.js +6 -0
  148. package/dist/foundation/release/release-gc.d.ts +71 -0
  149. package/dist/foundation/release/release-gc.js +764 -0
  150. package/dist/{src/foundation → foundation}/release/release-store.d.ts +9 -3
  151. package/dist/{src/foundation → foundation}/release/release-store.js +74 -14
  152. package/dist/{src/foundation → foundation}/release/release.d.ts +6 -1
  153. package/dist/{src/foundation → foundation}/release/release.js +15 -4
  154. package/dist/foundation/release/restart-certification.d.ts +68 -0
  155. package/dist/foundation/release/restart-certification.js +227 -0
  156. package/dist/foundation/release/update-launch.d.ts +6 -0
  157. package/dist/foundation/release/update-launch.js +17 -0
  158. package/dist/foundation/release/update-recovery.d.ts +76 -0
  159. package/dist/foundation/release/update-recovery.js +356 -0
  160. package/dist/{src/foundation → foundation}/release/update-transaction.d.ts +11 -0
  161. package/dist/{src/foundation → foundation}/release/update-transaction.js +13 -1
  162. package/dist/{src/foundation → foundation}/release/update.d.ts +40 -4
  163. package/dist/{src/foundation → foundation}/release/update.js +196 -78
  164. package/dist/foundation/release/warmup.d.ts +3 -0
  165. package/dist/foundation/release/warmup.js +47 -0
  166. package/dist/foundation/startup/index.d.ts +1 -0
  167. package/dist/foundation/startup/index.js +1 -0
  168. package/dist/foundation/startup/startup-runtime.d.ts +36 -0
  169. package/dist/foundation/startup/startup-runtime.js +142 -0
  170. package/dist/{src/foundation → foundation}/storage/control-store.d.ts +2 -1
  171. package/dist/{src/foundation → foundation}/storage/control-store.js +39 -4
  172. package/dist/{src/foundation → foundation}/structured-agent-runtime/backpressure.d.ts +2 -1
  173. package/dist/{src/foundation → foundation}/structured-agent-runtime/backpressure.js +2 -1
  174. package/dist/{src/foundation → foundation}/structured-agent-runtime/commands.d.ts +2 -1
  175. package/dist/{src/foundation → foundation}/structured-agent-runtime/commands.js +2 -1
  176. package/dist/{src/foundation → foundation}/structured-agent-runtime/handshake.d.ts +1 -1
  177. package/dist/{src/foundation → foundation}/structured-agent-runtime/handshake.js +1 -1
  178. package/dist/{src/foundation → foundation}/structured-agent-runtime/reconnection.d.ts +2 -1
  179. package/dist/{src/foundation → foundation}/structured-agent-runtime/reconnection.js +2 -1
  180. package/dist/{src/foundation → foundation}/structured-agent-runtime/state.d.ts +2 -1
  181. package/dist/{src/foundation → foundation}/structured-agent-runtime/state.js +2 -1
  182. package/dist/foundation/supervision/index.d.ts +3 -0
  183. package/dist/foundation/supervision/index.js +3 -0
  184. package/dist/foundation/supervision/main.d.ts +1 -0
  185. package/dist/foundation/supervision/main.js +84 -0
  186. package/dist/foundation/supervision/paths.d.ts +1 -0
  187. package/dist/foundation/supervision/paths.js +1 -0
  188. package/dist/foundation/supervision/server.d.ts +51 -0
  189. package/dist/{src/foundation → foundation}/supervision/server.js +142 -20
  190. package/dist/foundation/terminal-cleanup/fatal-exit.d.ts +12 -0
  191. package/dist/foundation/terminal-cleanup/fatal-exit.js +85 -0
  192. package/dist/foundation/terminal-cleanup/index.d.ts +2 -0
  193. package/dist/foundation/terminal-cleanup/index.js +2 -0
  194. package/dist/foundation/terminal-cleanup/terminal-reset.d.ts +4 -0
  195. package/dist/foundation/terminal-cleanup/terminal-reset.js +40 -0
  196. package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/components.d.ts +1 -1
  197. package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/conformance.d.ts +1 -0
  198. package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/conformance.js +3 -2
  199. package/dist/integrations/pi/components/editor-interaction.d.ts +38 -0
  200. package/dist/integrations/pi/components/history-editor-loader.d.ts +5 -0
  201. package/dist/integrations/pi/components/history-editor-loader.js +5 -0
  202. package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/index.d.ts +2 -1
  203. package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/index.js +2 -1
  204. package/dist/integrations/pi/components/owned-editor-ux.d.ts +74 -0
  205. package/dist/integrations/pi/components/owned-editor-ux.js +1093 -0
  206. package/dist/integrations/pi/components/path-word-ranges.d.ts +2 -0
  207. package/dist/integrations/pi/components/path-word-ranges.js +37 -0
  208. package/dist/integrations/pi/components/prompt-input-port.d.ts +18 -0
  209. package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/shell-components.d.ts +1 -0
  210. package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/shell-components.js +1 -0
  211. package/dist/integrations/pi/components/shell-editor-autocomplete.js +297 -0
  212. package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/shell-extension-ui.d.ts +1 -1
  213. package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/shell-footer-status.d.ts +4 -4
  214. package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/shell-footer-status.js +58 -23
  215. package/dist/integrations/pi/components/shell-presenters-info.d.ts +43 -0
  216. package/dist/integrations/pi/components/shell-presenters-info.js +114 -0
  217. package/dist/integrations/pi/components/shell-presenters-transcript.d.ts +29 -0
  218. package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/shell-presenters-transcript.js +174 -170
  219. package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/shell-selectors-dialogs.d.ts +8 -4
  220. package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/shell-selectors-dialogs.js +10 -6
  221. package/dist/integrations/pi/components/shell-shared-facade.d.ts +213 -0
  222. package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/shell-shared-facade.js +5 -2
  223. package/dist/integrations/pi/components/submitted-prompt-adapter.d.ts +15 -0
  224. package/dist/integrations/pi/components/submitted-prompt-adapter.js +43 -0
  225. package/dist/integrations/pi/components/tool-image-presentation.d.ts +21 -0
  226. package/dist/integrations/pi/components/tool-image-presentation.js +86 -0
  227. package/dist/integrations/pi/components/tool-result-adapter.d.ts +6 -0
  228. package/dist/integrations/pi/components/tool-result-adapter.js +27 -0
  229. package/dist/integrations/pi/components/transcript-image-resolver.d.ts +7 -0
  230. package/dist/integrations/pi/components/transcript-image-resolver.js +19 -0
  231. package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/adjacent/core/keybindings.d.ts +11 -2
  232. package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/adjacent/core/keybindings.js +41 -3
  233. package/dist/integrations/pi/components/upstream/assets/earendil-image.json +12 -0
  234. package/dist/integrations/pi/components/upstream/components/earendil-announcement.js +42 -0
  235. package/dist/integrations/pi/components/upstream/components/owned-editor.d.ts +40 -0
  236. package/dist/integrations/pi/components/upstream/components/owned-editor.js +166 -0
  237. package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/scoped-models-selector.d.ts +1 -1
  238. package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/scoped-models-selector.js +3 -1
  239. package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/session-footer.d.ts +3 -2
  240. package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/session-footer.js +12 -7
  241. package/dist/integrations/pi/components/upstream/components/tool-execution.d.ts +61 -0
  242. package/dist/integrations/pi/components/upstream/components/tool-execution.js +344 -0
  243. package/dist/integrations/pi/components/upstream/history/editor-core.d.ts +280 -0
  244. package/dist/integrations/pi/components/upstream/history/editor-core.js +2062 -0
  245. package/dist/integrations/pi/components/upstream/history/kill-ring.d.ts +32 -0
  246. package/dist/integrations/pi/components/upstream/history/kill-ring.js +48 -0
  247. package/dist/integrations/pi/components/upstream/history/printable-key.d.ts +1 -0
  248. package/dist/integrations/pi/components/upstream/history/printable-key.js +40 -0
  249. package/dist/integrations/pi/components/upstream/history/text-helpers.d.ts +14 -0
  250. package/dist/integrations/pi/components/upstream/history/text-helpers.js +28 -0
  251. package/dist/integrations/pi/components/upstream/history/undo-stack.d.ts +22 -0
  252. package/dist/integrations/pi/components/upstream/history/undo-stack.js +36 -0
  253. package/dist/integrations/pi/components/upstream/history/word-navigation.d.ts +24 -0
  254. package/dist/integrations/pi/components/upstream/history/word-navigation.js +100 -0
  255. package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/adapter.d.ts +74 -6
  256. package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/adapter.js +1340 -228
  257. package/dist/integrations/pi/engine/changelog.d.ts +2 -0
  258. package/dist/integrations/pi/engine/changelog.js +63 -0
  259. package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/conformance.d.ts +4 -2
  260. package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/conformance.js +15 -5
  261. package/dist/integrations/pi/engine/http-dispatcher.d.ts +4 -0
  262. package/dist/integrations/pi/engine/http-dispatcher.js +25 -0
  263. package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/index.d.ts +4 -0
  264. package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/index.js +4 -0
  265. package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/model-auth-integration.d.ts +2 -1
  266. package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/model-auth-integration.js +1 -0
  267. package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/package-integration.d.ts +1 -1
  268. package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/package-integration.js +32 -26
  269. package/dist/integrations/pi/engine/pending-delivery.d.ts +30 -0
  270. package/dist/integrations/pi/engine/pending-delivery.js +158 -0
  271. package/dist/integrations/pi/engine/project-trust-preflight.d.ts +22 -0
  272. package/dist/integrations/pi/engine/project-trust-preflight.js +50 -0
  273. package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/resource-extension-integration.d.ts +2 -1
  274. package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/resource-extension-integration.js +1 -0
  275. package/dist/integrations/pi/engine/resources/changelog.json +12 -0
  276. package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/runtime-integration.d.ts +19 -1
  277. package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/runtime-integration.js +56 -5
  278. package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/session-integration.d.ts +4 -2
  279. package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/session-integration.js +19 -4
  280. package/dist/integrations/pi/engine/session-selection.d.ts +28 -0
  281. package/dist/integrations/pi/engine/session-selection.js +90 -0
  282. package/dist/integrations/pi/engine/settings-effects.d.ts +66 -0
  283. package/dist/integrations/pi/engine/settings-effects.js +249 -0
  284. package/dist/integrations/pi/engine/settings-integration.d.ts +43 -0
  285. package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/settings-integration.js +102 -108
  286. package/dist/integrations/pi/engine/tool-rendering.d.ts +13 -0
  287. package/dist/integrations/pi/engine/tool-rendering.js +145 -0
  288. package/dist/integrations/pi/engine/transcript-image-assets.d.ts +11 -0
  289. package/dist/integrations/pi/engine/transcript-image-assets.js +86 -0
  290. package/dist/integrations/pi/engine/windows-filesystem-hygiene.d.ts +21 -0
  291. package/dist/integrations/pi/engine/windows-filesystem-hygiene.js +55 -0
  292. package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/workflow-controllers.d.ts +3 -2
  293. package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/workflow-controllers.js +1 -0
  294. package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/workflows.d.ts +19 -2
  295. package/dist/integrations/pi/session-ui/clipboard-diagnostics.d.ts +16 -0
  296. package/dist/integrations/pi/session-ui/clipboard-diagnostics.js +65 -0
  297. package/dist/integrations/pi/session-ui/clipboard-image.d.ts +11 -0
  298. package/dist/integrations/pi/session-ui/clipboard-image.js +38 -0
  299. package/dist/integrations/pi/session-ui/editor-hyperlink-budget.d.ts +9 -0
  300. package/dist/integrations/pi/session-ui/editor-hyperlink-budget.js +23 -0
  301. package/dist/integrations/pi/session-ui/image-preparation-client.d.ts +20 -0
  302. package/dist/integrations/pi/session-ui/image-preparation-client.js +145 -0
  303. package/dist/integrations/pi/session-ui/image-preparation.d.ts +18 -0
  304. package/dist/integrations/pi/session-ui/image-preparation.js +126 -0
  305. package/dist/integrations/pi/session-ui/image-source.d.ts +13 -0
  306. package/dist/integrations/pi/session-ui/image-source.js +171 -0
  307. package/dist/integrations/pi/session-ui/image-worker.d.ts +17 -0
  308. package/dist/integrations/pi/session-ui/image-worker.js +23 -0
  309. package/dist/integrations/pi/session-ui/index.d.ts +5 -0
  310. package/dist/integrations/pi/session-ui/index.js +5 -0
  311. package/dist/integrations/pi/session-ui/paste-executor.d.ts +10 -0
  312. package/dist/integrations/pi/session-ui/paste-executor.js +232 -0
  313. package/dist/integrations/pi/session-ui/paste-helper.d.ts +1 -0
  314. package/dist/integrations/pi/session-ui/paste-helper.js +173 -0
  315. package/dist/integrations/pi/session-ui/paste-preparation-client.d.ts +16 -0
  316. package/dist/integrations/pi/session-ui/paste-preparation-client.js +159 -0
  317. package/dist/integrations/pi/session-ui/paste-protocol.d.ts +78 -0
  318. package/dist/integrations/pi/session-ui/paste-protocol.js +18 -0
  319. package/dist/integrations/pi/session-ui/paste-text-preparation.d.ts +20 -0
  320. package/dist/integrations/pi/session-ui/paste-text-preparation.js +134 -0
  321. package/dist/integrations/pi/session-ui/paste-text-worker.d.ts +1 -0
  322. package/dist/integrations/pi/session-ui/paste-text-worker.js +12 -0
  323. package/dist/integrations/pi/session-ui/path-chip-presentation.d.ts +7 -0
  324. package/dist/integrations/pi/session-ui/path-chip-presentation.js +24 -0
  325. package/dist/integrations/pi/session-ui/prompt-chips.d.ts +72 -0
  326. package/dist/integrations/pi/session-ui/prompt-chips.js +503 -0
  327. package/dist/integrations/pi/session-ui/prompt-history-controller.d.ts +36 -0
  328. package/dist/integrations/pi/session-ui/prompt-history-controller.js +170 -0
  329. package/dist/integrations/pi/session-ui/prompt-suggestion-controller.d.ts +35 -0
  330. package/dist/integrations/pi/session-ui/prompt-suggestion-controller.js +207 -0
  331. package/dist/integrations/pi/session-ui/response-copy-coordinator.d.ts +27 -0
  332. package/dist/integrations/pi/session-ui/response-copy-coordinator.js +189 -0
  333. package/dist/integrations/pi/session-ui/response-copy-helper.d.ts +1 -0
  334. package/dist/integrations/pi/session-ui/response-copy-helper.js +122 -0
  335. package/dist/integrations/pi/session-ui/response-copy-protocol.d.ts +56 -0
  336. package/dist/integrations/pi/session-ui/response-copy-protocol.js +5 -0
  337. package/dist/integrations/pi/session-ui/response-copy-transport.d.ts +31 -0
  338. package/dist/integrations/pi/session-ui/response-copy-transport.js +187 -0
  339. package/dist/integrations/pi/session-ui/route-host.d.ts +5 -0
  340. package/dist/integrations/pi/session-ui/route-host.js +1 -0
  341. package/dist/integrations/pi/session-ui/session-shell-root.d.ts +221 -0
  342. package/dist/integrations/pi/session-ui/session-shell-root.js +1305 -0
  343. package/dist/integrations/pi/session-ui/session-shell.d.ts +55 -0
  344. package/dist/integrations/pi/session-ui/session-shell.js +1792 -0
  345. package/dist/integrations/pi/session-ui/session-viewport-controller.d.ts +56 -0
  346. package/dist/integrations/pi/session-ui/session-viewport-controller.js +569 -0
  347. package/dist/integrations/pi/session-ui/stream-presentation-coalescer.d.ts +29 -0
  348. package/dist/integrations/pi/session-ui/stream-presentation-coalescer.js +79 -0
  349. package/dist/integrations/pi/session-ui/system-clipboard.d.ts +20 -0
  350. package/dist/integrations/pi/session-ui/system-clipboard.js +156 -0
  351. package/dist/integrations/pi/session-ui/text-paste.d.ts +5 -0
  352. package/dist/integrations/pi/session-ui/text-paste.js +16 -0
  353. package/dist/{src/foundation/pi-tui-runtime-adapter → integrations/pi/tui-runtime}/adapter.d.ts +10 -1
  354. package/dist/{src/foundation/pi-tui-runtime-adapter → integrations/pi/tui-runtime}/adapter.js +255 -11
  355. package/dist/{src/foundation/pi-tui-runtime-adapter → integrations/pi/tui-runtime}/contracts.d.ts +32 -6
  356. package/dist/integrations/pi/tui-runtime/contracts.js +1 -0
  357. package/dist/integrations/pi/tui-runtime/damage-aware-terminal.d.ts +81 -0
  358. package/dist/integrations/pi/tui-runtime/damage-aware-terminal.js +424 -0
  359. package/dist/integrations/pi/tui-runtime/index.d.ts +7 -0
  360. package/dist/integrations/pi/tui-runtime/index.js +7 -0
  361. package/dist/integrations/pi/tui-runtime/input-presentation-coordinator.d.ts +39 -0
  362. package/dist/integrations/pi/tui-runtime/input-presentation-coordinator.js +139 -0
  363. package/dist/integrations/pi/tui-runtime/mouse-report-input.d.ts +13 -0
  364. package/dist/integrations/pi/tui-runtime/mouse-report-input.js +59 -0
  365. package/dist/integrations/pi/tui-runtime/overlay-geometry.d.ts +32 -0
  366. package/dist/integrations/pi/tui-runtime/overlay-geometry.js +159 -0
  367. package/dist/{src/foundation/pi-tui-runtime-adapter → integrations/pi/tui-runtime}/presentation-adapter.d.ts +1 -1
  368. package/dist/native/darwin-arm64/manifest.json +4 -4
  369. package/dist/native/darwin-arm64/process-guardian +0 -0
  370. package/dist/native/linux-x64/manifest.json +3 -3
  371. package/dist/native/linux-x64/process-guardian +0 -0
  372. package/dist/native/win32-x64/manifest.json +3 -3
  373. package/dist/native/win32-x64/process-guardian.exe +0 -0
  374. package/dist/{src/product-identity.d.ts → product-identity.d.ts} +4 -4
  375. package/dist/{src/product-identity.js → product-identity.js} +7 -38
  376. package/dist/{src/product-identity.json → product-identity.json} +13 -27
  377. package/dist/runtime-payload-inventory.json +122333 -0
  378. package/dist/{src/foundation/ui-apps → ui/apps}/contracts.d.ts +23 -1
  379. package/dist/{src/foundation/ui-apps → ui/apps}/host.d.ts +1 -1
  380. package/dist/{src/foundation/ui-apps → ui/apps}/host.js +14 -10
  381. package/dist/{src/foundation/ui-apps → ui/apps}/registry.d.ts +1 -0
  382. package/dist/{src/foundation/ui-apps → ui/apps}/registry.js +1 -0
  383. package/dist/{src/foundation/ui-components → ui/components}/dialog-panel.js +5 -3
  384. package/dist/{src/foundation/ui-components → ui/components}/frame.d.ts +1 -0
  385. package/dist/{src/foundation/ui-components → ui/components}/frame.js +1 -0
  386. package/dist/{src/foundation/ui-components → ui/components}/index.d.ts +7 -0
  387. package/dist/{src/foundation/ui-components → ui/components}/index.js +7 -0
  388. package/dist/{src/foundation/ui-components → ui/components}/line-input.d.ts +2 -8
  389. package/dist/{src/foundation/ui-components → ui/components}/line-input.js +7 -28
  390. package/dist/{src/foundation/ui-components → ui/components}/list-view.d.ts +0 -6
  391. package/dist/{src/foundation/ui-components → ui/components}/list-view.js +14 -7
  392. package/dist/{src/foundation/ui-components → ui/components}/mouse.d.ts +10 -0
  393. package/dist/{src/foundation/ui-components → ui/components}/mouse.js +24 -0
  394. package/dist/ui/components/progress-status.d.ts +2 -0
  395. package/dist/ui/components/progress-status.js +4 -0
  396. package/dist/ui/components/prompt-input.d.ts +32 -0
  397. package/dist/ui/components/prompt-input.js +54 -0
  398. package/dist/ui/components/prompt-row.d.ts +14 -0
  399. package/dist/ui/components/prompt-row.js +20 -0
  400. package/dist/{src/foundation/ui-components → ui/components}/scrollbar.d.ts +26 -0
  401. package/dist/{src/foundation/ui-components → ui/components}/scrollbar.js +35 -0
  402. package/dist/ui/components/selection-copy.d.ts +24 -0
  403. package/dist/ui/components/selection-copy.js +39 -0
  404. package/dist/{src/foundation/ui-components → ui/components}/shortcuts.d.ts +1 -0
  405. package/dist/{src/foundation/ui-components → ui/components}/shortcuts.js +1 -0
  406. package/dist/ui/components/spans.d.ts +28 -0
  407. package/dist/ui/components/spans.js +266 -0
  408. package/dist/ui/components/submitted-prompt.d.ts +23 -0
  409. package/dist/ui/components/submitted-prompt.js +50 -0
  410. package/dist/{src/foundation/ui-components → ui/components}/surface.d.ts +0 -5
  411. package/dist/{src/foundation/ui-components → ui/components}/surface.js +1 -5
  412. package/dist/ui/components/text-selection.d.ts +62 -0
  413. package/dist/ui/components/text-selection.js +210 -0
  414. package/dist/{src/foundation/ui-components → ui/components}/text.d.ts +14 -0
  415. package/dist/{src/foundation/ui-components → ui/components}/text.js +67 -5
  416. package/dist/ui/components/transcript-viewport.d.ts +173 -0
  417. package/dist/ui/components/transcript-viewport.js +753 -0
  418. package/dist/ui/components/visible-hyperlinks.d.ts +26 -0
  419. package/dist/ui/components/visible-hyperlinks.js +97 -0
  420. package/dist/{src/foundation/owned-ui-settings → ui/settings}/declarations.d.ts +8 -1
  421. package/dist/ui/settings/declarations.js +94 -0
  422. package/dist/{src/foundation/owned-ui-settings → ui/settings}/migrations.d.ts +1 -1
  423. package/dist/{src/foundation/owned-ui-settings → ui/settings}/migrations.js +28 -2
  424. package/dist/{src/foundation/owned-ui-settings → ui/settings}/sections.d.ts +6 -19
  425. package/dist/{src/foundation/owned-ui-settings → ui/settings}/sections.js +41 -22
  426. package/dist/{src/foundation/owned-ui-settings → ui/settings}/session.d.ts +9 -17
  427. package/dist/ui/settings/session.js +164 -0
  428. package/dist/{src/foundation/owned-ui-settings → ui/settings}/store.d.ts +1 -0
  429. package/dist/{src/foundation/owned-ui-settings → ui/settings}/store.js +2 -1
  430. package/docs/architecture/boundaries.md +14 -10
  431. package/docs/architecture/code-documentation.md +77 -0
  432. package/docs/architecture/history-editor-provenance.md +100 -0
  433. package/docs/architecture/internal-naming.md +91 -0
  434. package/docs/architecture/process-guardian-provenance.md +3 -1
  435. package/docs/architecture/project-structure.md +69 -30
  436. package/docs/architecture/prompt-suggestions.md +68 -0
  437. package/docs/architecture/resource-and-data-policy.md +28 -2
  438. package/docs/architecture/response-copy-delivery.md +83 -0
  439. package/docs/architecture/tool-image-presentation.md +62 -0
  440. package/docs/architecture/toolchain.md +24 -10
  441. package/docs/architecture/ui-reference-provenance.md +59 -5
  442. package/docs/ci-release-runbook.md +236 -79
  443. package/docs/features/launch-profiles.md +24 -17
  444. package/docs/features/modal-content-interaction.md +37 -0
  445. package/docs/features/prompt-history.md +149 -0
  446. package/docs/manual-code-streaming-cleanup.md +88 -0
  447. package/docs/manual-ghost-link-baseline.md +89 -0
  448. package/docs/manual-launch-instance-acceptance.md +12 -35
  449. package/docs/manual-owned-ui-checkpoint.md +78 -0
  450. package/docs/manual-pi-boundary-candidate.md +4 -5
  451. package/docs/manual-terminal-colour-check.md +4 -3
  452. package/docs/openspec-archive-automation.md +124 -0
  453. package/docs/repository-governance-live-acceptance.md +77 -0
  454. package/package.json +45 -28
  455. package/dist/src/cli/capabilities.d.ts +0 -15
  456. package/dist/src/cli/dispatch.js +0 -142
  457. package/dist/src/cli/version-stats.js +0 -72
  458. package/dist/src/composition/index.d.ts +0 -48
  459. package/dist/src/composition/index.js +0 -258
  460. package/dist/src/features/launch/intent.d.ts +0 -7
  461. package/dist/src/features/launch/intent.js +0 -4
  462. package/dist/src/features/launch/profiles.d.ts +0 -12
  463. package/dist/src/features/launch/profiles.js +0 -26
  464. package/dist/src/features/owned-ui/run.js +0 -15
  465. package/dist/src/foundation/lifecycle/paths.d.ts +0 -10
  466. package/dist/src/foundation/owned-ui-contracts/index.d.ts +0 -3
  467. package/dist/src/foundation/owned-ui-contracts/index.js +0 -3
  468. package/dist/src/foundation/owned-ui-settings/declarations.js +0 -39
  469. package/dist/src/foundation/owned-ui-settings/session.js +0 -145
  470. package/dist/src/foundation/pi-component-adapter/shell-editor-autocomplete.js +0 -162
  471. package/dist/src/foundation/pi-component-adapter/shell-presenters-transcript.d.ts +0 -57
  472. package/dist/src/foundation/pi-component-adapter/shell-shared-facade.d.ts +0 -116
  473. package/dist/src/foundation/pi-component-adapter/upstream/components/earendil-announcement.js +0 -19
  474. package/dist/src/foundation/pi-component-adapter/upstream/components/owned-editor.d.ts +0 -18
  475. package/dist/src/foundation/pi-component-adapter/upstream/components/owned-editor.js +0 -55
  476. package/dist/src/foundation/pi-engine-adapter/settings-integration.d.ts +0 -55
  477. package/dist/src/foundation/pi-owned-ui-integration/index.d.ts +0 -2
  478. package/dist/src/foundation/pi-owned-ui-integration/index.js +0 -2
  479. package/dist/src/foundation/pi-owned-ui-integration/route-host.d.ts +0 -29
  480. package/dist/src/foundation/pi-owned-ui-integration/session-shell.d.ts +0 -106
  481. package/dist/src/foundation/pi-owned-ui-integration/session-shell.js +0 -1518
  482. package/dist/src/foundation/pi-tui-runtime-adapter/index.d.ts +0 -4
  483. package/dist/src/foundation/pi-tui-runtime-adapter/index.js +0 -4
  484. package/dist/src/foundation/release/bootstrap.d.ts +0 -29
  485. package/dist/src/foundation/release/cohort-state.d.ts +0 -70
  486. package/dist/src/foundation/release/cohort-state.js +0 -202
  487. package/dist/src/foundation/release/release-gc.d.ts +0 -5
  488. package/dist/src/foundation/release/release-gc.js +0 -16
  489. package/dist/src/foundation/supervision/index.d.ts +0 -3
  490. package/dist/src/foundation/supervision/index.js +0 -3
  491. package/dist/src/foundation/supervision/main.d.ts +0 -1
  492. package/dist/src/foundation/supervision/main.js +0 -41
  493. package/dist/src/foundation/supervision/paths.d.ts +0 -1
  494. package/dist/src/foundation/supervision/paths.js +0 -1
  495. package/dist/src/foundation/supervision/server.d.ts +0 -22
  496. package/dist/src/foundation/ui-components/spans.d.ts +0 -7
  497. package/dist/src/foundation/ui-components/spans.js +0 -59
  498. package/docs/manual-transparent-checkpoint.md +0 -53
  499. /package/dist/{src/cli → cli}/index.d.ts +0 -0
  500. /package/dist/{src/cli → cli}/index.js +0 -0
  501. /package/dist/{src/cli → cli}/version.d.ts +0 -0
  502. /package/dist/{src/cli → cli}/version.js +0 -0
  503. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/capability-ports.js +0 -0
  504. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/domain-validation.d.ts +0 -0
  505. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/domain.js +0 -0
  506. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/index.d.ts +0 -0
  507. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/index.js +0 -0
  508. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/model.d.ts +0 -0
  509. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/model.js +0 -0
  510. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/package-ports.js +0 -0
  511. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/ports.d.ts +0 -0
  512. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/ports.js +0 -0
  513. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/serialization.d.ts +0 -0
  514. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/serialization.js +0 -0
  515. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/validation.d.ts +0 -0
  516. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/validation.js +0 -0
  517. /package/dist/{src/foundation/owned-ui-contracts → contracts/owned-ui}/extension-ui.d.ts +0 -0
  518. /package/dist/{src/foundation/owned-ui-contracts → contracts/owned-ui}/extension-ui.js +0 -0
  519. /package/dist/{src/foundation/owned-ui-contracts → contracts/owned-ui}/model.js +0 -0
  520. /package/dist/{src/foundation/presentation-contracts → contracts/presentation}/index.js +0 -0
  521. /package/dist/{src/foundation/workspace-contracts → contracts/workspace}/index.d.ts +0 -0
  522. /package/dist/{src/foundation/workspace-contracts → contracts/workspace}/index.js +0 -0
  523. /package/dist/{src/foundation/workspace-contracts → contracts/workspace}/model.d.ts +0 -0
  524. /package/dist/{src/foundation/workspace-contracts → contracts/workspace}/model.js +0 -0
  525. /package/dist/{src/foundation/workspace-contracts → contracts/workspace}/validation.d.ts +0 -0
  526. /package/dist/{src/foundation/workspace-contracts → contracts/workspace}/validation.js +0 -0
  527. /package/dist/{src/features → features}/launch/development-launch.d.ts +0 -0
  528. /package/dist/{src/features → features}/launch/initialize-profile.d.ts +0 -0
  529. /package/dist/{src/features → features}/launch/initialize-profile.js +0 -0
  530. /package/dist/{src/features → features}/launch/runtime-selection.js +0 -0
  531. /package/dist/{src/features → features}/workspace/capabilities.js +0 -0
  532. /package/dist/{src/features → features}/workspace/index.d.ts +0 -0
  533. /package/dist/{src/features → features}/workspace/index.js +0 -0
  534. /package/dist/{src/features → features}/workspace/presentation.d.ts +0 -0
  535. /package/dist/{src/features → features}/workspace/presentation.js +0 -0
  536. /package/dist/{src/features → features}/workspace/reconciliation.d.ts +0 -0
  537. /package/dist/{src/features → features}/workspace/reconciliation.js +0 -0
  538. /package/dist/{src/foundation → foundation}/launch-guardian/index.d.ts +0 -0
  539. /package/dist/{src/foundation → foundation}/launch-guardian/index.js +0 -0
  540. /package/dist/{src/foundation → foundation}/lifecycle/commands.d.ts +0 -0
  541. /package/dist/{src/foundation → foundation}/lifecycle/commands.js +0 -0
  542. /package/dist/{src/foundation → foundation}/lifecycle/launch-instance.d.ts +0 -0
  543. /package/dist/{src/foundation → foundation}/lifecycle/launch-instance.js +0 -0
  544. /package/dist/{src/foundation → foundation}/native-host-protocol/evidence.d.ts +0 -0
  545. /package/dist/{src/foundation → foundation}/native-host-protocol/evidence.js +0 -0
  546. /package/dist/{src/foundation → foundation}/native-host-protocol/index.d.ts +0 -0
  547. /package/dist/{src/foundation → foundation}/native-host-protocol/index.js +0 -0
  548. /package/dist/{src/foundation → foundation}/native-host-protocol/proof-gate.d.ts +0 -0
  549. /package/dist/{src/foundation → foundation}/native-host-protocol/proof-gate.js +0 -0
  550. /package/dist/{src/foundation → foundation}/process-containment/artifact.d.ts +0 -0
  551. /package/dist/{src/foundation → foundation}/process-containment/artifact.js +0 -0
  552. /package/dist/{src/foundation → foundation}/process-containment/contracts.d.ts +0 -0
  553. /package/dist/{src/foundation → foundation}/process-containment/contracts.js +0 -0
  554. /package/dist/{src/foundation → foundation}/protocol/index.d.ts +0 -0
  555. /package/dist/{src/foundation → foundation}/protocol/index.js +0 -0
  556. /package/dist/{src/foundation → foundation}/release/cohort-selection.d.ts +0 -0
  557. /package/dist/{src/foundation → foundation}/release/cohort-selection.js +0 -0
  558. /package/dist/{src/foundation → foundation}/release/concurrency.d.ts +0 -0
  559. /package/dist/{src/foundation → foundation}/release/concurrency.js +0 -0
  560. /package/dist/{src/foundation → foundation}/release/process-cleanup.d.ts +0 -0
  561. /package/dist/{src/foundation → foundation}/release/process-cleanup.js +0 -0
  562. /package/dist/{src/foundation → foundation}/release/stable-release.d.ts +0 -0
  563. /package/dist/{src/foundation → foundation}/release/stable-release.js +0 -0
  564. /package/dist/{src/foundation → foundation}/storage/index.d.ts +0 -0
  565. /package/dist/{src/foundation → foundation}/storage/index.js +0 -0
  566. /package/dist/{src/foundation → foundation}/structured-agent-runtime/index.d.ts +0 -0
  567. /package/dist/{src/foundation → foundation}/structured-agent-runtime/index.js +0 -0
  568. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/components.js +0 -0
  569. /package/dist/{src/foundation/pi-owned-ui-integration/route-host.js → integrations/pi/components/editor-interaction.js} +0 -0
  570. /package/dist/{src/foundation/pi-tui-runtime-adapter/contracts.js → integrations/pi/components/prompt-input-port.js} +0 -0
  571. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/resources/builtin-themes.d.ts +0 -0
  572. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/resources/builtin-themes.js +0 -0
  573. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/shell-editor-autocomplete.d.ts +0 -0
  574. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/shell-extension-ui.js +0 -0
  575. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/theme.d.ts +0 -0
  576. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/theme.js +0 -0
  577. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/countdown-timer.d.ts +0 -0
  578. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/countdown-timer.js +0 -0
  579. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/custom-entry.d.ts +0 -0
  580. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/custom-entry.js +0 -0
  581. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/daxnuts.d.ts +0 -0
  582. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/daxnuts.js +0 -0
  583. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/earendil-announcement.d.ts +0 -0
  584. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/extension-editor.d.ts +0 -0
  585. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/extension-editor.js +0 -0
  586. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/first-time-setup.d.ts +0 -0
  587. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/first-time-setup.js +0 -0
  588. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/markdown-transform.d.ts +0 -0
  589. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/markdown-transform.js +0 -0
  590. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/mermaid.d.ts +0 -0
  591. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/mermaid.js +0 -0
  592. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/session-selector-search.d.ts +0 -0
  593. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/session-selector-search.js +0 -0
  594. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/session-selector.d.ts +0 -0
  595. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/session-selector.js +0 -0
  596. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/skill-invocation-message.d.ts +0 -0
  597. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/skill-invocation-message.js +0 -0
  598. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/status-indicator.d.ts +0 -0
  599. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/status-indicator.js +0 -0
  600. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/tree-selector.d.ts +0 -0
  601. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/tree-selector.js +0 -0
  602. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/trust-selector.d.ts +0 -0
  603. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/trust-selector.js +0 -0
  604. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/external-editor.d.ts +0 -0
  605. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/external-editor.js +0 -0
  606. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/model-search.d.ts +0 -0
  607. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/model-search.js +0 -0
  608. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/theme/theme-controller.d.ts +0 -0
  609. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/theme/theme-controller.js +0 -0
  610. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/theme/theme.d.ts +0 -0
  611. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/theme/theme.js +0 -0
  612. /package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/pi-settings-metadata.json +0 -0
  613. /package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/public-main-entry.d.ts +0 -0
  614. /package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/public-main-entry.js +0 -0
  615. /package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/workflows.js +0 -0
  616. /package/dist/{src/foundation/pi-tui-runtime-adapter → integrations/pi/tui-runtime}/conformance.d.ts +0 -0
  617. /package/dist/{src/foundation/pi-tui-runtime-adapter → integrations/pi/tui-runtime}/conformance.js +0 -0
  618. /package/dist/{src/foundation/pi-tui-runtime-adapter → integrations/pi/tui-runtime}/presentation-adapter.js +0 -0
  619. /package/dist/{src/foundation/ui-apps → ui/apps}/contracts.js +0 -0
  620. /package/dist/{src/foundation/ui-apps → ui/apps}/index.d.ts +0 -0
  621. /package/dist/{src/foundation/ui-apps → ui/apps}/index.js +0 -0
  622. /package/dist/{src/foundation/ui-components → ui/components}/dialog-panel.d.ts +0 -0
  623. /package/dist/{src/foundation/ui-components → ui/components}/label.d.ts +0 -0
  624. /package/dist/{src/foundation/ui-components → ui/components}/label.js +0 -0
  625. /package/dist/{src/foundation/ui-components → ui/components}/list-block.d.ts +0 -0
  626. /package/dist/{src/foundation/ui-components → ui/components}/list-block.js +0 -0
  627. /package/dist/{src/foundation/ui-components → ui/components}/pane.d.ts +0 -0
  628. /package/dist/{src/foundation/ui-components → ui/components}/pane.js +0 -0
  629. /package/dist/{src/foundation/ui-components → ui/components}/revision.d.ts +0 -0
  630. /package/dist/{src/foundation/ui-components → ui/components}/revision.js +0 -0
  631. /package/dist/{src/foundation/ui-components → ui/components}/status-line.d.ts +0 -0
  632. /package/dist/{src/foundation/ui-components → ui/components}/status-line.js +0 -0
  633. /package/dist/{src/foundation/ui-components → ui/components}/stepper.d.ts +0 -0
  634. /package/dist/{src/foundation/ui-components → ui/components}/stepper.js +0 -0
  635. /package/dist/{src/foundation/ui-components → ui/components}/theme.d.ts +0 -0
  636. /package/dist/{src/foundation/ui-components → ui/components}/theme.js +0 -0
  637. /package/dist/{src/foundation/ui-components → ui/components}/value-menu.d.ts +0 -0
  638. /package/dist/{src/foundation/ui-components → ui/components}/value-menu.js +0 -0
  639. /package/dist/{src/foundation/owned-ui-settings → ui/settings}/index.d.ts +0 -0
  640. /package/dist/{src/foundation/owned-ui-settings → ui/settings}/index.js +0 -0
  641. /package/dist/{src/foundation/owned-ui-settings → ui/settings}/resolution.d.ts +0 -0
  642. /package/dist/{src/foundation/owned-ui-settings → ui/settings}/resolution.js +0 -0
@@ -1,5 +1,5 @@
1
1
  import { ModelSelectorComponent, type SessionInfo, type SettingsCallbacks, type SettingsConfig } from "@earendil-works/pi-coding-agent";
2
- import type { OwnedUiDialog } from "../owned-ui-contracts/index.js";
2
+ import type { OwnedUiDialog } from "../../../contracts/owned-ui/index.js";
3
3
  import { type TrustDecision, type TrustOption, type TrustUpdate } from "./upstream/components/trust-selector.js";
4
4
  import { type PiShellComponentPort, type PiShellEditorOptions, type PiShellSelectorOption, type PiShellSelectorOptions } from "./shell-shared-facade.js";
5
5
  export declare function createPiShellSelector(options: PiShellSelectorOptions): PiShellComponentPort;
@@ -67,6 +67,7 @@ export declare function createPiShellTreeSelector(options: {
67
67
  readonly onSelect: (id: string) => void;
68
68
  readonly onCancel: () => void;
69
69
  readonly onLabelChange: (entryId: string, label: string | undefined) => void;
70
+ readonly onCopy?: (text: string | undefined) => void;
70
71
  readonly initialSelectedId?: string;
71
72
  readonly initialFilterMode?: "default" | "no-tools" | "user-only" | "labeled-only" | "all";
72
73
  }): PiShellComponentPort;
@@ -87,11 +88,14 @@ export interface PiShellLoginDialogPort extends PiShellComponentPort {
87
88
  showWaiting(message: string): void;
88
89
  showProgress(message: string): void;
89
90
  }
90
- export declare function createPiShellLoginDialog(runtime: Pick<PiShellEditorOptions, "getColumns" | "getRows" | "requestRender">, providerId: string, onComplete: (success: boolean, message?: string) => void, providerName?: string): PiShellLoginDialogPort;
91
+ export declare function createPiShellLoginDialog(runtime: Pick<PiShellEditorOptions, "getColumns" | "getRows" | "requestRender">, providerId: string, onComplete: (success: boolean, message?: string) => void, providerName?: string, title?: string): PiShellLoginDialogPort;
91
92
  export declare function createPiShellArmin(runtime: Pick<PiShellEditorOptions, "getColumns" | "getRows" | "requestRender">): PiShellComponentPort;
92
93
  export declare function createPiShellDaxnuts(runtime: Pick<PiShellEditorOptions, "getColumns" | "getRows" | "requestRender">): PiShellComponentPort;
93
94
  export declare function createPiShellEarendilAnnouncement(): PiShellComponentPort;
94
- export declare function createPiShellOperationLoader(runtime: Pick<PiShellEditorOptions, "getColumns" | "getRows" | "requestRender">, message: string): PiShellComponentPort;
95
+ export interface PiShellOperationLoaderPort extends PiShellComponentPort {
96
+ readonly signal: AbortSignal;
97
+ }
98
+ export declare function createPiShellOperationLoader(runtime: Pick<PiShellEditorOptions, "getColumns" | "getRows" | "requestRender">, message: string): PiShellOperationLoaderPort;
95
99
  export declare function createPiShellReloadBox(): PiShellComponentPort;
96
100
  export interface PiShellAuthProviderOption extends PiShellSelectorOption {
97
101
  readonly providerId: string;
@@ -101,7 +105,7 @@ export interface PiShellAuthProviderOption extends PiShellSelectorOption {
101
105
  readonly source?: string;
102
106
  };
103
107
  }
104
- export declare function createPiShellAuthProviderSelector(mode: "login" | "logout", providers: readonly PiShellAuthProviderOption[], onSelect: (id: string) => void, onCancel: () => void): PiShellComponentPort;
108
+ export declare function createPiShellAuthProviderSelector(mode: "login" | "logout", providers: readonly PiShellAuthProviderOption[], onSelect: (id: string) => void, onCancel: () => void, initialSearchInput?: string): PiShellComponentPort;
105
109
  export declare function createPiShellExtensionSelector(title: string, options: readonly string[], onSelect: (value: string) => void, onCancel: () => void): PiShellComponentPort;
106
110
  export declare function createPiShellThinkingSelector(currentLevel: "off" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max", availableLevels: readonly ("off" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max")[], onSelect: (level: string) => void, onCancel: () => void): PiShellComponentPort;
107
111
  export declare function createPiShellThemeSelector(currentTheme: string, onSelect: (theme: string) => void, onCancel: () => void, onPreview: (theme: string) => void): PiShellComponentPort;
@@ -111,7 +111,10 @@ export function createPiShellSessionSelector(options) {
111
111
  }
112
112
  export function createPiShellTreeSelector(options) {
113
113
  ensureTheme();
114
- return componentPort(new TreeSelectorComponent([...options.tree], options.currentLeafId, options.terminalHeight, options.onSelect, options.onCancel, options.onLabelChange, options.initialSelectedId, options.initialFilterMode));
114
+ const selector = new TreeSelectorComponent([...options.tree], options.currentLeafId, options.terminalHeight, options.onSelect, options.onCancel, options.onLabelChange, options.initialSelectedId, options.initialFilterMode);
115
+ if (options.onCopy)
116
+ selector.onCopy = options.onCopy;
117
+ return componentPort(selector);
115
118
  }
116
119
  export function createPiShellUserMessageSelector(messages, onSelect, onCancel, initialSelectedId) {
117
120
  ensureTheme();
@@ -119,9 +122,9 @@ export function createPiShellUserMessageSelector(messages, onSelect, onCancel, i
119
122
  const list = selector.getMessageList();
120
123
  return componentPort(selector, data => list.handleInput(data));
121
124
  }
122
- export function createPiShellLoginDialog(runtime, providerId, onComplete, providerName) {
125
+ export function createPiShellLoginDialog(runtime, providerId, onComplete, providerName, title) {
123
126
  ensureTheme();
124
- const dialog = new LoginDialogComponent(createTuiFacade(runtime), providerId, onComplete, providerName);
127
+ const dialog = new LoginDialogComponent(createTuiFacade(runtime), providerId, onComplete, providerName, title);
125
128
  return {
126
129
  ...componentPort(dialog),
127
130
  showAuth: (url, instructions) => dialog.showAuth(url, instructions),
@@ -148,7 +151,8 @@ export function createPiShellEarendilAnnouncement() {
148
151
  }
149
152
  export function createPiShellOperationLoader(runtime, message) {
150
153
  ensureTheme();
151
- return componentPort(new BorderedLoader(createTuiFacade(runtime), piTheme(), message));
154
+ const loader = new BorderedLoader(createTuiFacade(runtime), piTheme(), message, { cancellable: true });
155
+ return { ...componentPort(loader), signal: loader.signal };
152
156
  }
153
157
  export function createPiShellReloadBox() {
154
158
  ensureTheme();
@@ -161,7 +165,7 @@ export function createPiShellReloadBox() {
161
165
  container.addChild(new DynamicBorder(borderColor));
162
166
  return componentPort(container);
163
167
  }
164
- export function createPiShellAuthProviderSelector(mode, providers, onSelect, onCancel) {
168
+ export function createPiShellAuthProviderSelector(mode, providers, onSelect, onCancel, initialSearchInput) {
165
169
  ensureTheme();
166
170
  const selector = new OAuthSelectorComponent(mode, providers.map(provider => ({
167
171
  id: provider.providerId,
@@ -172,7 +176,7 @@ export function createPiShellAuthProviderSelector(mode, providers, onSelect, onC
172
176
  const selected = providers.find(provider => provider.providerId === providerId && provider.authType === authType);
173
177
  if (selected)
174
178
  onSelect(selected.id);
175
- }, onCancel);
179
+ }, onCancel, initialSearchInput);
176
180
  return componentPort(selector);
177
181
  }
178
182
  export function createPiShellExtensionSelector(title, options, onSelect, onCancel) {
@@ -0,0 +1,213 @@
1
+ import { visibleWidth, type AutocompleteProvider, type Component, type KeybindingsConfig, type TUI } from "#pi-tui";
2
+ import type { OwnedUiImageAttachment, OwnedUiSessionViewModel, OwnedUiThinkingLevel, OwnedUiTranscriptBlock, SuggestionDecision } from "../../../contracts/owned-ui/index.js";
3
+ import type { HistoryEditorConstructor } from "./history-editor-loader.js";
4
+ import type { PiShellPromptInputPresentation } from "./prompt-input-port.js";
5
+ import type { EditorRecallPort } from "./editor-interaction.js";
6
+ import type { PresentationComponentPort } from "../../../contracts/presentation/index.js";
7
+ /** Terminal-cell width authority used by Pi-rendered component rows. */
8
+ export declare const piShellVisibleWidth: typeof visibleWidth;
9
+ export declare const piShellTruncateToWidth: (text: string, width: number) => string;
10
+ export interface PiShellComponentPort extends PresentationComponentPort {
11
+ }
12
+ export type PiShellClipboardContent = {
13
+ readonly kind: "text";
14
+ readonly text: string;
15
+ } | {
16
+ readonly kind: "image";
17
+ readonly data: string;
18
+ readonly mimeType: string;
19
+ };
20
+ export interface PiShellEditorTextRange {
21
+ readonly start: number;
22
+ readonly end: number;
23
+ }
24
+ export interface PiShellEditorPointerEvent {
25
+ readonly kind: "press" | "motion" | "release";
26
+ readonly button: number;
27
+ readonly column: number;
28
+ /** One-based row relative to the top border of the editor body, excluding its menu. */
29
+ readonly row: number;
30
+ }
31
+ export interface PiShellEditorBodyGeometry {
32
+ /** Zero-based body offset in the most recently rendered component rows. */
33
+ readonly rowOffset: number;
34
+ /** Border-inclusive body height, excluding autocomplete. */
35
+ readonly rowCount: number;
36
+ }
37
+ export interface PiShellEditorPort extends PiShellComponentPort {
38
+ /** Present only for the owned above-prompt autocomplete presentation. */
39
+ bodyGeometry?(): PiShellEditorBodyGeometry;
40
+ readonly recall?: EditorRecallPort;
41
+ readonly historyReplacement?: typeof import("../../../contracts/owned-ui/index.js").PROMPT_HISTORY_EDITOR_REPLACEMENT;
42
+ /** Restores this editor's profile after another Pi component changed the global manager. */
43
+ activateKeybindings(): void;
44
+ keybindingConfig(): KeybindingsConfig;
45
+ reloadKeybindings(): void;
46
+ /** Uses Pi's terminal decoder rather than assuming one terminal escape spelling. */
47
+ matchesTerminalKey(data: string, key: "home" | "end" | "ctrl+home" | "ctrl+end" | "alt+home" | "ctrl+v"): boolean;
48
+ getText(): string;
49
+ setText(text: string): void;
50
+ insertText(text: string): void;
51
+ addToHistory(text: string): void;
52
+ setSubmitEnabled(enabled: boolean): void;
53
+ setSubmitHandler(handler: (text: string) => void): void;
54
+ setInterruptHandler(handler: () => void): void;
55
+ setAutocompleteCommands(commands: readonly PiShellAutocompleteCommand[]): void;
56
+ setPaddingX(padding: number): void;
57
+ setAutocompleteMaxVisible(maxVisible: number): void;
58
+ addAutocompleteProvider(factory: unknown): void;
59
+ setThinkingLevel(level: OwnedUiThinkingLevel): void;
60
+ setPromptSuggestion(text: string | null): void;
61
+ canPresentPromptSuggestion(): boolean;
62
+ promptSuggestionBlockReason?(): SuggestionDecision;
63
+ hasSelection(): boolean;
64
+ ownsPointer(): boolean;
65
+ handlePointer(event: PiShellEditorPointerEvent): boolean;
66
+ pasteClipboard(): boolean;
67
+ cancelPendingPastes?(): void;
68
+ }
69
+ export interface PiShellAutocompleteCommand {
70
+ readonly name: string;
71
+ readonly description?: string;
72
+ readonly argumentHint?: string;
73
+ readonly argumentOptions?: readonly PiShellSelectorOption[];
74
+ }
75
+ export interface PiShellViewComponentPort extends PiShellComponentPort {
76
+ update(view: OwnedUiSessionViewModel): void;
77
+ }
78
+ export type PiShellStatusPlacement = "live" | "dock" | "hidden";
79
+ export interface PiShellStatusPort extends PiShellViewComponentPort {
80
+ setWorkingOverride(message: string | undefined): void;
81
+ setOutputPad(padding: 0 | 1): void;
82
+ /** Semantic row placement; callers must not inspect rendered text. */
83
+ placement(): PiShellStatusPlacement;
84
+ renderDock(width: number): readonly string[];
85
+ renderLive(width: number): readonly string[];
86
+ }
87
+ export interface PiShellQueuedInputPort extends PiShellComponentPort {
88
+ update(submissions: readonly string[]): void;
89
+ }
90
+ export interface PiShellHeaderPort extends PiShellComponentPort {
91
+ readonly expanded: boolean;
92
+ setExpanded(expanded: boolean): void;
93
+ }
94
+ export type PiShellResourceSection = "Context" | "Skills" | "Prompts" | "Extensions" | "Themes";
95
+ export interface PiShellResourceEntry {
96
+ readonly section: PiShellResourceSection;
97
+ readonly label: string;
98
+ readonly sourcePath: string | null;
99
+ readonly diagnostic?: string | null;
100
+ }
101
+ export interface PiShellLoadedResourcesPort extends PiShellComponentPort {
102
+ setExpanded(expanded: boolean): void;
103
+ }
104
+ export interface PiShellImageAssetResolver {
105
+ resolve(assetId: string): OwnedUiImageAttachment | null;
106
+ }
107
+ export interface PiShellExtensionRendererResolver {
108
+ getMessageRenderer(customType: string): unknown;
109
+ getToolDefinition(toolName: string): unknown;
110
+ getShortcuts?(bindings: KeybindingsConfig): readonly {
111
+ readonly key: string;
112
+ readonly description: string;
113
+ }[];
114
+ }
115
+ export interface PiShellTranscriptComponentPort extends PiShellComponentPort {
116
+ readonly id: string;
117
+ readonly revision: number;
118
+ readonly presentationRevision?: number;
119
+ update(block: OwnedUiTranscriptBlock): void;
120
+ setExpanded(expanded: boolean): void;
121
+ setOutputPad(padding: 0 | 1): void;
122
+ setHideThinkingBlock(hidden: boolean): void;
123
+ setMermaidRenderingMode(mode: "off" | "final" | "streaming"): void;
124
+ setImagePresentation(showImages: boolean, imageWidthCells: number): void;
125
+ }
126
+ export interface PiShellStartupNotice {
127
+ readonly kind: "info" | "warning" | "error";
128
+ readonly message: string;
129
+ }
130
+ export interface PiShellHeaderOptions {
131
+ readonly getKeybindings?: () => KeybindingsConfig;
132
+ readonly quiet?: boolean;
133
+ readonly expanded?: boolean;
134
+ readonly notices?: readonly PiShellStartupNotice[];
135
+ readonly resources?: readonly PiShellResourceEntry[];
136
+ }
137
+ /** An owned paste reserves its edit immediately and acknowledges completion only after insertion. */
138
+ export interface PiShellPasteReservation {
139
+ readonly marker: string;
140
+ readonly result: Promise<string>;
141
+ complete?(): void;
142
+ isCurrent?(): boolean;
143
+ }
144
+ export interface PiShellEditorOptions {
145
+ readonly persistentHistory?: boolean;
146
+ readonly historyEditor?: HistoryEditorConstructor;
147
+ /** Bare A1 adds ergonomic aliases while comparison profiles retain Pi defaults. */
148
+ readonly keybindingProfile?: "pi" | "a1";
149
+ readonly getColumns: () => number;
150
+ readonly getRows: () => number;
151
+ readonly requestRender: () => void;
152
+ readonly onSubmit: (text: string) => void;
153
+ readonly onChange?: (text: string) => void;
154
+ readonly onInterrupt?: () => void;
155
+ readonly onClear?: () => void;
156
+ readonly onExit?: () => void;
157
+ readonly onSuspend?: () => void;
158
+ readonly onExternalEditor?: () => void;
159
+ readonly onPasteImage?: () => void;
160
+ readonly onExtensionShortcut?: (data: string) => boolean;
161
+ readonly onModelSelect?: () => void;
162
+ readonly onModelCycle?: ((direction: "forward" | "backward") => void) | undefined;
163
+ readonly onThinkingCycle?: (() => void) | undefined;
164
+ readonly onThinkingToggle?: (() => void) | undefined;
165
+ readonly onToolsExpand?: (() => void) | undefined;
166
+ readonly onMessageCopy?: (() => void) | undefined;
167
+ readonly onFollowUp?: (() => void) | undefined;
168
+ readonly onDequeue?: (() => void) | undefined;
169
+ readonly onPromptSuggestionAccepted?: (text: string) => void;
170
+ readonly onCopyText?: (text: string) => void;
171
+ readonly readClipboardContent?: (signal?: AbortSignal) => Promise<PiShellClipboardContent | null>;
172
+ readonly beginClipboardPaste?: () => PiShellPasteReservation;
173
+ readonly beginTextPaste?: (text: string) => PiShellPasteReservation;
174
+ readonly deferTextPaste?: (text: string) => boolean;
175
+ readonly onPasteRejected?: (error: unknown) => void;
176
+ readonly onPasteInput?: (bytes: number) => void;
177
+ readonly editorHiddenRanges?: (line: string) => readonly PiShellEditorTextRange[];
178
+ readonly transformPastedContent?: (content: PiShellClipboardContent) => string;
179
+ readonly editorAtomicRanges?: (line: string) => readonly PiShellEditorTextRange[];
180
+ readonly expandCopiedEditorText?: (text: string) => string;
181
+ readonly paintEditorSelection?: (line: string, from: number, to: number, atomic: boolean) => string;
182
+ /** Row indices restart at zero for each complete owned editor decoration pass. */
183
+ readonly decorateEditorRow?: (row: string, width: number, rowIndex: number) => string;
184
+ readonly cwd?: string;
185
+ readonly agentDir?: string;
186
+ readonly autocompleteCommands?: readonly PiShellAutocompleteCommand[];
187
+ readonly promptPresentation?: {
188
+ readonly input: PiShellPromptInputPresentation;
189
+ readonly styleSuggestion: (text: string) => string;
190
+ readonly styleSuggestionCaret: (text: string) => string;
191
+ };
192
+ }
193
+ export interface PiShellSelectorOption {
194
+ readonly id: string;
195
+ readonly label: string;
196
+ readonly description?: string;
197
+ }
198
+ export interface PiShellSelectorOptions {
199
+ readonly title?: string;
200
+ readonly options: readonly PiShellSelectorOption[];
201
+ readonly maxVisible?: number;
202
+ readonly onSelect?: (id: string) => void;
203
+ readonly onCancel?: () => void;
204
+ }
205
+ export declare function createTuiFacade(options: Pick<PiShellEditorOptions, "getColumns" | "getRows" | "requestRender"> & {
206
+ readonly onSubmit?: (text: string) => void;
207
+ }): TUI;
208
+ export declare function componentPort(component: Component, handleInput?: (data: string) => void): PiShellComponentPort;
209
+ export declare function componentFromPort(port: PiShellComponentPort): Component;
210
+ export declare function formatSessionTokens(count: number): string;
211
+ export declare function isAutocompleteProvider(value: unknown): value is AutocompleteProvider;
212
+ export declare function isRecord(value: unknown): value is Record<string, unknown>;
213
+ export declare function ensureTheme(): void;
@@ -1,7 +1,10 @@
1
- import { setKeybindings, } from "#pi-tui";
1
+ import { setKeybindings, visibleWidth, truncateToWidth, } from "#pi-tui";
2
2
  import { KeybindingsManager, } from "./upstream/adjacent/core/keybindings.js";
3
3
  import { ensurePiTheme, } from "./theme.js";
4
- // Pinned from packages/coding-agent/src/core/slash-commands.ts at 914cf14.
4
+ /** Terminal-cell width authority used by Pi-rendered component rows. */
5
+ export const piShellVisibleWidth = visibleWidth;
6
+ export const piShellTruncateToWidth = (text, width) => truncateToWidth(text, width, "");
7
+ // Provenance: pinned from packages/coding-agent/src/core/slash-commands.ts at 914cf14.
5
8
  export function createTuiFacade(options) {
6
9
  const children = [];
7
10
  const terminal = {
@@ -0,0 +1,15 @@
1
+ import { type Component } from "#pi-tui";
2
+ import type { OwnedUiTranscriptBlock } from "../../../contracts/owned-ui/index.js";
3
+ export interface PiShellSubmittedPromptComposer {
4
+ readonly layout: (width: number, source?: Date | number | null) => {
5
+ readonly contentWidth: number;
6
+ };
7
+ readonly compose: (contentRows: readonly string[], width: number, source?: Date | number | null, style?: {
8
+ readonly prefix?: (text: string) => string;
9
+ readonly timestamp?: (text: string) => string;
10
+ }) => readonly string[];
11
+ }
12
+ /** Branch summaries share the block kind but do not participate in prompt navigation. */
13
+ export declare function isPiPromptStyleCompaction(block: OwnedUiTranscriptBlock): boolean;
14
+ /** Pi owns Markdown and theme adaptation; the injected composer owns neutral row geometry. */
15
+ export declare function createPiSubmittedPromptComponent(block: OwnedUiTranscriptBlock, composer: PiShellSubmittedPromptComposer, heading?: string): Component;
@@ -0,0 +1,43 @@
1
+ import { getMarkdownTheme } from "@earendil-works/pi-coding-agent";
2
+ import { Box, Markdown, Text } from "#pi-tui";
3
+ import { piTheme } from "./theme.js";
4
+ /** Branch summaries share the block kind but do not participate in prompt navigation. */
5
+ export function isPiPromptStyleCompaction(block) {
6
+ return block.kind === "compaction" && block.status === "finalized"
7
+ && typeof block.payload === "object" && block.payload !== null
8
+ && block.payload.role === "compactionSummary";
9
+ }
10
+ /** Pi owns Markdown and theme adaptation; the injected composer owns neutral row geometry. */
11
+ export function createPiSubmittedPromptComponent(block, composer, heading) {
12
+ const timestamp = numericTimestamp(block);
13
+ // Invariant: presentation-only chrome stays outside the summary's Markdown parser and stored text.
14
+ const header = heading === undefined ? undefined : new Text(heading, 0, 0);
15
+ const markdown = new Markdown(block.text, 0, 0, getMarkdownTheme(), { color: content => piTheme().fg("userMessageText", content) }, { preserveOrderedListMarkers: true, preserveBackslashEscapes: true });
16
+ const content = {
17
+ render(width) {
18
+ const layout = composer.layout(width, timestamp);
19
+ const bodyRows = markdown.render(layout.contentWidth);
20
+ const rows = header === undefined ? bodyRows : [
21
+ ...header.render(layout.contentWidth).map(row => piTheme().fg("userMessageText", row)),
22
+ ...(bodyRows.length === 0 ? [] : ["", ...bodyRows]),
23
+ ];
24
+ return [...composer.compose(rows, width, timestamp, {
25
+ prefix: text => piTheme().fg("muted", text),
26
+ timestamp: text => piTheme().fg("dim", text),
27
+ })];
28
+ },
29
+ invalidate() {
30
+ header?.invalidate();
31
+ markdown.invalidate();
32
+ },
33
+ };
34
+ const box = new Box(0, 0, line => piTheme().bg("userMessageBg", line));
35
+ box.addChild(content);
36
+ return box;
37
+ }
38
+ function numericTimestamp(block) {
39
+ if (typeof block.payload !== "object" || block.payload === null)
40
+ return null;
41
+ const value = block.payload.timestamp;
42
+ return typeof value === "number" && Number.isFinite(value) ? value : null;
43
+ }
@@ -0,0 +1,21 @@
1
+ import { convertToPng } from "@earendil-works/pi-coding-agent";
2
+ import { type Component } from "#pi-tui";
3
+ /**
4
+ * Own only current attachment presentation; tool renderers still receive original result content.
5
+ * Unlike pinned 0.84.2's index cache, entries follow immutable source bytes and stale completions
6
+ * cannot republish. At most one conversion runs per mount; queued work is only the current set.
7
+ */
8
+ export declare class ToolImagePresentation {
9
+ #private;
10
+ private readonly changed;
11
+ private readonly convert;
12
+ constructor(changed: () => void, convert?: typeof convertToPng);
13
+ update(content: readonly {
14
+ type: string;
15
+ data?: string;
16
+ mimeType?: string;
17
+ }[], show: boolean): void;
18
+ /** Public Image remains responsible for Kitty/iTerm protocol and dimension-aware fallback. */
19
+ components(width: number): Component[];
20
+ dispose(): void;
21
+ }
@@ -0,0 +1,86 @@
1
+ import { convertToPng } from "@earendil-works/pi-coding-agent";
2
+ import { getCapabilities, Image, Text } from "#pi-tui";
3
+ import { piTheme } from "./theme.js";
4
+ const MAX_BYTES = 20 * 1024 * 1024;
5
+ const MAX_IMAGES = 16;
6
+ const bytes = (data) => Math.floor(data.length * 3 / 4) - (data.endsWith("==") ? 2 : data.endsWith("=") ? 1 : 0);
7
+ /**
8
+ * Own only current attachment presentation; tool renderers still receive original result content.
9
+ * Unlike pinned 0.84.2's index cache, entries follow immutable source bytes and stale completions
10
+ * cannot republish. At most one conversion runs per mount; queued work is only the current set.
11
+ */
12
+ export class ToolImagePresentation {
13
+ changed;
14
+ convert;
15
+ #entries = [];
16
+ #visible = false;
17
+ #disposed = false;
18
+ #active = false;
19
+ constructor(changed, convert = convertToPng) {
20
+ this.changed = changed;
21
+ this.convert = convert;
22
+ }
23
+ update(content, show) {
24
+ if (this.#disposed)
25
+ return;
26
+ const previous = this.#entries;
27
+ const next = [];
28
+ for (const part of content) {
29
+ if (part.type !== "image" || !part.data || !part.mimeType)
30
+ continue;
31
+ const source = { data: part.data, mimeType: part.mimeType };
32
+ const same = (entry) => entry.source.data === source.data && entry.source.mimeType === source.mimeType;
33
+ next.push(next.find(same) ?? previous.find(same) ?? { source, state: "waiting" });
34
+ if (next.length === MAX_IMAGES)
35
+ break;
36
+ }
37
+ this.#entries = next;
38
+ this.#visible = show && getCapabilities().images !== null;
39
+ this.#pump();
40
+ }
41
+ /** Public Image remains responsible for Kitty/iTerm protocol and dimension-aware fallback. */
42
+ components(width) {
43
+ if (this.#disposed || !this.#visible)
44
+ return [];
45
+ return this.#entries.map(entry => {
46
+ const source = entry.source;
47
+ if (getCapabilities().images === "kitty" && source.mimeType !== "image/png") {
48
+ if (entry.converted === undefined)
49
+ return new Text(piTheme().fg("muted", entry.state === "unavailable" ? `[Image unavailable: ${source.mimeType}]` : `[Image converting: ${source.mimeType}]`), 1, 0);
50
+ }
51
+ const image = getCapabilities().images === "kitty" ? entry.converted ?? source : source;
52
+ return new Image(image.data, image.mimeType, { fallbackColor: text => piTheme().fg("toolOutput", text) }, { maxWidthCells: width });
53
+ });
54
+ }
55
+ dispose() {
56
+ this.#disposed = true;
57
+ this.#entries = [];
58
+ }
59
+ #pump() {
60
+ if (this.#disposed || this.#active || !this.#visible || getCapabilities().images !== "kitty")
61
+ return;
62
+ const entry = this.#entries.find(value => value.source.mimeType !== "image/png" && value.state === "waiting");
63
+ if (entry === undefined)
64
+ return;
65
+ entry.state = "converting";
66
+ this.#active = true;
67
+ // Concurrency: defer codec entry until the caller's synchronous component mutation finishes.
68
+ void Promise.resolve().then(() => this.#disposed || !this.#entries.includes(entry)
69
+ ? null : this.convert(entry.source.data, entry.source.mimeType)).catch(() => null).then(converted => {
70
+ this.#active = false;
71
+ if (this.#disposed)
72
+ return;
73
+ if (this.#entries.includes(entry)) {
74
+ // Invariant: limits match the existing 16 references / 20 MiB per image, not a new aggregate cap.
75
+ if (converted !== null && converted.mimeType === "image/png" && bytes(converted.data) <= MAX_BYTES) {
76
+ entry.converted = converted;
77
+ entry.state = "ready";
78
+ }
79
+ else
80
+ entry.state = "unavailable";
81
+ this.changed();
82
+ }
83
+ this.#pump();
84
+ });
85
+ }
86
+ }
@@ -0,0 +1,6 @@
1
+ import type { ToolExecutionComponent } from "./upstream/components/tool-execution.js";
2
+ import type { OwnedUiTranscriptBlock } from "../../../contracts/owned-ui/index.js";
3
+ import { type PiShellImageAssetResolver } from "./shell-shared-facade.js";
4
+ /** Reconstruct public Pi inputs once at the component boundary, never from diagnostic summaries. */
5
+ export declare function updatePiToolResult(component: Pick<ToolExecutionComponent, "updateResult">, block: OwnedUiTranscriptBlock, assets?: PiShellImageAssetResolver): void;
6
+ export declare function piToolArguments(block: OwnedUiTranscriptBlock): unknown;
@@ -0,0 +1,27 @@
1
+ import { isRecord } from "./shell-shared-facade.js";
2
+ /** Reconstruct public Pi inputs once at the component boundary, never from diagnostic summaries. */
3
+ export function updatePiToolResult(component, block, assets) {
4
+ const payload = isRecord(block.payload) ? block.payload : {};
5
+ if (block.kind !== "tool-result" && payload.partialResult !== true)
6
+ return;
7
+ const image = (index) => {
8
+ const reference = block.imageReferences?.[index];
9
+ const asset = reference === undefined ? null : assets?.resolve(reference.assetId);
10
+ return asset == null
11
+ ? { type: "text", text: `[Image unavailable: ${reference?.mimeType ?? "unknown"}]` }
12
+ : { type: "image", data: asset.data, mimeType: asset.mimeType };
13
+ };
14
+ const result = block.toolRendering?.result;
15
+ const content = result === undefined
16
+ ? [{ type: "text", text: block.text }, ...(block.imageReferences ?? []).map((_, index) => image(index))]
17
+ : result.content.map(part => part.type === "text"
18
+ ? { type: "text", text: block.text.slice(part.start, part.end) } : image(part.imageIndex));
19
+ component.updateResult({ content, details: result?.details, isError: payload.isError === true }, block.status === "live");
20
+ }
21
+ export function piToolArguments(block) {
22
+ if (block.toolRendering !== undefined)
23
+ return block.toolRendering.arguments;
24
+ // Compatibility: existing owned blocks and component consumers may lack rendering metadata.
25
+ const payload = isRecord(block.payload) ? block.payload : {};
26
+ return isRecord(payload.arguments) && "json" in payload.arguments ? payload.arguments.json : payload.arguments ?? {};
27
+ }
@@ -0,0 +1,7 @@
1
+ import type { OwnedUiImageAttachment, OwnedUiTranscriptBlock } from "../../../contracts/owned-ui/index.js";
2
+ import type { PiShellImageAssetResolver } from "./shell-shared-facade.js";
3
+ export declare function createTranscriptImageResolver(source: PiShellImageAssetResolver | undefined, initial: OwnedUiTranscriptBlock): {
4
+ resolve: (id: string) => OwnedUiImageAttachment | null;
5
+ update: (block: OwnedUiTranscriptBlock) => void;
6
+ dispose: () => void;
7
+ };
@@ -0,0 +1,19 @@
1
+ // Concurrency: a mounted block can outlive its engine revision while delivery is pending; retain its immutable assets through rebuilds.
2
+ export function createTranscriptImageResolver(source, initial) {
3
+ let images = new Map();
4
+ const update = (block) => {
5
+ const next = new Map();
6
+ for (const reference of block.imageReferences ?? []) {
7
+ const asset = source?.resolve(reference.assetId) ?? images.get(reference.assetId);
8
+ if (asset != null)
9
+ next.set(reference.assetId, asset);
10
+ }
11
+ images = next;
12
+ };
13
+ update(initial);
14
+ return {
15
+ resolve: (id) => images.get(id) ?? null,
16
+ update,
17
+ dispose: () => images.clear(),
18
+ };
19
+ }
@@ -1,5 +1,5 @@
1
1
  /** Source-synchronized from Pi 0.84.2 packages/coding-agent/src/core/keybindings.ts. */
2
- import { type Keybinding, type KeybindingsConfig, type KeyId, KeybindingsManager as TuiKeybindingsManager } from "#pi-tui";
2
+ import { type Keybinding, type KeybindingDefinitions, type KeybindingsConfig, type KeyId, KeybindingsManager as TuiKeybindingsManager } from "#pi-tui";
3
3
  export interface AppKeybindings {
4
4
  "app.interrupt": true;
5
5
  "app.clear": true;
@@ -43,6 +43,12 @@ export interface AppKeybindings {
43
43
  "app.tree.filter.all": true;
44
44
  "app.tree.filter.cycleForward": true;
45
45
  "app.tree.filter.cycleBackward": true;
46
+ "owned.editor.selectAll": true;
47
+ "owned.editor.cut": true;
48
+ "owned.editor.paste": true;
49
+ "owned.editor.redo": true;
50
+ "owned.editor.extendLeft": true;
51
+ "owned.editor.extendRight": true;
46
52
  }
47
53
  export type AppKeybinding = keyof AppKeybindings;
48
54
  declare module "#pi-tui" {
@@ -413,8 +419,11 @@ export declare function migrateKeybindingsConfig(rawConfig: Record<string, unkno
413
419
  };
414
420
  export declare class KeybindingsManager extends TuiKeybindingsManager {
415
421
  private configPath;
416
- constructor(userBindings?: KeybindingsConfig, configPath?: string);
422
+ constructor(userBindings?: KeybindingsConfig, configPath?: string, definitions?: KeybindingDefinitions);
417
423
  static create(agentDir?: string): KeybindingsManager;
424
+ static fromOwnedBindings(bindings?: KeybindingsConfig): KeybindingsManager;
425
+ static createForOwnedInput(agentDir?: string): KeybindingsManager;
426
+ private static createWithDefinitions;
418
427
  reload(): void;
419
428
  getEffectiveConfig(): KeybindingsConfig;
420
429
  private static loadFromFile;
@@ -147,6 +147,35 @@ export const KEYBINDINGS = {
147
147
  description: "Tree filter: cycle backward",
148
148
  },
149
149
  };
150
+ /** Pi actions with bare-A1 aliases; the comparison profile keeps KEYBINDINGS unchanged. */
151
+ const OWNED_INPUT_KEYBINDINGS = {
152
+ ...KEYBINDINGS,
153
+ "app.thinking.cycle": { ...KEYBINDINGS["app.thinking.cycle"], defaultKeys: "ctrl+l" },
154
+ "app.model.select": { ...KEYBINDINGS["app.model.select"], defaultKeys: [] },
155
+ "tui.editor.deleteWordBackward": {
156
+ ...KEYBINDINGS["tui.editor.deleteWordBackward"],
157
+ defaultKeys: [...KEYBINDINGS["tui.editor.deleteWordBackward"].defaultKeys, "ctrl+backspace"],
158
+ },
159
+ "tui.editor.deleteWordForward": {
160
+ ...KEYBINDINGS["tui.editor.deleteWordForward"],
161
+ defaultKeys: [...KEYBINDINGS["tui.editor.deleteWordForward"].defaultKeys, "ctrl+delete"],
162
+ },
163
+ "tui.editor.undo": {
164
+ ...KEYBINDINGS["tui.editor.undo"],
165
+ defaultKeys: [KEYBINDINGS["tui.editor.undo"].defaultKeys, "ctrl+z"],
166
+ },
167
+ // Ctrl+Z edits the prompt in bare A1 instead of suspending the process.
168
+ "app.suspend": { ...KEYBINDINGS["app.suspend"], defaultKeys: [] },
169
+ // Owned prompt-selection actions are intercepted before vanilla Pi editor
170
+ // actions. Keeping them in the keybinding manager makes the UX declarative,
171
+ // configurable, and independent of terminal escape-sequence spellings.
172
+ "owned.editor.selectAll": { defaultKeys: "ctrl+a", description: "Select all prompt text" },
173
+ "owned.editor.cut": { defaultKeys: "ctrl+x", description: "Cut selected prompt text" },
174
+ "owned.editor.paste": { defaultKeys: "ctrl+v", description: "Paste clipboard text" },
175
+ "owned.editor.redo": { defaultKeys: "ctrl+y", description: "Redo prompt edit" },
176
+ "owned.editor.extendLeft": { defaultKeys: "shift+left", description: "Extend prompt selection left" },
177
+ "owned.editor.extendRight": { defaultKeys: "shift+right", description: "Extend prompt selection right" },
178
+ };
150
179
  const KEYBINDING_NAME_MIGRATIONS = {
151
180
  cursorUp: "tui.editor.cursorUp",
152
181
  cursorDown: "tui.editor.cursorDown",
@@ -270,14 +299,23 @@ function loadRawConfig(path) {
270
299
  }
271
300
  export class KeybindingsManager extends TuiKeybindingsManager {
272
301
  configPath;
273
- constructor(userBindings = {}, configPath) {
274
- super(KEYBINDINGS, userBindings);
302
+ constructor(userBindings = {}, configPath, definitions = KEYBINDINGS) {
303
+ super(definitions, userBindings);
275
304
  this.configPath = configPath;
276
305
  }
277
306
  static create(agentDir = getAgentDir()) {
307
+ return KeybindingsManager.createWithDefinitions(agentDir, KEYBINDINGS);
308
+ }
309
+ static fromOwnedBindings(bindings = {}) {
310
+ return new KeybindingsManager(bindings, undefined, OWNED_INPUT_KEYBINDINGS);
311
+ }
312
+ static createForOwnedInput(agentDir = getAgentDir()) {
313
+ return KeybindingsManager.createWithDefinitions(agentDir, OWNED_INPUT_KEYBINDINGS);
314
+ }
315
+ static createWithDefinitions(agentDir, definitions) {
278
316
  const configPath = join(agentDir, "keybindings.json");
279
317
  const userBindings = KeybindingsManager.loadFromFile(configPath);
280
- return new KeybindingsManager(userBindings, configPath);
318
+ return new KeybindingsManager(userBindings, configPath, definitions);
281
319
  }
282
320
  reload() {
283
321
  if (!this.configPath)