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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (643) hide show
  1. package/README.md +159 -65
  2. package/bin/cli.js +28 -10
  3. package/bin/guardian.js +12 -6
  4. package/bin/module-identity.js +69 -35
  5. package/bin/pi-tui.d.ts +6 -0
  6. package/bin/pi-tui.js +28 -0
  7. package/bin/release-cleanup.js +8 -0
  8. package/bin/supervisor.js +2 -2
  9. package/bin/sync-pi-tui-proxy.js +97 -0
  10. package/bin/ui.js +62 -21
  11. package/bin/update-recovery.js +274 -0
  12. package/bin/warmup.js +27 -0
  13. package/dist/cli/capabilities.d.ts +6 -0
  14. package/dist/{src/cli → cli}/capabilities.js +1 -1
  15. package/dist/{src/cli → cli}/dispatch.d.ts +15 -1
  16. package/dist/cli/dispatch.js +261 -0
  17. package/dist/cli/package-messages.d.ts +26 -0
  18. package/dist/cli/package-messages.js +71 -0
  19. package/dist/{src/cli → cli}/packages.d.ts +11 -2
  20. package/dist/{src/cli → cli}/packages.js +24 -27
  21. package/dist/{src/cli → cli}/version-stats.d.ts +6 -0
  22. package/dist/cli/version-stats.js +112 -0
  23. package/dist/composition/agent-engine-bridge.d.ts +3 -0
  24. package/dist/composition/agent-engine-bridge.js +108 -0
  25. package/dist/composition/index.d.ts +3 -0
  26. package/dist/composition/index.js +3 -0
  27. package/dist/composition/owned-ui.d.ts +35 -0
  28. package/dist/composition/owned-ui.js +118 -0
  29. package/dist/composition/process.d.ts +16 -0
  30. package/dist/composition/process.js +45 -0
  31. package/dist/composition/settings-route-host.d.ts +8 -0
  32. package/dist/composition/settings-route-host.js +75 -0
  33. package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/capability-ports.d.ts +2 -2
  34. package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/domain-validation.js +22 -4
  35. package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/domain.d.ts +17 -0
  36. package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/package-ports.d.ts +6 -0
  37. package/dist/contracts/owned-ui/image-attachments.d.ts +36 -0
  38. package/dist/contracts/owned-ui/image-attachments.js +67 -0
  39. package/dist/contracts/owned-ui/index.d.ts +8 -0
  40. package/dist/contracts/owned-ui/index.js +8 -0
  41. package/dist/{src/foundation/owned-ui-contracts → contracts/owned-ui}/model.d.ts +123 -0
  42. package/dist/contracts/owned-ui/prompt-history.d.ts +55 -0
  43. package/dist/contracts/owned-ui/prompt-history.js +23 -0
  44. package/dist/contracts/owned-ui/prompt-suggestions.d.ts +3 -0
  45. package/dist/contracts/owned-ui/prompt-suggestions.js +44 -0
  46. package/dist/contracts/owned-ui/suggestion-diagnostics.d.ts +22 -0
  47. package/dist/contracts/owned-ui/suggestion-diagnostics.js +9 -0
  48. package/dist/contracts/owned-ui/transcript-lifecycle.d.ts +5 -0
  49. package/dist/contracts/owned-ui/transcript-lifecycle.js +33 -0
  50. package/dist/{src/foundation/owned-ui-contracts → contracts/owned-ui}/validation.d.ts +5 -1
  51. package/dist/{src/foundation/owned-ui-contracts → contracts/owned-ui}/validation.js +129 -4
  52. package/dist/{src/foundation/presentation-contracts → contracts/presentation}/index.d.ts +8 -0
  53. package/dist/{src/features → features}/launch/development-launch.js +11 -3
  54. package/dist/{src/features → features}/launch/index.d.ts +0 -1
  55. package/dist/{src/features → features}/launch/index.js +0 -1
  56. package/dist/features/launch/intent.d.ts +10 -0
  57. package/dist/features/launch/intent.js +8 -0
  58. package/dist/{src/features → features}/launch/prepare-launch.d.ts +0 -2
  59. package/dist/{src/features → features}/launch/prepare-launch.js +2 -9
  60. package/dist/{src/features → features}/launch/profile-paths.d.ts +3 -2
  61. package/dist/{src/features → features}/launch/profile-paths.js +13 -8
  62. package/dist/{src/features → features}/launch/runtime-selection.d.ts +2 -5
  63. package/dist/{src/features → features}/owned-ui/customization.d.ts +3 -1
  64. package/dist/{src/features → features}/owned-ui/customization.js +3 -1
  65. package/dist/{src/features → features}/owned-ui/diagnostics.d.ts +2 -1
  66. package/dist/{src/features → features}/owned-ui/diagnostics.js +1 -0
  67. package/dist/{src/features → features}/owned-ui/index.d.ts +2 -0
  68. package/dist/{src/features → features}/owned-ui/index.js +2 -0
  69. package/dist/features/owned-ui/project-trust-prompt.d.ts +25 -0
  70. package/dist/features/owned-ui/project-trust-prompt.js +149 -0
  71. package/dist/{src/features → features}/owned-ui/run.d.ts +2 -2
  72. package/dist/features/owned-ui/run.js +32 -0
  73. package/dist/features/owned-ui/session-fork-prompt.d.ts +8 -0
  74. package/dist/features/owned-ui/session-fork-prompt.js +34 -0
  75. package/dist/{src/features → features}/owned-ui/settings-app.d.ts +3 -3
  76. package/dist/{src/features → features}/owned-ui/settings-app.js +105 -56
  77. package/dist/features/prompt-history/image-sidecar.d.ts +32 -0
  78. package/dist/features/prompt-history/image-sidecar.js +130 -0
  79. package/dist/features/prompt-history/index.d.ts +4 -0
  80. package/dist/features/prompt-history/index.js +3 -0
  81. package/dist/features/prompt-history/paths.d.ts +5 -0
  82. package/dist/features/prompt-history/paths.js +17 -0
  83. package/dist/features/prompt-history/service.d.ts +54 -0
  84. package/dist/features/prompt-history/service.js +425 -0
  85. package/dist/features/prompt-history/store.d.ts +16 -0
  86. package/dist/features/prompt-history/store.js +223 -0
  87. package/dist/features/prompt-history/worker.d.ts +9 -0
  88. package/dist/features/prompt-history/worker.js +45 -0
  89. package/dist/features/prompt-suggestions/diagnostics.d.ts +18 -0
  90. package/dist/features/prompt-suggestions/diagnostics.js +82 -0
  91. package/dist/features/prompt-suggestions/index.d.ts +1 -0
  92. package/dist/features/prompt-suggestions/index.js +1 -0
  93. package/dist/{src/features → features}/workspace/capabilities.d.ts +1 -1
  94. package/dist/{src/features → features}/workspace/reducer.d.ts +2 -1
  95. package/dist/{src/features → features}/workspace/reducer.js +2 -1
  96. package/dist/{src/features → features}/workspace/router.d.ts +2 -1
  97. package/dist/{src/features → features}/workspace/router.js +1 -0
  98. package/dist/{src/features → features}/workspace/store.d.ts +2 -1
  99. package/dist/{src/features → features}/workspace/store.js +1 -0
  100. package/dist/foundation/launch-context/index.d.ts +59 -0
  101. package/dist/foundation/launch-context/index.js +136 -0
  102. package/dist/{src/foundation → foundation}/launch-guardian/main.d.ts +2 -0
  103. package/dist/{src/foundation → foundation}/launch-guardian/main.js +23 -8
  104. package/dist/{src/foundation → foundation}/lifecycle/index.d.ts +2 -0
  105. package/dist/{src/foundation → foundation}/lifecycle/index.js +2 -0
  106. package/dist/{src/foundation → foundation}/lifecycle/model.d.ts +1 -1
  107. package/dist/{src/foundation → foundation}/lifecycle/model.js +1 -1
  108. package/dist/foundation/lifecycle/paths.d.ts +30 -0
  109. package/dist/{src/foundation → foundation}/lifecycle/paths.js +29 -1
  110. package/dist/foundation/lifecycle/session-selection.d.ts +9 -0
  111. package/dist/foundation/lifecycle/session-selection.js +39 -0
  112. package/dist/foundation/lifecycle/supervisor-startup.d.ts +30 -0
  113. package/dist/foundation/lifecycle/supervisor-startup.js +106 -0
  114. package/dist/{src/foundation → foundation}/native-host-protocol/codec.d.ts +2 -0
  115. package/dist/{src/foundation → foundation}/native-host-protocol/codec.js +2 -0
  116. package/dist/{src/foundation → foundation}/native-host-protocol/messages.d.ts +1 -1
  117. package/dist/{src/foundation → foundation}/native-host-protocol/messages.js +1 -1
  118. package/dist/foundation/process-containment/darwin-process-inspector.d.ts +5 -0
  119. package/dist/foundation/process-containment/darwin-process-inspector.js +7 -0
  120. package/dist/{src/foundation → foundation}/process-containment/index.d.ts +1 -0
  121. package/dist/{src/foundation → foundation}/process-containment/index.js +1 -0
  122. package/dist/{src/foundation → foundation}/process-containment/linux-process-inspector.d.ts +1 -0
  123. package/dist/{src/foundation → foundation}/process-containment/linux-process-inspector.js +1 -0
  124. package/dist/{src/foundation → foundation}/process-containment/native-guardian-containment.d.ts +1 -0
  125. package/dist/{src/foundation → foundation}/process-containment/native-guardian-containment.js +1 -0
  126. package/dist/{src/foundation → foundation}/process-containment/windows-process-inspector.d.ts +3 -1
  127. package/dist/{src/foundation → foundation}/process-containment/windows-process-inspector.js +5 -2
  128. package/dist/{src/foundation → foundation}/protocol/client.d.ts +1 -0
  129. package/dist/{src/foundation → foundation}/protocol/client.js +1 -0
  130. package/dist/{src/foundation → foundation}/protocol/messages.d.ts +1 -0
  131. package/dist/{src/foundation → foundation}/protocol/messages.js +1 -0
  132. package/dist/foundation/release/bootstrap.d.ts +55 -0
  133. package/dist/{src/foundation → foundation}/release/bootstrap.js +219 -46
  134. package/dist/foundation/release/cohort-state.d.ts +157 -0
  135. package/dist/foundation/release/cohort-state.js +472 -0
  136. package/dist/foundation/release/dependency-certification-retention.d.ts +7 -0
  137. package/dist/foundation/release/dependency-certification-retention.js +88 -0
  138. package/dist/foundation/release/dependency-certification.d.ts +24 -0
  139. package/dist/foundation/release/dependency-certification.js +266 -0
  140. package/dist/foundation/release/dependency-layer.d.ts +81 -0
  141. package/dist/foundation/release/dependency-layer.js +466 -0
  142. package/dist/foundation/release/endpoints.d.ts +20 -0
  143. package/dist/foundation/release/endpoints.js +50 -0
  144. package/dist/foundation/release/immutable-platform.d.ts +6 -0
  145. package/dist/foundation/release/immutable-platform.js +13 -0
  146. package/dist/{src/foundation → foundation}/release/index.d.ts +6 -0
  147. package/dist/{src/foundation → foundation}/release/index.js +6 -0
  148. package/dist/foundation/release/release-gc.d.ts +71 -0
  149. package/dist/foundation/release/release-gc.js +764 -0
  150. package/dist/{src/foundation → foundation}/release/release-store.d.ts +9 -3
  151. package/dist/{src/foundation → foundation}/release/release-store.js +74 -14
  152. package/dist/{src/foundation → foundation}/release/release.d.ts +6 -1
  153. package/dist/{src/foundation → foundation}/release/release.js +15 -4
  154. package/dist/foundation/release/restart-certification.d.ts +68 -0
  155. package/dist/foundation/release/restart-certification.js +227 -0
  156. package/dist/foundation/release/update-launch.d.ts +6 -0
  157. package/dist/foundation/release/update-launch.js +17 -0
  158. package/dist/foundation/release/update-recovery.d.ts +76 -0
  159. package/dist/foundation/release/update-recovery.js +356 -0
  160. package/dist/{src/foundation → foundation}/release/update-transaction.d.ts +11 -0
  161. package/dist/{src/foundation → foundation}/release/update-transaction.js +13 -1
  162. package/dist/{src/foundation → foundation}/release/update.d.ts +40 -4
  163. package/dist/{src/foundation → foundation}/release/update.js +196 -78
  164. package/dist/foundation/release/warmup.d.ts +3 -0
  165. package/dist/foundation/release/warmup.js +47 -0
  166. package/dist/foundation/startup/index.d.ts +1 -0
  167. package/dist/foundation/startup/index.js +1 -0
  168. package/dist/foundation/startup/startup-runtime.d.ts +36 -0
  169. package/dist/foundation/startup/startup-runtime.js +142 -0
  170. package/dist/{src/foundation → foundation}/storage/control-store.d.ts +2 -1
  171. package/dist/{src/foundation → foundation}/storage/control-store.js +39 -4
  172. package/dist/{src/foundation → foundation}/structured-agent-runtime/backpressure.d.ts +2 -1
  173. package/dist/{src/foundation → foundation}/structured-agent-runtime/backpressure.js +2 -1
  174. package/dist/{src/foundation → foundation}/structured-agent-runtime/commands.d.ts +2 -1
  175. package/dist/{src/foundation → foundation}/structured-agent-runtime/commands.js +2 -1
  176. package/dist/{src/foundation → foundation}/structured-agent-runtime/handshake.d.ts +1 -1
  177. package/dist/{src/foundation → foundation}/structured-agent-runtime/handshake.js +1 -1
  178. package/dist/{src/foundation → foundation}/structured-agent-runtime/reconnection.d.ts +2 -1
  179. package/dist/{src/foundation → foundation}/structured-agent-runtime/reconnection.js +2 -1
  180. package/dist/{src/foundation → foundation}/structured-agent-runtime/state.d.ts +2 -1
  181. package/dist/{src/foundation → foundation}/structured-agent-runtime/state.js +2 -1
  182. package/dist/foundation/supervision/index.d.ts +3 -0
  183. package/dist/foundation/supervision/index.js +3 -0
  184. package/dist/foundation/supervision/main.d.ts +1 -0
  185. package/dist/foundation/supervision/main.js +84 -0
  186. package/dist/foundation/supervision/paths.d.ts +1 -0
  187. package/dist/foundation/supervision/paths.js +1 -0
  188. package/dist/foundation/supervision/server.d.ts +51 -0
  189. package/dist/{src/foundation → foundation}/supervision/server.js +142 -20
  190. package/dist/foundation/terminal-cleanup/fatal-exit.d.ts +12 -0
  191. package/dist/foundation/terminal-cleanup/fatal-exit.js +85 -0
  192. package/dist/foundation/terminal-cleanup/index.d.ts +2 -0
  193. package/dist/foundation/terminal-cleanup/index.js +2 -0
  194. package/dist/foundation/terminal-cleanup/terminal-reset.d.ts +4 -0
  195. package/dist/foundation/terminal-cleanup/terminal-reset.js +40 -0
  196. package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/components.d.ts +1 -1
  197. package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/conformance.d.ts +1 -0
  198. package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/conformance.js +3 -2
  199. package/dist/integrations/pi/components/editor-interaction.d.ts +38 -0
  200. package/dist/integrations/pi/components/history-editor-loader.d.ts +5 -0
  201. package/dist/integrations/pi/components/history-editor-loader.js +5 -0
  202. package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/index.d.ts +2 -1
  203. package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/index.js +2 -1
  204. package/dist/integrations/pi/components/owned-editor-ux.d.ts +74 -0
  205. package/dist/integrations/pi/components/owned-editor-ux.js +1093 -0
  206. package/dist/integrations/pi/components/path-word-ranges.d.ts +2 -0
  207. package/dist/integrations/pi/components/path-word-ranges.js +37 -0
  208. package/dist/integrations/pi/components/prompt-input-port.d.ts +18 -0
  209. package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/shell-components.d.ts +1 -0
  210. package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/shell-components.js +1 -0
  211. package/dist/integrations/pi/components/shell-editor-autocomplete.js +297 -0
  212. package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/shell-extension-ui.d.ts +1 -1
  213. package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/shell-footer-status.d.ts +4 -4
  214. package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/shell-footer-status.js +58 -23
  215. package/dist/integrations/pi/components/shell-presenters-info.d.ts +43 -0
  216. package/dist/integrations/pi/components/shell-presenters-info.js +114 -0
  217. package/dist/integrations/pi/components/shell-presenters-transcript.d.ts +29 -0
  218. package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/shell-presenters-transcript.js +174 -170
  219. package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/shell-selectors-dialogs.d.ts +8 -4
  220. package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/shell-selectors-dialogs.js +10 -6
  221. package/dist/integrations/pi/components/shell-shared-facade.d.ts +213 -0
  222. package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/shell-shared-facade.js +5 -2
  223. package/dist/integrations/pi/components/submitted-prompt-adapter.d.ts +15 -0
  224. package/dist/integrations/pi/components/submitted-prompt-adapter.js +43 -0
  225. package/dist/integrations/pi/components/tool-image-presentation.d.ts +21 -0
  226. package/dist/integrations/pi/components/tool-image-presentation.js +86 -0
  227. package/dist/integrations/pi/components/tool-result-adapter.d.ts +6 -0
  228. package/dist/integrations/pi/components/tool-result-adapter.js +27 -0
  229. package/dist/integrations/pi/components/transcript-image-resolver.d.ts +7 -0
  230. package/dist/integrations/pi/components/transcript-image-resolver.js +19 -0
  231. package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/adjacent/core/keybindings.d.ts +11 -2
  232. package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/adjacent/core/keybindings.js +41 -3
  233. package/dist/integrations/pi/components/upstream/assets/earendil-image.json +12 -0
  234. package/dist/integrations/pi/components/upstream/components/earendil-announcement.js +42 -0
  235. package/dist/integrations/pi/components/upstream/components/owned-editor.d.ts +40 -0
  236. package/dist/integrations/pi/components/upstream/components/owned-editor.js +166 -0
  237. package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/scoped-models-selector.d.ts +1 -1
  238. package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/scoped-models-selector.js +3 -1
  239. package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/session-footer.d.ts +3 -2
  240. package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/session-footer.js +12 -7
  241. package/dist/integrations/pi/components/upstream/components/tool-execution.d.ts +61 -0
  242. package/dist/integrations/pi/components/upstream/components/tool-execution.js +344 -0
  243. package/dist/integrations/pi/components/upstream/history/editor-core.d.ts +280 -0
  244. package/dist/integrations/pi/components/upstream/history/editor-core.js +2062 -0
  245. package/dist/integrations/pi/components/upstream/history/kill-ring.d.ts +32 -0
  246. package/dist/integrations/pi/components/upstream/history/kill-ring.js +48 -0
  247. package/dist/integrations/pi/components/upstream/history/printable-key.d.ts +1 -0
  248. package/dist/integrations/pi/components/upstream/history/printable-key.js +40 -0
  249. package/dist/integrations/pi/components/upstream/history/text-helpers.d.ts +14 -0
  250. package/dist/integrations/pi/components/upstream/history/text-helpers.js +28 -0
  251. package/dist/integrations/pi/components/upstream/history/undo-stack.d.ts +22 -0
  252. package/dist/integrations/pi/components/upstream/history/undo-stack.js +36 -0
  253. package/dist/integrations/pi/components/upstream/history/word-navigation.d.ts +24 -0
  254. package/dist/integrations/pi/components/upstream/history/word-navigation.js +100 -0
  255. package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/adapter.d.ts +74 -6
  256. package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/adapter.js +1340 -228
  257. package/dist/integrations/pi/engine/changelog.d.ts +2 -0
  258. package/dist/integrations/pi/engine/changelog.js +63 -0
  259. package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/conformance.d.ts +4 -2
  260. package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/conformance.js +15 -5
  261. package/dist/integrations/pi/engine/http-dispatcher.d.ts +4 -0
  262. package/dist/integrations/pi/engine/http-dispatcher.js +25 -0
  263. package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/index.d.ts +4 -0
  264. package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/index.js +4 -0
  265. package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/model-auth-integration.d.ts +2 -1
  266. package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/model-auth-integration.js +1 -0
  267. package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/package-integration.d.ts +1 -1
  268. package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/package-integration.js +32 -26
  269. package/dist/integrations/pi/engine/pending-delivery.d.ts +30 -0
  270. package/dist/integrations/pi/engine/pending-delivery.js +158 -0
  271. package/dist/integrations/pi/engine/project-trust-preflight.d.ts +22 -0
  272. package/dist/integrations/pi/engine/project-trust-preflight.js +50 -0
  273. package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/resource-extension-integration.d.ts +2 -1
  274. package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/resource-extension-integration.js +1 -0
  275. package/dist/integrations/pi/engine/resources/changelog.json +12 -0
  276. package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/runtime-integration.d.ts +19 -1
  277. package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/runtime-integration.js +56 -5
  278. package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/session-integration.d.ts +4 -2
  279. package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/session-integration.js +19 -4
  280. package/dist/integrations/pi/engine/session-selection.d.ts +28 -0
  281. package/dist/integrations/pi/engine/session-selection.js +90 -0
  282. package/dist/integrations/pi/engine/settings-effects.d.ts +66 -0
  283. package/dist/integrations/pi/engine/settings-effects.js +249 -0
  284. package/dist/integrations/pi/engine/settings-integration.d.ts +43 -0
  285. package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/settings-integration.js +102 -108
  286. package/dist/integrations/pi/engine/tool-rendering.d.ts +13 -0
  287. package/dist/integrations/pi/engine/tool-rendering.js +145 -0
  288. package/dist/integrations/pi/engine/transcript-image-assets.d.ts +11 -0
  289. package/dist/integrations/pi/engine/transcript-image-assets.js +86 -0
  290. package/dist/integrations/pi/engine/windows-filesystem-hygiene.d.ts +21 -0
  291. package/dist/integrations/pi/engine/windows-filesystem-hygiene.js +55 -0
  292. package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/workflow-controllers.d.ts +3 -2
  293. package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/workflow-controllers.js +1 -0
  294. package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/workflows.d.ts +19 -2
  295. package/dist/integrations/pi/session-ui/clipboard-diagnostics.d.ts +16 -0
  296. package/dist/integrations/pi/session-ui/clipboard-diagnostics.js +65 -0
  297. package/dist/integrations/pi/session-ui/clipboard-image.d.ts +11 -0
  298. package/dist/integrations/pi/session-ui/clipboard-image.js +38 -0
  299. package/dist/integrations/pi/session-ui/editor-hyperlink-budget.d.ts +9 -0
  300. package/dist/integrations/pi/session-ui/editor-hyperlink-budget.js +23 -0
  301. package/dist/integrations/pi/session-ui/image-preparation-client.d.ts +20 -0
  302. package/dist/integrations/pi/session-ui/image-preparation-client.js +145 -0
  303. package/dist/integrations/pi/session-ui/image-preparation.d.ts +18 -0
  304. package/dist/integrations/pi/session-ui/image-preparation.js +126 -0
  305. package/dist/integrations/pi/session-ui/image-source.d.ts +13 -0
  306. package/dist/integrations/pi/session-ui/image-source.js +171 -0
  307. package/dist/integrations/pi/session-ui/image-worker.d.ts +17 -0
  308. package/dist/integrations/pi/session-ui/image-worker.js +23 -0
  309. package/dist/integrations/pi/session-ui/index.d.ts +5 -0
  310. package/dist/integrations/pi/session-ui/index.js +5 -0
  311. package/dist/integrations/pi/session-ui/paste-executor.d.ts +10 -0
  312. package/dist/integrations/pi/session-ui/paste-executor.js +232 -0
  313. package/dist/integrations/pi/session-ui/paste-helper.d.ts +1 -0
  314. package/dist/integrations/pi/session-ui/paste-helper.js +173 -0
  315. package/dist/integrations/pi/session-ui/paste-preparation-client.d.ts +16 -0
  316. package/dist/integrations/pi/session-ui/paste-preparation-client.js +159 -0
  317. package/dist/integrations/pi/session-ui/paste-protocol.d.ts +78 -0
  318. package/dist/integrations/pi/session-ui/paste-protocol.js +18 -0
  319. package/dist/integrations/pi/session-ui/paste-text-preparation.d.ts +20 -0
  320. package/dist/integrations/pi/session-ui/paste-text-preparation.js +134 -0
  321. package/dist/integrations/pi/session-ui/paste-text-worker.d.ts +1 -0
  322. package/dist/integrations/pi/session-ui/paste-text-worker.js +12 -0
  323. package/dist/integrations/pi/session-ui/path-chip-presentation.d.ts +7 -0
  324. package/dist/integrations/pi/session-ui/path-chip-presentation.js +24 -0
  325. package/dist/integrations/pi/session-ui/prompt-chips.d.ts +72 -0
  326. package/dist/integrations/pi/session-ui/prompt-chips.js +503 -0
  327. package/dist/integrations/pi/session-ui/prompt-history-controller.d.ts +36 -0
  328. package/dist/integrations/pi/session-ui/prompt-history-controller.js +170 -0
  329. package/dist/integrations/pi/session-ui/prompt-suggestion-controller.d.ts +35 -0
  330. package/dist/integrations/pi/session-ui/prompt-suggestion-controller.js +207 -0
  331. package/dist/integrations/pi/session-ui/response-copy-coordinator.d.ts +27 -0
  332. package/dist/integrations/pi/session-ui/response-copy-coordinator.js +189 -0
  333. package/dist/integrations/pi/session-ui/response-copy-helper.d.ts +1 -0
  334. package/dist/integrations/pi/session-ui/response-copy-helper.js +122 -0
  335. package/dist/integrations/pi/session-ui/response-copy-protocol.d.ts +56 -0
  336. package/dist/integrations/pi/session-ui/response-copy-protocol.js +5 -0
  337. package/dist/integrations/pi/session-ui/response-copy-transport.d.ts +31 -0
  338. package/dist/integrations/pi/session-ui/response-copy-transport.js +187 -0
  339. package/dist/integrations/pi/session-ui/route-host.d.ts +5 -0
  340. package/dist/integrations/pi/session-ui/route-host.js +1 -0
  341. package/dist/integrations/pi/session-ui/session-shell-root.d.ts +221 -0
  342. package/dist/integrations/pi/session-ui/session-shell-root.js +1305 -0
  343. package/dist/integrations/pi/session-ui/session-shell.d.ts +55 -0
  344. package/dist/integrations/pi/session-ui/session-shell.js +1792 -0
  345. package/dist/integrations/pi/session-ui/session-viewport-controller.d.ts +56 -0
  346. package/dist/integrations/pi/session-ui/session-viewport-controller.js +569 -0
  347. package/dist/integrations/pi/session-ui/stream-presentation-coalescer.d.ts +29 -0
  348. package/dist/integrations/pi/session-ui/stream-presentation-coalescer.js +79 -0
  349. package/dist/integrations/pi/session-ui/system-clipboard.d.ts +20 -0
  350. package/dist/integrations/pi/session-ui/system-clipboard.js +156 -0
  351. package/dist/integrations/pi/session-ui/text-paste.d.ts +5 -0
  352. package/dist/integrations/pi/session-ui/text-paste.js +16 -0
  353. package/dist/{src/foundation/pi-tui-runtime-adapter → integrations/pi/tui-runtime}/adapter.d.ts +10 -1
  354. package/dist/{src/foundation/pi-tui-runtime-adapter → integrations/pi/tui-runtime}/adapter.js +255 -11
  355. package/dist/{src/foundation/pi-tui-runtime-adapter → integrations/pi/tui-runtime}/contracts.d.ts +32 -6
  356. package/dist/integrations/pi/tui-runtime/contracts.js +1 -0
  357. package/dist/integrations/pi/tui-runtime/damage-aware-terminal.d.ts +81 -0
  358. package/dist/integrations/pi/tui-runtime/damage-aware-terminal.js +424 -0
  359. package/dist/integrations/pi/tui-runtime/index.d.ts +7 -0
  360. package/dist/integrations/pi/tui-runtime/index.js +7 -0
  361. package/dist/integrations/pi/tui-runtime/input-presentation-coordinator.d.ts +39 -0
  362. package/dist/integrations/pi/tui-runtime/input-presentation-coordinator.js +139 -0
  363. package/dist/integrations/pi/tui-runtime/mouse-report-input.d.ts +13 -0
  364. package/dist/integrations/pi/tui-runtime/mouse-report-input.js +59 -0
  365. package/dist/integrations/pi/tui-runtime/overlay-geometry.d.ts +32 -0
  366. package/dist/integrations/pi/tui-runtime/overlay-geometry.js +159 -0
  367. package/dist/{src/foundation/pi-tui-runtime-adapter → integrations/pi/tui-runtime}/presentation-adapter.d.ts +1 -1
  368. package/dist/native/darwin-arm64/manifest.json +4 -4
  369. package/dist/native/darwin-arm64/process-guardian +0 -0
  370. package/dist/native/linux-x64/manifest.json +3 -3
  371. package/dist/native/linux-x64/process-guardian +0 -0
  372. package/dist/native/win32-x64/manifest.json +3 -3
  373. package/dist/native/win32-x64/process-guardian.exe +0 -0
  374. package/dist/{src/product-identity.d.ts → product-identity.d.ts} +4 -4
  375. package/dist/{src/product-identity.js → product-identity.js} +7 -38
  376. package/dist/{src/product-identity.json → product-identity.json} +13 -27
  377. package/dist/runtime-payload-inventory.json +122333 -0
  378. package/dist/{src/foundation/ui-apps → ui/apps}/contracts.d.ts +23 -1
  379. package/dist/{src/foundation/ui-apps → ui/apps}/host.d.ts +1 -1
  380. package/dist/{src/foundation/ui-apps → ui/apps}/host.js +14 -10
  381. package/dist/{src/foundation/ui-apps → ui/apps}/registry.d.ts +1 -0
  382. package/dist/{src/foundation/ui-apps → ui/apps}/registry.js +1 -0
  383. package/dist/{src/foundation/ui-components → ui/components}/dialog-panel.js +5 -3
  384. package/dist/{src/foundation/ui-components → ui/components}/frame.d.ts +1 -0
  385. package/dist/{src/foundation/ui-components → ui/components}/frame.js +1 -0
  386. package/dist/{src/foundation/ui-components → ui/components}/index.d.ts +7 -0
  387. package/dist/{src/foundation/ui-components → ui/components}/index.js +7 -0
  388. package/dist/{src/foundation/ui-components → ui/components}/line-input.d.ts +2 -8
  389. package/dist/{src/foundation/ui-components → ui/components}/line-input.js +7 -28
  390. package/dist/{src/foundation/ui-components → ui/components}/list-view.d.ts +0 -6
  391. package/dist/{src/foundation/ui-components → ui/components}/list-view.js +14 -7
  392. package/dist/{src/foundation/ui-components → ui/components}/mouse.d.ts +10 -0
  393. package/dist/{src/foundation/ui-components → ui/components}/mouse.js +24 -0
  394. package/dist/ui/components/progress-status.d.ts +2 -0
  395. package/dist/ui/components/progress-status.js +4 -0
  396. package/dist/ui/components/prompt-input.d.ts +32 -0
  397. package/dist/ui/components/prompt-input.js +54 -0
  398. package/dist/ui/components/prompt-row.d.ts +14 -0
  399. package/dist/ui/components/prompt-row.js +20 -0
  400. package/dist/{src/foundation/ui-components → ui/components}/scrollbar.d.ts +26 -0
  401. package/dist/{src/foundation/ui-components → ui/components}/scrollbar.js +35 -0
  402. package/dist/ui/components/selection-copy.d.ts +24 -0
  403. package/dist/ui/components/selection-copy.js +39 -0
  404. package/dist/{src/foundation/ui-components → ui/components}/shortcuts.d.ts +1 -0
  405. package/dist/{src/foundation/ui-components → ui/components}/shortcuts.js +1 -0
  406. package/dist/ui/components/spans.d.ts +28 -0
  407. package/dist/ui/components/spans.js +266 -0
  408. package/dist/ui/components/submitted-prompt.d.ts +23 -0
  409. package/dist/ui/components/submitted-prompt.js +50 -0
  410. package/dist/{src/foundation/ui-components → ui/components}/surface.d.ts +0 -5
  411. package/dist/{src/foundation/ui-components → ui/components}/surface.js +1 -5
  412. package/dist/ui/components/text-selection.d.ts +62 -0
  413. package/dist/ui/components/text-selection.js +210 -0
  414. package/dist/{src/foundation/ui-components → ui/components}/text.d.ts +14 -0
  415. package/dist/{src/foundation/ui-components → ui/components}/text.js +67 -5
  416. package/dist/ui/components/transcript-viewport.d.ts +173 -0
  417. package/dist/ui/components/transcript-viewport.js +753 -0
  418. package/dist/ui/components/visible-hyperlinks.d.ts +26 -0
  419. package/dist/ui/components/visible-hyperlinks.js +97 -0
  420. package/dist/{src/foundation/owned-ui-settings → ui/settings}/declarations.d.ts +8 -1
  421. package/dist/ui/settings/declarations.js +94 -0
  422. package/dist/{src/foundation/owned-ui-settings → ui/settings}/migrations.d.ts +1 -1
  423. package/dist/{src/foundation/owned-ui-settings → ui/settings}/migrations.js +28 -2
  424. package/dist/{src/foundation/owned-ui-settings → ui/settings}/sections.d.ts +6 -19
  425. package/dist/{src/foundation/owned-ui-settings → ui/settings}/sections.js +41 -22
  426. package/dist/{src/foundation/owned-ui-settings → ui/settings}/session.d.ts +9 -17
  427. package/dist/ui/settings/session.js +164 -0
  428. package/dist/{src/foundation/owned-ui-settings → ui/settings}/store.d.ts +1 -0
  429. package/dist/{src/foundation/owned-ui-settings → ui/settings}/store.js +2 -1
  430. package/docs/architecture/boundaries.md +14 -10
  431. package/docs/architecture/code-documentation.md +77 -0
  432. package/docs/architecture/history-editor-provenance.md +100 -0
  433. package/docs/architecture/internal-naming.md +91 -0
  434. package/docs/architecture/process-guardian-provenance.md +3 -1
  435. package/docs/architecture/project-structure.md +69 -30
  436. package/docs/architecture/prompt-suggestions.md +68 -0
  437. package/docs/architecture/resource-and-data-policy.md +28 -2
  438. package/docs/architecture/response-copy-delivery.md +83 -0
  439. package/docs/architecture/tool-image-presentation.md +62 -0
  440. package/docs/architecture/toolchain.md +24 -10
  441. package/docs/architecture/ui-reference-provenance.md +59 -5
  442. package/docs/ci-release-runbook.md +236 -79
  443. package/docs/features/launch-profiles.md +24 -17
  444. package/docs/features/modal-content-interaction.md +37 -0
  445. package/docs/features/prompt-history.md +149 -0
  446. package/docs/local-worktree-cleanup.md +128 -0
  447. package/docs/manual-code-streaming-cleanup.md +88 -0
  448. package/docs/manual-ghost-link-baseline.md +89 -0
  449. package/docs/manual-launch-instance-acceptance.md +12 -35
  450. package/docs/manual-owned-ui-checkpoint.md +78 -0
  451. package/docs/manual-pi-boundary-candidate.md +4 -5
  452. package/docs/manual-terminal-colour-check.md +4 -3
  453. package/docs/openspec-archive-automation.md +128 -0
  454. package/docs/repository-governance-live-acceptance.md +77 -0
  455. package/package.json +45 -28
  456. package/dist/src/cli/capabilities.d.ts +0 -15
  457. package/dist/src/cli/dispatch.js +0 -142
  458. package/dist/src/cli/version-stats.js +0 -72
  459. package/dist/src/composition/index.d.ts +0 -48
  460. package/dist/src/composition/index.js +0 -258
  461. package/dist/src/features/launch/intent.d.ts +0 -7
  462. package/dist/src/features/launch/intent.js +0 -4
  463. package/dist/src/features/launch/profiles.d.ts +0 -12
  464. package/dist/src/features/launch/profiles.js +0 -26
  465. package/dist/src/features/owned-ui/run.js +0 -15
  466. package/dist/src/foundation/lifecycle/paths.d.ts +0 -10
  467. package/dist/src/foundation/owned-ui-contracts/index.d.ts +0 -3
  468. package/dist/src/foundation/owned-ui-contracts/index.js +0 -3
  469. package/dist/src/foundation/owned-ui-settings/declarations.js +0 -39
  470. package/dist/src/foundation/owned-ui-settings/session.js +0 -145
  471. package/dist/src/foundation/pi-component-adapter/shell-editor-autocomplete.js +0 -162
  472. package/dist/src/foundation/pi-component-adapter/shell-presenters-transcript.d.ts +0 -57
  473. package/dist/src/foundation/pi-component-adapter/shell-shared-facade.d.ts +0 -116
  474. package/dist/src/foundation/pi-component-adapter/upstream/components/earendil-announcement.js +0 -19
  475. package/dist/src/foundation/pi-component-adapter/upstream/components/owned-editor.d.ts +0 -18
  476. package/dist/src/foundation/pi-component-adapter/upstream/components/owned-editor.js +0 -55
  477. package/dist/src/foundation/pi-engine-adapter/settings-integration.d.ts +0 -55
  478. package/dist/src/foundation/pi-owned-ui-integration/index.d.ts +0 -2
  479. package/dist/src/foundation/pi-owned-ui-integration/index.js +0 -2
  480. package/dist/src/foundation/pi-owned-ui-integration/route-host.d.ts +0 -29
  481. package/dist/src/foundation/pi-owned-ui-integration/session-shell.d.ts +0 -106
  482. package/dist/src/foundation/pi-owned-ui-integration/session-shell.js +0 -1518
  483. package/dist/src/foundation/pi-tui-runtime-adapter/index.d.ts +0 -4
  484. package/dist/src/foundation/pi-tui-runtime-adapter/index.js +0 -4
  485. package/dist/src/foundation/release/bootstrap.d.ts +0 -29
  486. package/dist/src/foundation/release/cohort-state.d.ts +0 -70
  487. package/dist/src/foundation/release/cohort-state.js +0 -202
  488. package/dist/src/foundation/release/release-gc.d.ts +0 -5
  489. package/dist/src/foundation/release/release-gc.js +0 -16
  490. package/dist/src/foundation/supervision/index.d.ts +0 -3
  491. package/dist/src/foundation/supervision/index.js +0 -3
  492. package/dist/src/foundation/supervision/main.d.ts +0 -1
  493. package/dist/src/foundation/supervision/main.js +0 -41
  494. package/dist/src/foundation/supervision/paths.d.ts +0 -1
  495. package/dist/src/foundation/supervision/paths.js +0 -1
  496. package/dist/src/foundation/supervision/server.d.ts +0 -22
  497. package/dist/src/foundation/ui-components/spans.d.ts +0 -7
  498. package/dist/src/foundation/ui-components/spans.js +0 -59
  499. package/docs/manual-transparent-checkpoint.md +0 -53
  500. /package/dist/{src/cli → cli}/index.d.ts +0 -0
  501. /package/dist/{src/cli → cli}/index.js +0 -0
  502. /package/dist/{src/cli → cli}/version.d.ts +0 -0
  503. /package/dist/{src/cli → cli}/version.js +0 -0
  504. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/capability-ports.js +0 -0
  505. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/domain-validation.d.ts +0 -0
  506. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/domain.js +0 -0
  507. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/index.d.ts +0 -0
  508. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/index.js +0 -0
  509. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/model.d.ts +0 -0
  510. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/model.js +0 -0
  511. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/package-ports.js +0 -0
  512. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/ports.d.ts +0 -0
  513. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/ports.js +0 -0
  514. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/serialization.d.ts +0 -0
  515. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/serialization.js +0 -0
  516. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/validation.d.ts +0 -0
  517. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/validation.js +0 -0
  518. /package/dist/{src/foundation/owned-ui-contracts → contracts/owned-ui}/extension-ui.d.ts +0 -0
  519. /package/dist/{src/foundation/owned-ui-contracts → contracts/owned-ui}/extension-ui.js +0 -0
  520. /package/dist/{src/foundation/owned-ui-contracts → contracts/owned-ui}/model.js +0 -0
  521. /package/dist/{src/foundation/presentation-contracts → contracts/presentation}/index.js +0 -0
  522. /package/dist/{src/foundation/workspace-contracts → contracts/workspace}/index.d.ts +0 -0
  523. /package/dist/{src/foundation/workspace-contracts → contracts/workspace}/index.js +0 -0
  524. /package/dist/{src/foundation/workspace-contracts → contracts/workspace}/model.d.ts +0 -0
  525. /package/dist/{src/foundation/workspace-contracts → contracts/workspace}/model.js +0 -0
  526. /package/dist/{src/foundation/workspace-contracts → contracts/workspace}/validation.d.ts +0 -0
  527. /package/dist/{src/foundation/workspace-contracts → contracts/workspace}/validation.js +0 -0
  528. /package/dist/{src/features → features}/launch/development-launch.d.ts +0 -0
  529. /package/dist/{src/features → features}/launch/initialize-profile.d.ts +0 -0
  530. /package/dist/{src/features → features}/launch/initialize-profile.js +0 -0
  531. /package/dist/{src/features → features}/launch/runtime-selection.js +0 -0
  532. /package/dist/{src/features → features}/workspace/capabilities.js +0 -0
  533. /package/dist/{src/features → features}/workspace/index.d.ts +0 -0
  534. /package/dist/{src/features → features}/workspace/index.js +0 -0
  535. /package/dist/{src/features → features}/workspace/presentation.d.ts +0 -0
  536. /package/dist/{src/features → features}/workspace/presentation.js +0 -0
  537. /package/dist/{src/features → features}/workspace/reconciliation.d.ts +0 -0
  538. /package/dist/{src/features → features}/workspace/reconciliation.js +0 -0
  539. /package/dist/{src/foundation → foundation}/launch-guardian/index.d.ts +0 -0
  540. /package/dist/{src/foundation → foundation}/launch-guardian/index.js +0 -0
  541. /package/dist/{src/foundation → foundation}/lifecycle/commands.d.ts +0 -0
  542. /package/dist/{src/foundation → foundation}/lifecycle/commands.js +0 -0
  543. /package/dist/{src/foundation → foundation}/lifecycle/launch-instance.d.ts +0 -0
  544. /package/dist/{src/foundation → foundation}/lifecycle/launch-instance.js +0 -0
  545. /package/dist/{src/foundation → foundation}/native-host-protocol/evidence.d.ts +0 -0
  546. /package/dist/{src/foundation → foundation}/native-host-protocol/evidence.js +0 -0
  547. /package/dist/{src/foundation → foundation}/native-host-protocol/index.d.ts +0 -0
  548. /package/dist/{src/foundation → foundation}/native-host-protocol/index.js +0 -0
  549. /package/dist/{src/foundation → foundation}/native-host-protocol/proof-gate.d.ts +0 -0
  550. /package/dist/{src/foundation → foundation}/native-host-protocol/proof-gate.js +0 -0
  551. /package/dist/{src/foundation → foundation}/process-containment/artifact.d.ts +0 -0
  552. /package/dist/{src/foundation → foundation}/process-containment/artifact.js +0 -0
  553. /package/dist/{src/foundation → foundation}/process-containment/contracts.d.ts +0 -0
  554. /package/dist/{src/foundation → foundation}/process-containment/contracts.js +0 -0
  555. /package/dist/{src/foundation → foundation}/protocol/index.d.ts +0 -0
  556. /package/dist/{src/foundation → foundation}/protocol/index.js +0 -0
  557. /package/dist/{src/foundation → foundation}/release/cohort-selection.d.ts +0 -0
  558. /package/dist/{src/foundation → foundation}/release/cohort-selection.js +0 -0
  559. /package/dist/{src/foundation → foundation}/release/concurrency.d.ts +0 -0
  560. /package/dist/{src/foundation → foundation}/release/concurrency.js +0 -0
  561. /package/dist/{src/foundation → foundation}/release/process-cleanup.d.ts +0 -0
  562. /package/dist/{src/foundation → foundation}/release/process-cleanup.js +0 -0
  563. /package/dist/{src/foundation → foundation}/release/stable-release.d.ts +0 -0
  564. /package/dist/{src/foundation → foundation}/release/stable-release.js +0 -0
  565. /package/dist/{src/foundation → foundation}/storage/index.d.ts +0 -0
  566. /package/dist/{src/foundation → foundation}/storage/index.js +0 -0
  567. /package/dist/{src/foundation → foundation}/structured-agent-runtime/index.d.ts +0 -0
  568. /package/dist/{src/foundation → foundation}/structured-agent-runtime/index.js +0 -0
  569. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/components.js +0 -0
  570. /package/dist/{src/foundation/pi-owned-ui-integration/route-host.js → integrations/pi/components/editor-interaction.js} +0 -0
  571. /package/dist/{src/foundation/pi-tui-runtime-adapter/contracts.js → integrations/pi/components/prompt-input-port.js} +0 -0
  572. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/resources/builtin-themes.d.ts +0 -0
  573. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/resources/builtin-themes.js +0 -0
  574. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/shell-editor-autocomplete.d.ts +0 -0
  575. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/shell-extension-ui.js +0 -0
  576. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/theme.d.ts +0 -0
  577. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/theme.js +0 -0
  578. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/countdown-timer.d.ts +0 -0
  579. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/countdown-timer.js +0 -0
  580. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/custom-entry.d.ts +0 -0
  581. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/custom-entry.js +0 -0
  582. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/daxnuts.d.ts +0 -0
  583. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/daxnuts.js +0 -0
  584. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/earendil-announcement.d.ts +0 -0
  585. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/extension-editor.d.ts +0 -0
  586. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/extension-editor.js +0 -0
  587. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/first-time-setup.d.ts +0 -0
  588. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/first-time-setup.js +0 -0
  589. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/markdown-transform.d.ts +0 -0
  590. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/markdown-transform.js +0 -0
  591. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/mermaid.d.ts +0 -0
  592. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/mermaid.js +0 -0
  593. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/session-selector-search.d.ts +0 -0
  594. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/session-selector-search.js +0 -0
  595. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/session-selector.d.ts +0 -0
  596. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/session-selector.js +0 -0
  597. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/skill-invocation-message.d.ts +0 -0
  598. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/skill-invocation-message.js +0 -0
  599. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/status-indicator.d.ts +0 -0
  600. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/status-indicator.js +0 -0
  601. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/tree-selector.d.ts +0 -0
  602. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/tree-selector.js +0 -0
  603. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/trust-selector.d.ts +0 -0
  604. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/trust-selector.js +0 -0
  605. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/external-editor.d.ts +0 -0
  606. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/external-editor.js +0 -0
  607. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/model-search.d.ts +0 -0
  608. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/model-search.js +0 -0
  609. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/theme/theme-controller.d.ts +0 -0
  610. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/theme/theme-controller.js +0 -0
  611. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/theme/theme.d.ts +0 -0
  612. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/theme/theme.js +0 -0
  613. /package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/pi-settings-metadata.json +0 -0
  614. /package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/public-main-entry.d.ts +0 -0
  615. /package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/public-main-entry.js +0 -0
  616. /package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/workflows.js +0 -0
  617. /package/dist/{src/foundation/pi-tui-runtime-adapter → integrations/pi/tui-runtime}/conformance.d.ts +0 -0
  618. /package/dist/{src/foundation/pi-tui-runtime-adapter → integrations/pi/tui-runtime}/conformance.js +0 -0
  619. /package/dist/{src/foundation/pi-tui-runtime-adapter → integrations/pi/tui-runtime}/presentation-adapter.js +0 -0
  620. /package/dist/{src/foundation/ui-apps → ui/apps}/contracts.js +0 -0
  621. /package/dist/{src/foundation/ui-apps → ui/apps}/index.d.ts +0 -0
  622. /package/dist/{src/foundation/ui-apps → ui/apps}/index.js +0 -0
  623. /package/dist/{src/foundation/ui-components → ui/components}/dialog-panel.d.ts +0 -0
  624. /package/dist/{src/foundation/ui-components → ui/components}/label.d.ts +0 -0
  625. /package/dist/{src/foundation/ui-components → ui/components}/label.js +0 -0
  626. /package/dist/{src/foundation/ui-components → ui/components}/list-block.d.ts +0 -0
  627. /package/dist/{src/foundation/ui-components → ui/components}/list-block.js +0 -0
  628. /package/dist/{src/foundation/ui-components → ui/components}/pane.d.ts +0 -0
  629. /package/dist/{src/foundation/ui-components → ui/components}/pane.js +0 -0
  630. /package/dist/{src/foundation/ui-components → ui/components}/revision.d.ts +0 -0
  631. /package/dist/{src/foundation/ui-components → ui/components}/revision.js +0 -0
  632. /package/dist/{src/foundation/ui-components → ui/components}/status-line.d.ts +0 -0
  633. /package/dist/{src/foundation/ui-components → ui/components}/status-line.js +0 -0
  634. /package/dist/{src/foundation/ui-components → ui/components}/stepper.d.ts +0 -0
  635. /package/dist/{src/foundation/ui-components → ui/components}/stepper.js +0 -0
  636. /package/dist/{src/foundation/ui-components → ui/components}/theme.d.ts +0 -0
  637. /package/dist/{src/foundation/ui-components → ui/components}/theme.js +0 -0
  638. /package/dist/{src/foundation/ui-components → ui/components}/value-menu.d.ts +0 -0
  639. /package/dist/{src/foundation/ui-components → ui/components}/value-menu.js +0 -0
  640. /package/dist/{src/foundation/owned-ui-settings → ui/settings}/index.d.ts +0 -0
  641. /package/dist/{src/foundation/owned-ui-settings → ui/settings}/index.js +0 -0
  642. /package/dist/{src/foundation/owned-ui-settings → ui/settings}/resolution.d.ts +0 -0
  643. /package/dist/{src/foundation/owned-ui-settings → ui/settings}/resolution.js +0 -0
@@ -0,0 +1,122 @@
1
+ import { MAX_COPY_ROWS, MAX_COPY_SOURCE_UNITS, selectionCopyRowText } from "../../../ui/components/index.js";
2
+ import { COPY_CHUNK_UNITS, MAX_COPY_BYTES, MAX_COPY_CONTROL_BYTES } from "./response-copy-protocol.js";
3
+ // Security: this isolated executor never inherits the UI terminal and never logs clipboard contents.
4
+ let header;
5
+ let fragments = [];
6
+ let parts = [];
7
+ let rowIndex = 0, sourceUnits = 0, bytes = 0;
8
+ let finished = false;
9
+ let output;
10
+ let outputOffset = 0;
11
+ function nextOutput() {
12
+ if (output === undefined)
13
+ throw new Error("protocol");
14
+ if (outputOffset === output.length) {
15
+ output = undefined;
16
+ finish({ outcome: "delivered" });
17
+ return;
18
+ }
19
+ let end = Math.min(output.length, outputOffset + COPY_CHUNK_UNITS);
20
+ if (end < output.length && /[\uD800-\uDBFF]/u.test(output[end - 1]) && /[\uDC00-\uDFFF]/u.test(output[end]))
21
+ end--;
22
+ const text = output.slice(outputOffset, end);
23
+ outputOffset = end;
24
+ send({ kind: "data", text });
25
+ }
26
+ function send(message) { process.send?.(message); }
27
+ function finish(result, control) {
28
+ if (finished)
29
+ return;
30
+ finished = true;
31
+ fragments = [];
32
+ parts = [];
33
+ process.send?.({ kind: "result", result, ...(control === undefined ? {} : { control }) }, () => process.exit(0));
34
+ }
35
+ async function receive(message) {
36
+ if (finished)
37
+ return;
38
+ if (message?.kind === "next" && header?.mode === "prepare") {
39
+ nextOutput();
40
+ return;
41
+ }
42
+ if (message?.kind === "begin" && header === undefined) {
43
+ if (!Number.isSafeInteger(message.rows) || message.rows < 1 || message.rows > MAX_COPY_ROWS
44
+ || !["native", "terminal", "prepare"].includes(message.mode))
45
+ throw new Error("protocol");
46
+ header = message;
47
+ }
48
+ else if (message?.kind === "row" && header !== undefined) {
49
+ if (typeof message.text !== "string" || message.text.length > COPY_CHUNK_UNITS || rowIndex >= header.rows)
50
+ throw new Error("protocol");
51
+ sourceUnits += message.text.length;
52
+ if (sourceUnits > MAX_COPY_SOURCE_UNITS) {
53
+ finish({ outcome: "failed", failure: "size" });
54
+ return;
55
+ }
56
+ fragments.push(message.text);
57
+ if (message.end) {
58
+ const text = selectionCopyRowText(header, { text: fragments.join(""), ...(message.prompt === undefined ? {} : { prompt: message.prompt }) }, rowIndex);
59
+ fragments = [];
60
+ bytes += Buffer.byteLength(text, "utf8") + (rowIndex === 0 ? 0 : 1);
61
+ if (bytes > MAX_COPY_BYTES) {
62
+ finish({ outcome: "failed", failure: "size" });
63
+ return;
64
+ }
65
+ parts.push(text);
66
+ rowIndex++;
67
+ }
68
+ }
69
+ else if (message?.kind === "finish" && header !== undefined && rowIndex === header.rows && fragments.length === 0) {
70
+ send({ kind: "phase", phase: "extracted", bytes });
71
+ const text = parts.join("\n");
72
+ parts = [];
73
+ if (text.length === 0) {
74
+ finish({ outcome: "failed", failure: "size" });
75
+ return;
76
+ }
77
+ if (header.mode === "prepare") {
78
+ // Protocol: this success acknowledges prepared IPC only; the owner must still await its injected writer.
79
+ output = text;
80
+ nextOutput();
81
+ return;
82
+ }
83
+ if (header.mode === "terminal") {
84
+ const limit = Math.min(MAX_COPY_CONTROL_BYTES, header.controlLimit);
85
+ if (!Number.isSafeInteger(limit) || limit < 8 || 8 + 4 * Math.ceil(bytes / 3) > limit) {
86
+ finish({ outcome: "failed", failure: "size" });
87
+ return;
88
+ }
89
+ const control = `\u001b]52;c;${Buffer.from(text, "utf8").toString("base64")}\u0007`;
90
+ send({ kind: "phase", phase: "encoded", bytes });
91
+ finish({ outcome: "submitted-unverified" }, control);
92
+ return;
93
+ }
94
+ // Platform: even an async native binding may block internally; the parent can terminate this process.
95
+ let native;
96
+ try {
97
+ native = await import("@mariozechner/clipboard");
98
+ }
99
+ catch {
100
+ finish({ outcome: "failed", failure: "unavailable" });
101
+ return;
102
+ }
103
+ send({ kind: "phase", phase: "submitting", bytes });
104
+ try {
105
+ await native.setText(text);
106
+ finish({ outcome: "delivered" });
107
+ }
108
+ catch {
109
+ finish({ outcome: "failed", failure: "denied" });
110
+ }
111
+ return;
112
+ }
113
+ else
114
+ throw new Error("protocol");
115
+ send({ kind: "ready" });
116
+ }
117
+ process.on("message", message => {
118
+ void receive(message).catch(() => finish({ outcome: "failed", failure: "transport" }));
119
+ });
120
+ // Concurrency: a vanished owner must never leave a clipboard worker alive.
121
+ process.on("disconnect", () => process.exit(0));
122
+ send({ kind: "ready" });
@@ -0,0 +1,56 @@
1
+ import type { OrderedTextSelection, SelectionCopyPrompt } from "../../../ui/components/index.js";
2
+ export declare const COPY_DEADLINE_MS = 5000;
3
+ export declare const COPY_CLEANUP_MS = 250;
4
+ export declare const MAX_COPY_BYTES: number;
5
+ export declare const MAX_COPY_CONTROL_BYTES: number;
6
+ export declare const COPY_CHUNK_UNITS = 16384;
7
+ export type CopyOutcome = "delivered" | "submitted-unverified" | "failed" | "timed-out" | "superseded" | "canceled";
8
+ export type CopyFailure = "size" | "unavailable" | "denied" | "transport" | "unsafe";
9
+ export interface CopyResult {
10
+ readonly outcome: CopyOutcome;
11
+ readonly failure?: CopyFailure;
12
+ }
13
+ /** Payload-free observations; callers must not attach transcript/clipboard content. */
14
+ export interface ResponseCopyEvent {
15
+ readonly request: number;
16
+ readonly phase: "capture" | "selection-clear" | "queued" | "preparing" | "extracted" | "encoded" | "submitting" | "settled" | "cleanup";
17
+ readonly atMs: number;
18
+ readonly elapsedMs: number;
19
+ readonly pending: number;
20
+ readonly sourceUnits: number;
21
+ readonly bytes?: number;
22
+ readonly transport?: "native" | "terminal" | "injected";
23
+ readonly outcome?: CopyOutcome;
24
+ }
25
+ /** One request per helper lifetime. Each source fragment is acknowledged before the next is sent. */
26
+ export type CopyHelperInput = {
27
+ readonly kind: "begin";
28
+ readonly selection: OrderedTextSelection;
29
+ readonly rows: number;
30
+ readonly mode: "native" | "terminal" | "prepare";
31
+ readonly literal?: boolean;
32
+ readonly controlLimit: number;
33
+ } | {
34
+ readonly kind: "row";
35
+ readonly text: string;
36
+ readonly end: boolean;
37
+ readonly prompt?: Exclude<SelectionCopyPrompt, undefined>;
38
+ } | {
39
+ readonly kind: "finish";
40
+ } | {
41
+ readonly kind: "next";
42
+ };
43
+ export type CopyHelperOutput = {
44
+ readonly kind: "ready";
45
+ } | {
46
+ readonly kind: "data";
47
+ readonly text: string;
48
+ } | {
49
+ readonly kind: "phase";
50
+ readonly phase: "extracted" | "encoded" | "submitting";
51
+ readonly bytes: number;
52
+ } | {
53
+ readonly kind: "result";
54
+ readonly result: CopyResult;
55
+ readonly control?: string;
56
+ };
@@ -0,0 +1,5 @@
1
+ export const COPY_DEADLINE_MS = 5_000;
2
+ export const COPY_CLEANUP_MS = 250;
3
+ export const MAX_COPY_BYTES = 16 * 1024 * 1024;
4
+ export const MAX_COPY_CONTROL_BYTES = 64 * 1024;
5
+ export const COPY_CHUNK_UNITS = 16_384;
@@ -0,0 +1,31 @@
1
+ import type { SelectionCopySnapshot } from "../../../ui/components/index.js";
2
+ import { type CopyResult } from "./response-copy-protocol.js";
3
+ export interface ResponseCopyJob {
4
+ readonly result: Promise<CopyResult>;
5
+ /** Resolves only after the executor can no longer produce clipboard side effects. */
6
+ readonly stopped: Promise<void>;
7
+ cancel(): void;
8
+ }
9
+ export type CopyPhaseObserver = (phase: "extracted" | "encoded" | "submitting", bytes: number, transport: "native" | "terminal" | "injected") => void;
10
+ export type ResponseCopyExecutor = (snapshot: SelectionCopySnapshot, phase: CopyPhaseObserver) => ResponseCopyJob;
11
+ export interface ResponseCopyTerminal {
12
+ readonly maxBytes?: number;
13
+ /** A supported non-blocking submission boundary, not clipboard acknowledgment. */
14
+ submit(control: string, signal: AbortSignal): Promise<void>;
15
+ }
16
+ /** Never substitute a remote host's native clipboard for the terminal user's clipboard. */
17
+ export declare function responseCopyDestination(env: NodeJS.ProcessEnv): "native" | "terminal";
18
+ /** Node documents synchronous POSIX TTY and Windows pipe writes; do not put clipboard traffic there. */
19
+ export declare function hasAsyncClipboardOutput(platform?: NodeJS.Platform, stdout?: {
20
+ readonly isTTY?: boolean | undefined;
21
+ readonly fd?: number | undefined;
22
+ }): boolean;
23
+ /** Isolates preparation and native clipboard access; only the owner may submit terminal controls. */
24
+ export declare function createResponseCopyExecutor(options?: {
25
+ readonly terminal?: ResponseCopyTerminal;
26
+ readonly destination?: "native" | "terminal";
27
+ /** Explicit host seam: must be non-blocking and honor cancellation, or its unresolved lifetime is quarantined. */
28
+ readonly writeText?: (text: string, signal: AbortSignal) => Promise<void>;
29
+ /** Package/fault-test seam: the production helper is always an emitted sibling. */
30
+ readonly helper?: URL;
31
+ }): ResponseCopyExecutor;
@@ -0,0 +1,187 @@
1
+ import { fork } from "node:child_process";
2
+ import { fstatSync } from "node:fs";
3
+ import { COPY_CHUNK_UNITS, COPY_CLEANUP_MS, MAX_COPY_BYTES, MAX_COPY_CONTROL_BYTES } from "./response-copy-protocol.js";
4
+ /** Never substitute a remote host's native clipboard for the terminal user's clipboard. */
5
+ export function responseCopyDestination(env) {
6
+ return env.SSH_CONNECTION || env.SSH_CLIENT || env.SSH_TTY || env.TMUX || env.STY || env.WSL_DISTRO_NAME
7
+ ? "terminal" : "native";
8
+ }
9
+ /** Node documents synchronous POSIX TTY and Windows pipe writes; do not put clipboard traffic there. */
10
+ export function hasAsyncClipboardOutput(platform = process.platform, stdout = process.stdout) {
11
+ if (stdout.isTTY)
12
+ return platform === "win32";
13
+ if (platform === "win32")
14
+ return false;
15
+ try {
16
+ const stat = fstatSync(stdout.fd ?? -1);
17
+ return stat.isFIFO() || stat.isSocket();
18
+ }
19
+ catch {
20
+ return false;
21
+ }
22
+ }
23
+ /** Isolates preparation and native clipboard access; only the owner may submit terminal controls. */
24
+ export function createResponseCopyExecutor(options = {}) {
25
+ return (snapshot, phase) => {
26
+ const controller = new AbortController();
27
+ let active;
28
+ const run = async () => {
29
+ const destination = options.writeText === undefined ? options.destination ?? responseCopyDestination(process.env) : "prepare";
30
+ const execute = async (mode) => {
31
+ if (controller.signal.aborted)
32
+ return { kind: "result", result: { outcome: "canceled" } };
33
+ if (mode === "terminal" && options.terminal === undefined) {
34
+ return { kind: "result", result: { outcome: "failed", failure: "unsafe" } };
35
+ }
36
+ active = startHelper(snapshot, mode, options.terminal?.maxBytes ?? MAX_COPY_CONTROL_BYTES, phase, options.helper);
37
+ if (controller.signal.aborted)
38
+ active.cancel();
39
+ return active.result;
40
+ };
41
+ let outcome = await execute(destination);
42
+ // Concurrency: helper results settle only after exit; fallback cannot race an older native write.
43
+ if (!controller.signal.aborted && destination === "native" && outcome.result.failure === "unavailable" && options.terminal !== undefined) {
44
+ outcome = await execute("terminal");
45
+ }
46
+ if (controller.signal.aborted)
47
+ return { outcome: "canceled" };
48
+ if (destination === "prepare" && outcome.result.outcome === "delivered") {
49
+ if (outcome.text === undefined)
50
+ return { outcome: "failed", failure: "transport" };
51
+ phase("submitting", outcome.bytes ?? 0, "injected");
52
+ await options.writeText(outcome.text, controller.signal);
53
+ }
54
+ if (outcome.result.outcome === "submitted-unverified") {
55
+ const control = "control" in outcome ? outcome.control : undefined;
56
+ if (typeof control !== "string" || !/^\u001b\]52;c;[A-Za-z0-9+/]*={0,2}\u0007$/u.test(control)
57
+ || Buffer.byteLength(control) > Math.min(MAX_COPY_CONTROL_BYTES, options.terminal === undefined ? 0 : options.terminal.maxBytes ?? MAX_COPY_CONTROL_BYTES)) {
58
+ return { outcome: "failed", failure: "transport" };
59
+ }
60
+ phase("submitting", control.length, "terminal");
61
+ await options.terminal.submit(control, controller.signal);
62
+ }
63
+ return controller.signal.aborted ? { outcome: "canceled" } : outcome.result;
64
+ };
65
+ const result = run().catch(() => ({ outcome: controller.signal.aborted ? "canceled" : "failed", failure: "transport" }));
66
+ return { result, stopped: result.then(() => { }), cancel: () => { controller.abort(); active?.cancel(); } };
67
+ };
68
+ }
69
+ function* sourceMessages(snapshot, mode, controlLimit) {
70
+ yield { kind: "begin", selection: snapshot.selection, rows: snapshot.rows.length, mode, controlLimit,
71
+ ...(snapshot.literal === undefined ? {} : { literal: snapshot.literal }) };
72
+ for (const row of snapshot.rows) {
73
+ for (let offset = 0; offset < Math.max(1, row.text.length); offset += COPY_CHUNK_UNITS) {
74
+ yield { kind: "row", text: row.text.slice(offset, offset + COPY_CHUNK_UNITS), end: offset + COPY_CHUNK_UNITS >= row.text.length,
75
+ ...(row.prompt === undefined ? {} : { prompt: row.prompt }) };
76
+ }
77
+ }
78
+ yield { kind: "finish" };
79
+ }
80
+ function startHelper(snapshot, mode, controlLimit, phase, helper) {
81
+ const source = new URL(import.meta.url).pathname.endsWith(".ts");
82
+ const entry = helper ?? new URL(source ? "./response-copy-helper.ts" : "./response-copy-helper.js", import.meta.url);
83
+ // Security: bounded IPC only, no clipboard payload in argv/temp files, and no inherited terminal descriptors.
84
+ const forkOptions = {
85
+ execArgv: entry.pathname.endsWith(".ts") ? ["--import", "tsx"] : [],
86
+ stdio: ["ignore", "ignore", "ignore", "ipc"], windowsHide: true,
87
+ serialization: "json",
88
+ };
89
+ const child = fork(entry, [], forkOptions);
90
+ let iterator = sourceMessages(snapshot, mode, controlLimit);
91
+ let outcome;
92
+ let stopping = false;
93
+ let prepared = [], preparedBytes = 0, expectedBytes;
94
+ const observedPhases = new Set();
95
+ let cleanup;
96
+ const cancel = () => {
97
+ if (stopping)
98
+ return;
99
+ stopping = true;
100
+ prepared = [];
101
+ iterator = undefined;
102
+ child.kill("SIGKILL");
103
+ // Concurrency: a kernel-stuck child is quarantined by the coordinator, not allowed to pin UI shutdown.
104
+ cleanup = setTimeout(() => { child.unref(); child.channel?.unref(); }, COPY_CLEANUP_MS);
105
+ cleanup.unref();
106
+ };
107
+ const result = new Promise(resolve => {
108
+ let settled = false;
109
+ const settle = () => {
110
+ if (settled)
111
+ return;
112
+ settled = true;
113
+ const value = outcome ?? { kind: "result", result: { outcome: "failed", failure: "transport" } };
114
+ if (mode === "prepare" && value.result.outcome === "delivered") {
115
+ resolve(expectedBytes === preparedBytes ? { ...value, text: prepared.join(""), bytes: preparedBytes }
116
+ : { kind: "result", result: { outcome: "failed", failure: "transport" } });
117
+ }
118
+ else
119
+ resolve(value);
120
+ prepared = [];
121
+ };
122
+ child.on("message", value => {
123
+ const message = value;
124
+ if (stopping)
125
+ return;
126
+ if (message?.kind === "ready") {
127
+ const next = iterator?.next();
128
+ if (next === undefined || next.done) {
129
+ cancel();
130
+ return;
131
+ }
132
+ child.send(next.value, error => { if (error)
133
+ cancel(); });
134
+ }
135
+ else if (message?.kind === "data") {
136
+ if (mode !== "prepare" || expectedBytes === undefined || typeof message.text !== "string" || message.text.length > COPY_CHUNK_UNITS) {
137
+ cancel();
138
+ return;
139
+ }
140
+ preparedBytes += Buffer.byteLength(message.text);
141
+ if (preparedBytes > MAX_COPY_BYTES) {
142
+ cancel();
143
+ return;
144
+ }
145
+ prepared.push(message.text);
146
+ child.send({ kind: "next" }, error => { if (error)
147
+ cancel(); });
148
+ }
149
+ else if (message?.kind === "phase" && ["extracted", "encoded", "submitting"].includes(message.phase)
150
+ && Number.isSafeInteger(message.bytes) && message.bytes >= 0) {
151
+ if (observedPhases.has(message.phase)) {
152
+ cancel();
153
+ return;
154
+ }
155
+ observedPhases.add(message.phase);
156
+ if (message.phase === "extracted")
157
+ expectedBytes = message.bytes;
158
+ phase(message.phase, message.bytes, mode === "prepare" ? "injected" : mode);
159
+ }
160
+ else if (message?.kind === "result" && ["delivered", "submitted-unverified", "failed"].includes(message.result?.outcome)) {
161
+ outcome = message;
162
+ iterator = undefined;
163
+ // Concurrency: a result is not an exit fence. Bound a malformed helper that sends a result but never exits.
164
+ cleanup = setTimeout(cancel, COPY_CLEANUP_MS);
165
+ cleanup.unref();
166
+ }
167
+ else
168
+ cancel();
169
+ });
170
+ child.once("error", cancel);
171
+ child.once("exit", () => {
172
+ iterator = undefined;
173
+ if (cleanup !== undefined)
174
+ clearTimeout(cleanup);
175
+ child.removeAllListeners("message");
176
+ settle();
177
+ });
178
+ // Platform: spawn failure has no exit event, but has a close event and no live executor to fence.
179
+ child.once("close", () => {
180
+ iterator = undefined;
181
+ if (cleanup !== undefined)
182
+ clearTimeout(cleanup);
183
+ settle();
184
+ });
185
+ });
186
+ return { result, cancel };
187
+ }
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Compatibility export. Owned application route lifecycle belongs to the
3
+ * vendor-neutral UI app owner; the Pi shell only hosts that contract.
4
+ */
5
+ export type { UiRouteHost, UiRouteSurface } from "../../../ui/apps/index.js";
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,221 @@
1
+ import type { OwnedUiPromptSuggestionGeneratorPort, OwnedUiSessionViewModel, OwnedUiViewportSettings, OwnedUiViewportSettingsPort, SuggestionDecision, SuggestionDiagnosticObserver } from "../../../contracts/owned-ui/index.js";
2
+ import type { PiTuiPointerSurface } from "../tui-runtime/index.js";
3
+ import type { UiRouteHost } from "../../../ui/apps/index.js";
4
+ import { type TranscriptViewportFrame, type TranscriptViewportFrameDescriptor } from "../../../ui/components/index.js";
5
+ import { type PiEngineAdapter, type PiWorkflowMessage, type PiWorkflowResult } from "../engine/index.js";
6
+ import { type PiShellClipboardContent, type PiShellComponentPort, type PiShellEditorPort, type PiShellExtensionRendererResolver, type PiShellHeaderOptions, type PiShellHeaderPort, type PiShellImageAssetResolver, type PiShellLoadedResourcesPort, type PiShellResourceEntry, type PiShellTranscriptComponentPort } from "../components/index.js";
7
+ import { type PiTuiComponentPort, type PiTuiInputSurfaceKind, type PiTuiInputCoordinationScheduler, type PiTuiInputDiagnosticsEvent, type PiTuiLayoutNode, type PiTuiTerminalPort } from "../tui-runtime/index.js";
8
+ import { type PreparedPrompt } from "./prompt-chips.js";
9
+ import { type SessionViewportInputResult } from "./session-viewport-controller.js";
10
+ import type { ResponseCopyExecutor } from "./response-copy-transport.js";
11
+ import type { ResponseCopyEvent } from "./response-copy-protocol.js";
12
+ import type { PasteEvent, PasteSource } from "./paste-protocol.js";
13
+ import type { StreamPresentationScheduler } from "./stream-presentation-coalescer.js";
14
+ export type OwnedUiBackendPort = PiEngineAdapter;
15
+ export type OwnedUiTerminalPort = PiTuiTerminalPort;
16
+ type OwnedUiStartupOptions = PiShellHeaderOptions;
17
+ export interface OwnedUiClipboardPort {
18
+ readText(signal?: AbortSignal): Promise<string | null>;
19
+ readImage?(signal?: AbortSignal): Promise<{
20
+ readonly data: string;
21
+ readonly mimeType: string;
22
+ } | null>;
23
+ writeText?(text: string, signal?: AbortSignal): Promise<void>;
24
+ }
25
+ export interface OwnedUiSessionShellOptions {
26
+ readonly promptHistory?: {
27
+ readonly store: import("../../../contracts/owned-ui/index.js").PromptHistoryPort;
28
+ readonly limit: number;
29
+ readonly editor: import("../components/index.js").HistoryEditorConstructor;
30
+ /** Optional per-profile filesystem sidecar for image chip payloads. When present, submit
31
+ * writes each referenced attachment and recall reads them back to rehydrate live chips.
32
+ * When absent, image chips silently strip on recall, matching the missing-sidecar path. */
33
+ readonly imageSidecar?: import("../../../contracts/owned-ui/index.js").PromptHistoryImageSidecarPort;
34
+ };
35
+ readonly backend: OwnedUiBackendPort;
36
+ readonly cwd: string;
37
+ readonly terminal?: OwnedUiTerminalPort;
38
+ readonly startup?: OwnedUiStartupOptions;
39
+ /**
40
+ * Declared A1-owned routes. A route this host claims resolves to its app;
41
+ * every other route continues to the pinned workflow table unchanged.
42
+ */
43
+ readonly routeHost?: UiRouteHost;
44
+ /** Bare A1 selects the owned bounded viewport; comparison profiles stay pinned. */
45
+ readonly sessionLayout?: "pinned" | "custom-viewport";
46
+ /** Live profile-local settings, supplied only to the bare-A1 composition. */
47
+ readonly viewportSettings?: OwnedUiViewportSettingsPort;
48
+ /** Optional platform seam; production uses A1's system clipboard adapter. */
49
+ readonly clipboard?: OwnedUiClipboardPort;
50
+ /** Owned response-copy transport and payload-free diagnostic seams. Comparison profiles ignore them. */
51
+ readonly responseCopy?: {
52
+ readonly execute?: ResponseCopyExecutor;
53
+ readonly onEvent?: (event: ResponseCopyEvent) => void;
54
+ };
55
+ /** Bounded, payload-free clipboard acquisition/preparation observations. */
56
+ readonly pasteDiagnostics?: (event: PasteEvent) => void;
57
+ /** Deterministic scheduling seam for presentation-cadence tests. */
58
+ readonly streamPresentation?: {
59
+ readonly intervalMs?: number;
60
+ readonly scheduler?: StreamPresentationScheduler;
61
+ };
62
+ /** Optional deterministic seam for keyboard scheduling and phase evidence. */
63
+ readonly promptSuggestions?: {
64
+ readonly diagnostics?: SuggestionDiagnosticObserver;
65
+ readonly generator: OwnedUiPromptSuggestionGeneratorPort;
66
+ readonly enabled: () => boolean;
67
+ readonly onChange: (listener: (enabled: boolean) => void) => () => void;
68
+ };
69
+ readonly inputPresentation?: {
70
+ readonly scheduler?: PiTuiInputCoordinationScheduler;
71
+ readonly onEvent?: (event: PiTuiInputDiagnosticsEvent) => void;
72
+ readonly now?: () => number;
73
+ /** Evidence-only baseline seam; production leaves coordination enabled. */
74
+ readonly coordination?: boolean;
75
+ /** Evidence-only baseline seam; production leaves dock reuse enabled. */
76
+ readonly viewportReuse?: boolean;
77
+ };
78
+ }
79
+ /** Composes backend session state into the owned transcript, viewport, editor, and dock presentation. */
80
+ export declare class OwnedUiSessionShellRoot implements PiTuiComponentPort {
81
+ #private;
82
+ readonly editor: PiShellEditorPort;
83
+ readonly header: PiShellHeaderPort;
84
+ readonly resources: PiShellLoadedResourcesPort;
85
+ constructor(view: OwnedUiSessionViewModel, cwd: string, handlers: {
86
+ readonly getColumns: () => number;
87
+ readonly getRows: () => number;
88
+ readonly requestRender: (force?: boolean) => void;
89
+ readonly onViewportFrame?: (frame: TranscriptViewportFrame) => void;
90
+ readonly requestHyperlinkCleanup?: (rows?: readonly number[]) => void;
91
+ readonly enableDockInputReuse?: boolean;
92
+ readonly persistentHistory?: boolean;
93
+ readonly historyEditor?: import("../components/index.js").HistoryEditorConstructor;
94
+ readonly onSubmit: (text: string) => void;
95
+ readonly onPasteRejected?: (error: unknown) => void;
96
+ readonly onInterrupt: () => void;
97
+ readonly onClear?: () => void;
98
+ readonly onExit: () => void;
99
+ readonly onModelSelect: () => void;
100
+ readonly onModelCycle?: (direction: "forward" | "backward") => void;
101
+ readonly onThinkingCycle: () => void;
102
+ readonly onThinkingToggle?: () => void;
103
+ readonly onMessageCopy?: () => void;
104
+ readonly onFollowUp?: () => void;
105
+ readonly onDequeue?: () => void;
106
+ readonly onEditorChange?: (text: string) => void;
107
+ readonly onPromptSuggestionAccepted?: (text: string) => void;
108
+ readonly onInputSurfaceChanged?: () => void;
109
+ readonly onCopyText?: (text: string) => void;
110
+ readonly readClipboardContent?: (signal?: AbortSignal) => Promise<PiShellClipboardContent | null>;
111
+ readonly captureClipboardPaste?: () => PasteSource;
112
+ readonly pasteDiagnostics?: (event: PasteEvent) => void;
113
+ }, startup?: PiShellHeaderOptions, agentDir?: string, extensionRenderers?: PiShellExtensionRendererResolver, sessionLayout?: "pinned" | "custom-viewport", imageAssets?: PiShellImageAssetResolver);
114
+ setEditorPaddingX(padding: number): void;
115
+ setAutocompleteMaxVisible(maxVisible: number): void;
116
+ setOutputPad(padding: 0 | 1): void;
117
+ setHideThinkingBlock(hidden: boolean): void;
118
+ setMermaidRenderingMode(mode: "off" | "final" | "streaming"): void;
119
+ setImagePresentation(showImages: boolean, imageWidthCells: number): void;
120
+ prepareHistoryText(text: string): string;
121
+ rehydrateHistoryText(text: string, resolveImage: (id: string) => import("../../../contracts/owned-ui/index.js").PromptHistoryImageSidecarAttachment | null): string;
122
+ imageChipAttachmentsFromEditor(text: string): {
123
+ readonly id: string;
124
+ readonly tag: string;
125
+ readonly image: {
126
+ readonly type: "image";
127
+ readonly data: string;
128
+ readonly mimeType: string;
129
+ };
130
+ }[];
131
+ preparePromptSubmission(text: string): PreparedPrompt;
132
+ hasPendingPastes(text: string): boolean;
133
+ waitForPromptPastes(text: string, signal: AbortSignal): Promise<PreparedPrompt>;
134
+ resetPendingPastes(): void;
135
+ disposePendingPastes(): Promise<void>;
136
+ promptSuggestionPrepareBlockReason(): SuggestionDecision;
137
+ canPreparePromptSuggestion(): boolean;
138
+ promptSuggestionPresentationBlockReason(): SuggestionDecision;
139
+ canPresentPromptSuggestion(): boolean;
140
+ setPromptSuggestion(text: string | null): void;
141
+ update(view: OwnedUiSessionViewModel): void;
142
+ /**
143
+ * Applies one block: its component is created or updated in place and the order grows
144
+ * only when the block is new. A streamed chunk costs one component update rather than a
145
+ * walk of the whole transcript.
146
+ */
147
+ applyTranscriptBlock(block: OwnedUiSessionViewModel["transcript"][number]): void;
148
+ render(width: number): readonly string[];
149
+ viewportFrameDescriptor(): TranscriptViewportFrameDescriptor | null;
150
+ /** Read-only, payload-free evidence; observing a pending frame must never render or repair it. */
151
+ viewportPresentationEvidence(): {
152
+ candidate: boolean;
153
+ candidateRevision: number | null;
154
+ currentRevision: number;
155
+ composedRevision: number | null;
156
+ currentPointer: {
157
+ readonly column: number;
158
+ readonly row: number;
159
+ } | null;
160
+ composedPointer: {
161
+ readonly column: number;
162
+ readonly row: number;
163
+ } | null;
164
+ frameId: number | null;
165
+ bottom: {
166
+ readonly row: number;
167
+ readonly columnStart: number;
168
+ readonly columnEnd: number;
169
+ } | null;
170
+ followingEnd: boolean;
171
+ scrollTop: number;
172
+ maxScroll: number;
173
+ cause: "detached" | "initial" | "steady" | "dock-input" | "follow-shift" | "geometry-change" | null;
174
+ };
175
+ /** Visible non-selectable Steering, alignment, and Working rows, for rendering evidence. */
176
+ viewportTransientTailRowCount(): number;
177
+ hasActiveSelection(): boolean;
178
+ setViewportConfig(config: OwnedUiViewportSettings): void;
179
+ resumeViewportFollowing(): void;
180
+ noteCompletedAssistantMessage(): void;
181
+ /** A new session binding owns new mounts even when it reuses semantic invocation ids. */
182
+ resetTranscript(): void;
183
+ resetViewport(): void;
184
+ clearViewportPointerState(): void;
185
+ setViewportOverlaySurfaces(surfaces: readonly PiTuiPointerSurface[] | null): void;
186
+ viewportInputGeometryReady(width: number, height: number): boolean;
187
+ handleViewportPreInput(data: string, allowWheel?: boolean, now?: number, editorActive?: boolean): SessionViewportInputResult;
188
+ layoutRoot(): PiTuiLayoutNode;
189
+ transcriptComponent(id: string): PiShellTranscriptComponentPort | undefined;
190
+ exitTranscript(width: number): string;
191
+ appendWorkflowStatus(message: string): void;
192
+ appendWorkflowMessage(message: PiWorkflowMessage): void;
193
+ appendWorkflowResult(result: PiWorkflowResult): void;
194
+ appendDaxnuts(): void;
195
+ toggleThinkingVisibility(): void;
196
+ get toolsExpanded(): boolean;
197
+ setToolsExpanded(expanded: boolean): void;
198
+ setExtensionWidget(key: string, component: PiShellComponentPort | null, placement: "aboveEditor" | "belowEditor"): void;
199
+ setExtensionHeader(component: PiShellComponentPort | null): void;
200
+ setExtensionFooter(component: PiShellComponentPort | null): void;
201
+ setExtensionStatus(key: string, text: string | undefined): void;
202
+ setExtensionWorking(message: string | undefined, visible?: boolean): void;
203
+ resetWorkflowPresentation(): void;
204
+ resetExtensionUi(): void;
205
+ addExtensionNotification(message: string, type: "info" | "warning" | "error"): void;
206
+ extensionFooterData(): unknown;
207
+ usesDefaultInputSurface(): boolean;
208
+ inputCoordinationSurface(): PiTuiInputSurfaceKind;
209
+ viewportCompositionEvidence(): {
210
+ readonly full: number;
211
+ readonly dockOnly: number;
212
+ };
213
+ transcriptRenderCount(): number;
214
+ setInputSurface(component: PiShellComponentPort | null, disposePrevious?: boolean, coordination?: Exclude<PiTuiInputSurfaceKind, "editor">): void;
215
+ handleInput(data: string): void;
216
+ invalidate(): void;
217
+ setFocused(focused: boolean): void;
218
+ dispose(): void;
219
+ }
220
+ export declare function shellResourceEntries(backend: OwnedUiBackendPort): readonly PiShellResourceEntry[];
221
+ export {};