@tangle-network/agent-app 0.45.54 → 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 +4 -3
  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,216 @@
1
+ /**
2
+ * What an app does after the platform hands back a sandbox it cannot use.
3
+ *
4
+ * `replaceUnbringableBox` (see `./index`) decides whether to abandon a dead box.
5
+ * This decides everything around that: which box key the next attempt uses,
6
+ * whether the old box's snapshot is safe to restore from, whether an owner has
7
+ * to confirm the loss first, and what the person waiting is told. It is
8
+ * bookkeeping, not I/O — the app supplies storage through
9
+ * {@link WorkspaceSandboxRecoveryStore}.
10
+ *
11
+ * ── Why the tables ──────────────────────────────────────────────────────────
12
+ * Every fact about an action or a code lives in ACTIONS/CODES below, and the
13
+ * types are DERIVED from those tables. That is deliberate, and it is the whole
14
+ * reliability argument for this module.
15
+ *
16
+ * The hand-maintained alternative — a union type plus a separate `x === 'a' ||
17
+ * x === 'b' || …` list per question — silently drops anything not on the list.
18
+ * A recovery recorded under an unlisted action is written to storage, read
19
+ * back, discarded as malformed, and the workspace re-provisions the box it just
20
+ * abandoned. Nothing throws. The fix looks correct, ships, and does nothing.
21
+ * That failure was hit twice inside one change before this module existed.
22
+ *
23
+ * With the tables, adding an action or code is a compile error until every
24
+ * question about it is answered. There is no list to forget.
25
+ */
26
+ /** The box exists and still holds unsnapshotted state, so discarding it is an
27
+ * owner's decision, not the runtime's. */
28
+ export declare const EGRESS_PROXY_RECOVERY_REQUIRED = "EGRESS_PROXY_RECOVERY_REQUIRED";
29
+ export declare const EGRESS_PROXY_RECOVERY_PHASE = "egress_proxy_recovery";
30
+ /** The platform no longer has the box. Nothing to confirm, delete, or restore. */
31
+ export declare const WORKSPACE_SANDBOX_MISSING = "WORKSPACE_SANDBOX_MISSING";
32
+ /** The box exists but its host has no free slot, so it can never be resumed
33
+ * where it is. A replacement can be placed on a host with room. */
34
+ export declare const WORKSPACE_SANDBOX_HOST_EXHAUSTED = "WORKSPACE_SANDBOX_HOST_EXHAUSTED";
35
+ /** The platform ran its own recovery, failed, and asked for a replacement.
36
+ * Covers every way a box ends up unbringable with no more specific cause. */
37
+ export declare const WORKSPACE_SANDBOX_UNRECOVERABLE = "WORKSPACE_SANDBOX_UNRECOVERABLE";
38
+ export declare const WORKSPACE_SANDBOX_SNAPSHOT_MAX_AGE_MS: number;
39
+ /**
40
+ * Every recovery cause, and the one thing the runtime must know about each:
41
+ * whether the box it names can still be read from.
42
+ *
43
+ * `snapshotUsable: false` is not a preference. A snapshot is addressed by the
44
+ * sandbox it was taken from, so when that sandbox cannot be started the restore
45
+ * fails exactly the way the resume did — and an app that tried it would turn a
46
+ * recoverable workspace into a stuck one.
47
+ */
48
+ declare const CODES: {
49
+ readonly EGRESS_PROXY_RECOVERY_REQUIRED: {
50
+ readonly snapshotUsable: true;
51
+ };
52
+ readonly WORKSPACE_SANDBOX_MISSING: {
53
+ readonly snapshotUsable: false;
54
+ };
55
+ readonly WORKSPACE_SANDBOX_HOST_EXHAUSTED: {
56
+ readonly snapshotUsable: false;
57
+ };
58
+ readonly WORKSPACE_SANDBOX_UNRECOVERABLE: {
59
+ readonly snapshotUsable: false;
60
+ };
61
+ };
62
+ export type WorkspaceSandboxRecoveryCode = keyof typeof CODES;
63
+ /**
64
+ * Every recovery action, and whether it means a replacement box has been
65
+ * CHOSEN — the single question that decides which box key the next provisioning
66
+ * attempt uses.
67
+ *
68
+ * `replacementChosen: false` covers the states where a key may be recorded but
69
+ * must not be used yet: an owner has been asked and has not answered, or has
70
+ * answered no. Handing back a key in those states replaces a box the owner
71
+ * declined to lose.
72
+ */
73
+ declare const ACTIONS: {
74
+ readonly confirmation_required: {
75
+ readonly replacementChosen: false;
76
+ };
77
+ readonly deletion_declined: {
78
+ readonly replacementChosen: false;
79
+ };
80
+ readonly replacement_authorized: {
81
+ readonly replacementChosen: false;
82
+ };
83
+ readonly snapshot_replacement_authorized: {
84
+ readonly replacementChosen: false;
85
+ };
86
+ readonly replacement_started: {
87
+ readonly replacementChosen: true;
88
+ };
89
+ readonly replacement_completed: {
90
+ readonly replacementChosen: true;
91
+ };
92
+ readonly snapshot_replacement_started: {
93
+ readonly replacementChosen: true;
94
+ };
95
+ readonly snapshot_restore_failed: {
96
+ readonly replacementChosen: true;
97
+ };
98
+ readonly snapshot_replacement_completed: {
99
+ readonly replacementChosen: true;
100
+ };
101
+ readonly missing_replacement_started: {
102
+ readonly replacementChosen: true;
103
+ };
104
+ readonly missing_replacement_completed: {
105
+ readonly replacementChosen: true;
106
+ };
107
+ readonly unrecoverable_replacement_started: {
108
+ readonly replacementChosen: true;
109
+ };
110
+ readonly unrecoverable_replacement_completed: {
111
+ readonly replacementChosen: true;
112
+ };
113
+ };
114
+ export type WorkspaceSandboxRecoveryAction = keyof typeof ACTIONS;
115
+ export type WorkspaceSandboxSnapshotAvailability = 'available' | 'missing' | 'stale';
116
+ export type WorkspaceSandboxSnapshotFreshness = 'fresh' | 'stale' | 'unknown';
117
+ /** A snapshot the app took of a box, addressed by the box it came from. */
118
+ export interface WorkspaceSandboxSnapshot {
119
+ fromSandboxId: string;
120
+ createdAt: string;
121
+ [key: string]: unknown;
122
+ }
123
+ export interface WorkspaceSandboxSnapshotAssessment {
124
+ availability: WorkspaceSandboxSnapshotAvailability;
125
+ freshness: WorkspaceSandboxSnapshotFreshness;
126
+ snapshot?: WorkspaceSandboxSnapshot;
127
+ }
128
+ export interface WorkspaceSandboxRecoveryState {
129
+ code: WorkspaceSandboxRecoveryCode;
130
+ sandboxId: string;
131
+ detectedAt: string;
132
+ snapshot: WorkspaceSandboxSnapshotAssessment;
133
+ action: WorkspaceSandboxRecoveryAction;
134
+ replacementBoxKey?: string;
135
+ replacementSandboxId?: string;
136
+ confirmedAt?: string;
137
+ }
138
+ export type WorkspaceSandboxRecoveryDecision = 'replace' | 'decline';
139
+ /** Raised when chat cannot continue until an owner decides about the box. */
140
+ export declare class WorkspaceSandboxRecoveryRequiredError extends Error {
141
+ readonly code = "EGRESS_PROXY_RECOVERY_REQUIRED";
142
+ readonly status = 409;
143
+ readonly phase = "egress_proxy_recovery";
144
+ readonly recovery: WorkspaceSandboxRecoveryState;
145
+ constructor(recovery: WorkspaceSandboxRecoveryState, cause: Error);
146
+ }
147
+ export declare function isEgressProxyRecoveryRequiredError(error: unknown): boolean;
148
+ export declare function isWorkspaceSandboxSnapshotRestoreError(error: unknown): boolean;
149
+ /**
150
+ * Judge a snapshot against the box being replaced.
151
+ *
152
+ * Fresh means BOTH that it came from this exact sandbox and that it is inside
153
+ * the age bound — a snapshot from a different box restores someone else's
154
+ * filesystem, which is worse than starting empty.
155
+ */
156
+ export declare function assessWorkspaceSandboxSnapshot(snapshot: WorkspaceSandboxSnapshot | undefined, sandboxId: string, now?: number): WorkspaceSandboxSnapshotAssessment;
157
+ export declare function isWorkspaceSandboxRecoveryAction(value: unknown): value is WorkspaceSandboxRecoveryAction;
158
+ export declare function isWorkspaceSandboxRecoveryCode(value: unknown): value is WorkspaceSandboxRecoveryCode;
159
+ export declare function isWorkspaceSandboxRecoveryState(value: unknown): value is WorkspaceSandboxRecoveryState;
160
+ export declare function workspaceSandboxRecoveryFromError(error: unknown): WorkspaceSandboxRecoveryState | undefined;
161
+ /** What to tell the person waiting. Never names the product, so an app can
162
+ * surface it verbatim. */
163
+ export declare function workspaceSandboxRecoveryMessage(recovery: WorkspaceSandboxRecoveryState): string;
164
+ export declare function workspaceSandboxRecoveryRecommendedActions(recovery: WorkspaceSandboxRecoveryState): string[];
165
+ /** Flat key/value shape for a log line — no nesting, no secrets. */
166
+ export declare function workspaceSandboxRecoveryDiagnostic(recovery: WorkspaceSandboxRecoveryState): Record<string, string | undefined>;
167
+ /**
168
+ * The box key the next provisioning attempt should use, or undefined to keep
169
+ * using the workspace's own key.
170
+ *
171
+ * Reads {@link ACTIONS} rather than a hand-kept list, because the failure mode
172
+ * of a hand-kept list here is invisible: the key is recorded, silently ignored,
173
+ * and provisioning goes back to the box the app just decided to abandon.
174
+ */
175
+ export declare function preferredWorkspaceSandboxRecoveryBoxKey(recovery: WorkspaceSandboxRecoveryState | undefined): string | undefined;
176
+ /** Whether the replacement should be restored from the old box's snapshot. */
177
+ export declare function shouldRestoreWorkspaceSandboxRecovery(recovery: WorkspaceSandboxRecoveryState | undefined): boolean;
178
+ /**
179
+ * Where an app keeps recovery state. One row per workspace, last write wins —
180
+ * a recovery is a current situation, not a history.
181
+ */
182
+ export interface WorkspaceSandboxRecoveryStore {
183
+ read: (workspaceId: string) => Promise<WorkspaceSandboxRecoveryState | undefined>;
184
+ write: (workspaceId: string, recovery: WorkspaceSandboxRecoveryState) => Promise<void>;
185
+ }
186
+ export interface WorkspaceSandboxRecoveryManager {
187
+ read: (workspaceId: string) => Promise<WorkspaceSandboxRecoveryState | undefined>;
188
+ record: (workspaceId: string, recovery: WorkspaceSandboxRecoveryState) => Promise<void>;
189
+ /** Record an owner's decision. Returns undefined when the stored recovery does
190
+ * not name this sandbox — a decision about a box that has already been
191
+ * replaced must not resurrect it. */
192
+ decide: (args: {
193
+ workspaceId: string;
194
+ sandboxId: string;
195
+ decision: WorkspaceSandboxRecoveryDecision;
196
+ replacementBoxKey?: string;
197
+ }) => Promise<WorkspaceSandboxRecoveryState | undefined>;
198
+ /** Mark a replacement finished and name the box that took over. */
199
+ complete: (args: {
200
+ workspaceId: string;
201
+ replacementSandboxId: string;
202
+ }) => Promise<WorkspaceSandboxRecoveryState | undefined>;
203
+ }
204
+ /**
205
+ * Bind the recovery bookkeeping to an app's storage.
206
+ *
207
+ * The app owns persistence — a D1 column, a KV key, a Postgres row — and
208
+ * nothing else. Every rule about which action means what stays here, so it
209
+ * cannot drift between apps.
210
+ */
211
+ export declare function createWorkspaceSandboxRecoveryManager(store: WorkspaceSandboxRecoveryStore): WorkspaceSandboxRecoveryManager;
212
+ /** Every declared action, for exhaustiveness tests in apps and here. */
213
+ export declare const WORKSPACE_SANDBOX_RECOVERY_ACTIONS: readonly WorkspaceSandboxRecoveryAction[];
214
+ /** Every declared cause. */
215
+ export declare const WORKSPACE_SANDBOX_RECOVERY_CODES: readonly WorkspaceSandboxRecoveryCode[];
216
+ export {};
@@ -0,0 +1,145 @@
1
+ /**
2
+ * Browser-direct scoped-token terminal connection route (#341/#349).
3
+ *
4
+ * Epic #343 / decision #341: the fleet's terminal transport is browser-direct
5
+ * — the product's server authenticates the request and provisions/resolves
6
+ * the sandbox exactly once, mints a short-lived SDK scoped token
7
+ * (`box.mintScopedToken`), and hands the browser just enough to connect
8
+ * `TerminalView` straight to the sidecar. No worker relays terminal bytes.
9
+ * The deprecated same-origin relay was removed in #350 after the fleet
10
+ * migrated, leaving this as the package's only terminal transport.
11
+ *
12
+ * VERIFIED PLATFORM CONTRACT (`@tangle-network/sandbox` 0.15.2 + the
13
+ * orchestrator/sidecar enforcement source, verified 2026-07-30):
14
+ *
15
+ * 1. Only a `scope: 'session-runtime'` token carries the `terminal`
16
+ * capability (`cap: ["read", "workspace", "terminal"]`). `'project'` and
17
+ * `'session'` mint SessionGateway READ tokens (HS256, `typ: "read"`, no
18
+ * `cap` claim at all — a different token family the sidecar rejects
19
+ * outright); `'read-only'` carries `cap: ["read"]` only. **No scope other
20
+ * than `'session-runtime'` can ever open a terminal**, which is why this
21
+ * route no longer takes `scope` as a parameter — it is pinned.
22
+ * 2. The orchestrator's terminal WS gate fails closed unless the token's
23
+ * `sid` claim EQUALS the `<connectionId>` path segment of
24
+ * `/terminals/<connectionId>/ws`
25
+ * (`verifyScopedSidecarCapability(sidecar, token, "terminal", connectionId)`).
26
+ * So `mintScopedToken({ scope: 'session-runtime', sessionId })` MUST be
27
+ * called with `sessionId === connectionId` — the exact id `TerminalView`
28
+ * will dial. That is why this route threads a `connectionId` end to end
29
+ * instead of deriving its own session id.
30
+ * 3. The browser-safe terminal base is the mint result's `sidecarProxyUrl`
31
+ * (`/v1/sidecar-proxy/{id}` on the Sandbox API) — **not**
32
+ * `box.connection.runtimeUrl`. The SDK's own `_attachTerminal` is the
33
+ * reference implementation:
34
+ * `mintScopedToken({ scope: 'session-runtime', sessionId: connectionId })`
35
+ * then dial `${scoped.sidecarProxyUrl}/terminals/${connectionId}/ws`.
36
+ * Pointing `TerminalView` at `runtimeUrl` fails auth regardless of scope —
37
+ * only the sidecar-proxy hop decodes the browser's
38
+ * `bearer.<base64url>` WS subprotocol.
39
+ *
40
+ * HISTORICAL NOTE: an earlier shape of this route (and legal-agent's
41
+ * production route it was modeled on, `scope: 'project'` +
42
+ * `connection.runtimeUrl`) predates the platform's terminal-auth hardening —
43
+ * the terminal capability gate (2026-06-19), the scoped-token terminal WS
44
+ * path (2026-07-15), and the `sid`-binding fail-closed check
45
+ * (2026-07-17/18). That shape does not authenticate on the current platform
46
+ * and is not a valid spec for the token path anymore.
47
+ *
48
+ * SECURITY POSTURE: unlike the read-only session-gateway streaming token
49
+ * (`box.mintScopedToken({scope:'session'})` paired with
50
+ * `SessionGatewayClient`), the token this route mints grants **command
51
+ * execution** in the sandbox once handed to `TerminalView`. Its safety rests
52
+ * on a **short TTL** (default 15 minutes, the SDK's own max — still a caller
53
+ * parameter) and, structurally, the narrowest scope the platform offers: one
54
+ * box (`ensureSandbox` resolved it for THIS user), one terminal connection
55
+ * (`session-runtime` bound to a single `sid`). Widening the TTL default
56
+ * without an explicit reason is a security regression, not a convenience.
57
+ *
58
+ * Wire contract: the browser passes the response's `sidecarUrl` as
59
+ * `TerminalView`'s `apiUrl` prop, `token` as its token prop, and the
60
+ * response's echoed `connectionId` as `TerminalView`'s `connectionId` prop —
61
+ * the token's `sid` is bound to exactly that id, so any other value fails the
62
+ * WS upgrade. sandbox-ui sends the token as a `bearer.<base64url>` WebSocket
63
+ * subprotocol (browsers cannot set `Authorization` on a WS handshake).
64
+ * `useSandboxTerminalConnection` (`../web-react/sandbox-terminal`) carries
65
+ * `connectionId` through automatically.
66
+ */
67
+ /** The structural surface this route needs from an SDK sandbox box — no `@tangle-network/sandbox` class import (invariant 3). */
68
+ export interface TerminalConnectionBoxLike {
69
+ id: string;
70
+ status?: string;
71
+ connection?: {
72
+ runtimeUrl?: string;
73
+ };
74
+ mintScopedToken(opts: {
75
+ scope: string;
76
+ sessionId?: string;
77
+ ttlMinutes?: number;
78
+ }): Promise<{
79
+ token: string;
80
+ expiresAt: Date;
81
+ sidecarProxyUrl: string;
82
+ }>;
83
+ }
84
+ /** Configuration for {@link createSandboxTerminalConnectionRoute}. */
85
+ export interface SandboxTerminalConnectionRouteOptions<TBox extends TerminalConnectionBoxLike, TUser> {
86
+ /**
87
+ * Authenticate the incoming request. Return the authenticated user, or a
88
+ * `Response` to short-circuit the route (e.g. a 401) — that Response is
89
+ * returned to the caller verbatim.
90
+ */
91
+ requireUser(request: Request): Promise<TUser | Response>;
92
+ /**
93
+ * Resolve (provisioning if needed) the sandbox this user's terminal should
94
+ * connect to. Domain-specific provisioning (workspace- vs user-scoped,
95
+ * naming, reuse) stays entirely in the product's implementation of this
96
+ * seam — the route only reacts to success/failure.
97
+ */
98
+ ensureSandbox(user: TUser, request: Request): Promise<TBox>;
99
+ /** `box.mintScopedToken` TTL in minutes. Default `15` (the SDK's own max). */
100
+ ttlMinutes?: number;
101
+ /**
102
+ * Resolve the terminal connection id the minted token's `sid` is bound to
103
+ * — this MUST be the same id `TerminalView` dials
104
+ * (`tabTerminalConnectionId()`), because the orchestrator's terminal WS
105
+ * gate fails closed unless `sid === <connectionId>` in
106
+ * `/terminals/<connectionId>/ws`.
107
+ *
108
+ * `requested` is `new URL(request.url).searchParams.get('connectionId')`.
109
+ * The default resolver returns `requested` unchanged. A product may
110
+ * validate/namespace the id here (e.g. a per-user prefix in a shared box)
111
+ * — if it rewrites the id, the client MUST use the response's echoed
112
+ * `connectionId`, since the sid binding makes any other id fail the WS
113
+ * upgrade.
114
+ *
115
+ * A resolved falsy/empty value fails the request with a 400 before any
116
+ * sandbox work happens.
117
+ */
118
+ resolveConnectionId?: (ctx: {
119
+ request: Request;
120
+ user: TUser;
121
+ box: TBox;
122
+ requested: string | null;
123
+ }) => string | null | undefined | Promise<string | null | undefined>;
124
+ }
125
+ /**
126
+ * Build the browser-direct terminal connection route: `GET` handler that
127
+ * authenticates, resolves the sandbox, mints a scoped token pinned to
128
+ * `scope: 'session-runtime'` (the ONLY scope the platform grants the
129
+ * `terminal` capability to), and returns exactly what the browser needs to
130
+ * connect `TerminalView` directly to the sidecar — no worker in the data
131
+ * path once the terminal is open.
132
+ *
133
+ * Response shapes:
134
+ * - `requireUser` returns a `Response` → that `Response`, verbatim.
135
+ * - `ensureSandbox` throws → `500 {error}` (the thrown message surfaced).
136
+ * - `box.connection?.runtimeUrl` missing → `503 {error, status: box.status}`
137
+ * — this is a READINESS gate only; the URL returned to the client on
138
+ * success is always the mint's `sidecarProxyUrl`, never `runtimeUrl`.
139
+ * - resolved connection id is falsy/empty → `400 {error}`.
140
+ * - `box.mintScopedToken` rejects → `503 {error}`.
141
+ * - success → `200 {sidecarUrl, token, expiresAt, status, sandboxId, connectionId}`.
142
+ * `connectionId` is the id the token's `sid` is bound to — the client MUST
143
+ * hand this (not its own) to `TerminalView`.
144
+ */
145
+ export declare function createSandboxTerminalConnectionRoute<TBox extends TerminalConnectionBoxLike, TUser>(opts: SandboxTerminalConnectionRouteOptions<TBox, TUser>): (request: Request) => Promise<Response>;
@@ -0,0 +1,44 @@
1
+ /** Define the shape of a workspace sandbox instance including its connection details and status. */
2
+ export interface WorkspaceSandboxInstanceLike {
3
+ id: string;
4
+ name?: string;
5
+ status?: string;
6
+ connection?: {
7
+ runtimeUrl?: string;
8
+ sidecarUrl?: string;
9
+ authToken?: string;
10
+ sidecarToken?: string;
11
+ authTokenExpiresAt?: string;
12
+ } | null;
13
+ }
14
+ /** Define the context containing workspace and user identifiers for sandbox environment operations. */
15
+ export interface WorkspaceSandboxEnsureContext {
16
+ workspaceId: string;
17
+ userId: string;
18
+ }
19
+ /** Define configuration options for managing workspace sandboxes. */
20
+ export interface WorkspaceSandboxManagerOptions<TClient, TBox extends WorkspaceSandboxInstanceLike, TEnsureOptions = void> {
21
+ getClient: (ctx: WorkspaceSandboxEnsureContext) => Promise<TClient> | TClient;
22
+ nameForWorkspace: (workspaceId: string, ctx: WorkspaceSandboxEnsureContext) => string;
23
+ listSandboxes: (client: TClient, ctx: WorkspaceSandboxEnsureContext) => Promise<TBox[]>;
24
+ createSandbox: (args: {
25
+ client: TClient;
26
+ ctx: WorkspaceSandboxEnsureContext;
27
+ name: string;
28
+ options: TEnsureOptions;
29
+ listError?: unknown;
30
+ }) => Promise<TBox>;
31
+ waitForRunning?: (box: TBox, ctx: WorkspaceSandboxEnsureContext) => Promise<void>;
32
+ prepareExisting?: (box: TBox, ctx: WorkspaceSandboxEnsureContext, options: TEnsureOptions) => Promise<TBox | void>;
33
+ prepareCreated?: (box: TBox, ctx: WorkspaceSandboxEnsureContext, options: TEnsureOptions) => Promise<TBox | void>;
34
+ onListError?: (error: unknown, ctx: WorkspaceSandboxEnsureContext) => void;
35
+ }
36
+ /** Manage workspace sandboxes by ensuring their creation and retrieval for specified users. */
37
+ export interface WorkspaceSandboxManager<TBox extends WorkspaceSandboxInstanceLike, TEnsureOptions = void> {
38
+ ensureWorkspaceSandbox: (workspaceId: string, userId: string, options?: TEnsureOptions) => Promise<TBox>;
39
+ }
40
+ /**
41
+ * Create a generic name-keyed sandbox lifecycle manager for products that
42
+ * drive their own SDK or box types.
43
+ */
44
+ export declare function createWorkspaceSandboxManager<TClient, TBox extends WorkspaceSandboxInstanceLike, TEnsureOptions = void>(opts: WorkspaceSandboxManagerOptions<TClient, TBox, TEnsureOptions>): WorkspaceSandboxManager<TBox, TEnsureOptions>;
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Maps one validated `SequenceOperation` to `SequenceStore` calls and reports
3
+ * what changed. Each call re-validates its single operation against the
4
+ * provided timeline — a dispatcher that skips batch validation still cannot
5
+ * reach the store with an invalid write. The timeline must be the CURRENT
6
+ * state: dispatchers applying a batch refresh it between operations so later
7
+ * operations can reference entities earlier ones created.
8
+ *
9
+ * Split assumes source frames advance 1:1 with sequence frames (the model
10
+ * addresses source in/out points at sequence fps); time-remapped clips are
11
+ * outside this operation vocabulary.
12
+ */
13
+ import type { SequenceClip, SequenceExportRecord, SequenceMeta, SequenceTimeline, SequenceTrack } from './model';
14
+ import type { SequenceOperation } from './operations';
15
+ import type { SequenceStore } from './store';
16
+ import type { SequenceOperationContext } from './validate';
17
+ /**
18
+ * The entity an operation changed, for the MCP layer to serialize back to the
19
+ * agent. Conventions for multi-entity operations:
20
+ * - `split_clip` returns the newly created second half (the first half is the
21
+ * original clip id with a shortened duration).
22
+ * - `delete_clip` returns the pre-delete clip snapshot.
23
+ */
24
+ export type SequenceApplyResult = {
25
+ kind: 'clip';
26
+ clip: SequenceClip;
27
+ } | {
28
+ kind: 'track';
29
+ track: SequenceTrack;
30
+ } | {
31
+ kind: 'export';
32
+ record: SequenceExportRecord;
33
+ } | {
34
+ kind: 'sequence';
35
+ sequence: SequenceMeta;
36
+ };
37
+ /**
38
+ * The batch path every dispatcher (the MCP tools, a product's editor
39
+ * persistence route) funnels through: fetch the timeline, validate the WHOLE
40
+ * batch against pre-state, then apply in order with a timeline refresh between
41
+ * operations — later operations must see earlier writes (the static-validation
42
+ * boundary in ./validate).
43
+ *
44
+ * Atomicity contract: validation throws (before the first store write) leave
45
+ * the sequence untouched. Store-layer throws after at least one successful
46
+ * write leave a prefix-committed state — operations 1..N-1 are persisted,
47
+ * operations N..end are not. The store is non-transactional (SQLite D1);
48
+ * callers that receive a partial-commit throw must treat the result as partial
49
+ * success, not a full rollback. Decision-log rows are the caller's job: the
50
+ * MCP layer records `agent_edit`, an editor route records `human_edit`.
51
+ */
52
+ export declare function applySequenceOperations(store: SequenceStore, operations: SequenceOperation[], ctx: SequenceOperationContext): Promise<SequenceApplyResult[]>;
53
+ /** Apply a sequence operation to update the store and timeline asynchronously */
54
+ export declare function applySequenceOperation(store: SequenceStore, timeline: SequenceTimeline, op: SequenceOperation, ctx: SequenceOperationContext): Promise<SequenceApplyResult>;
@@ -0,0 +1,91 @@
1
+ /**
2
+ * Caption planning — pure, server-safe helpers that turn transcripts into
3
+ * frame-typed caption chunks and answer "are captions complete?" per language.
4
+ * No store access, no React, no provider coupling: products feed transcript
5
+ * segments in (from any transcription provider) and get chunk bounds out,
6
+ * ready to become `add_caption` operations.
7
+ *
8
+ * All outputs are integer frames at the sequence fps. Seconds appear only on
9
+ * the transcript-segment inputs, because that is what transcription providers
10
+ * emit; the conversion happens exactly once, here.
11
+ */
12
+ import { type SequenceTimeline, type TimelineInterval } from './model';
13
+ /** Server twin of `TranscriptionSegment` (../sequences-react/contracts) —
14
+ * structurally identical so react-side transcription output feeds
15
+ * `buildCaptionChunks` without mapping. Keep the shapes in lockstep. */
16
+ export interface TranscriptSegment {
17
+ text: string;
18
+ startSeconds: number;
19
+ endSeconds: number;
20
+ }
21
+ /** One caption clip's worth of text with its timeline bounds. */
22
+ export interface CaptionChunk {
23
+ text: string;
24
+ startFrame: number;
25
+ durationFrames: number;
26
+ }
27
+ /** Define options to configure caption chunk size, duration, and frame rate constraints */
28
+ export interface BuildCaptionChunksOptions {
29
+ /** Upper bound on words per caption; segments split on word boundaries. */
30
+ maxWordsPerChunk?: number;
31
+ /** Readability floor — chunks shorter than this are extended, never
32
+ * overlapped: the following chunk's start is pushed forward instead. */
33
+ minDurationSeconds?: number;
34
+ fps: number;
35
+ }
36
+ /**
37
+ * Split transcript segments into caption chunks. Within each segment, time is
38
+ * apportioned to chunks by word count (a constant words-per-second estimate).
39
+ * Guarantees, across the WHOLE output regardless of segment boundaries:
40
+ *
41
+ * - starts are strictly increasing and chunks never overlap
42
+ * - every chunk lasts at least the min-duration clamp (and at least
43
+ * `MIN_SEQUENCE_CLIP_FRAMES`)
44
+ * - a chunk may extend past its segment's end by at most the clamp — the cost
45
+ * of the readability floor on short tails
46
+ *
47
+ * Whitespace-only segments produce no chunks. Segments may arrive unsorted
48
+ * (providers emit per-channel batches); they are ordered by start before
49
+ * chunking so the no-overlap guarantee holds.
50
+ */
51
+ export declare function buildCaptionChunks(segments: TranscriptSegment[], opts: BuildCaptionChunksOptions): CaptionChunk[];
52
+ /**
53
+ * Normalize a BCP-47 tag to conventional casing: primary subtag lowercase,
54
+ * 4-letter script subtags Title Case, 2-letter region subtags UPPER, all other
55
+ * subtags lowercase. Throws on empty or structurally invalid tags.
56
+ */
57
+ export declare function normalizeLanguageTag(tag: string): string;
58
+ /** Define options to specify target languages and an optional source language for fan-out operations */
59
+ export interface LanguageFanoutOptions {
60
+ languages: string[];
61
+ /** Excluded from the plan (exact normalized match only — 'en' does not
62
+ * exclude 'en-US'; a regional variant of the source is still a valid
63
+ * fan-out target). */
64
+ sourceLanguage?: string;
65
+ }
66
+ /**
67
+ * Plan which caption languages to generate: normalized, deduped (first
68
+ * occurrence wins), source excluded. Throws on an empty request or any
69
+ * invalid tag — a malformed fan-out request must fail before any generation
70
+ * is queued. Returns [] when every requested language IS the source; the
71
+ * caller reports "nothing to fan out" rather than erroring.
72
+ */
73
+ export declare function planLanguageFanout(opts: LanguageFanoutOptions): string[];
74
+ /** Coverage for one caption language across the sequence. `language` is the
75
+ * clip's stored tag verbatim (no normalization — coverage reports what is
76
+ * actually on the timeline); null groups caption clips with no tag. */
77
+ export interface CaptionCoverageEntry {
78
+ language: string | null;
79
+ coveredFrames: number;
80
+ totalFrames: number;
81
+ /** Uncovered intervals, ascending; endFrame exclusive. */
82
+ gaps: TimelineInterval[];
83
+ }
84
+ /**
85
+ * Per-language caption coverage over [0, durationFrames). A frame counts as
86
+ * covered when an enabled, non-empty-text clip on a caption-kind track spans
87
+ * it. Overlapping clips merge (no double counting). Returns one entry per
88
+ * distinct language, null first then lexicographic; [] when the timeline has
89
+ * no caption clips at all.
90
+ */
91
+ export declare function captionCoverage(timeline: SequenceTimeline): CaptionCoverageEntry[];
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Drizzle-backed `SequenceStore` over the tables from `createSequenceTables`.
3
+ * Works against any SQLite drizzle driver (better-sqlite3, D1, libsql) — the
4
+ * builders are awaited, never `.run()`/`.all()`, so sync and async drivers
5
+ * behave identically.
6
+ *
7
+ * Defense in depth: RBAC runs before the store is constructed, but every
8
+ * query still pins `workspaceId` AND `sequenceId` from the scope in its WHERE
9
+ * clause, so a leaked or attacker-supplied row id from another workspace can
10
+ * never read or write across the boundary — it surfaces as "not found".
11
+ *
12
+ * Store-level invariants (everything richer lives in the operation
13
+ * validator): frame fields must be non-negative integers, clip durations at
14
+ * least `MIN_SEQUENCE_CLIP_FRAMES`, and the sequence duration can never
15
+ * shrink below the last clip end. Every mutation bumps `sequence.updatedAt`
16
+ * so workspace recency sorts stay truthful.
17
+ */
18
+ import type { BaseSQLiteDatabase } from 'drizzle-orm/sqlite-core';
19
+ import { type SequenceClipMedia } from './model';
20
+ import type { SequenceStore, SequenceStoreScope } from './store';
21
+ import type { SequenceClipRow, SequenceTables } from './schema';
22
+ /** Any SQLite drizzle database — `any` erases the driver-specific run-result
23
+ * and schema generics so better-sqlite3, D1, and libsql handles all fit. */
24
+ export type SequenceDatabase = BaseSQLiteDatabase<'sync' | 'async', any, any>;
25
+ /** Resolves product-specific media (generation rows, asset rows) for a batch
26
+ * of clip rows. Keyed by clip id; clips absent from the map carry no media. */
27
+ export type SequenceMediaResolver = (clipRows: SequenceClipRow[]) => Promise<Map<string, SequenceClipMedia>>;
28
+ /** Define options for creating a Drizzle sequence store including database, tables, scope, and media resolver */
29
+ export interface CreateDrizzleSequenceStoreOptions {
30
+ db: SequenceDatabase;
31
+ tables: SequenceTables;
32
+ scope: SequenceStoreScope;
33
+ resolveMedia?: SequenceMediaResolver;
34
+ }
35
+ /** Create a sequence store scoped to a specific sequence and workspace with database access and media resolution */
36
+ export declare function createDrizzleSequenceStore(options: CreateDrizzleSequenceStoreOptions): SequenceStore;