@timurproko/a1 0.1.8-dev.472 → 0.1.8-dev.508

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 (370) hide show
  1. package/bin/cli.js +4 -5
  2. package/bin/guardian.js +5 -1
  3. package/bin/module-identity.js +53 -98
  4. package/bin/module-resolver.js +138 -0
  5. package/bin/pinned-pi-public.js +25 -6
  6. package/bin/ui.js +7 -2
  7. package/bin/update-recovery.js +76 -7
  8. package/bin/warmup.js +3 -0
  9. package/dist/{integrations/pi/session-ui → app/session-shell}/clipboard-diagnostics.d.ts +1 -1
  10. package/dist/{integrations/pi/session-ui → app/session-shell}/clipboard-image.js +1 -1
  11. package/dist/app/session-shell/helper-pool.d.ts +33 -0
  12. package/dist/app/session-shell/helper-pool.js +98 -0
  13. package/dist/{integrations/pi/session-ui → app/session-shell}/image-preparation-client.d.ts +1 -1
  14. package/dist/{integrations/pi/session-ui → app/session-shell}/image-preparation-client.js +1 -1
  15. package/dist/{integrations/pi/session-ui → app/session-shell}/image-preparation.js +1 -1
  16. package/dist/{integrations/pi/session-ui → app/session-shell}/image-source.js +1 -1
  17. package/dist/{integrations/pi/session-ui → app/session-shell}/image-worker.js +1 -1
  18. package/dist/app/session-shell/index.d.ts +7 -0
  19. package/dist/app/session-shell/index.js +4 -0
  20. package/dist/app/session-shell/paste-executor.d.ts +18 -0
  21. package/dist/{integrations/pi/session-ui → app/session-shell}/paste-executor.js +50 -29
  22. package/dist/{integrations/pi/session-ui → app/session-shell}/paste-helper.js +1 -1
  23. package/dist/app/session-shell/paste-preparation-client.d.ts +31 -0
  24. package/dist/{integrations/pi/session-ui → app/session-shell}/paste-preparation-client.js +19 -8
  25. package/dist/{integrations/pi/session-ui → app/session-shell}/paste-protocol.d.ts +1 -1
  26. package/dist/{integrations/pi/session-ui → app/session-shell}/paste-protocol.js +1 -1
  27. package/dist/app/session-shell/paste-text-preparation.d.ts +6 -0
  28. package/dist/{integrations/pi/session-ui/paste-text-preparation.d.ts → app/session-shell/paste-types.d.ts} +1 -4
  29. package/dist/{integrations/pi/session-ui → app/session-shell}/path-chip-presentation.d.ts +1 -1
  30. package/dist/{integrations/pi/session-ui → app/session-shell}/prompt-chips.d.ts +5 -1
  31. package/dist/{integrations/pi/session-ui → app/session-shell}/prompt-chips.js +6 -2
  32. package/dist/{integrations/pi/session-ui → app/session-shell}/prompt-history-controller.d.ts +2 -2
  33. package/dist/{integrations/pi/session-ui → app/session-shell}/prompt-history-controller.js +2 -2
  34. package/dist/{integrations/pi/session-ui → app/session-shell}/prompt-suggestion-controller.d.ts +1 -1
  35. package/dist/{integrations/pi/session-ui → app/session-shell}/prompt-suggestion-controller.js +2 -2
  36. package/dist/{integrations/pi/session-ui → app/session-shell}/quit-outro.js +1 -1
  37. package/dist/{integrations/pi/session-ui → app/session-shell}/response-copy-coordinator.d.ts +1 -1
  38. package/dist/{integrations/pi/session-ui → app/session-shell}/response-copy-coordinator.js +3 -5
  39. package/dist/{integrations/pi/session-ui → app/session-shell}/response-copy-helper.js +1 -1
  40. package/dist/{integrations/pi/session-ui → app/session-shell}/response-copy-protocol.d.ts +1 -1
  41. package/dist/{integrations/pi/session-ui → app/session-shell}/response-copy-transport.d.ts +10 -2
  42. package/dist/{integrations/pi/session-ui → app/session-shell}/response-copy-transport.js +45 -19
  43. package/dist/{integrations/pi/session-ui → app/session-shell}/session-shell-root.d.ts +75 -53
  44. package/dist/{integrations/pi/session-ui → app/session-shell}/session-shell-root.js +30 -20
  45. package/dist/{integrations/pi/session-ui → app/session-shell}/session-shell.d.ts +9 -8
  46. package/dist/{integrations/pi/session-ui → app/session-shell}/session-shell.js +108 -67
  47. package/dist/{integrations/pi/session-ui → app/session-shell}/session-viewport-controller.d.ts +5 -5
  48. package/dist/{integrations/pi/session-ui → app/session-shell}/session-viewport-controller.js +5 -5
  49. package/dist/{integrations/pi/session-ui → app/session-shell}/system-clipboard.d.ts +1 -1
  50. package/dist/{integrations/pi/session-ui → app/session-shell}/system-clipboard.js +1 -1
  51. package/dist/cli/index.d.ts +8 -5
  52. package/dist/cli/index.js +4 -5
  53. package/dist/composition/index.d.ts +0 -1
  54. package/dist/composition/index.js +0 -1
  55. package/dist/composition/owned-ui.d.ts +2 -2
  56. package/dist/composition/owned-ui.js +35 -36
  57. package/dist/composition/settings-route-host.d.ts +2 -2
  58. package/dist/contracts/agent-engine/domain.d.ts +6 -1
  59. package/dist/contracts/agent-engine/index.d.ts +11 -8
  60. package/dist/contracts/agent-engine/index.js +6 -8
  61. package/dist/contracts/owned-ui/extension-ui.d.ts +8 -0
  62. package/dist/contracts/owned-ui/index.d.ts +12 -8
  63. package/dist/contracts/owned-ui/index.js +8 -8
  64. package/dist/features/launch/index.d.ts +12 -6
  65. package/dist/features/launch/index.js +6 -6
  66. package/dist/features/launch/intent.d.ts +5 -5
  67. package/dist/features/launch/intent.js +2 -2
  68. package/dist/features/owned-ui/index.d.ts +6 -6
  69. package/dist/features/owned-ui/index.js +4 -6
  70. package/dist/features/owned-ui/run.d.ts +2 -2
  71. package/dist/features/owned-ui/settings-app.d.ts +2 -2
  72. package/dist/features/owned-ui/settings-app.js +18 -5
  73. package/dist/features/prompt-history/service.d.ts +1 -1
  74. package/dist/features/prompt-history/service.js +1 -1
  75. package/dist/features/prompt-history/store.js +3 -7
  76. package/dist/features/prompt-suggestions/diagnostics.js +1 -1
  77. package/dist/features/prompt-suggestions/index.d.ts +2 -1
  78. package/dist/features/prompt-suggestions/index.js +1 -1
  79. package/dist/foundation/launch-guardian/index.d.ts +2 -1
  80. package/dist/foundation/launch-guardian/index.js +1 -1
  81. package/dist/foundation/lifecycle/index.d.ts +11 -6
  82. package/dist/foundation/lifecycle/index.js +5 -6
  83. package/dist/foundation/process-containment/index.d.ts +8 -6
  84. package/dist/foundation/process-containment/index.js +6 -6
  85. package/dist/foundation/process-containment/native-guardian-containment.js +3 -3
  86. package/dist/foundation/protocol/index.d.ts +3 -2
  87. package/dist/foundation/protocol/index.js +2 -2
  88. package/dist/foundation/release/bootstrap.d.ts +0 -4
  89. package/dist/foundation/release/bootstrap.js +1 -82
  90. package/dist/foundation/release/dependency-layer.d.ts +2 -5
  91. package/dist/foundation/release/endpoints.d.ts +4 -0
  92. package/dist/foundation/release/endpoints.js +86 -2
  93. package/dist/foundation/release/index.d.ts +30 -16
  94. package/dist/foundation/release/index.js +16 -16
  95. package/dist/foundation/release/release.d.ts +1 -1
  96. package/dist/foundation/release/types.d.ts +11 -0
  97. package/dist/foundation/release/types.js +1 -0
  98. package/dist/foundation/release/update-transaction.d.ts +1 -1
  99. package/dist/foundation/release/update.d.ts +2 -1
  100. package/dist/foundation/release/update.js +3 -18
  101. package/dist/foundation/startup/index.d.ts +4 -2
  102. package/dist/foundation/startup/index.js +2 -2
  103. package/dist/foundation/startup/startup-descriptor.js +2 -2
  104. package/dist/foundation/storage/control-store.d.ts +1 -45
  105. package/dist/foundation/storage/control-store.js +54 -277
  106. package/dist/foundation/storage/index.d.ts +1 -1
  107. package/dist/foundation/storage/index.js +1 -1
  108. package/dist/foundation/supervision/index.d.ts +2 -2
  109. package/dist/foundation/supervision/index.js +2 -2
  110. package/dist/foundation/supervision/server.d.ts +5 -10
  111. package/dist/foundation/supervision/server.js +7 -7
  112. package/dist/foundation/terminal-cleanup/index.d.ts +3 -2
  113. package/dist/foundation/terminal-cleanup/index.js +2 -2
  114. package/dist/integrations/pi/components/editor-interaction.d.ts +1 -1
  115. package/dist/integrations/pi/components/history-editor-loader.d.ts +1 -1
  116. package/dist/integrations/pi/components/index.d.ts +20 -13
  117. package/dist/integrations/pi/components/index.js +12 -13
  118. package/dist/integrations/pi/components/owned-editor-ux.js +5 -8
  119. package/dist/integrations/pi/components/resources/builtin-themes.d.ts +7 -5
  120. package/dist/integrations/pi/components/resources/builtin-themes.js +7 -5
  121. package/dist/integrations/pi/components/shell-editor-autocomplete.js +1 -1
  122. package/dist/integrations/pi/components/shell-extension-ui.js +2 -1
  123. package/dist/integrations/pi/components/shell-footer-status.js +1 -1
  124. package/dist/integrations/pi/components/shell-presenters-info.d.ts +1 -1
  125. package/dist/integrations/pi/components/shell-presenters-info.js +1 -1
  126. package/dist/integrations/pi/components/shell-presenters-transcript.js +1 -1
  127. package/dist/integrations/pi/components/shell-selectors-dialogs.d.ts +9 -3
  128. package/dist/integrations/pi/components/shell-selectors-dialogs.js +9 -6
  129. package/dist/integrations/pi/components/shell-shared-facade.d.ts +3 -1
  130. package/dist/integrations/pi/components/shell-shared-facade.js +4 -2
  131. package/dist/integrations/pi/components/submitted-prompt-adapter.d.ts +1 -1
  132. package/dist/integrations/pi/components/submitted-prompt-adapter.js +1 -1
  133. package/dist/integrations/pi/components/tool-image-presentation.d.ts +1 -1
  134. package/dist/integrations/pi/components/tool-image-presentation.js +4 -7
  135. package/dist/integrations/pi/components/upstream/adjacent/core/keybindings.d.ts +36 -22
  136. package/dist/integrations/pi/components/upstream/adjacent/core/keybindings.js +43 -7
  137. package/dist/integrations/pi/components/upstream/assets/earendil-image.json +2 -2
  138. package/dist/integrations/pi/components/upstream/components/countdown-timer.d.ts +6 -3
  139. package/dist/integrations/pi/components/upstream/components/daxnuts.d.ts +8 -1
  140. package/dist/integrations/pi/components/upstream/components/daxnuts.js +7 -3
  141. package/dist/integrations/pi/components/upstream/components/earendil-announcement.d.ts +1 -1
  142. package/dist/integrations/pi/components/upstream/components/earendil-announcement.js +10 -4
  143. package/dist/integrations/pi/components/upstream/components/extension-editor.d.ts +7 -4
  144. package/dist/integrations/pi/components/upstream/components/extension-editor.js +7 -4
  145. package/dist/integrations/pi/components/upstream/components/mermaid.js +8 -4
  146. package/dist/integrations/pi/components/upstream/components/owned-editor.d.ts +9 -5
  147. package/dist/integrations/pi/components/upstream/components/owned-editor.js +10 -6
  148. package/dist/integrations/pi/components/upstream/components/scoped-models-selector.d.ts +8 -4
  149. package/dist/integrations/pi/components/upstream/components/scoped-models-selector.js +27 -25
  150. package/dist/integrations/pi/components/upstream/components/session-footer.d.ts +1 -1
  151. package/dist/integrations/pi/components/upstream/components/session-footer.js +8 -10
  152. package/dist/integrations/pi/components/upstream/components/session-selector-search.js +6 -4
  153. package/dist/integrations/pi/components/upstream/components/session-selector.d.ts +1 -1
  154. package/dist/integrations/pi/components/upstream/components/session-selector.js +8 -4
  155. package/dist/integrations/pi/components/upstream/components/skill-invocation-message.d.ts +7 -5
  156. package/dist/integrations/pi/components/upstream/components/skill-invocation-message.js +8 -6
  157. package/dist/integrations/pi/components/upstream/components/status-indicator.d.ts +9 -4
  158. package/dist/integrations/pi/components/upstream/components/status-indicator.js +15 -5
  159. package/dist/integrations/pi/components/upstream/components/tool-execution.d.ts +8 -2
  160. package/dist/integrations/pi/components/upstream/components/tool-execution.js +58 -37
  161. package/dist/integrations/pi/components/upstream/components/tree-selector.d.ts +7 -4
  162. package/dist/integrations/pi/components/upstream/components/tree-selector.js +7 -4
  163. package/dist/integrations/pi/components/upstream/components/trust-selector.d.ts +1 -1
  164. package/dist/integrations/pi/components/upstream/components/trust-selector.js +10 -5
  165. package/dist/integrations/pi/components/upstream/external-editor.js +8 -4
  166. package/dist/integrations/pi/components/upstream/history/editor-core.d.ts +13 -4
  167. package/dist/integrations/pi/components/upstream/history/editor-core.js +112 -30
  168. package/dist/integrations/pi/components/upstream/history/kill-ring.d.ts +6 -3
  169. package/dist/integrations/pi/components/upstream/history/kill-ring.js +6 -3
  170. package/dist/integrations/pi/components/upstream/history/printable-key.js +7 -4
  171. package/dist/integrations/pi/components/upstream/history/text-helpers.js +6 -3
  172. package/dist/integrations/pi/components/upstream/history/undo-stack.d.ts +6 -3
  173. package/dist/integrations/pi/components/upstream/history/undo-stack.js +6 -3
  174. package/dist/integrations/pi/components/upstream/history/word-navigation.js +6 -3
  175. package/dist/integrations/pi/components/upstream/model-search.d.ts +5 -2
  176. package/dist/integrations/pi/components/upstream/theme/theme-controller.d.ts +8 -0
  177. package/dist/integrations/pi/components/upstream/theme/theme-controller.js +0 -3
  178. package/dist/integrations/pi/components/upstream/theme/theme.d.ts +2 -2
  179. package/dist/integrations/pi/components/upstream/theme/theme.js +17 -6
  180. package/dist/integrations/pi/engine/adapter.d.ts +39 -138
  181. package/dist/integrations/pi/engine/adapter.js +338 -3226
  182. package/dist/integrations/pi/engine/command-dispatch.d.ts +41 -0
  183. package/dist/integrations/pi/engine/command-dispatch.js +125 -0
  184. package/dist/integrations/pi/engine/event-delivery.d.ts +100 -0
  185. package/dist/integrations/pi/engine/event-delivery.js +184 -0
  186. package/dist/integrations/pi/engine/extension-ui-binding.d.ts +35 -0
  187. package/dist/integrations/pi/engine/extension-ui-binding.js +81 -0
  188. package/dist/integrations/pi/engine/index.d.ts +18 -14
  189. package/dist/integrations/pi/engine/index.js +10 -14
  190. package/dist/integrations/pi/engine/message-values.d.ts +29 -0
  191. package/dist/integrations/pi/engine/message-values.js +168 -0
  192. package/dist/integrations/pi/engine/pending-delivery.d.ts +2 -2
  193. package/dist/integrations/pi/engine/pending-delivery.js +2 -4
  194. package/dist/integrations/pi/engine/pi-settings-metadata.json +382 -371
  195. package/dist/integrations/pi/engine/prompt-suggestions.d.ts +30 -0
  196. package/dist/integrations/pi/engine/prompt-suggestions.js +102 -0
  197. package/dist/integrations/pi/engine/provider-authentication.d.ts +34 -0
  198. package/dist/integrations/pi/engine/provider-authentication.js +209 -0
  199. package/dist/integrations/pi/engine/resource-catalog.d.ts +49 -0
  200. package/dist/integrations/pi/engine/resource-catalog.js +289 -0
  201. package/dist/integrations/pi/engine/resources/changelog.json +4 -4
  202. package/dist/integrations/pi/engine/session-events.d.ts +48 -0
  203. package/dist/integrations/pi/engine/session-events.js +223 -0
  204. package/dist/integrations/pi/engine/session-integration.js +2 -4
  205. package/dist/integrations/pi/engine/session-runtime.d.ts +84 -0
  206. package/dist/integrations/pi/engine/session-runtime.js +249 -0
  207. package/dist/integrations/pi/engine/{settings-effects.d.ts → settings-bridge.d.ts} +57 -2
  208. package/dist/integrations/pi/engine/settings-bridge.js +514 -0
  209. package/dist/integrations/pi/engine/settings-metadata.d.ts +31 -0
  210. package/dist/integrations/pi/engine/settings-metadata.js +67 -0
  211. package/dist/integrations/pi/engine/settings-port.d.ts +42 -0
  212. package/dist/integrations/pi/engine/settings-port.js +353 -0
  213. package/dist/integrations/pi/engine/transcript-projection.d.ts +39 -0
  214. package/dist/integrations/pi/engine/transcript-projection.js +405 -0
  215. package/dist/integrations/pi/engine/usage-view.d.ts +4 -0
  216. package/dist/integrations/pi/engine/usage-view.js +56 -0
  217. package/dist/integrations/pi/engine/workflow-contexts.d.ts +59 -0
  218. package/dist/integrations/pi/engine/workflow-contexts.js +316 -0
  219. package/dist/integrations/pi/engine/workflow-runner.d.ts +60 -0
  220. package/dist/integrations/pi/engine/workflow-runner.js +509 -0
  221. package/dist/integrations/pi/engine/workflow-support.d.ts +33 -0
  222. package/dist/integrations/pi/engine/workflow-support.js +352 -0
  223. package/dist/integrations/pi/engine/workflows.d.ts +63 -2
  224. package/dist/integrations/pi/engine/workflows.js +5 -2
  225. package/dist/integrations/pi/startup-public.js +576 -554
  226. package/dist/integrations/pi/startup-public.manifest.json +1730 -984
  227. package/dist/integrations/pi/tui-runtime/adapter.js +10 -13
  228. package/dist/integrations/pi/tui-runtime/contracts.d.ts +11 -1
  229. package/dist/integrations/pi/tui-runtime/damage-aware-terminal.d.ts +1 -1
  230. package/dist/integrations/pi/tui-runtime/damage-aware-terminal.js +4 -7
  231. package/dist/integrations/pi/tui-runtime/index.d.ts +8 -6
  232. package/dist/integrations/pi/tui-runtime/index.js +4 -6
  233. package/dist/integrations/pi/tui-runtime/mouse-report-input.js +2 -4
  234. package/dist/integrations/pi/tui-runtime/overlay-geometry.d.ts +2 -2
  235. package/dist/integrations/pi/tui-runtime/overlay-geometry.js +4 -5
  236. package/dist/integrations/pi/tui-runtime/presentation-adapter.js +1 -1
  237. package/dist/native/darwin-arm64/manifest.json +1 -1
  238. package/dist/native/linux-x64/manifest.json +1 -1
  239. package/dist/native/win32-x64/manifest.json +2 -2
  240. package/dist/native/win32-x64/process-guardian.exe +0 -0
  241. package/dist/runtime-payload-inventory.json +51320 -46509
  242. package/dist/ui/apps/index.d.ts +5 -3
  243. package/dist/ui/apps/index.js +3 -3
  244. package/dist/ui/components/index.d.ts +47 -25
  245. package/dist/ui/components/index.js +25 -25
  246. package/dist/ui/components/prompt-input.js +1 -4
  247. package/dist/ui/settings/declarations.d.ts +119 -0
  248. package/dist/ui/settings/declarations.js +20 -11
  249. package/dist/ui/settings/index.d.ts +10 -6
  250. package/dist/ui/settings/index.js +5 -6
  251. package/dist/ui/settings/manager.d.ts +54 -0
  252. package/dist/ui/settings/{session.js → manager.js} +101 -9
  253. package/dist/ui/settings/sections.d.ts +2 -7
  254. package/docs/architecture/boundaries.md +4 -4
  255. package/docs/architecture/history-editor-provenance.md +1 -1
  256. package/docs/architecture/project-structure.md +6 -6
  257. package/docs/architecture/prompt-suggestions.md +1 -1
  258. package/docs/architecture/terminal-host-proof-gate.md +1 -1
  259. package/docs/architecture/terminal-host-spike-evidence.md +1 -1
  260. package/docs/architecture/toolchain.md +8 -0
  261. package/docs/architecture/ui-reference-provenance.md +4 -4
  262. package/docs/ci-release-runbook.md +7 -1
  263. package/docs/features/modal-content-interaction.md +2 -2
  264. package/docs/local-worktree-cleanup.md +4 -2
  265. package/docs/validation.md +6 -4
  266. package/package.json +7 -11
  267. package/bin/pi-tui.d.ts +0 -6
  268. package/bin/pi-tui.js +0 -28
  269. package/bin/sync-pi-tui-proxy.js +0 -97
  270. package/dist/cli/version.d.ts +0 -2
  271. package/dist/cli/version.js +0 -23
  272. package/dist/composition/agent-engine-bridge.d.ts +0 -3
  273. package/dist/composition/agent-engine-bridge.js +0 -108
  274. package/dist/composition/process.d.ts +0 -16
  275. package/dist/composition/process.js +0 -45
  276. package/dist/contracts/workspace/index.d.ts +0 -2
  277. package/dist/contracts/workspace/index.js +0 -2
  278. package/dist/contracts/workspace/model.d.ts +0 -248
  279. package/dist/contracts/workspace/model.js +0 -2
  280. package/dist/contracts/workspace/validation.d.ts +0 -13
  281. package/dist/contracts/workspace/validation.js +0 -335
  282. package/dist/features/owned-ui/customization.d.ts +0 -40
  283. package/dist/features/owned-ui/customization.js +0 -110
  284. package/dist/features/owned-ui/diagnostics.d.ts +0 -34
  285. package/dist/features/owned-ui/diagnostics.js +0 -95
  286. package/dist/features/workspace/capabilities.d.ts +0 -31
  287. package/dist/features/workspace/capabilities.js +0 -75
  288. package/dist/features/workspace/index.d.ts +0 -6
  289. package/dist/features/workspace/index.js +0 -6
  290. package/dist/features/workspace/presentation.d.ts +0 -30
  291. package/dist/features/workspace/presentation.js +0 -70
  292. package/dist/features/workspace/reconciliation.d.ts +0 -15
  293. package/dist/features/workspace/reconciliation.js +0 -82
  294. package/dist/features/workspace/reducer.d.ts +0 -43
  295. package/dist/features/workspace/reducer.js +0 -214
  296. package/dist/features/workspace/router.d.ts +0 -32
  297. package/dist/features/workspace/router.js +0 -125
  298. package/dist/features/workspace/store.d.ts +0 -18
  299. package/dist/features/workspace/store.js +0 -55
  300. package/dist/foundation/native-host-protocol/codec.d.ts +0 -13
  301. package/dist/foundation/native-host-protocol/codec.js +0 -58
  302. package/dist/foundation/native-host-protocol/evidence.d.ts +0 -67
  303. package/dist/foundation/native-host-protocol/evidence.js +0 -141
  304. package/dist/foundation/native-host-protocol/index.d.ts +0 -4
  305. package/dist/foundation/native-host-protocol/index.js +0 -4
  306. package/dist/foundation/native-host-protocol/messages.d.ts +0 -56
  307. package/dist/foundation/native-host-protocol/messages.js +0 -149
  308. package/dist/foundation/native-host-protocol/proof-gate.d.ts +0 -13
  309. package/dist/foundation/native-host-protocol/proof-gate.js +0 -33
  310. package/dist/foundation/structured-agent-runtime/backpressure.d.ts +0 -47
  311. package/dist/foundation/structured-agent-runtime/backpressure.js +0 -119
  312. package/dist/foundation/structured-agent-runtime/commands.d.ts +0 -53
  313. package/dist/foundation/structured-agent-runtime/commands.js +0 -165
  314. package/dist/foundation/structured-agent-runtime/handshake.d.ts +0 -41
  315. package/dist/foundation/structured-agent-runtime/handshake.js +0 -151
  316. package/dist/foundation/structured-agent-runtime/index.d.ts +0 -5
  317. package/dist/foundation/structured-agent-runtime/index.js +0 -5
  318. package/dist/foundation/structured-agent-runtime/reconnection.d.ts +0 -38
  319. package/dist/foundation/structured-agent-runtime/reconnection.js +0 -130
  320. package/dist/foundation/structured-agent-runtime/state.d.ts +0 -57
  321. package/dist/foundation/structured-agent-runtime/state.js +0 -119
  322. package/dist/integrations/pi/components/upstream/components/custom-entry.d.ts +0 -17
  323. package/dist/integrations/pi/components/upstream/components/custom-entry.js +0 -51
  324. package/dist/integrations/pi/components/upstream/components/first-time-setup.d.ts +0 -24
  325. package/dist/integrations/pi/components/upstream/components/first-time-setup.js +0 -105
  326. package/dist/integrations/pi/components/upstream/components/markdown-transform.d.ts +0 -2
  327. package/dist/integrations/pi/components/upstream/components/markdown-transform.js +0 -18
  328. package/dist/integrations/pi/engine/model-auth-integration.d.ts +0 -31
  329. package/dist/integrations/pi/engine/model-auth-integration.js +0 -62
  330. package/dist/integrations/pi/engine/resource-extension-integration.d.ts +0 -32
  331. package/dist/integrations/pi/engine/resource-extension-integration.js +0 -81
  332. package/dist/integrations/pi/engine/settings-effects.js +0 -249
  333. package/dist/integrations/pi/engine/settings-integration.d.ts +0 -43
  334. package/dist/integrations/pi/engine/settings-integration.js +0 -227
  335. package/dist/integrations/pi/engine/workflow-controllers.d.ts +0 -21
  336. package/dist/integrations/pi/engine/workflow-controllers.js +0 -49
  337. package/dist/integrations/pi/session-ui/index.d.ts +0 -5
  338. package/dist/integrations/pi/session-ui/index.js +0 -5
  339. package/dist/integrations/pi/session-ui/paste-executor.d.ts +0 -10
  340. package/dist/integrations/pi/session-ui/paste-preparation-client.d.ts +0 -16
  341. package/dist/integrations/pi/session-ui/route-host.d.ts +0 -5
  342. package/dist/integrations/pi/tui-runtime/conformance.d.ts +0 -18
  343. package/dist/integrations/pi/tui-runtime/conformance.js +0 -145
  344. package/dist/ui/components/prompt-row.d.ts +0 -14
  345. package/dist/ui/components/prompt-row.js +0 -20
  346. package/dist/ui/settings/session.d.ts +0 -36
  347. package/dist/ui/settings/store.d.ts +0 -29
  348. package/dist/ui/settings/store.js +0 -91
  349. package/dist/{integrations/pi/session-ui → app/session-shell}/clipboard-diagnostics.js +2 -2
  350. package/dist/{integrations/pi/session-ui → app/session-shell}/clipboard-image.d.ts +0 -0
  351. package/dist/{integrations/pi/session-ui → app/session-shell}/editor-hyperlink-budget.d.ts +0 -0
  352. package/dist/{integrations/pi/session-ui → app/session-shell}/editor-hyperlink-budget.js +0 -0
  353. package/dist/{integrations/pi/session-ui → app/session-shell}/image-preparation.d.ts +0 -0
  354. package/dist/{integrations/pi/session-ui → app/session-shell}/image-source.d.ts +0 -0
  355. package/dist/{integrations/pi/session-ui → app/session-shell}/image-worker.d.ts +0 -0
  356. package/dist/{integrations/pi/session-ui → app/session-shell}/paste-helper.d.ts +0 -0
  357. package/dist/{integrations/pi/session-ui → app/session-shell}/paste-text-preparation.js +0 -0
  358. package/dist/{integrations/pi/session-ui → app/session-shell}/paste-text-worker.d.ts +0 -0
  359. package/dist/{integrations/pi/session-ui → app/session-shell}/paste-text-worker.js +0 -0
  360. package/dist/{integrations/pi/session-ui/response-copy-helper.d.ts → app/session-shell/paste-types.js} +0 -0
  361. package/dist/{integrations/pi/session-ui → app/session-shell}/path-chip-presentation.js +0 -0
  362. package/dist/{integrations/pi/session-ui → app/session-shell}/quit-outro-effects.d.ts +0 -0
  363. package/dist/{integrations/pi/session-ui → app/session-shell}/quit-outro-effects.js +0 -0
  364. package/dist/{integrations/pi/session-ui → app/session-shell}/quit-outro.d.ts +0 -0
  365. package/dist/{integrations/pi/session-ui/route-host.js → app/session-shell/response-copy-helper.d.ts} +0 -0
  366. package/dist/{integrations/pi/session-ui → app/session-shell}/response-copy-protocol.js +0 -0
  367. package/dist/{integrations/pi/session-ui → app/session-shell}/stream-presentation-coalescer.d.ts +0 -0
  368. package/dist/{integrations/pi/session-ui → app/session-shell}/stream-presentation-coalescer.js +3 -3
  369. /package/dist/{integrations/pi/session-ui → app/session-shell}/text-paste.d.ts +0 -0
  370. /package/dist/{integrations/pi/session-ui → app/session-shell}/text-paste.js +0 -0
@@ -1,125 +0,0 @@
1
- import { StructuredCommandTracker, } from "../../foundation/structured-agent-runtime/index.js";
2
- import { gateWorkspaceAction } from "./capabilities.js";
3
- import { WorkspaceReducer } from "./reducer.js";
4
- /** Serializes workspace actions and capability-gates structured commands at the selected-agent boundary. */
5
- export class WorkspaceRouter {
6
- reducer;
7
- #trackers = new Map();
8
- #tail = Promise.resolve();
9
- #nextCommandSequence = 0;
10
- constructor(reducer) {
11
- this.reducer = reducer;
12
- for (const agent of reducer.view().agents)
13
- this.#registerTracker(agent);
14
- }
15
- createAgent(agent) {
16
- return this.#enqueue(() => {
17
- const result = this.reducer.createAgent(agent);
18
- if (result.kind === "rejected")
19
- return result;
20
- this.#registerTracker(result.value);
21
- return result;
22
- });
23
- }
24
- selectAgent(agentId) {
25
- return this.#enqueue(() => this.reducer.selectAgent(agentId));
26
- }
27
- stopAgent(agentId) {
28
- return this.#enqueue(() => this.reducer.stopAgent(agentId));
29
- }
30
- removeAgent(agentId) {
31
- return this.#enqueue(() => {
32
- const result = this.reducer.removeAgent(agentId);
33
- if (result.kind === "applied")
34
- this.#trackers.delete(agentId);
35
- return result;
36
- });
37
- }
38
- recordActivity(agentId, amount = 1) {
39
- return this.#enqueue(() => this.reducer.recordActivity(agentId, amount));
40
- }
41
- sendStructuredCommand(agentId, command, payload) {
42
- return this.#enqueue(() => {
43
- const agent = this.#selectedAgent();
44
- if (!agent)
45
- return reject("no-selected-agent", "no workspace agent is selected");
46
- if (agent.id !== agentId)
47
- return reject("stale-selection", `structured command was accepted for ${agentId}, but ${agent.id} is selected at the routing point`);
48
- const gate = gateWorkspaceAction(agent, { type: "structured-command", command });
49
- if (gate.kind === "rejected")
50
- return gate;
51
- const tracker = this.#trackerFor(agent);
52
- if (!tracker)
53
- return reject("capability-mismatch", `agent ${agent.id} is not structured`);
54
- const correlationId = this.#nextCorrelationId("command");
55
- const started = tracker.start({
56
- type: "structured-command",
57
- correlationId,
58
- agentId: agent.id,
59
- command,
60
- payload,
61
- });
62
- if (started.kind === "rejected")
63
- return started;
64
- return applied(this.reducer.view(), {
65
- agentId: agent.id,
66
- correlationId,
67
- command,
68
- record: started.record,
69
- });
70
- });
71
- }
72
- cancelStructuredCommand(agentId, targetCorrelationId) {
73
- return this.#enqueue(() => {
74
- const agent = this.#selectedAgent();
75
- if (!agent)
76
- return reject("no-selected-agent", "no workspace agent is selected");
77
- if (agent.id !== agentId)
78
- return reject("stale-selection", `structured cancellation was accepted for ${agentId}, but ${agent.id} is selected at the routing point`);
79
- const gate = gateWorkspaceAction(agent, { type: "cancel-structured-command" });
80
- if (gate.kind === "rejected")
81
- return gate;
82
- const tracker = this.#trackerFor(agent);
83
- if (!tracker)
84
- return reject("capability-mismatch", `agent ${agent.id} is not structured`);
85
- const result = tracker.cancel({
86
- type: "cancel-structured-command",
87
- correlationId: this.#nextCorrelationId("cancel"),
88
- agentId: agent.id,
89
- targetCorrelationId,
90
- });
91
- if (result.kind === "rejected")
92
- return result;
93
- return applied(this.reducer.view(), result.record);
94
- });
95
- }
96
- view() {
97
- return this.reducer.view();
98
- }
99
- #selectedAgent() {
100
- const view = this.reducer.view();
101
- return view.agents.find(agent => agent.id === view.selectedAgentId) ?? null;
102
- }
103
- #registerTracker(agent) {
104
- if (agent.capability.kind === "structured")
105
- this.#trackers.set(agent.id, new StructuredCommandTracker(agent.id, agent.capability));
106
- }
107
- #trackerFor(agent) {
108
- return this.#trackers.get(agent.id) ?? null;
109
- }
110
- #nextCorrelationId(prefix) {
111
- this.#nextCommandSequence += 1;
112
- return `${prefix}-${this.#nextCommandSequence}`;
113
- }
114
- #enqueue(operation) {
115
- const result = this.#tail.then(operation);
116
- this.#tail = result.then(() => undefined, () => undefined);
117
- return result;
118
- }
119
- }
120
- function applied(view, value) {
121
- return { kind: "applied", view, value };
122
- }
123
- function reject(code, diagnostic) {
124
- return { kind: "rejected", code, diagnostic };
125
- }
@@ -1,18 +0,0 @@
1
- import type { AgentRecoveryAuthority, RecoveryReferenceId } from "../../contracts/workspace/index.js";
2
- import { WorkspaceReducer, type WorkspaceView } from "./reducer.js";
3
- /** Persists complete workspace views and recovery references through the control-store boundary. */
4
- export declare class WorkspaceStore {
5
- #private;
6
- constructor(path: string);
7
- load(): WorkspaceReducer;
8
- save(reducer: WorkspaceReducer): void;
9
- saveView(view: WorkspaceView): void;
10
- loadRecoveryReference(id: RecoveryReferenceId): {
11
- readonly authority: unknown;
12
- readonly status: string;
13
- readonly rollback: unknown;
14
- readonly updatedAt: string;
15
- } | null;
16
- persistRecoveryReference(authority: AgentRecoveryAuthority, status: "pending" | "accepted" | "rejected" | "discontinuous", rollbackMetadata: Readonly<Record<string, unknown>>, updatedAt?: string): void;
17
- close(): void;
18
- }
@@ -1,55 +0,0 @@
1
- import { ControlStore, DEFAULT_WORKSPACE_ID, } from "../../foundation/storage/index.js";
2
- import { WorkspaceReducer } from "./reducer.js";
3
- /** Persists complete workspace views and recovery references through the control-store boundary. */
4
- export class WorkspaceStore {
5
- #store;
6
- constructor(path) {
7
- this.#store = new ControlStore(path);
8
- }
9
- load() {
10
- const records = this.#store.loadWorkspaceAgentRecords();
11
- const agents = records.map(record => toWorkspaceAgent(record));
12
- return new WorkspaceReducer(DEFAULT_WORKSPACE_ID, agents, this.#store.loadSelectedWorkspaceAgentId(), this.#store.loadWorkspaceRevision());
13
- }
14
- save(reducer) {
15
- const view = reducer.view();
16
- this.saveView(view);
17
- }
18
- saveView(view) {
19
- const records = view.agents.map((agent) => ({
20
- agent: {
21
- id: agent.id,
22
- displayName: agent.displayName,
23
- adapterId: agent.adapterId,
24
- runtime: agent.runtime,
25
- lifecycle: agent.lifecycle,
26
- capability: agent.capability,
27
- createdAt: agent.createdAt,
28
- recoveryReferenceId: agent.recoveryReferenceId,
29
- },
30
- presentation: {
31
- unreadActivity: agent.unreadActivity,
32
- attention: agent.attention,
33
- failure: agent.failure,
34
- },
35
- }));
36
- this.#store.replaceWorkspaceAgentRecords(records, view.selectedAgentId, view.revision);
37
- }
38
- loadRecoveryReference(id) {
39
- return this.#store.loadRecoveryReference(id);
40
- }
41
- persistRecoveryReference(authority, status, rollbackMetadata, updatedAt = new Date().toISOString()) {
42
- this.#store.persistRecoveryReference(authority, status, rollbackMetadata, updatedAt);
43
- }
44
- close() {
45
- this.#store.close();
46
- }
47
- }
48
- function toWorkspaceAgent(record) {
49
- return {
50
- ...record.agent,
51
- unreadActivity: record.presentation.unreadActivity,
52
- attention: record.presentation.attention,
53
- failure: record.presentation.failure,
54
- };
55
- }
@@ -1,13 +0,0 @@
1
- import { type NativeHostProofMessage } from "./messages.js";
2
- /** Identifies a bounded native-host framing or message-contract failure. */
3
- export declare class NativeHostProtocolError extends Error {
4
- readonly code: "frame-too-large" | "malformed-frame" | "invalid-message";
5
- constructor(code: "frame-too-large" | "malformed-frame" | "invalid-message", message: string);
6
- }
7
- /** Encodes and incrementally decodes size-bounded newline-delimited native-host proof messages. */
8
- export declare class NativeHostFrameCodec {
9
- #private;
10
- encode(message: NativeHostProofMessage): string;
11
- push(chunk: Buffer | string): NativeHostProofMessage[];
12
- private decodeLine;
13
- }
@@ -1,58 +0,0 @@
1
- import { MAX_NATIVE_HOST_MESSAGE_BYTES, assertNativeHostProofMessage, } from "./messages.js";
2
- /** Identifies a bounded native-host framing or message-contract failure. */
3
- export class NativeHostProtocolError extends Error {
4
- code;
5
- constructor(code, message) {
6
- super(message);
7
- this.code = code;
8
- this.name = "NativeHostProtocolError";
9
- }
10
- }
11
- /** Encodes and incrementally decodes size-bounded newline-delimited native-host proof messages. */
12
- export class NativeHostFrameCodec {
13
- #buffer = "";
14
- encode(message) {
15
- assertNativeHostProofMessage(message);
16
- const encoded = `${JSON.stringify(message)}\n`;
17
- if (Buffer.byteLength(encoded, "utf8") > MAX_NATIVE_HOST_MESSAGE_BYTES) {
18
- throw new NativeHostProtocolError("frame-too-large", "native-host message exceeds the 1 MiB proof frame limit");
19
- }
20
- return encoded;
21
- }
22
- push(chunk) {
23
- this.#buffer += typeof chunk === "string" ? chunk : chunk.toString("utf8");
24
- if (Buffer.byteLength(this.#buffer, "utf8") > MAX_NATIVE_HOST_MESSAGE_BYTES) {
25
- this.#buffer = "";
26
- throw new NativeHostProtocolError("frame-too-large", "native-host buffered frame exceeds the 1 MiB proof frame limit");
27
- }
28
- const messages = [];
29
- let newline = this.#buffer.indexOf("\n");
30
- while (newline >= 0) {
31
- const line = this.#buffer.slice(0, newline);
32
- this.#buffer = this.#buffer.slice(newline + 1);
33
- if (line.length > 0)
34
- messages.push(this.decodeLine(line));
35
- newline = this.#buffer.indexOf("\n");
36
- }
37
- return messages;
38
- }
39
- decodeLine(line) {
40
- let value;
41
- try {
42
- value = JSON.parse(line);
43
- }
44
- catch {
45
- throw new NativeHostProtocolError("malformed-frame", "native-host frame is not valid JSON");
46
- }
47
- if (!isProofMessage(value))
48
- throw new NativeHostProtocolError("invalid-message", "native-host frame does not match the proof message contract");
49
- assertNativeHostProofMessage(value);
50
- return value;
51
- }
52
- }
53
- function isProofMessage(value) {
54
- return typeof value === "object"
55
- && value !== null
56
- && typeof value.type === "string"
57
- && ["hello", "hello-result", "command", "command-result", "event", "error"].includes(value.type);
58
- }
@@ -1,67 +0,0 @@
1
- export declare const NATIVE_SPIKE_EVIDENCE_SCHEMA: string;
2
- export declare const NATIVE_SPIKE_WORKLOADS: readonly ["four-concurrent-sessions", "input-routing", "unicode-cursor-modes", "alternate-screen", "paste", "mouse", "ime", "live-resize", "dpi", "high-rate-output", "pane-abnormal-exit", "host-cleanup"];
3
- export type NativeSpikeWorkloadId = typeof NATIVE_SPIKE_WORKLOADS[number];
4
- export interface NativeSpikeMetricSummary {
5
- readonly minimum: number;
6
- readonly p50: number;
7
- readonly p95: number;
8
- readonly maximum: number;
9
- readonly samples: number;
10
- }
11
- export interface NativeSpikePaintDiagnostics {
12
- readonly requestedFrames: number;
13
- readonly presentedFrames: number;
14
- readonly coalescedFrames: number;
15
- readonly missedFrames: number;
16
- readonly resizePaintGaps: number;
17
- }
18
- export interface NativeSpikeResourceObservation {
19
- readonly cpuPercentMaximum: number;
20
- readonly residentMemoryBytesMaximum: number;
21
- readonly gpuMemoryBytesMaximum: number | null;
22
- }
23
- export interface NativeSpikeWorkloadResult {
24
- readonly id: NativeSpikeWorkloadId;
25
- readonly status: "passed" | "failed" | "not-run";
26
- readonly durationMs: number;
27
- readonly details: Readonly<Record<string, unknown>>;
28
- }
29
- export interface NativeSpikeEvidence {
30
- readonly schema: typeof NATIVE_SPIKE_EVIDENCE_SCHEMA;
31
- readonly artifact: {
32
- readonly path: string;
33
- readonly sha256: string;
34
- readonly sizeBytes: number;
35
- };
36
- readonly source: {
37
- readonly "a1Commit": string;
38
- readonly libghosttyVtCommit: string;
39
- readonly portablePtyVersion: string;
40
- readonly crosstermVersion: string;
41
- };
42
- readonly environment: {
43
- readonly platform: "windows";
44
- readonly architecture: "x64" | "arm64";
45
- readonly osRelease: string;
46
- readonly zig: string;
47
- readonly isolatedWorker: boolean;
48
- };
49
- readonly workloads: readonly NativeSpikeWorkloadResult[];
50
- readonly latency: {
51
- readonly inputToProcessMs: NativeSpikeMetricSummary;
52
- readonly outputToPresentMs: NativeSpikeMetricSummary;
53
- };
54
- readonly paint: NativeSpikePaintDiagnostics;
55
- readonly resources: NativeSpikeResourceObservation;
56
- readonly physical: {
57
- readonly method: "not-run" | "manual" | "isolated-worker";
58
- readonly activeWorkstationAutomation: false;
59
- readonly verdict: "pending" | "accepted" | "rejected";
60
- readonly evidenceReference: string | null;
61
- };
62
- readonly summary: {
63
- readonly technical: "passed" | "failed" | "incomplete";
64
- readonly overall: "pending" | "accepted" | "rejected";
65
- };
66
- }
67
- export declare function assertNativeSpikeEvidence(value: NativeSpikeEvidence): void;
@@ -1,141 +0,0 @@
1
- import { PRODUCT_IDENTITY, PRODUCT_TEXT } from "../../product-identity.js";
2
- export const NATIVE_SPIKE_EVIDENCE_SCHEMA = PRODUCT_IDENTITY.evidence.nativeSpikeSchema;
3
- export const NATIVE_SPIKE_WORKLOADS = [
4
- "four-concurrent-sessions",
5
- "input-routing",
6
- "unicode-cursor-modes",
7
- "alternate-screen",
8
- "paste",
9
- "mouse",
10
- "ime",
11
- "live-resize",
12
- "dpi",
13
- "high-rate-output",
14
- "pane-abnormal-exit",
15
- "host-cleanup",
16
- ];
17
- const EXPECTED_LIBGHOSTTY_VT = "c5a21edfcbc2d5b46540ad91b7980aca31f5f1f3";
18
- const EXPECTED_PORTABLE_PTY = "0.9.0";
19
- const EXPECTED_CROSSTERM = "0.29.0";
20
- const FORBIDDEN_EVIDENCE_KEYS = new Set([
21
- "pty" + "Bytes",
22
- "terminal" + "Bytes",
23
- "terminal" + "Output",
24
- "input" + "Bytes",
25
- "rendered" + "Cells",
26
- "cell" + "Grid",
27
- "screen" + "Buffer",
28
- "ansi" + "Stream",
29
- "raw" + "Terminal",
30
- ]);
31
- export function assertNativeSpikeEvidence(value) {
32
- if (value.schema !== NATIVE_SPIKE_EVIDENCE_SCHEMA)
33
- throw new TypeError("native spike evidence schema is invalid");
34
- if (!/^[a-f0-9]{64}$/.test(value.artifact.sha256))
35
- throw new TypeError("native spike artifact hash must be SHA-256");
36
- if (!Number.isSafeInteger(value.artifact.sizeBytes) || value.artifact.sizeBytes <= 0)
37
- throw new RangeError("native spike artifact size is invalid");
38
- if (!/^[a-f0-9]{40}$/.test(value.source["a1Commit"]))
39
- throw new TypeError(PRODUCT_TEXT.diagnostic("native spike commit is invalid"));
40
- if (value.source.libghosttyVtCommit !== EXPECTED_LIBGHOSTTY_VT ||
41
- value.source.portablePtyVersion !== EXPECTED_PORTABLE_PTY ||
42
- value.source.crosstermVersion !== EXPECTED_CROSSTERM) {
43
- throw new TypeError("native spike terminal-core sources do not match the pinned provenance");
44
- }
45
- if (value.environment.platform !== "windows")
46
- throw new TypeError("native spike evidence must identify Windows");
47
- if (!["x64", "arm64"].includes(value.environment.architecture))
48
- throw new TypeError("native spike architecture is invalid");
49
- if (!/^0\.15\.(?:[2-9]|[1-9][0-9])$/.test(value.environment.zig))
50
- throw new TypeError("native spike Zig version must be 0.15.2 or newer");
51
- if (value.environment.isolatedWorker !== true)
52
- throw new TypeError("native spike evidence requires an isolated worker");
53
- const expected = new Set(NATIVE_SPIKE_WORKLOADS);
54
- const seen = new Set();
55
- for (const workload of value.workloads) {
56
- if (!expected.has(workload.id))
57
- throw new TypeError(`unknown native spike workload: ${String(workload.id)}`);
58
- if (seen.has(workload.id))
59
- throw new TypeError(`duplicate native spike workload: ${workload.id}`);
60
- seen.add(workload.id);
61
- if (!["passed", "failed", "not-run"].includes(workload.status))
62
- throw new TypeError("native spike workload status is invalid");
63
- assertNonNegative(workload.durationMs, "native spike workload duration");
64
- assertJsonObject(workload.details, "native spike workload details");
65
- }
66
- if (seen.size !== expected.size)
67
- throw new TypeError("native spike evidence is missing one or more mandatory workloads");
68
- assertMetric(value.latency.inputToProcessMs, "input-to-process latency");
69
- assertMetric(value.latency.outputToPresentMs, "output-to-present latency");
70
- assertNonNegative(value.paint.requestedFrames, "requested frames");
71
- assertNonNegative(value.paint.presentedFrames, "presented frames");
72
- assertNonNegative(value.paint.coalescedFrames, "coalesced frames");
73
- assertNonNegative(value.paint.missedFrames, "missed frames");
74
- assertNonNegative(value.paint.resizePaintGaps, "resize paint gaps");
75
- if (value.paint.presentedFrames > value.paint.requestedFrames)
76
- throw new RangeError("presented frames cannot exceed requested frames");
77
- if (value.paint.missedFrames > value.paint.requestedFrames)
78
- throw new RangeError("missed frames cannot exceed requested frames");
79
- assertNonNegative(value.resources.cpuPercentMaximum, "maximum CPU observation");
80
- assertNonNegative(value.resources.residentMemoryBytesMaximum, "maximum resident memory observation");
81
- if (value.resources.gpuMemoryBytesMaximum !== null)
82
- assertNonNegative(value.resources.gpuMemoryBytesMaximum, "maximum GPU memory observation");
83
- if (value.physical.activeWorkstationAutomation !== false)
84
- throw new TypeError("active-workstation automation is forbidden");
85
- if (!["not-run", "manual", "isolated-worker"].includes(value.physical.method))
86
- throw new TypeError("native spike physical method is invalid");
87
- if (!["pending", "accepted", "rejected"].includes(value.physical.verdict))
88
- throw new TypeError("native spike physical verdict is invalid");
89
- if (value.physical.verdict === "accepted" && value.physical.method === "not-run")
90
- throw new TypeError("physical acceptance requires manual or isolated-worker evidence");
91
- if (value.physical.verdict !== "pending" && !value.physical.evidenceReference)
92
- throw new TypeError("non-pending physical verdict requires evidence reference");
93
- const failed = value.workloads.some(workload => workload.status === "failed");
94
- const incomplete = value.workloads.some(workload => workload.status === "not-run");
95
- const expectedTechnical = failed ? "failed" : incomplete ? "incomplete" : "passed";
96
- if (value.summary.technical !== expectedTechnical)
97
- throw new TypeError(`native spike technical summary must be ${expectedTechnical}`);
98
- if (value.summary.overall === "accepted" && (expectedTechnical !== "passed" || value.physical.verdict !== "accepted")) {
99
- throw new TypeError("overall native spike acceptance requires technical and physical acceptance");
100
- }
101
- if (value.summary.overall === "rejected" && !failed && value.physical.verdict !== "rejected") {
102
- throw new TypeError("overall native spike rejection requires a failed workload or physical rejection");
103
- }
104
- assertNoForbiddenEvidenceKeys(value);
105
- }
106
- function assertMetric(metric, name) {
107
- assertNonNegative(metric.minimum, `${name} minimum`);
108
- assertNonNegative(metric.p50, `${name} p50`);
109
- assertNonNegative(metric.p95, `${name} p95`);
110
- assertNonNegative(metric.maximum, `${name} maximum`);
111
- if (!Number.isSafeInteger(metric.samples) || metric.samples <= 0)
112
- throw new RangeError(`${name} sample count is invalid`);
113
- if (!(metric.minimum <= metric.p50 && metric.p50 <= metric.p95 && metric.p95 <= metric.maximum)) {
114
- throw new RangeError(`${name} measurements must be ordered`);
115
- }
116
- }
117
- function assertNoForbiddenEvidenceKeys(value) {
118
- if (Array.isArray(value)) {
119
- for (const item of value)
120
- assertNoForbiddenEvidenceKeys(item);
121
- return;
122
- }
123
- if (typeof value !== "object" || value === null)
124
- return;
125
- for (const [key, item] of Object.entries(value)) {
126
- if (FORBIDDEN_EVIDENCE_KEYS.has(key))
127
- throw new TypeError(`native spike evidence may not contain hot-path payload field ${key}`);
128
- assertNoForbiddenEvidenceKeys(item);
129
- }
130
- }
131
- function assertNonNegative(value, name) {
132
- if (!Number.isFinite(value) || value < 0)
133
- throw new RangeError(`${name} must be a non-negative finite number`);
134
- }
135
- function assertJsonObject(value, name) {
136
- if (typeof value !== "object" || value === null || Array.isArray(value))
137
- throw new TypeError(`${name} must be an object`);
138
- const encoded = JSON.stringify(value);
139
- if (!encoded || encoded.length > 64_000)
140
- throw new RangeError(`${name} exceeds the bounded evidence detail limit`);
141
- }
@@ -1,4 +0,0 @@
1
- export * from "./codec.js";
2
- export * from "./evidence.js";
3
- export * from "./messages.js";
4
- export * from "./proof-gate.js";
@@ -1,4 +0,0 @@
1
- export * from "./codec.js";
2
- export * from "./evidence.js";
3
- export * from "./messages.js";
4
- export * from "./proof-gate.js";
@@ -1,56 +0,0 @@
1
- import { type CorrelationId, type NativeHostCommand, type NativeHostEvent, type NativeHostHello, type PaneId, type TerminalSessionLaunch } from "../../contracts/workspace/index.js";
2
- export declare const NATIVE_HOST_PROTOCOL_NAME: string;
3
- export declare const MAX_NATIVE_HOST_MESSAGE_BYTES: number;
4
- export type NativeHostProofMessage = {
5
- readonly type: "hello";
6
- readonly hello: NativeHostHello;
7
- } | {
8
- readonly type: "hello-result";
9
- readonly accepted: boolean;
10
- readonly negotiatedCapabilities: readonly string[];
11
- readonly diagnostic: string;
12
- } | {
13
- readonly type: "command";
14
- readonly command: NativeHostCommand;
15
- } | {
16
- readonly type: "command-result";
17
- readonly correlationId: CorrelationId;
18
- readonly accepted: boolean;
19
- readonly revision: number | null;
20
- readonly failure: NativeHostFailure | null;
21
- } | {
22
- readonly type: "event";
23
- readonly event: NativeHostEvent;
24
- } | {
25
- readonly type: "error";
26
- readonly failure: NativeHostFailure;
27
- };
28
- export interface NativeHostFailure {
29
- readonly code: string;
30
- readonly message: string;
31
- readonly retryable: boolean;
32
- }
33
- export interface NativeHostNegotiationResult {
34
- readonly accepted: boolean;
35
- readonly negotiatedCapabilities: readonly string[];
36
- readonly diagnostic: string;
37
- }
38
- export interface FixedTwoByTwoPaneDefinition {
39
- readonly paneId: PaneId;
40
- readonly session: TerminalSessionLaunch;
41
- }
42
- export declare function negotiateNativeHostHello(value: NativeHostHello): NativeHostNegotiationResult;
43
- export declare function createFixedTwoByTwoCommand(input: {
44
- readonly correlationId: CorrelationId;
45
- readonly hostInstanceId: string;
46
- readonly windowId: string;
47
- readonly tabId: string;
48
- readonly expectedRevision: number;
49
- readonly panes: readonly [FixedTwoByTwoPaneDefinition, FixedTwoByTwoPaneDefinition, FixedTwoByTwoPaneDefinition, FixedTwoByTwoPaneDefinition];
50
- }): NativeHostCommand;
51
- export declare function nativeHostCommandResult(correlationId: CorrelationId, revision: number): Extract<NativeHostProofMessage, {
52
- type: "command-result";
53
- }>;
54
- export declare function nativeHostFailure(code: string, message: string, retryable?: boolean): NativeHostFailure;
55
- export declare function nativeHostTimedOut(deadlineAt: number, now: number): boolean;
56
- export declare function assertNativeHostProofMessage(message: NativeHostProofMessage): void;