@tangle-network/agent-app 0.45.53 → 0.45.55

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 (480) hide show
  1. package/README.md +1 -1
  2. package/dist/alerting/index.d.ts +5 -175
  3. package/dist/alerting/slack.d.ts +176 -0
  4. package/dist/app-auth/index.d.ts +14 -17
  5. package/dist/assets/index.d.ts +2 -504
  6. package/dist/assets/schema.d.ts +264 -0
  7. package/dist/assets/types.d.ts +237 -0
  8. package/dist/assistant/AssistantDock.d.ts +56 -0
  9. package/dist/assistant/AssistantHistory.d.ts +41 -0
  10. package/dist/assistant/AssistantPanel.d.ts +84 -0
  11. package/dist/assistant/ProposalCard.d.ts +41 -0
  12. package/dist/assistant/ResizeHandle.d.ts +19 -0
  13. package/dist/assistant/client-context.d.ts +20 -0
  14. package/dist/assistant/client.d.ts +117 -0
  15. package/dist/assistant/index.d.ts +19 -848
  16. package/dist/assistant/launcher.d.ts +23 -0
  17. package/dist/assistant/persistence.d.ts +26 -0
  18. package/dist/assistant/presentation.d.ts +99 -0
  19. package/dist/assistant/provider-label.d.ts +7 -0
  20. package/dist/assistant/reducer.d.ts +130 -0
  21. package/dist/assistant/sse.d.ts +24 -0
  22. package/dist/assistant/time-ago.d.ts +6 -0
  23. package/dist/assistant/transcript.d.ts +97 -0
  24. package/dist/assistant/types.d.ts +291 -0
  25. package/dist/assistant/use-stick-to-bottom.d.ts +28 -0
  26. package/dist/assistant/useAssistantChat.d.ts +63 -0
  27. package/dist/assistant/useAssistantModels.d.ts +22 -0
  28. package/dist/assistant/useAssistantThreads.d.ts +47 -0
  29. package/dist/assistant/usePanelPrefs.d.ts +55 -0
  30. package/dist/billing/index.d.ts +19 -21
  31. package/dist/brand/index.d.ts +16 -10
  32. package/dist/brand-extraction/extract.d.ts +34 -0
  33. package/dist/brand-extraction/index.d.ts +12 -214
  34. package/dist/brand-extraction/map.d.ts +58 -0
  35. package/dist/brand-extraction/types.d.ts +119 -0
  36. package/dist/catalog/index.d.ts +11 -101
  37. package/dist/chat-react/composer-mode-controls.d.ts +14 -0
  38. package/dist/chat-react/entry-composer.d.ts +92 -0
  39. package/dist/chat-react/index.d.ts +22 -118
  40. package/dist/chat-react/types.d.ts +11 -0
  41. package/dist/chat-routes/attachment-store.d.ts +84 -0
  42. package/dist/chat-routes/attachment-upload.d.ts +84 -0
  43. package/dist/chat-routes/attachment-validation.d.ts +95 -0
  44. package/dist/chat-routes/binary-sniff.d.ts +45 -0
  45. package/dist/chat-routes/completed-sandbox-turn.d.ts +25 -0
  46. package/dist/chat-routes/detached-turn.d.ts +197 -0
  47. package/dist/chat-routes/dispatch-parts.d.ts +101 -0
  48. package/dist/chat-routes/draft-persistence.d.ts +189 -0
  49. package/dist/chat-routes/durable-projection.d.ts +18 -0
  50. package/dist/chat-routes/file-index.d.ts +115 -0
  51. package/dist/chat-routes/index.d.ts +25 -1840
  52. package/dist/chat-routes/model-failover-stream.d.ts +206 -0
  53. package/dist/chat-routes/promote-file-part.d.ts +84 -0
  54. package/dist/chat-routes/resolve-attachments.d.ts +72 -0
  55. package/dist/chat-routes/sandbox-producer.d.ts +146 -0
  56. package/dist/chat-routes/sandbox-turn-usage.d.ts +4 -0
  57. package/dist/{stale-turn-lock-DucQzvXu.d.ts → chat-routes/stale-turn-lock.d.ts} +7 -9
  58. package/dist/chat-routes/turn-routes.d.ts +540 -0
  59. package/dist/chat-routes/upload.d.ts +84 -0
  60. package/dist/{wire-DOZ-O6hD.d.ts → chat-routes/wire.d.ts} +41 -44
  61. package/dist/chat-store/core.d.ts +19 -0
  62. package/dist/chat-store/index.d.ts +22 -322
  63. package/dist/{parts-BqIHMdyu.d.ts → chat-store/parts.d.ts} +49 -47
  64. package/dist/chat-store/schema.d.ts +157 -0
  65. package/dist/chat-store/store.d.ts +177 -0
  66. package/dist/config/index.d.ts +13 -18
  67. package/dist/crypto/index.d.ts +10 -12
  68. package/dist/crypto/web-token.d.ts +22 -0
  69. package/dist/design-canvas/apply.d.ts +70 -0
  70. package/dist/design-canvas/drizzle-store.d.ts +29 -0
  71. package/dist/design-canvas/drizzle.d.ts +7 -575
  72. package/dist/{export-presets-mgVulRaV.d.ts → design-canvas/export-presets.d.ts} +18 -22
  73. package/dist/design-canvas/index.d.ts +22 -268
  74. package/dist/design-canvas/mcp-entry.d.ts +15 -0
  75. package/dist/design-canvas/mcp-handler.d.ts +34 -0
  76. package/dist/design-canvas/mcp-tools.d.ts +30 -0
  77. package/dist/{model-DnfO_PdJ.d.ts → design-canvas/model.d.ts} +33 -35
  78. package/dist/{operations-ByJ6yXOW.d.ts → design-canvas/operations.d.ts} +21 -25
  79. package/dist/design-canvas/schema.d.ts +558 -0
  80. package/dist/{store-CqfDtnPQ.d.ts → design-canvas/store.d.ts} +8 -12
  81. package/dist/design-canvas/templates.d.ts +72 -0
  82. package/dist/design-canvas/validate.d.ts +32 -0
  83. package/dist/design-canvas-react/components/BleedTrimOverlay.d.ts +22 -0
  84. package/dist/design-canvas-react/components/BrandKnot.d.ts +11 -0
  85. package/dist/design-canvas-react/components/CanvasEmptyState.d.ts +32 -0
  86. package/dist/design-canvas-react/components/CanvasInsertPanel.d.ts +53 -0
  87. package/dist/{lazy-DrkVyDpe.d.ts → design-canvas-react/components/DesignCanvas.d.ts} +27 -20
  88. package/dist/design-canvas-react/components/DesignCanvasEditor.d.ts +23 -0
  89. package/dist/design-canvas-react/components/ElementNode.d.ts +51 -0
  90. package/dist/design-canvas-react/components/ExportControl.d.ts +21 -0
  91. package/dist/design-canvas-react/components/GridLayer.d.ts +47 -0
  92. package/dist/design-canvas-react/components/InlineTextEditor.d.ts +25 -0
  93. package/dist/design-canvas-react/components/LayersPanel.d.ts +20 -0
  94. package/dist/design-canvas-react/components/PagesStrip.d.ts +34 -0
  95. package/dist/design-canvas-react/components/Rulers.d.ts +31 -0
  96. package/dist/design-canvas-react/components/SelectionLayer.d.ts +51 -0
  97. package/dist/design-canvas-react/components/SnapGuidesOverlay.d.ts +25 -0
  98. package/dist/design-canvas-react/components/Toolbar.d.ts +64 -0
  99. package/dist/design-canvas-react/components/Workspace.d.ts +92 -0
  100. package/dist/design-canvas-react/components/ZoomControls.d.ts +14 -0
  101. package/dist/design-canvas-react/components/glyphs.d.ts +46 -0
  102. package/dist/design-canvas-react/components/icon-button.d.ts +22 -0
  103. package/dist/design-canvas-react/components/index.d.ts +27 -0
  104. package/dist/design-canvas-react/components/layer-tree.d.ts +34 -0
  105. package/dist/design-canvas-react/components/ruler-math.d.ts +78 -0
  106. package/dist/design-canvas-react/components/transform-math.d.ts +168 -0
  107. package/dist/{command-stack-TNPWJCzW.d.ts → design-canvas-react/contracts.d.ts} +16 -63
  108. package/dist/design-canvas-react/engine/command-stack.d.ts +43 -0
  109. package/dist/design-canvas-react/engine/commands.d.ts +154 -0
  110. package/dist/design-canvas-react/engine/selection.d.ts +48 -0
  111. package/dist/design-canvas-react/engine/snap.d.ts +24 -0
  112. package/dist/design-canvas-react/engine/zoom-pan.d.ts +18 -0
  113. package/dist/design-canvas-react/engine.d.ts +21 -399
  114. package/dist/design-canvas-react/export-math.d.ts +104 -0
  115. package/dist/design-canvas-react/export.d.ts +89 -0
  116. package/dist/design-canvas-react/index.d.ts +16 -586
  117. package/dist/design-canvas-react/insert-builders.d.ts +61 -0
  118. package/dist/design-canvas-react/lazy.d.ts +21 -6
  119. package/dist/documents/docx.d.ts +50 -0
  120. package/dist/documents/extract.d.ts +87 -0
  121. package/dist/documents/index.d.ts +26 -232
  122. package/dist/documents/media-type.d.ts +33 -0
  123. package/dist/documents/pdf-inspector.d.ts +5 -9
  124. package/dist/{types-DrBidf3O.d.ts → documents/types.d.ts} +13 -15
  125. package/dist/documents/zip.d.ts +56 -0
  126. package/dist/eval/calibration.d.ts +106 -0
  127. package/dist/eval/index.d.ts +8 -116
  128. package/dist/eval-campaign/index.d.ts +11 -12
  129. package/dist/{trust-gate-Dcm5xSva.d.ts → eval-campaign/trust-gate.d.ts} +5 -9
  130. package/dist/forms/blank.d.ts +48 -0
  131. package/dist/forms/fill.d.ts +105 -0
  132. package/dist/forms/index.d.ts +58 -332
  133. package/dist/forms/registry.d.ts +115 -0
  134. package/dist/forms/verify.d.ts +58 -0
  135. package/dist/harness/index.d.ts +21 -19
  136. package/dist/intakes/api.d.ts +5 -11
  137. package/dist/{completion-CvcNUz07.d.ts → intakes/completion.d.ts} +7 -11
  138. package/dist/intakes/context-sufficiency.d.ts +113 -0
  139. package/dist/intakes/drizzle/schema.d.ts +338 -0
  140. package/dist/intakes/drizzle/store.d.ts +75 -0
  141. package/dist/intakes/drizzle.d.ts +12 -391
  142. package/dist/intakes/index.d.ts +23 -113
  143. package/dist/{model-C8U0HZxL.d.ts → intakes/model.d.ts} +15 -17
  144. package/dist/intakes-react/components/BrandMark.d.ts +10 -0
  145. package/dist/intakes-react/components/IntakeInterview.d.ts +15 -0
  146. package/dist/intakes-react/components/index.d.ts +1 -0
  147. package/dist/intakes-react/contracts.d.ts +42 -0
  148. package/dist/intakes-react/index.d.ts +12 -47
  149. package/dist/intakes-react/lazy.d.ts +9 -8
  150. package/dist/integrations/index.d.ts +10 -12
  151. package/dist/{contract-OxG_jVMx.d.ts → interactions/contract.d.ts} +40 -42
  152. package/dist/interactions/index.d.ts +16 -256
  153. package/dist/interactions/route.d.ts +151 -0
  154. package/dist/interactions/sidecar.d.ts +100 -0
  155. package/dist/knowledge/index.d.ts +7 -11
  156. package/dist/knowledge-loop/index.d.ts +13 -20
  157. package/dist/legibility/checks/empty-state.d.ts +59 -0
  158. package/dist/legibility/checks/reachability.d.ts +103 -0
  159. package/dist/legibility/checks/silent-failure.d.ts +57 -0
  160. package/dist/legibility/checks/success.d.ts +38 -0
  161. package/dist/legibility/checks/vocabulary.d.ts +65 -0
  162. package/dist/legibility/cli-args.d.ts +30 -0
  163. package/dist/legibility/cli.d.ts +25 -0
  164. package/dist/legibility/index.d.ts +10 -530
  165. package/dist/legibility/report.d.ts +22 -0
  166. package/dist/legibility/scan.d.ts +29 -0
  167. package/dist/legibility/source.d.ts +132 -0
  168. package/dist/legibility/suppress.d.ts +36 -0
  169. package/dist/legibility/types.d.ts +168 -0
  170. package/dist/legibility/walk-sources.d.ts +21 -0
  171. package/dist/{agent-activity-C8ZG0F0M.d.ts → missions/agent-activity.d.ts} +3 -5
  172. package/dist/missions/engine.d.ts +251 -0
  173. package/dist/missions/events.d.ts +195 -0
  174. package/dist/missions/index.d.ts +12 -765
  175. package/dist/missions/plan-parse.d.ts +50 -0
  176. package/dist/missions/service.d.ts +265 -0
  177. package/dist/{failover-D-3UXXTb.d.ts → model-resolution/failover.d.ts} +10 -12
  178. package/dist/model-resolution/index.d.ts +15 -18
  179. package/dist/object-store/index.d.ts +15 -17
  180. package/dist/openui/action.d.ts +54 -0
  181. package/dist/openui/authoring.d.ts +25 -0
  182. package/dist/openui/index.d.ts +24 -206
  183. package/dist/openui/route.d.ts +124 -0
  184. package/dist/openui/segments.d.ts +71 -0
  185. package/dist/openui/values.d.ts +82 -0
  186. package/dist/openui-react/index.d.ts +9 -13
  187. package/dist/peer-floors/check.d.ts +9 -190
  188. package/dist/peer-floors/cli.d.ts +2 -3
  189. package/dist/peer-floors/dependency-source.d.ts +178 -0
  190. package/dist/plans/index.d.ts +13 -14
  191. package/dist/{billing-BuNlaKlE.d.ts → platform/billing.d.ts} +28 -32
  192. package/dist/platform/guards.d.ts +79 -0
  193. package/dist/platform/hub.d.ts +107 -0
  194. package/dist/platform/index.d.ts +7 -112
  195. package/dist/{sso-Cm00S61u.d.ts → platform/sso.d.ts} +15 -97
  196. package/dist/preflight/cli.d.ts +3 -6
  197. package/dist/preflight/index.d.ts +16 -18
  198. package/dist/preset-cloudflare/headers.d.ts +12 -0
  199. package/dist/preset-cloudflare/index.d.ts +22 -74
  200. package/dist/preset-cloudflare/workflow-instance.d.ts +35 -0
  201. package/dist/profile/budget.d.ts +72 -0
  202. package/dist/profile/fingerprint.d.ts +65 -0
  203. package/dist/profile/index.d.ts +27 -19
  204. package/dist/prompt/index.d.ts +3 -5
  205. package/dist/record/drizzle/schema.d.ts +488 -0
  206. package/dist/record/drizzle/store.d.ts +224 -0
  207. package/dist/record/drizzle.d.ts +10 -679
  208. package/dist/record/fold.d.ts +99 -0
  209. package/dist/record/index.d.ts +13 -13
  210. package/dist/{fold-DACU7gtf.d.ts → record/model.d.ts} +22 -124
  211. package/dist/record/ulid.d.ts +12 -0
  212. package/dist/redact/index.d.ts +14 -16
  213. package/dist/run/index.d.ts +11 -16
  214. package/dist/runtime/agent.d.ts +23 -0
  215. package/dist/runtime/certified-delivery.d.ts +57 -0
  216. package/dist/runtime/index.d.ts +17 -367
  217. package/dist/runtime/loop.d.ts +58 -0
  218. package/dist/runtime/model-catalog.d.ts +103 -0
  219. package/dist/{model-CdCDfBA9.d.ts → runtime/model.d.ts} +25 -27
  220. package/dist/runtime/openai-stream.d.ts +126 -0
  221. package/dist/runtime/surface-profile.d.ts +115 -0
  222. package/dist/sandbox/binary-read.d.ts +63 -0
  223. package/dist/sandbox/diagnostics.d.ts +69 -0
  224. package/dist/sandbox/index.d.ts +103 -1085
  225. package/dist/sandbox/model.d.ts +179 -0
  226. package/dist/sandbox/outcome.d.ts +10 -0
  227. package/dist/sandbox/prewarm-claim-d1.d.ts +80 -0
  228. package/dist/sandbox/prewarm.d.ts +193 -0
  229. package/dist/sandbox/recovery.d.ts +216 -0
  230. package/dist/sandbox/terminal-connection.d.ts +145 -0
  231. package/dist/sandbox/workspace-sandbox-manager.d.ts +44 -0
  232. package/dist/sequences/apply.d.ts +54 -0
  233. package/dist/sequences/captions.d.ts +91 -0
  234. package/dist/sequences/drizzle-store.d.ts +36 -0
  235. package/dist/sequences/drizzle.d.ts +7 -1252
  236. package/dist/sequences/exports.d.ts +138 -0
  237. package/dist/sequences/index.d.ts +19 -340
  238. package/dist/sequences/mcp-entry.d.ts +15 -0
  239. package/dist/sequences/mcp-handler.d.ts +39 -0
  240. package/dist/sequences/mcp-tools.d.ts +47 -0
  241. package/dist/{store-B7LLlk9p.d.ts → sequences/model.d.ts} +26 -110
  242. package/dist/sequences/operations.d.ts +126 -0
  243. package/dist/sequences/schema.d.ts +1231 -0
  244. package/dist/sequences/store.d.ts +81 -0
  245. package/dist/sequences/validate.d.ts +98 -0
  246. package/dist/sequences-react/components/BrandMark.d.ts +10 -0
  247. package/dist/sequences-react/components/PreviewCanvas.d.ts +26 -0
  248. package/dist/sequences-react/components/SnapIndicatorLine.d.ts +11 -0
  249. package/dist/sequences-react/components/TimelineClipChip.d.ts +80 -0
  250. package/dist/sequences-react/components/TimelineEditor.d.ts +44 -0
  251. package/dist/sequences-react/components/TimelineEmptyState.d.ts +21 -0
  252. package/dist/sequences-react/components/TimelineGhostLanes.d.ts +14 -0
  253. package/dist/sequences-react/components/TimelinePlayhead.d.ts +11 -0
  254. package/dist/sequences-react/components/TimelineRuler.d.ts +16 -0
  255. package/dist/sequences-react/components/TimelineSmallScreenGate.d.ts +12 -0
  256. package/dist/sequences-react/components/TimelineTrackRow.d.ts +51 -0
  257. package/dist/sequences-react/components/ZoomControl.d.ts +15 -0
  258. package/dist/sequences-react/components/composite-command.d.ts +8 -0
  259. package/dist/sequences-react/components/glyphs.d.ts +26 -0
  260. package/dist/sequences-react/components/index.d.ts +31 -0
  261. package/dist/sequences-react/components/interaction-math.d.ts +103 -0
  262. package/dist/sequences-react/contracts.d.ts +187 -0
  263. package/dist/sequences-react/engine/command-stack.d.ts +18 -0
  264. package/dist/sequences-react/engine/commands.d.ts +146 -0
  265. package/dist/sequences-react/engine/playback.d.ts +18 -0
  266. package/dist/sequences-react/engine/snap.d.ts +29 -0
  267. package/dist/sequences-react/engine/zoom.d.ts +29 -0
  268. package/dist/sequences-react/index.d.ts +20 -880
  269. package/dist/sequences-react/lazy.d.ts +8 -0
  270. package/dist/sequences-react/media/frame-provider.d.ts +70 -0
  271. package/dist/sequences-react/media/transcription.d.ts +33 -0
  272. package/dist/sequences-react/media/waveform.d.ts +34 -0
  273. package/dist/session-shell/index.d.ts +31 -204
  274. package/dist/session-shell/nav-guard.d.ts +170 -0
  275. package/dist/session-shell/path.d.ts +19 -0
  276. package/dist/signoff/cli.d.ts +4 -7
  277. package/dist/signoff/config.d.ts +12 -0
  278. package/dist/signoff/exec.d.ts +44 -0
  279. package/dist/signoff/index.d.ts +56 -14
  280. package/dist/signoff/invoked-as-script.d.ts +25 -0
  281. package/dist/signoff/node-version.d.ts +50 -0
  282. package/dist/signoff/proof-attach.d.ts +88 -0
  283. package/dist/signoff/proof-cli.d.ts +1 -0
  284. package/dist/signoff/proof-fixture.d.ts +13 -0
  285. package/dist/signoff/proof-from-report.d.ts +22 -0
  286. package/dist/signoff/proof-git.d.ts +57 -0
  287. package/dist/signoff/proof-record.d.ts +202 -0
  288. package/dist/signoff/proof-verify.d.ts +103 -0
  289. package/dist/signoff/proof.d.ts +35 -310
  290. package/dist/signoff/report.d.ts +7 -0
  291. package/dist/{run-D80hoLKh.d.ts → signoff/run.d.ts} +3 -6
  292. package/dist/signoff/schedule.d.ts +55 -0
  293. package/dist/signoff/seeds.d.ts +50 -0
  294. package/dist/signoff/store.d.ts +22 -0
  295. package/dist/{types-Bd6uW9vQ.d.ts → signoff/types.d.ts} +15 -17
  296. package/dist/signoff/workflow-pin.d.ts +56 -0
  297. package/dist/signoff/workspace.d.ts +40 -0
  298. package/dist/skills/index.d.ts +28 -32
  299. package/dist/skills-placement/index.d.ts +7 -11
  300. package/dist/spend/budget.d.ts +123 -0
  301. package/dist/spend/ceiling.d.ts +51 -0
  302. package/dist/spend/cli-args.d.ts +20 -0
  303. package/dist/spend/cli.d.ts +1 -0
  304. package/dist/spend/fixtures/incident-parked-time.d.ts +55 -0
  305. package/dist/spend/index.d.ts +38 -1144
  306. package/dist/spend/liveness.d.ts +131 -0
  307. package/dist/spend/ownership.d.ts +87 -0
  308. package/dist/spend/reconcile.d.ts +109 -0
  309. package/dist/spend/reference.d.ts +42 -0
  310. package/dist/spend/report.d.ts +12 -0
  311. package/dist/spend/store.d.ts +123 -0
  312. package/dist/spend/types.d.ts +466 -0
  313. package/dist/store/index.d.ts +10 -12
  314. package/dist/stories/app-shell/fixtures.d.ts +43 -0
  315. package/dist/stories/app-shell/shell.d.ts +81 -0
  316. package/dist/stories/assistant/fixtures.d.ts +73 -0
  317. package/dist/stories/chat/fixtures.d.ts +70 -0
  318. package/dist/stories/chat/markdown.d.ts +11 -0
  319. package/dist/stories/chat/run-drill-in.d.ts +19 -0
  320. package/dist/stories/chat-controls/fixtures.d.ts +116 -0
  321. package/dist/stories/design-canvas/fixtures.d.ts +57 -0
  322. package/dist/stories/fixtures/canvas.d.ts +10 -0
  323. package/dist/stories/fixtures/catalog.d.ts +7 -0
  324. package/dist/stories/fixtures/chat.d.ts +39 -0
  325. package/dist/stories/fixtures/index.d.ts +4 -0
  326. package/dist/stories/fixtures/sequences.d.ts +17 -0
  327. package/dist/stories/panels/fixtures.d.ts +63 -0
  328. package/dist/stories/sequences/fixtures.d.ts +30 -0
  329. package/dist/stories/studio/fixtures.d.ts +22 -0
  330. package/dist/stream/index.d.ts +10 -56
  331. package/dist/{stream-normalizer-DKRxyVlZ.d.ts → stream/stream-normalizer.d.ts} +23 -26
  332. package/dist/{turn-buffer-COMQUwO2.d.ts → stream/turn-buffer.d.ts} +21 -23
  333. package/dist/stream/turn-identity.d.ts +49 -0
  334. package/dist/studio/generation.d.ts +179 -0
  335. package/dist/studio/index.d.ts +12 -181
  336. package/dist/studio-react/avatar-composer.d.ts +8 -0
  337. package/dist/studio-react/composer-hero.d.ts +12 -0
  338. package/dist/studio-react/composer-shell.d.ts +18 -0
  339. package/dist/studio-react/generation-card.d.ts +9 -0
  340. package/dist/studio-react/generation-detail-modal.d.ts +11 -0
  341. package/dist/studio-react/generation-detail.d.ts +6 -0
  342. package/dist/studio-react/generation-grid.d.ts +15 -0
  343. package/dist/studio-react/image-composer.d.ts +8 -0
  344. package/dist/studio-react/index.d.ts +32 -245
  345. package/dist/studio-react/library-drawer.d.ts +12 -0
  346. package/dist/studio-react/library-panel.d.ts +15 -0
  347. package/dist/studio-react/publish-package-composer.d.ts +18 -0
  348. package/dist/studio-react/result-canvas.d.ts +6 -0
  349. package/dist/studio-react/speech-composer.d.ts +4 -0
  350. package/dist/studio-react/studio-header.d.ts +5 -0
  351. package/dist/studio-react/studio-sheet.d.ts +12 -0
  352. package/dist/studio-react/studio-workspace.d.ts +23 -0
  353. package/dist/studio-react/transcription-composer.d.ts +12 -0
  354. package/dist/studio-react/type-config.d.ts +11 -0
  355. package/dist/studio-react/use-studio-generations.d.ts +20 -0
  356. package/dist/studio-react/video-composer.d.ts +10 -0
  357. package/dist/tangle/index.d.ts +7 -9
  358. package/dist/teams/drizzle/access.d.ts +82 -0
  359. package/dist/{invitations-schema-_fI7HkJP.d.ts → teams/drizzle/invitations-schema.d.ts} +39 -27
  360. package/dist/teams/drizzle/personal-organization.d.ts +41 -0
  361. package/dist/{access-490O6aOU.d.ts → teams/drizzle/schema.d.ts} +57 -122
  362. package/dist/teams/drizzle.d.ts +12 -44
  363. package/dist/teams/index.d.ts +20 -44
  364. package/dist/teams/invitations-api.d.ts +17 -21
  365. package/dist/{invitations-DoYMvXea.d.ts → teams/invitations.d.ts} +14 -18
  366. package/dist/teams/invite.d.ts +42 -0
  367. package/dist/teams/members-api.d.ts +12 -16
  368. package/dist/teams/resend.d.ts +3 -13
  369. package/dist/{roles-B4nU3jDi.d.ts → teams/roles.d.ts} +18 -20
  370. package/dist/teams-react/components/BrandMark.d.ts +10 -0
  371. package/dist/teams-react/components/InvitationsPanel.d.ts +13 -0
  372. package/dist/teams-react/components/InviteAcceptPage.d.ts +10 -0
  373. package/dist/teams-react/components/MembersPanel.d.ts +14 -0
  374. package/dist/teams-react/components/RoleSelect.d.ts +17 -0
  375. package/dist/teams-react/components/index.d.ts +3 -0
  376. package/dist/teams-react/contracts.d.ts +134 -0
  377. package/dist/teams-react/index.d.ts +12 -143
  378. package/dist/teams-react/lazy.d.ts +11 -11
  379. package/dist/test-setup.d.ts +1 -0
  380. package/dist/theme/index.d.ts +6 -104
  381. package/dist/theme/tailwind-preset.d.ts +1 -2
  382. package/dist/theme/theme.d.ts +106 -0
  383. package/dist/theme-contract/cli.d.ts +21 -0
  384. package/dist/theme-contract/index.d.ts +4 -6
  385. package/dist/{auth-BYtiazA4.d.ts → tools/auth.d.ts} +8 -11
  386. package/dist/tools/capability.d.ts +54 -0
  387. package/dist/tools/dispatch.d.ts +37 -0
  388. package/dist/tools/errors.d.ts +8 -0
  389. package/dist/tools/gating.d.ts +62 -0
  390. package/dist/tools/http.d.ts +27 -0
  391. package/dist/tools/index.d.ts +12 -217
  392. package/dist/{mcp-rpc-DYwPlYbZ.d.ts → tools/mcp-rpc.d.ts} +7 -9
  393. package/dist/{mcp-xxoZZfor.d.ts → tools/mcp.d.ts} +14 -16
  394. package/dist/tools/openai.d.ts +28 -0
  395. package/dist/tools/registry.d.ts +39 -0
  396. package/dist/tools/runtime.d.ts +22 -0
  397. package/dist/{types-B25Mib1r.d.ts → tools/types.d.ts} +15 -83
  398. package/dist/{flow-types-CJxEmaRy.d.ts → trace/flow-types.d.ts} +2 -4
  399. package/dist/trace/index.d.ts +11 -148
  400. package/dist/trace/mission-flow.d.ts +82 -0
  401. package/dist/trace/mission-trace.d.ts +52 -0
  402. package/dist/turn-health/classify.d.ts +207 -0
  403. package/dist/turn-health/index.d.ts +29 -637
  404. package/dist/turn-health/lifecycle.d.ts +75 -0
  405. package/dist/turn-health/sink.d.ts +122 -0
  406. package/dist/turn-health/sweep.d.ts +245 -0
  407. package/dist/turn-stream/adapters.d.ts +257 -0
  408. package/dist/turn-stream/core.d.ts +293 -0
  409. package/dist/turn-stream/do.d.ts +144 -0
  410. package/dist/turn-stream/index.d.ts +62 -738
  411. package/dist/turn-stream/memory.d.ts +41 -0
  412. package/dist/vault/ConfirmDialog.d.ts +22 -0
  413. package/dist/vault/VaultPane.d.ts +15 -0
  414. package/dist/{VaultPane-BDP6SB_K.d.ts → vault/contracts.d.ts} +15 -22
  415. package/dist/vault/index.d.ts +15 -22
  416. package/dist/vault/lazy.d.ts +9 -7
  417. package/dist/vault/server.d.ts +8 -10
  418. package/dist/web/free-route-limit.d.ts +187 -0
  419. package/dist/web/index.d.ts +15 -207
  420. package/dist/{rate-limit-BOVmJRXZ.d.ts → web/rate-limit.d.ts} +3 -5
  421. package/dist/web-react/agent-session-controls.d.ts +105 -0
  422. package/dist/web-react/async/async-view.d.ts +69 -0
  423. package/dist/web-react/async/index.d.ts +13 -305
  424. package/dist/web-react/async/state.d.ts +107 -0
  425. package/dist/web-react/async/use-async-resource.d.ts +41 -0
  426. package/dist/web-react/async/use-confirmed-mutation.d.ts +90 -0
  427. package/dist/web-react/brand-mark.d.ts +11 -0
  428. package/dist/web-react/chat-attachments.d.ts +21 -0
  429. package/dist/web-react/chat-composer.d.ts +174 -0
  430. package/dist/web-react/chat-interactions.d.ts +1 -0
  431. package/dist/web-react/chat-mentions.d.ts +48 -0
  432. package/dist/web-react/chat-stream.d.ts +106 -0
  433. package/dist/web-react/class-names.d.ts +10 -0
  434. package/dist/web-react/controls.d.ts +265 -0
  435. package/dist/web-react/durable-chat-cards.d.ts +40 -0
  436. package/dist/web-react/durable-interaction-submit.d.ts +22 -0
  437. package/dist/web-react/durable-plan-card.d.ts +13 -0
  438. package/dist/web-react/durable-plan-flow.d.ts +77 -0
  439. package/dist/web-react/harness-glyphs.d.ts +28 -0
  440. package/dist/web-react/index.d.ts +80 -2347
  441. package/dist/web-react/inert.d.ts +39 -0
  442. package/dist/web-react/insight-card.d.ts +203 -0
  443. package/dist/web-react/interaction-card-support.d.ts +115 -0
  444. package/dist/web-react/interaction-plan-card.d.ts +39 -0
  445. package/dist/web-react/interaction-question-card.d.ts +100 -0
  446. package/dist/web-react/message-attachments.d.ts +56 -0
  447. package/dist/web-react/mission-activity.d.ts +96 -0
  448. package/dist/web-react/motion.d.ts +43 -0
  449. package/dist/web-react/provenance-model.d.ts +195 -0
  450. package/dist/web-react/provenance.d.ts +82 -0
  451. package/dist/web-react/provider-logo.d.ts +14 -0
  452. package/dist/web-react/record-grid-model.d.ts +257 -0
  453. package/dist/web-react/record-grid.d.ts +108 -0
  454. package/dist/web-react/sandbox-terminal.d.ts +90 -0
  455. package/dist/web-react/seat-paywall.d.ts +47 -0
  456. package/dist/web-react/session-history.d.ts +196 -0
  457. package/dist/web-react/smooth-text.d.ts +29 -0
  458. package/dist/web-react/sparkline.d.ts +150 -0
  459. package/dist/web-react/terminal.d.ts +1 -92
  460. package/dist/web-react/use-chat-interactions.d.ts +78 -0
  461. package/dist/web-react/use-composer-attachments.d.ts +111 -0
  462. package/dist/web-react/use-file-mentions.d.ts +94 -0
  463. package/dist/web-react/work-product.d.ts +105 -0
  464. package/dist/work-product/claim-support.d.ts +288 -0
  465. package/dist/work-product/index.d.ts +16 -849
  466. package/dist/work-product/provenance.d.ts +61 -0
  467. package/dist/{queue-VTBA5ONX.d.ts → work-product/queue.d.ts} +10 -12
  468. package/dist/work-product/quote.d.ts +139 -0
  469. package/dist/work-product/route.d.ts +88 -0
  470. package/dist/work-product/service.d.ts +123 -0
  471. package/dist/work-product/tools.d.ts +144 -0
  472. package/dist/{types-CCeYywdS.d.ts → work-product/types.d.ts} +29 -31
  473. package/dist/work-product-react/index.d.ts +19 -8
  474. package/dist/workspace-react/index.d.ts +8 -11
  475. package/package.json +5 -4
  476. package/dist/agent-session-controls-CmlXwp_H.d.ts +0 -384
  477. package/dist/apply-6wlMOLf8.d.ts +0 -280
  478. package/dist/attachment-validation-BfJDBU1g.d.ts +0 -261
  479. package/dist/budget-BOucfcb_.d.ts +0 -142
  480. package/dist/values-C7RidJuI.d.ts +0 -156
@@ -0,0 +1,197 @@
1
+ /**
2
+ * Detached (autonomous) turn → live buffer bridge.
3
+ *
4
+ * The interactive lane (`createChatTurnRoutes`) already streams a user-typed
5
+ * turn to the browser while it runs. An AUTONOMOUS turn — a mission step, a
6
+ * queue job, an inbound-email review — runs detached (`dispatchPrompt`/
7
+ * `streamPrompt` server-side so it survives no one watching) and, historically,
8
+ * only persisted its FINAL message. A browser opening the session mid-run saw a
9
+ * dead screen: the live tokens existed server-side but were never written to
10
+ * the turn-event buffer the client re-attach path (`listRunning` + `/replay`)
11
+ * reads.
12
+ *
13
+ * `runDetachedTurn` is that missing bridge, packaged. It taps the same buffer
14
+ * the interactive lane uses (`createBufferedTurnTap`) with the same producer
15
+ * mapping (`createSandboxChatProducer`), so an autonomous run is watchable
16
+ * token-by-token exactly like an interactive one — while staying durable
17
+ * (a durable driver re-invokes it after a crash; a turn that finished
18
+ * server-side short-circuits instead of re-streaming). Products supply only the
19
+ * domain seams: the raw sandbox event stream, the turn store, and the ids.
20
+ *
21
+ * This is app-shell mechanism (turn durability + live projection), not engine:
22
+ * it owns no loop logic and imports no SDK — the event source is an injected
23
+ * `AsyncIterable`.
24
+ */
25
+ import type { ModelFailoverAttempt } from '../model-resolution/failover';
26
+ import { type TurnEventStore } from '../stream/index';
27
+ import { type AssistantDraftStore, type DraftPersistenceTuning } from './draft-persistence';
28
+ import { type SandboxChatProducerOptions } from './sandbox-producer';
29
+ import type { ChatTurnUsage } from './turn-routes';
30
+ /** The normalized structured message body (tool-call / file / plan / interaction
31
+ * parts) that `/chat-store` persists as the durable assistant row — the same
32
+ * shape `createSandboxChatProducer().assistantParts()` returns. */
33
+ export type DetachedTurnParts = Array<Record<string, unknown>>;
34
+ /** Authoritative final receipt for a turn that finished server-side, or whose
35
+ * live stream carried no usage (some harness paths only expose tokens via the
36
+ * completed-turn record, e.g. `box.findCompletedTurn(turnId)`). */
37
+ export interface DetachedTurnFinal {
38
+ text?: string;
39
+ usage?: ChatTurnUsage;
40
+ /** The structured parts to persist when this receipt is more complete than
41
+ * the live stream (cached, finished server-side, or a fast stream that
42
+ * delivered scalar text before its message-part events). Omitted when the
43
+ * record only carries a usage receipt. */
44
+ parts?: DetachedTurnParts;
45
+ }
46
+ /** Define options for managing and projecting a detached turn event stream in a session */
47
+ export interface DetachedTurnOptions {
48
+ store: TurnEventStore;
49
+ turnId: string;
50
+ /** Thread/session id — recorded as the buffer scope so a browser opening the
51
+ * session mid-run rediscovers this turn via `listRunning(scopeId)` after it
52
+ * has lost the turnId. */
53
+ scopeId: string;
54
+ /** The raw sandbox event stream for this turn (e.g. `streamSandboxPrompt`).
55
+ * Ownership of the box, prompt, tooling, and attachments stays with the
56
+ * caller — this only projects the stream.
57
+ *
58
+ * An already-open stream is bound to one model and cannot fail over. Prefer
59
+ * {@link openEvents}; exactly one of the two is required. */
60
+ events?: AsyncIterable<unknown>;
61
+ /** Open the raw sandbox stream FOR A GIVEN MODEL — the failover-capable form
62
+ * of {@link events}. Wiring it turns failover on with no further flag
63
+ * whenever {@link fallbackModels} is non-empty. Requires {@link model}.
64
+ *
65
+ * An autonomous run is the case that most needs this: nobody is watching to
66
+ * notice a dead upstream and retry by hand, so without failover the mission
67
+ * step or queue job simply fails. Forwarded to the producer. */
68
+ openEvents?: SandboxChatProducerOptions['openEvents'];
69
+ /** Models to try, in order, when `model`'s upstream is dead. Product config —
70
+ * see the producer's note on why a same-family fallback is not automatically
71
+ * safe and why every fallback is surfaced. */
72
+ fallbackModels?: SandboxChatProducerOptions['fallbackModels'];
73
+ /** Opt out of failover while still using {@link openEvents}. */
74
+ modelFailover?: false;
75
+ /** Maximum time to open/start one model event source through its first event.
76
+ * Forwarded to the producer; default 120 seconds. */
77
+ openTimeoutMs?: SandboxChatProducerOptions['openTimeoutMs'];
78
+ /** Hard deadline after the source's first lifecycle event for the first
79
+ * answer-bearing event. Forwarded to the producer; default 60 seconds. */
80
+ firstResponseTimeoutMs?: SandboxChatProducerOptions['firstResponseTimeoutMs'];
81
+ /** Fired when a model is abandoned mid-chain (telemetry/alerting). */
82
+ onModelFallback?: SandboxChatProducerOptions['onModelFallback'];
83
+ /** The PREFERRED model. Recorded on the persisted assistant message + usage
84
+ * receipt — unless failover moved the turn, in which case the model that
85
+ * actually served is recorded instead and surfaced on the result. */
86
+ model?: string;
87
+ /** Per-flush buffer coalescer. Default `coalesceDeltas`. */
88
+ coalesce?: (events: unknown[]) => unknown[];
89
+ /** Which ask kinds the product renders a card for; anything else is
90
+ * auto-declined via {@link declineInteraction}. Forwarded to the producer. */
91
+ isRenderableInteraction?: SandboxChatProducerOptions['isRenderableInteraction'];
92
+ /** Resolve a non-renderable ask so the run never hangs in the broker. An
93
+ * autonomous turn has NO human watching to answer an ask, so a caller that
94
+ * omits this risks the run blocking until the broker times out — wire it for
95
+ * any unattended run. Forwarded to the producer. */
96
+ declineInteraction?: SandboxChatProducerOptions['declineInteraction'];
97
+ /** Opt-in eager promotion of harness-emitted `file` parts. Forwarded to the
98
+ * producer (see its docs). */
99
+ promoteFilePart?: SandboxChatProducerOptions['promoteFilePart'];
100
+ /** Authoritative final receipt, consulted whenever a re-invoke finds a prior
101
+ * buffer: (a) an already-`complete` turn returns it as the cached result,
102
+ * (b) a `running` turn (crash mid-run) uses it to detect a run that finished
103
+ * server-side, and (c) a clean run whose stream carried no usage or only
104
+ * scalar text falls back to it. For Sandbox runs, use
105
+ * `readCompletedSandboxTurn` so the exact completed session message
106
+ * restores tool/file parts as well as text. */
107
+ completedResult?: () => Promise<DetachedTurnFinal | null | undefined>;
108
+ /** Clear the prior partial buffer for `turnId` before a genuine re-stream.
109
+ * A crash mid-run leaves buffered rows at seqs 1..N with status `running`;
110
+ * re-streaming restarts the tap's seq at 0 and would duplicate/interleave
111
+ * rows. Wire this (delete `turnId`'s buffered events) so a retry is clean.
112
+ * Unset, a re-stream over a `running` buffer is still attempted but logged
113
+ * as a possible-duplication hazard. */
114
+ resetBuffer?: (turnId: string) => Promise<void>;
115
+ /** Own the durable assistant row for this turn instead of returning the body
116
+ * for the caller to insert — and keep it in step with the stream.
117
+ *
118
+ * An autonomous run is exactly the case a late viewer hits: nobody is
119
+ * watching when it starts, so by the time a browser opens the session the
120
+ * streaming gateway's hot event buffer may already have expired it. Keeping
121
+ * that buffer short is what makes it affordable at scale (its Redis
122
+ * footprint is linear in `ttl x concurrent sessions`), so the durable row —
123
+ * written incrementally here — is what serves the late viewer.
124
+ *
125
+ * WIRING THIS TRANSFERS ROW OWNERSHIP: the returned {@link
126
+ * DetachedTurnResult.messageId} names the row this call wrote (draft rows
127
+ * during the stream, authoritative values at the end, retraction when the
128
+ * turn produced nothing). The caller must NOT insert its own assistant row
129
+ * for the turn. Omit the seam and nothing changes — the result is returned
130
+ * and the caller persists it exactly as today.
131
+ *
132
+ * Idempotency reuses the turn's own identity: the row id defaults to
133
+ * `assistant:<turnId>`, so a durable driver re-invoking after a crash
134
+ * patches the same row instead of duplicating parts. */
135
+ persist?: DraftPersistenceTuning & {
136
+ store: AssistantDraftStore;
137
+ threadId: string;
138
+ /** Deterministic row id. Default `assistant:<turnId>`. */
139
+ messageId?: string;
140
+ /** Pre-persist text transform (`/redact`), applied to drafts AND the final
141
+ * write — parity with the interactive lane's `transformFinalText`. */
142
+ transformText?: (text: string) => string | Promise<string>;
143
+ };
144
+ log?: (message: string, meta?: Record<string, unknown>) => void;
145
+ }
146
+ /** Describe the result of a detached turn including state, text, parts, usage, and optional error or cache flag */
147
+ export interface DetachedTurnResult {
148
+ /** `completed` — clean drain: persist + bill. `failed` — a terminal error
149
+ * event, including the producer's structured `sandbox.stream_failed` event
150
+ * when the raw sandbox stream throws: skip billing, render an error row. */
151
+ state: 'completed' | 'failed';
152
+ text: string;
153
+ /** The structured assistant body to persist (tool calls, file/plan/interaction
154
+ * parts). Empty array when the run produced none. */
155
+ parts: DetachedTurnParts;
156
+ usage: ChatTurnUsage;
157
+ /** Present when `state === 'failed'`. */
158
+ error?: string;
159
+ /** True when a prior buffer meant this call returned a cached/finished result
160
+ * WITHOUT re-streaming (durable-driver retry after a crash). */
161
+ cached: boolean;
162
+ /** The durable assistant row this call wrote, when `persist` was wired.
163
+ * `null` when the turn produced nothing and the row was retracted. Absent
164
+ * when the caller owns persistence (today's behavior). */
165
+ messageId?: string | null;
166
+ /** The model that SERVED the turn — the fallback's id when failover moved it.
167
+ * A caller that bills or scores per model must read this, not the model it
168
+ * requested. */
169
+ model?: string;
170
+ /** The caller's explicit model request, before shell failover. */
171
+ requestedModel?: string;
172
+ /** The effective model echoed by the downstream sandbox. */
173
+ servedModel?: string;
174
+ /** The effective provider echoed by the downstream sandbox. */
175
+ servedProvider?: string;
176
+ /** How the downstream sandbox selected the effective model. */
177
+ servedSource?: 'request' | 'environment' | 'profile';
178
+ /** True when the preferred model did not serve. Makes an autonomous
179
+ * downgrade — which no human watched happen — attributable after the fact. */
180
+ usedModelFallback?: boolean;
181
+ /** Every model tried, in order, with the reason each was abandoned. */
182
+ modelAttempts?: ModelFailoverAttempt[];
183
+ }
184
+ /**
185
+ * Stream a detached turn into the live turn-event buffer, durably.
186
+ *
187
+ * - Idempotent: an already-`complete` turn returns the cached result without
188
+ * re-streaming (a second event sequence would collide with the buffered one).
189
+ * - Crash-safe: a `running` turn (a prior attempt crashed mid-tap) consults
190
+ * `completedResult` to detect a run that finished server-side; only a run that
191
+ * genuinely did not complete is re-streamed, and then over a `resetBuffer`-
192
+ * cleared buffer so seqs don't corrupt.
193
+ * - Marks the turn `running` under `scopeId` so a mid-run browser finds it.
194
+ * - Settles `complete`/`error` so the client stops tailing and billing/render
195
+ * can branch on `state`.
196
+ */
197
+ export declare function runDetachedTurn(opts: DetachedTurnOptions): Promise<DetachedTurnResult>;
@@ -0,0 +1,101 @@
1
+ /**
2
+ * `buildDispatchParts` — assemble the `PromptInputPart[]` a turn carrying
3
+ * attachments and/or `@`-mentions dispatches to the sandbox. `parts[0]` is
4
+ * always the full prompt text (typed text plus the attachment + mention pointer
5
+ * blocks); each attachment or mention becomes one media part. An attachment
6
+ * (read from the product store via the injected reader) draws the inline byte
7
+ * budget first; a mention (read from the LIVE box) takes what is left. A file
8
+ * inlines as a `data:` URI when it fits the remaining budget, otherwise uses
9
+ * the in-box file reference supported by the current sandbox prompt contract.
10
+ * Every media part is deduped by its resolved absolute path. This module only
11
+ * produces the parts array; the caller decides when a turn dispatches parts
12
+ * instead of a plain string.
13
+ *
14
+ * Storage-parameterized port of gtm-agent's `dispatch-parts.ts`: the vault
15
+ * default reader is dropped (`readAttachment` is REQUIRED — the product supplies
16
+ * its store adapter), the `GTM_SANDBOX_VAULT_DIR` prefixing becomes the required
17
+ * `resolveAttachmentPath` seam, the `GTM_MULTIMODAL_FORCE_PATH` env fallback
18
+ * becomes an explicit `forcePath` flag, and every budget cap reads an overridable
19
+ * `./wire` constant. Kept behavior-identical for gtm-agent#618 adoption (the
20
+ * demotion math and emitted part shapes reproduce its dispatched prompt bytes).
21
+ */
22
+ import { type PromptInputPart } from '../sandbox';
23
+ import { type SandboxExecChannel } from '../sandbox/binary-read';
24
+ import { type ChatTurnPartInput } from './wire';
25
+ import type { ChatAttachmentPart, ChatMentionPart } from '../chat-store/parts';
26
+ import type { ReadAttachmentFn } from './attachment-store';
27
+ export type { PromptInputPart };
28
+ /** Resolve the outcome of dispatching parts with success status and corresponding value or error message */
29
+ export type DispatchPartsOutcome = {
30
+ succeeded: true;
31
+ value: PromptInputPart[];
32
+ } | {
33
+ succeeded: false;
34
+ error: string;
35
+ };
36
+ /** One mention file's size (always) and inline bytes (only when the caller
37
+ * asked for them — a path-only mention never reads its bytes). */
38
+ type SandboxMentionReadOutcome = {
39
+ succeeded: true;
40
+ value: {
41
+ size: number;
42
+ base64?: string;
43
+ };
44
+ } | {
45
+ succeeded: false;
46
+ error: string;
47
+ };
48
+ /** Resolve sandbox mention details by reading from a specified path with optional byte reading */
49
+ export type ReadSandboxMentionFn = (box: SandboxExecChannel, absolutePath: string, options: {
50
+ readBytes: boolean;
51
+ }) => Promise<SandboxMentionReadOutcome>;
52
+ /**
53
+ * Convert the browser-safe chat attachment contract into the current sandbox
54
+ * prompt contract. Images carry exactly one URL or path; generic files carry a
55
+ * filename and URL.
56
+ */
57
+ export declare function normalizeChatPromptForSandbox(prompt: string | readonly ChatTurnPartInput[]): string | PromptInputPart[];
58
+ /** Build input parameters for dispatching chat message parts including text, attachments, mentions, and history */
59
+ export interface BuildDispatchPartsInput {
60
+ text: string;
61
+ attachments: ChatAttachmentPart[];
62
+ mentions?: ChatMentionPart[];
63
+ history: Array<{
64
+ role: 'user' | 'assistant';
65
+ content: string;
66
+ }>;
67
+ systemPrompt: string;
68
+ /** Serialized size of the backend profile the SDK inlines into the same
69
+ * prompt request body — a large, non-negotiable rider that must come out of
70
+ * the inline budget or near-cap attachments 413 at the proxy instead of
71
+ * demoting to path parts. */
72
+ profileWireBytes: number;
73
+ /** The product's workspace/tenant key, passed to `readAttachment`. */
74
+ scopeId: string;
75
+ /** Maps an attachment's store-relative path to the in-box absolute path a
76
+ * local media reference uses (same style as `fileMentionsToParts`'s
77
+ * `resolvePath`). */
78
+ resolveAttachmentPath: (path: string) => string;
79
+ /** Maps a mention's workspace-relative path to its in-box absolute path.
80
+ * Default: {@link BuildDispatchPartsInput.resolveAttachmentPath} — in gtm the
81
+ * vault mount roots both; a product that mounts them apart overrides this. */
82
+ resolveMentionPath?: (path: string) => string;
83
+ /** The turn's already-ensured box — required when `mentions` is non-empty
84
+ * (mention bytes are read from the live box, not the store). */
85
+ box?: SandboxExecChannel;
86
+ /** Force every media part to a local file reference, skipping all inlining. */
87
+ forcePath?: boolean;
88
+ /** REQUIRED store reader for attachment content — no default (the product
89
+ * owns its store; see {@link ReadAttachmentFn}). */
90
+ readAttachment: ReadAttachmentFn;
91
+ readSandboxMention?: ReadSandboxMentionFn;
92
+ /** Whole-request proxy cap. Default {@link DISPATCH_REQUEST_MAX_BYTES}. */
93
+ requestMaxBytes?: number;
94
+ /** JSON-envelope reserve off the top of the request cap. Default
95
+ * {@link DISPATCH_STRUCTURAL_RESERVE_BYTES}. */
96
+ structuralReserveBytes?: number;
97
+ /** Sidecar per-request parts-array cap. Default {@link DISPATCH_MAX_PARTS}. */
98
+ maxParts?: number;
99
+ }
100
+ /** Build dispatch parts from input by resolving mentions, paths, and applying size constraints asynchronously */
101
+ export declare function buildDispatchParts(input: BuildDispatchPartsInput): Promise<DispatchPartsOutcome>;
@@ -0,0 +1,189 @@
1
+ /**
2
+ * Incremental ("draft") persistence of the assistant row WHILE a turn streams.
3
+ *
4
+ * Why this exists — the scale argument, not a convenience:
5
+ *
6
+ * A live turn is readable from two places. The hot path is the session
7
+ * gateway's in-memory/Redis event buffer, which exists so a viewer survives a
8
+ * network blip: it is keyed one sorted set per session, refreshed on every
9
+ * push, and expires on a TTL. Its memory cost is `arrival_rate x TTL x
10
+ * bytes_per_session` — strictly LINEAR in the TTL. Stretching that TTL to
11
+ * cover "a viewer who opens the tab later" is a category error: it buys memory
12
+ * proportional to the increase and still serves nothing to a viewer who
13
+ * arrives past the new horizon.
14
+ *
15
+ * So the hot buffer must stay SHORT (live delivery + reconnect only), and
16
+ * durable storage must serve history. That only works if durable storage
17
+ * actually HAS the in-flight turn — which, before this module, it did not: the
18
+ * assistant row was written once, after the stream drained. A viewer arriving
19
+ * mid-turn past the hot window read an empty transcript.
20
+ *
21
+ * This module closes that gap: the assistant row is inserted early and patched
22
+ * on a coalesced cadence, so the durable transcript is at most one interval
23
+ * (default 2 s) behind the live stream and the hot buffer never has to be the
24
+ * history tier.
25
+ *
26
+ * Mechanism only. It owns no vocabulary: the caller supplies the snapshot
27
+ * function, the store, and the deterministic row id.
28
+ *
29
+ * Four properties the cadence guarantees:
30
+ * - **Time-floored.** At most one write per `intervalMs`, never one per token.
31
+ * - **Dirty-gated.** Only content-bearing events arm a write; heartbeats,
32
+ * status pings, and lifecycle envelopes never do.
33
+ * - **Single-flight.** A write already in flight suppresses the next trigger
34
+ * instead of queueing; the final write is authoritative regardless of how
35
+ * many drafts landed.
36
+ * - **Best-effort.** A store failure is logged and swallowed — a durability
37
+ * optimization must never kill a healthy stream (the same rule
38
+ * `withDurableChatProjection` already states).
39
+ */
40
+ import { type ChatMessagePart } from '../chat-store/parts';
41
+ import type { ChatTurnUsage } from './turn-routes';
42
+ /** Message row shape the writer reads back when re-entering a turn. */
43
+ export interface DraftStoredMessage {
44
+ id: string;
45
+ role: 'user' | 'assistant' | 'system' | 'tool';
46
+ content: string;
47
+ parts?: ChatMessagePart[] | null;
48
+ model?: string | null;
49
+ requestedModel?: string | null;
50
+ servedModel?: string | null;
51
+ servedProvider?: string | null;
52
+ servedSource?: string | null;
53
+ }
54
+ /** Values written to the assistant row — the intersection of the append and
55
+ * patch shapes, so one snapshot serves both. */
56
+ export interface AssistantRowValues {
57
+ content: string;
58
+ parts?: ChatMessagePart[];
59
+ model?: string | null;
60
+ requestedModel?: string | null;
61
+ servedModel?: string | null;
62
+ servedProvider?: string | null;
63
+ servedSource?: string | null;
64
+ inputTokens?: number | null;
65
+ outputTokens?: number | null;
66
+ reasoningTokens?: number | null;
67
+ cacheReadTokens?: number | null;
68
+ cacheWriteTokens?: number | null;
69
+ costUsd?: number | null;
70
+ }
71
+ /** The store capability incremental persistence needs on top of
72
+ * `appendMessage`. A store without `updateMessage` cannot patch a row, so it
73
+ * cannot draft at all — the caller keeps today's single-write behavior. */
74
+ export interface AssistantDraftStore {
75
+ listMessages(threadId: string): Promise<DraftStoredMessage[]>;
76
+ appendMessage(input: AssistantRowValues & {
77
+ id?: string;
78
+ threadId: string;
79
+ role: 'user' | 'assistant';
80
+ }): Promise<unknown>;
81
+ updateMessage?(id: string, patch: AssistantRowValues): Promise<unknown>;
82
+ deleteMessage?(id: string): Promise<unknown>;
83
+ }
84
+ /** Live snapshot of the assistant body, taken from the producer's own
85
+ * accumulators. `parts` is the DRAFT projection (`draftParts()`), never the
86
+ * finalized one — see `draftAssistantParts`. */
87
+ export interface AssistantDraftSnapshot {
88
+ content: string;
89
+ parts?: Array<Record<string, unknown>>;
90
+ usage?: ChatTurnUsage;
91
+ model?: string;
92
+ }
93
+ /** Product-tunable cadence. Defaults are stated on each field; a product with
94
+ * a chattier or heavier workload moves them without forking the writer. */
95
+ export interface DraftPersistenceTuning {
96
+ /** Minimum wall-clock gap between draft writes, in ms. Default 2000.
97
+ *
98
+ * Justification for 2 s, from a measured tool-heavy production run (517
99
+ * stream events over ~90 s wall = ~5.7 events/s): a 2 s floor with the
100
+ * dirty gate turns 517 candidate writes into <= 45, while leaving the
101
+ * durable row at most 2 s stale — an order of magnitude below the time it
102
+ * takes a viewer to open a tab and render, so a late viewer never perceives
103
+ * the lag. Fleet arithmetic at 10k concurrent 60 s runs: <= 30 updates per
104
+ * run x 167 run-starts/s = ~334 row-updates/s spread over per-tenant
105
+ * shards. Lower it and write amplification grows with no perceptible
106
+ * freshness gain; raise it past ~5 s and a late viewer starts seeing a
107
+ * visibly truncated answer. */
108
+ intervalMs?: number;
109
+ /** Serialized-parts size (bytes) past which the interval backs off, so a
110
+ * turn accumulating a megabyte-scale `parts` blob does not rewrite it every
111
+ * interval. Default 262144 (256 KiB) -> interval x 2.5; ten times that ->
112
+ * interval x 5. The final write is never throttled. */
113
+ backoffBytes?: number;
114
+ /** Per-tool-part output cap applied to DRAFTS ONLY (bytes). A tool returning
115
+ * a large blob would otherwise be rewritten in full on every draft. The
116
+ * final write always carries the untruncated value. Default 32768 (32 KiB);
117
+ * 0 disables truncation. */
118
+ maxDraftToolOutputBytes?: number;
119
+ }
120
+ /** Define the inputs required to construct an assistant draft writer */
121
+ export interface AssistantDraftWriterOptions extends DraftPersistenceTuning {
122
+ store: AssistantDraftStore;
123
+ threadId: string;
124
+ /** DETERMINISTIC row id for this turn's assistant message — the whole
125
+ * idempotency mechanism. Derived from the turn's existing identity
126
+ * (`deriveExecutionId` in the interactive lane, the turn id in the detached
127
+ * lane), so a re-entered turn addresses the SAME row: the writer looks the
128
+ * id up before its first insert and patches what it finds. */
129
+ messageId: string;
130
+ /** Read the producer's live accumulators. Returns null before the producer
131
+ * is resolved (the assembly defers box resolution into the first pull). */
132
+ snapshot(): AssistantDraftSnapshot | null;
133
+ /** Pre-persist text transform (`/redact`'s `redactPII`). Applied to the
134
+ * draft's scalar content AND every draft text part — parity with the final
135
+ * write, or incremental persistence would re-open the at-rest PII leak that
136
+ * transform closed, just seconds earlier and on every turn. */
137
+ transformText?(text: string): string | Promise<string>;
138
+ log?: (message: string, meta?: Record<string, unknown>) => void;
139
+ }
140
+ /** Coalescing writer that keeps one durable assistant row in step with a
141
+ * streaming turn. Created per turn; not reusable. */
142
+ export interface AssistantDraftWriter {
143
+ /** Arm/trigger a draft write from one engine event. Synchronous by design —
144
+ * the write itself is fire-and-forget so the stream is never blocked on
145
+ * store latency. */
146
+ notify(event: {
147
+ type?: unknown;
148
+ }): void;
149
+ /** Stop drafting and settle any in-flight write. Called before the final
150
+ * write so a late draft can never clobber the authoritative row. */
151
+ close(): Promise<void>;
152
+ /** Write the AUTHORITATIVE completion values onto this turn's row —
153
+ * insert-or-patch under the same deterministic id, un-throttled and
154
+ * un-truncated. Errors propagate: the final write is the one that must not
155
+ * fail silently. Implies {@link close}. */
156
+ finalize(values: AssistantRowValues): Promise<void>;
157
+ /** The durable row this turn is writing, once one exists. */
158
+ rowId(): string | undefined;
159
+ /** Retract the row for a turn that produced nothing (mirrors the final
160
+ * write's empty-turn skip, which leaves no row at all today). Also retracts
161
+ * a row a PREVIOUS attempt left behind, so a re-entered turn that ends
162
+ * empty converges on "no row" rather than a stale partial. */
163
+ discard(): Promise<void>;
164
+ /** Diagnostics: how many draft writes actually reached the store. */
165
+ writeCount(): number;
166
+ }
167
+ /** True when this event should arm a draft write. */
168
+ export declare function isDraftContentEvent(event: {
169
+ type?: unknown;
170
+ }): boolean;
171
+ /** Build the coalescing draft writer for one turn. */
172
+ export declare function createAssistantDraftWriter(options: AssistantDraftWriterOptions): AssistantDraftWriter;
173
+ /** True when a store can support incremental persistence at all. Without
174
+ * `updateMessage` a draft row could never be patched, so the caller keeps
175
+ * today's exact single-write behavior. */
176
+ export declare function storeSupportsDraftPersistence(store: AssistantDraftStore): boolean;
177
+ /** The row id an `appendMessage` actually returned, or `null` when the store
178
+ * returned nothing usable. `ChatTurnMessageStore.appendMessage` is typed
179
+ * `Promise<unknown>` so a product adapter is free to resolve `void`; every
180
+ * caller that wants to NAME the row it just wrote has to read defensively.
181
+ *
182
+ * Deliberately no fallback to a caller-assigned id — see `writeOnce`, which
183
+ * adds its own. A caller that let the store mint the id has nothing to fall
184
+ * back TO, and guessing one would report a row that may not exist. */
185
+ export declare function rowIdOf(inserted: unknown): string | null;
186
+ /** The default deterministic assistant-row id for a turn. Readable on purpose
187
+ * (an operator grepping a transcript row id finds the run), and stable across
188
+ * re-entries because every input already is. */
189
+ export declare function assistantRowIdForTurn(turnKey: string): string;
@@ -0,0 +1,18 @@
1
+ import type { ChatTurnRouteProducer } from './turn-routes';
2
+ /** Resolve chat route events and materialize their durable state records */
3
+ export interface ChatRouteDurableProjection {
4
+ observe(event: unknown): void | Promise<void>;
5
+ materialize(): Array<Record<string, unknown>> | Promise<Array<Record<string, unknown>>>;
6
+ }
7
+ /** Log chat route projection messages with optional metadata for durable processing */
8
+ export type ChatRouteDurableProjectionLogger = (message: string, meta?: Record<string, unknown>) => void;
9
+ /** Adds durable lifecycle projection to any producer lane without moving its
10
+ * transport into agent-app. Purely STRUCTURAL: agent-app ships no implementer
11
+ * of {@link ChatRouteDurableProjection} and deliberately does not — the one it
12
+ * used to ship (`/durable-chat`) was removed in 0.44.0 with zero fleet imports.
13
+ * Pass any `{ observe, materialize }` object backed by your own store. The projection is observed inline and its
14
+ * materialized parts replace same-key pending snapshots after the stream
15
+ * drains. Projection persistence is best-effort for the live lane: a store
16
+ * outage must not terminate an otherwise healthy sandbox stream. Failures are
17
+ * reported through the optional logger so products can retain diagnostics. */
18
+ export declare function withDurableChatProjection(producer: ChatTurnRouteProducer, projection: ChatRouteDurableProjection, log?: ChatRouteDurableProjectionLogger): ChatTurnRouteProducer;
@@ -0,0 +1,115 @@
1
+ /**
2
+ * `createSandboxFileIndexRoute` — server side of `@`-file-mentions
3
+ * (companion to sandbox-ui#184's composer mention primitive). Serves a flat,
4
+ * ignore-filtered listing of the workspace sandbox so `useFileMentions`
5
+ * (`/web-react`) can filter it client-side without a round trip per
6
+ * keystroke.
7
+ *
8
+ * Same seam style as `createUploadRoute`: `authorize({ request })` resolves a
9
+ * structural `{ tree(path, opts) }` handle (the shape of the sandbox SDK's
10
+ * `box.fs.tree`) — no SDK import here. `authorize` also carries the
11
+ * cold-box signal: a sandbox that isn't running yet answers `{ status:
12
+ * 'warming' }` directly, never provisions-and-waits inside this route.
13
+ *
14
+ * A box can also be running with its workspace root not yet materialised, which
15
+ * `authorize` cannot see; the route recognises that one signal off `fs.tree`
16
+ * and answers `warming` too, so every consumer gets the retry-and-wait state
17
+ * instead of a 500. Every other `tree()` failure propagates.
18
+ */
19
+ import type { FileMention } from './wire';
20
+ /** One entry from a structural `tree()` scan. Mirrors the sandbox SDK's
21
+ * `FileTreeFile` (`path`, `size`, `mtime`) — `mtime` is unused here so it's
22
+ * omitted from the structural match. */
23
+ export interface SandboxTreeFile {
24
+ path: string;
25
+ size: number;
26
+ }
27
+ /** Structural match of the sandbox SDK's `box.fs.tree` result shape
28
+ * (`FileTreeResult`). `stats.truncated` is the only stat this route reads;
29
+ * the rest ride through unread on the real SDK type. */
30
+ export interface SandboxTreeResult {
31
+ root: string;
32
+ files: SandboxTreeFile[];
33
+ stats: {
34
+ truncated: boolean;
35
+ };
36
+ }
37
+ /** Structural match of the sandbox SDK's `box.fs` tree surface. */
38
+ export interface SandboxFileTreeSource {
39
+ tree(path: string, options?: {
40
+ maxDepth?: number;
41
+ }): Promise<SandboxTreeResult>;
42
+ }
43
+ /** Describe a ready file index response with workspace-relative entries and truncation status */
44
+ export interface FileIndexReadyResponse {
45
+ status: 'ready';
46
+ /** Workspace-relative entries. Same shape as `FileMention` (`./wire`) so a
47
+ * client can hand a response entry straight to `fileMentionsToParts` /
48
+ * `buildMentionPromptBlock` without remapping. */
49
+ files: FileMention[];
50
+ /** True when either the underlying scan truncated (SDK-side cap) or this
51
+ * route's own `maxEntries` cap trimmed the filtered list. The client
52
+ * should show "showing first N files" rather than imply completeness. */
53
+ truncated: boolean;
54
+ generatedAt: string;
55
+ }
56
+ /** Cold-box answer: no provisioning happened, no files were scanned. The
57
+ * client shows a warming state and retries — this route never blocks on a
58
+ * box coming up. Two situations produce it: `authorize` reporting a box that
59
+ * is not running, and a running box whose workspace root does not exist yet
60
+ * (see `isMissingRootError`). */
61
+ export interface FileIndexWarmingResponse {
62
+ status: 'warming';
63
+ }
64
+ /** Resolve a response indicating the file index is either ready or warming up */
65
+ export type FileIndexResponse = FileIndexReadyResponse | FileIndexWarmingResponse;
66
+ /** Short-TTL cache seam so repeat popover opens in the same session don't
67
+ * re-scan the workspace. Host-provided (e.g. a KV binding); `key` is
68
+ * whatever `authorize` returns as `cacheKey` — this route treats it opaquely. */
69
+ export interface FileIndexCache {
70
+ get(key: string): Promise<FileIndexReadyResponse | null> | FileIndexReadyResponse | null;
71
+ put(key: string, value: FileIndexReadyResponse, options?: {
72
+ ttlSeconds?: number;
73
+ }): Promise<void> | void;
74
+ }
75
+ /** Define authorization details and parameters for indexing a file workspace with optional caching and ignore rules */
76
+ export type FileIndexAuthorization = {
77
+ status: 'ready';
78
+ /** Structural sandbox `fs` handle, usually `ensureWorkspaceSandbox(...)` → `box.fs`. */
79
+ fs: SandboxFileTreeSource;
80
+ /** Workspace root to index (e.g. `/home/agent`). */
81
+ root: string;
82
+ /** Extra ignore segments for this request, merged with the route's
83
+ * defaults + `CreateSandboxFileIndexRouteOptions.ignore`. */
84
+ ignore?: string[];
85
+ /** Opaque cache key for the optional cache seam. Omit to skip caching
86
+ * for this request (e.g. a workspace the host chooses not to cache). */
87
+ cacheKey?: string;
88
+ } | {
89
+ status: 'warming';
90
+ } | {
91
+ status: 'denied';
92
+ response: Response;
93
+ };
94
+ /** Define options to authorize and configure sandbox file index route behavior */
95
+ export interface CreateSandboxFileIndexRouteOptions {
96
+ /** Authenticate the caller, resolve the sandbox `fs` handle, and signal a
97
+ * cold box — never provisions or waits. */
98
+ authorize(args: {
99
+ request: Request;
100
+ }): Promise<FileIndexAuthorization>;
101
+ /** Extra ignore segments beyond the route's defaults (node_modules, .git,
102
+ * dotfiles/dot-dirs, common build dirs). Matched as exact path-segment
103
+ * names, same rule as the defaults. */
104
+ ignore?: string[];
105
+ /** Passed to `fs.tree` as `options.maxDepth`. Default 12. */
106
+ maxDepth?: number;
107
+ /** Hard cap on entries returned after filtering. Default 5000. */
108
+ maxEntries?: number;
109
+ /** Optional host-provided cache seam. */
110
+ cache?: FileIndexCache;
111
+ /** Cache TTL in seconds when `cache` is set. Default 20. */
112
+ cacheTtlSeconds?: number;
113
+ }
114
+ /** Resolve a sandbox file index route with authorization, caching, and configurable depth and entries limits */
115
+ export declare function createSandboxFileIndexRoute(options: CreateSandboxFileIndexRouteOptions): (request: Request) => Promise<Response>;