@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
@@ -7,7 +7,7 @@
7
7
  * shape feeds the sandbox SDK's `backend.model`. Lifted here so no product
8
8
  * hand-rolls the env parsing + the router default.
9
9
  */
10
- interface TangleModelConfig {
10
+ export interface TangleModelConfig {
11
11
  /** The Tangle Router is OpenAI-compatible → driven via `openai-compat`.
12
12
  * `anthropic` is the BYOK escape hatch. */
13
13
  provider: 'openai-compat' | 'anthropic';
@@ -16,20 +16,20 @@ interface TangleModelConfig {
16
16
  baseUrl: string;
17
17
  }
18
18
  /** Define the environment context for executing Tangle operations */
19
- type TangleExecutionEnvironment = 'development' | 'staging' | 'production' | 'test';
19
+ export type TangleExecutionEnvironment = 'development' | 'staging' | 'production' | 'test';
20
20
  /** Resolve the source of the Tangle execution key as either local environment or user input */
21
- type TangleExecutionKeySource = 'local-env' | 'user';
21
+ export type TangleExecutionKeySource = 'local-env' | 'user';
22
22
  /** Define error codes for Tangle execution key issues related to API key and account connection */
23
- type TangleExecutionKeyErrorCode = 'local_tangle_api_key_required' | 'tangle_account_not_connected';
23
+ export type TangleExecutionKeyErrorCode = 'local_tangle_api_key_required' | 'tangle_account_not_connected';
24
24
  /** Resolve options for model configuration including environment variables and default router base URL */
25
- interface ResolveModelOptions {
25
+ export interface ResolveModelOptions {
26
26
  /** Env to read (defaults to process.env). */
27
27
  env?: Record<string, string | undefined>;
28
28
  /** Router base URL default when `TANGLE_ROUTER_BASE_URL` is unset. */
29
29
  defaultRouterBaseUrl?: string;
30
30
  }
31
31
  /** Resolve options for retrieving user API keys within a specific Tangle execution environment */
32
- interface ResolveUserTangleExecutionKeyOptions {
32
+ export interface ResolveUserTangleExecutionKeyOptions {
33
33
  /** Deployment context. Only local development may fall back to env keys. */
34
34
  environment?: TangleExecutionEnvironment;
35
35
  /** Env to read for the local-development fallback. */
@@ -38,19 +38,19 @@ interface ResolveUserTangleExecutionKeyOptions {
38
38
  getUserApiKey: () => string | null | undefined | Promise<string | null | undefined>;
39
39
  }
40
40
  /** Resolve options for retrieving a user's Tangle execution key with environment and API key access parameters */
41
- interface ResolveUserTangleExecutionKeyForUserOptions<UserId = string> {
41
+ export interface ResolveUserTangleExecutionKeyForUserOptions<UserId = string> {
42
42
  userId: UserId;
43
43
  environment?: TangleExecutionEnvironment;
44
44
  env?: Record<string, string | undefined>;
45
45
  getUserApiKey: (userId: UserId) => string | null | undefined | Promise<string | null | undefined>;
46
46
  }
47
47
  /** Define a resolved key combining an API key with its Tangle execution source */
48
- interface ResolvedTangleExecutionKey {
48
+ export interface ResolvedTangleExecutionKey {
49
49
  apiKey: string;
50
50
  source: TangleExecutionKeySource;
51
51
  }
52
52
  /** Resolve options for retrieving a Tangle developer or user API key based on environment and context */
53
- interface ResolveTangleDevOrUserKeyOptions {
53
+ export interface ResolveTangleDevOrUserKeyOptions {
54
54
  /** Deployment context. Only local development may use the env key. */
55
55
  environment?: TangleExecutionEnvironment;
56
56
  /** Env to read for the local-development fallback. */
@@ -59,7 +59,7 @@ interface ResolveTangleDevOrUserKeyOptions {
59
59
  getUserApiKey: () => string | null | undefined | Promise<string | null | undefined>;
60
60
  }
61
61
  /** Represent HTTP error response containing status, error message, and specific error code */
62
- interface TangleExecutionKeyHttpError {
62
+ export interface TangleExecutionKeyHttpError {
63
63
  status: number;
64
64
  body: {
65
65
  error: string;
@@ -67,13 +67,13 @@ interface TangleExecutionKeyHttpError {
67
67
  };
68
68
  }
69
69
  /** Define configuration options for creating a Tangle router model including API key and model details */
70
- interface CreateTangleRouterModelConfigOptions {
70
+ export interface CreateTangleRouterModelConfigOptions {
71
71
  apiKey: string;
72
72
  model: string;
73
73
  baseUrl?: string;
74
74
  }
75
75
  /** Define options for configuring billing enforcement environment variables and overrides */
76
- interface TangleBillingEnforcementOptions {
76
+ export interface TangleBillingEnforcementOptions {
77
77
  /** Env to read (defaults to process.env). */
78
78
  env?: Record<string, string | undefined>;
79
79
  /**
@@ -83,21 +83,21 @@ interface TangleBillingEnforcementOptions {
83
83
  enforcementEnvVar?: string;
84
84
  }
85
85
  /** Provide the default base URL for the Tangle router API endpoint */
86
- declare const DEFAULT_TANGLE_ROUTER_BASE_URL = "https://router.tangle.tools/v1";
86
+ export declare const DEFAULT_TANGLE_ROUTER_BASE_URL = "https://router.tangle.tools/v1";
87
87
  /** Define the default environment variable name for Tangle billing enforcement */
88
- declare const DEFAULT_TANGLE_BILLING_ENFORCEMENT_ENV_VAR = "TANGLE_BILLING_ENFORCEMENT";
88
+ export declare const DEFAULT_TANGLE_BILLING_ENFORCEMENT_ENV_VAR = "TANGLE_BILLING_ENFORCEMENT";
89
89
  /** Resolve a string by trimming whitespace or returning null if empty or undefined */
90
- declare function trimOrNull(value: string | null | undefined): string | null;
90
+ export declare function trimOrNull(value: string | null | undefined): string | null;
91
91
  /** Represent execution key errors with specific codes and HTTP status information */
92
- declare class TangleExecutionKeyError extends Error {
92
+ export declare class TangleExecutionKeyError extends Error {
93
93
  readonly code: TangleExecutionKeyErrorCode;
94
94
  readonly status: number;
95
95
  constructor(code: TangleExecutionKeyErrorCode, message: string, status: number);
96
96
  }
97
97
  /** Identify whether an error is a TangleExecutionKeyError based on its properties and type */
98
- declare function isTangleExecutionKeyError(error: unknown): error is TangleExecutionKeyError;
98
+ export declare function isTangleExecutionKeyError(error: unknown): error is TangleExecutionKeyError;
99
99
  /** Resolve the current Tangle execution environment based on provided or process environment variables */
100
- declare function resolveTangleExecutionEnvironment(env?: Record<string, string | undefined>): TangleExecutionEnvironment;
100
+ export declare function resolveTangleExecutionEnvironment(env?: Record<string, string | undefined>): TangleExecutionEnvironment;
101
101
  /**
102
102
  * Shared policy for agent products that bill through the Tangle Platform.
103
103
  *
@@ -107,16 +107,16 @@ declare function resolveTangleExecutionEnvironment(env?: Record<string, string |
107
107
  * override flag (`FOO_BILLING_ENFORCEMENT`) while new apps can use the shared
108
108
  * `TANGLE_BILLING_ENFORCEMENT`.
109
109
  */
110
- declare function isTangleBillingEnforcementDisabled(opts?: TangleBillingEnforcementOptions): boolean;
110
+ export declare function isTangleBillingEnforcementDisabled(opts?: TangleBillingEnforcementOptions): boolean;
111
111
  /** Resolve and format TangleExecutionKey HTTP errors into a standardized error object or return null */
112
- declare function tangleExecutionKeyHttpError(error: unknown): TangleExecutionKeyHttpError | null;
112
+ export declare function tangleExecutionKeyHttpError(error: unknown): TangleExecutionKeyHttpError | null;
113
113
  /**
114
114
  * Shared dev-aware Tangle key resolution. Local development may use a server
115
115
  * `TANGLE_API_KEY`; otherwise the caller's linked platform key is used. Returns
116
116
  * null when neither resolves, so each caller can throw its own domain error
117
117
  * (e.g. model-execution 503/401 vs hub `tangle_link_required` 412).
118
118
  */
119
- declare function resolveTangleDevOrUserKey(opts: ResolveTangleDevOrUserKeyOptions): Promise<ResolvedTangleExecutionKey | null>;
119
+ export declare function resolveTangleDevOrUserKey(opts: ResolveTangleDevOrUserKeyOptions): Promise<ResolvedTangleExecutionKey | null>;
120
120
  /**
121
121
  * Resolve the user-facing Tangle API key for model execution.
122
122
  *
@@ -124,14 +124,14 @@ declare function resolveTangleDevOrUserKey(opts: ResolveTangleDevOrUserKeyOption
124
124
  * Deployed contexts must use the caller's linked platform key; this keeps
125
125
  * model execution, billing, and account ownership aligned across products.
126
126
  */
127
- declare function resolveUserTangleExecutionKey(opts: ResolveUserTangleExecutionKeyOptions): Promise<ResolvedTangleExecutionKey>;
127
+ export declare function resolveUserTangleExecutionKey(opts: ResolveUserTangleExecutionKeyOptions): Promise<ResolvedTangleExecutionKey>;
128
128
  /** Resolve the Tangle execution key for a specified user using provided environment and API key options */
129
- declare function resolveUserTangleExecutionKeyForUser<UserId = string>(opts: ResolveUserTangleExecutionKeyForUserOptions<UserId>): Promise<ResolvedTangleExecutionKey>;
129
+ export declare function resolveUserTangleExecutionKeyForUser<UserId = string>(opts: ResolveUserTangleExecutionKeyForUserOptions<UserId>): Promise<ResolvedTangleExecutionKey>;
130
130
  /**
131
131
  * Build an OpenAI-compatible Tangle Router model config from an already
132
132
  * resolved execution key. This intentionally does not read TANGLE_API_KEY.
133
133
  */
134
- declare function createTangleRouterModelConfig(opts: CreateTangleRouterModelConfigOptions): TangleModelConfig;
134
+ export declare function createTangleRouterModelConfig(opts: CreateTangleRouterModelConfigOptions): TangleModelConfig;
135
135
  /**
136
136
  * Resolve the model config from env. DEFAULT path (`MODEL_PROVIDER` unset or
137
137
  * `openai-compat`/`tangle-router`/`tcloud`): the Tangle Router, authenticated
@@ -140,6 +140,4 @@ declare function createTangleRouterModelConfig(opts: CreateTangleRouterModelConf
140
140
  * `ANTHROPIC_BASE_URL`. Throws (fail-loud) on a missing required var so a
141
141
  * misconfigured deploy fails at boot, not mid-turn.
142
142
  */
143
- declare function resolveTangleModelConfig(opts?: ResolveModelOptions): TangleModelConfig;
144
-
145
- export { type CreateTangleRouterModelConfigOptions as C, DEFAULT_TANGLE_BILLING_ENFORCEMENT_ENV_VAR as D, type ResolveModelOptions as R, type TangleModelConfig as T, type TangleExecutionEnvironment as a, type TangleExecutionKeySource as b, DEFAULT_TANGLE_ROUTER_BASE_URL as c, type ResolveTangleDevOrUserKeyOptions as d, type ResolveUserTangleExecutionKeyForUserOptions as e, type ResolveUserTangleExecutionKeyOptions as f, type ResolvedTangleExecutionKey as g, type TangleBillingEnforcementOptions as h, TangleExecutionKeyError as i, type TangleExecutionKeyErrorCode as j, type TangleExecutionKeyHttpError as k, createTangleRouterModelConfig as l, isTangleBillingEnforcementDisabled as m, isTangleExecutionKeyError as n, resolveTangleExecutionEnvironment as o, resolveTangleModelConfig as p, resolveUserTangleExecutionKey as q, resolveTangleDevOrUserKey as r, resolveUserTangleExecutionKeyForUser as s, tangleExecutionKeyHttpError as t, trimOrNull as u };
143
+ export declare function resolveTangleModelConfig(opts?: ResolveModelOptions): TangleModelConfig;
@@ -0,0 +1,126 @@
1
+ /**
2
+ * OpenAI-compatible stream → `LoopEvent` adapter, for NON-sandbox copilots.
3
+ *
4
+ * `streamAppToolLoop` takes a `streamTurn` seam that yields `LoopEvent`s. A
5
+ * sandboxed agent produces those from its container; a browser/edge copilot
6
+ * instead calls a model directly. The Tangle Router, the tcloud SDK, and most
7
+ * providers all speak the OpenAI Chat Completions streaming shape — so the ONE
8
+ * reusable piece is assembling that stream (content deltas + FRAGMENTED
9
+ * tool-call deltas) into `LoopEvent`s. That assembly is the boilerplate every
10
+ * copilot would re-write (and get wrong — OpenAI streams tool-call arguments in
11
+ * pieces across chunks).
12
+ *
13
+ * This does NOT implement an HTTP client beyond a minimal `fetch` + SSE reader
14
+ * (browser/edge/Node-safe, zero deps). For richer transport use the tcloud SDK
15
+ * or the Vercel AI SDK and pipe their stream through {@link toLoopEvents}.
16
+ */
17
+ import type { LoopEvent, LoopMessage } from './loop';
18
+ /** Minimal OpenAI Chat Completions streaming chunk (structural — no `openai` dep). */
19
+ export interface OpenAIStreamChunk {
20
+ /** The model that produced this chunk. The Tangle Router reports the DATED
21
+ * upstream id here (`gpt-5-2025-08-07`) whether or not it substituted, so
22
+ * this is a served-model source only after id folding — see
23
+ * {@link OpenAICompatServedModel}. */
24
+ model?: string;
25
+ choices?: Array<{
26
+ delta?: {
27
+ content?: string | null;
28
+ /** Reasoning deltas — DeepSeek/router use `reasoning_content`; some proxies use `thinking`. */
29
+ reasoning_content?: string | null;
30
+ thinking?: string | null;
31
+ tool_calls?: Array<{
32
+ index: number;
33
+ id?: string;
34
+ function?: {
35
+ name?: string;
36
+ arguments?: string;
37
+ };
38
+ }>;
39
+ };
40
+ finish_reason?: string | null;
41
+ }>;
42
+ /** Final-chunk token accounting (requires `stream_options.include_usage`). */
43
+ usage?: {
44
+ prompt_tokens?: number;
45
+ completion_tokens?: number;
46
+ } | null;
47
+ }
48
+ /**
49
+ * Map an OpenAI-compat streaming chunk iterator to `LoopEvent`s: each content
50
+ * delta → a `text` event; tool-call deltas are accumulated by index across
51
+ * chunks and emitted as one complete `tool_call` event when the stream finishes
52
+ * (arguments JSON-parsed; an empty/garbled args string yields `{}` rather than
53
+ * throwing). Works for the Tangle Router, tcloud, or any OpenAI-compat source.
54
+ */
55
+ export declare function toLoopEvents(chunks: AsyncIterable<OpenAIStreamChunk>): AsyncIterable<LoopEvent>;
56
+ /**
57
+ * Which model actually served one direct-router turn.
58
+ *
59
+ * The router substitutes models on purpose — a quota-walled primary comes back
60
+ * `200` answered by a different model — and says so in response headers. This
61
+ * lane used to drop the whole `Response` after taking `.body`, so a turn
62
+ * requested as `claude-sonnet-4-6` and answered by `openai/gpt-5` was recorded
63
+ * by its caller as Claude: per-model quality scoring blamed the wrong model and
64
+ * cost used the wrong price basis.
65
+ *
66
+ * Map this onto the shell's existing attribution contract rather than inventing
67
+ * a second channel — `ChatTurnRouteProducer.modelAttribution()` (`/chat-routes`):
68
+ *
69
+ * modelAttribution: () => ({ requestedModel, servedModel, echoReceived: true })
70
+ *
71
+ * Leave that contract's `servedSource` unset: its union is sandbox
72
+ * profile-resolution vocabulary with no router analogue.
73
+ */
74
+ export interface OpenAICompatServedModel {
75
+ /** The model id this turn asked for (`OpenAICompatStreamTurnOptions.model`). */
76
+ requestedModel: string;
77
+ /** The model the router/provider reports having actually served. */
78
+ servedModel: string;
79
+ /** Where `servedModel` was read from. The header is the router's own
80
+ * substitution signal; the body is the backstop that survives CORS. */
81
+ source: 'router_header' | 'response_body';
82
+ /** True when served differs from requested after id folding. Folded, not
83
+ * compared raw: the body reports a dated id on EVERY turn, so `!==` would
84
+ * claim a substitution every time. */
85
+ substituted: boolean;
86
+ /** `x-tangle-failover` `trigger=` — why the router swapped. Absent when the
87
+ * router did not inject the substitute (a caller-supplied fallback chain
88
+ * sets the served-model header without the failover one). */
89
+ trigger?: string;
90
+ /** `x-tangle-failover` `degraded=`. */
91
+ degraded?: boolean;
92
+ }
93
+ /** Define options for configuring an OpenAI-compatible streaming chat turn including API details and tools */
94
+ export interface OpenAICompatStreamTurnOptions {
95
+ /** OpenAI-compat base URL (e.g. the Tangle Router `https://router.tangle.tools/v1`). */
96
+ baseUrl: string;
97
+ apiKey: string;
98
+ model: string;
99
+ /** OpenAI tool definitions — pass `buildAppToolOpenAITools(taxonomy)` so the
100
+ * model can call the app tools. Omit for a tool-free copilot. */
101
+ tools?: unknown[];
102
+ temperature?: number;
103
+ fetchImpl?: typeof fetch;
104
+ /** Extra body fields (e.g. `max_tokens`). */
105
+ extraBody?: Record<string, unknown>;
106
+ /**
107
+ * Called at most ONCE per turn, as soon as the serving model is
108
+ * determinable, with what actually answered. Never called when neither the
109
+ * header nor the body names a model — silence means "learned nothing", not
110
+ * "nothing was substituted".
111
+ *
112
+ * `streamTurn` runs once per TOOL turn, so a multi-turn `runAppToolLoop`
113
+ * fires this once per turn; take the last for row attribution.
114
+ */
115
+ onServedModel?: (served: OpenAICompatServedModel) => void;
116
+ }
117
+ /**
118
+ * Build a `streamTurn` that calls an OpenAI-compatible `/chat/completions`
119
+ * endpoint (Tangle Router / tcloud / any compat provider) with `stream: true`
120
+ * and yields `LoopEvent`s via {@link toLoopEvents}. Browser/edge/Node-safe —
121
+ * just `fetch` + an SSE reader. Drop straight into `streamAppToolLoop`:
122
+ *
123
+ * const cfg = resolveTangleModelConfig() // or { baseUrl, apiKey, model }
124
+ * streamAppToolLoop({ streamTurn: createOpenAICompatStreamTurn({ ...cfg, tools }), executeToolCall, ... })
125
+ */
126
+ export declare function createOpenAICompatStreamTurn(opts: OpenAICompatStreamTurnOptions): (messages: LoopMessage[]) => AsyncIterable<LoopEvent>;
@@ -0,0 +1,115 @@
1
+ /**
2
+ * Surface-scoped profile overlay — the seam letting any product page (a
3
+ * sequence editor, a brief composer, a dataset view) add MCP servers, a prompt
4
+ * addendum, and permission tightening to the workspace agent profile for turns
5
+ * initiated FROM that surface, without the chat orchestrator knowing any
6
+ * surface's specifics. The orchestrator resolves `(kind, ctx)` through a
7
+ * registry the REQUEST HANDLER constructs per request (construction is a Map
8
+ * build — cheap) and merges the result into the base profile it was about to
9
+ * send to the sandbox. Per-request construction is the trust mechanism, not an
10
+ * optimization target: each `build()` closes over server-trusted request state
11
+ * (env bindings, secrets, the AUTHENTICATED user/workspace), which on Workers
12
+ * exists only per request — a startup-built registry would force identity
13
+ * through the untrusted client `ctx`.
14
+ *
15
+ * SECURITY INVARIANT: the surface `kind` and the ids inside `ctx` arrive on
16
+ * the client request and are pure ROUTING data — never trusted content, never
17
+ * identity. Identity comes from the closure (see above). The registered
18
+ * `build()` runs server-side only: it validates the routing ids against the
19
+ * product's access control, then mints its own URLs from server configuration
20
+ * (`buildHttpMcpServer` in ../tools). A client can therefore never inject an
21
+ * arbitrary MCP url, header, or credential into the agent profile: the
22
+ * overlay's `mcp` values are typed as {@link SurfaceMcpServer} (= the
23
+ * server-built `AppToolMcpServer` entry shape), and only build() constructs
24
+ * them.
25
+ *
26
+ * The credential itself never appears in the overlay. Since the tagged-config
27
+ * contract (`agent-interface` 0.38.0) the `Authorization` header is a
28
+ * `secret-ref` naming a box-environment variable, which the sandbox resolves
29
+ * privately; `build()` supplies that key NAME from server configuration and the
30
+ * product writes the value into `SandboxRuntimeConfig.env` at box creation. The
31
+ * value must be deterministic for the box's lifetime (an HMAC over the
32
+ * workspace id, e.g. `createCapabilityToken` in ../tools), because a freshly
33
+ * random per-request mint would never match what the box already carries.
34
+ */
35
+ import type { AppToolMcpServer } from '../tools/mcp';
36
+ /** Sandbox permission posture values, ranked deny > ask > allow for merging. */
37
+ export type SurfacePermissionValue = 'allow' | 'ask' | 'deny';
38
+ /** The only MCP entry shape an overlay may carry: the server-built bridge
39
+ * entry from ../tools/mcp (transport, url, headers, and capability token all
40
+ * assembled server-side). The alias exists so overlay authors reach for the
41
+ * builders in ../tools rather than hand-rolling `{ url: ctx.url }` shapes
42
+ * that would let request data become a dialable endpoint. */
43
+ export type SurfaceMcpServer = AppToolMcpServer;
44
+ /** What one surface contributes to the agent profile for a single turn. */
45
+ export interface SurfaceOverlay {
46
+ /** MCP servers to mount for this turn, keyed by tool-routing name. Names
47
+ * must not collide with the base profile's — see {@link mergeSurfaceOverlay}. */
48
+ mcp?: Record<string, SurfaceMcpServer>;
49
+ /** Appended to the base system-prompt addendum with a blank-line separator. */
50
+ promptAddendum?: string;
51
+ /** Per-key posture the surface wants for its turns. Merging is monotone
52
+ * fail-closed: the stricter of base/overlay wins, so a surface can tighten
53
+ * the workspace posture but never relax it. */
54
+ permissions?: Record<string, SurfacePermissionValue>;
55
+ }
56
+ /**
57
+ * One registered surface kind. `TCtx` is the shape build() expects — a CLAIM
58
+ * about the client payload, not a guarantee: the registry hands build() the
59
+ * request's `ctx` unvalidated, so build() must treat every field as an
60
+ * untrusted id (resolve it through access control that throws on a bad or
61
+ * foreign id) before minting anything from it.
62
+ */
63
+ export interface SurfaceKindDefinition<TCtx> {
64
+ kind: string;
65
+ build: (ctx: TCtx) => SurfaceOverlay | Promise<SurfaceOverlay>;
66
+ }
67
+ /** The variance-erased form a registry accepts (`build` is contravariant in
68
+ * `TCtx`, so every concrete definition is assignable to this). */
69
+ export type AnySurfaceKind = SurfaceKindDefinition<never>;
70
+ /**
71
+ * Declare one surface kind. The `kind` string is the client-visible routing
72
+ * key (e.g. `'sequences'`); `build` is the server-side factory that turns a
73
+ * validated ctx into the overlay for one turn.
74
+ */
75
+ export declare function defineSurfaceKind<TCtx>(opts: {
76
+ kind: string;
77
+ build: (ctx: TCtx) => SurfaceOverlay | Promise<SurfaceOverlay>;
78
+ }): SurfaceKindDefinition<TCtx>;
79
+ /** Resolve and build the overlay for a given surface kind within a turn context */
80
+ export interface SurfaceRegistry {
81
+ /** Build the overlay for one turn. Throws on an unknown kind — an unknown
82
+ * surface is a routing bug (client and server registries drifted), and
83
+ * silently returning an empty overlay would strip the surface's tools from
84
+ * the turn with no signal anywhere. Build errors propagate unwrapped. */
85
+ resolve(kind: string, ctx: unknown): Promise<SurfaceOverlay>;
86
+ }
87
+ /**
88
+ * Assemble the product's surface registry from its registered kinds. Duplicate
89
+ * kinds throw at construction: two builders behind one routing key would make
90
+ * the mounted toolset depend on registration order.
91
+ */
92
+ export declare function createSurfaceRegistry(kinds: readonly AnySurfaceKind[]): SurfaceRegistry;
93
+ /** Base-profile slice the merge reads/writes. Real callers pass their full
94
+ * profile object; every field outside this slice passes through untouched. */
95
+ export interface SurfaceMergeBase {
96
+ mcp?: Record<string, unknown>;
97
+ systemPromptAddendum?: string;
98
+ permissions?: Record<string, SurfacePermissionValue>;
99
+ }
100
+ /**
101
+ * Merge one surface overlay into a base profile, returning a new object
102
+ * (the base is never mutated; untouched nested records are shared by
103
+ * reference).
104
+ *
105
+ * - `mcp`: overlay servers are added under their own names. A name already
106
+ * present on the base THROWS — a collision is two servers claiming one
107
+ * routing name, and renaming either silently would corrupt tool routing for
108
+ * whichever caller expected the original binding.
109
+ * - `systemPromptAddendum`: the overlay's `promptAddendum` appends after a
110
+ * blank-line separator (no separator when the base has no addendum).
111
+ * - `permissions`: per key the STRICTER value wins (deny > ask > allow). A
112
+ * surface can tighten the base posture for its turns; a base 'deny' survives
113
+ * any overlay.
114
+ */
115
+ export declare function mergeSurfaceOverlay<TBase extends SurfaceMergeBase>(base: TBase, overlay: SurfaceOverlay): TBase & SurfaceMergeBase;
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Reading arbitrary bytes out of a sandbox over an exec channel that only
3
+ * speaks text.
4
+ *
5
+ * `box.exec` returns stdout as a string, so a binary file has to be encoded to
6
+ * survive the trip: `wc -c` gives the on-disk length, `base64` gives the
7
+ * payload, and the decoded byte count is checked against the stat. That last
8
+ * check is the point of the module — an exec channel that caps or clips its
9
+ * output still reports `exitCode: 0` with a short buffer, which decodes into a
10
+ * perfectly valid but TRUNCATED file. Verifying the length turns that silent
11
+ * corruption into a loud failure at the boundary.
12
+ *
13
+ * Both helpers return typed outcomes; callers must inspect `succeeded` before
14
+ * touching `value`.
15
+ */
16
+ /** The `box.exec` surface these helpers use — structural, so a caller can pass
17
+ * the sandbox SDK's `SandboxInstance` directly or a narrower test double. */
18
+ export interface SandboxExecChannel {
19
+ exec(command: string, options?: {
20
+ sessionId?: string;
21
+ }): Promise<{
22
+ stdout: string;
23
+ stderr: string;
24
+ exitCode: number;
25
+ }>;
26
+ }
27
+ /** Define options to execute code within a sandbox environment with optional session control */
28
+ export interface SandboxExecOptions {
29
+ /** Run inside a named session rather than the box's default one. */
30
+ sessionId?: string;
31
+ }
32
+ /** Resolve the outcome of a sandbox file size check with success status and value or error message */
33
+ export type SandboxFileSizeOutcome = {
34
+ succeeded: true;
35
+ value: number;
36
+ } | {
37
+ succeeded: false;
38
+ error: string;
39
+ };
40
+ /** Represent the outcome of reading sandbox file bytes with success status and corresponding data or error */
41
+ export type SandboxFileBytesOutcome = {
42
+ succeeded: true;
43
+ value: {
44
+ bytes: Uint8Array;
45
+ size: number;
46
+ };
47
+ } | {
48
+ succeeded: false;
49
+ error: string;
50
+ };
51
+ /** Wraps a value in single quotes for `sh`, closing and reopening the quote
52
+ * around each embedded quote (`'` → `'"'"'`). Every path these helpers
53
+ * interpolate into a command goes through this — in-box filenames are
54
+ * arbitrary, so spaces, quotes and `$` are ordinary content, not syntax. */
55
+ export declare function shellQuote(value: string): string;
56
+ /** Stats a sandbox file's byte length via `wc -c`. A caller enforcing a size
57
+ * cap must check this BEFORE {@link readSandboxBinaryBytes}, so an oversize
58
+ * file is rejected without paying for a base64 round trip of it. */
59
+ export declare function statSandboxFileSize(box: SandboxExecChannel, absolutePath: string, options?: SandboxExecOptions): Promise<SandboxFileSizeOutcome>;
60
+ /** Reads a sandbox file as base64 and decodes it, verifying the decoded byte
61
+ * length against `expectedSize` (from a prior {@link statSandboxFileSize}). A
62
+ * mismatch is reported, never returned as a short buffer. */
63
+ export declare function readSandboxBinaryBytes(box: SandboxExecChannel, absolutePath: string, expectedSize: number, options?: SandboxExecOptions): Promise<SandboxFileBytesOutcome>;
@@ -0,0 +1,69 @@
1
+ export interface SafeSandboxErrorCause {
2
+ name?: string;
3
+ message?: string;
4
+ code?: string | number;
5
+ status?: string | number;
6
+ phase?: string;
7
+ endpoint?: string;
8
+ origin?: string;
9
+ retryAfterMs?: number;
10
+ sidecarVersion?: string;
11
+ containerImage?: string;
12
+ }
13
+ export interface SafeSandboxErrorDiagnostics {
14
+ message: string;
15
+ causes: SafeSandboxErrorCause[];
16
+ truncated: boolean;
17
+ truncatedAtDepth?: number;
18
+ cycle: boolean;
19
+ }
20
+ export declare function serializeSandboxProvisioningError(error: unknown, options?: {
21
+ maxDepth?: number;
22
+ }): SafeSandboxErrorDiagnostics;
23
+ export declare function formatSandboxProvisioningSupportDetails(diagnostics: SafeSandboxErrorDiagnostics): string;
24
+ export declare function isSandboxAuthFailure(diagnostics: SafeSandboxErrorDiagnostics): boolean;
25
+ export declare function isSandboxApiBearerAuthFailure(diagnostics: SafeSandboxErrorDiagnostics): boolean;
26
+ /**
27
+ * True when the sandbox API answered 404 for a specific sandbox resource — the
28
+ * box behind a persisted sandbox id no longer exists.
29
+ *
30
+ * A sandbox id is a cache of where a workspace's box lives, not the workspace's
31
+ * identity: the platform reaps, suspends, and loses boxes as ordinary lifecycle
32
+ * events. Callers use this to discard the dead id and provision a replacement,
33
+ * so the match is deliberately narrow — a 404 from the runtime sidecar
34
+ * (`/runtime/...`, a missing file or session inside a live box) is NOT this.
35
+ */
36
+ export declare function isSandboxApiSandboxMissingFailure(diagnostics: SafeSandboxErrorDiagnostics): boolean;
37
+ /**
38
+ * True when a resume failed because the host the box is pinned to cannot seat
39
+ * it — the host's slot budget is exhausted, not the box's fault and not
40
+ * something waiting fixes.
41
+ *
42
+ * A box lives on one host. When that host fills, every future resume for every
43
+ * box on it fails identically and permanently, so a workspace whose box landed
44
+ * on a full host is bricked until it is placed somewhere else. Callers use this
45
+ * the same way they use {@link isSandboxApiSandboxMissingFailure}: discard the
46
+ * dead id and provision a replacement, which the orchestrator is free to place
47
+ * on a host with room. The workspace itself is preserved — it lives in the
48
+ * Vault, not in the box's filesystem.
49
+ *
50
+ * Matched on the message because the sandbox API returns a generic
51
+ * `SERVER_ERROR` for it; a dedicated code upstream would replace this.
52
+ */
53
+ export declare function isSandboxHostCapacityFailure(diagnostics: SafeSandboxErrorDiagnostics): boolean;
54
+ /**
55
+ * True when a resume failed on the box's own configuration rather than on
56
+ * anything a retry can change.
57
+ *
58
+ * These are permanent facts about one box: the platform cannot rebuild its
59
+ * proxy because the egress policy it was created with is no longer recorded, so
60
+ * the box can never start again where it is. The platform says as much in the
61
+ * message — "re-apply the sandbox egress policy and retry" is a description of
62
+ * creating a fresh box, since policy is applied at creation.
63
+ *
64
+ * Narrow on purpose. A bare 500 from the sandbox API is transient far more
65
+ * often than not, and treating one as unbringable would delete a healthy box.
66
+ * Matched on the specific unrecoverable phrasing, and only from `sandbox-api`.
67
+ */
68
+ export declare function isSandboxBoxConfigFailure(diagnostics: SafeSandboxErrorDiagnostics): boolean;
69
+ export declare function formatSandboxProvisioningUserMessage(diagnostics: SafeSandboxErrorDiagnostics): string;