@tangle-network/agent-app 0.45.53 → 0.45.55

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (480) hide show
  1. package/README.md +1 -1
  2. package/dist/alerting/index.d.ts +5 -175
  3. package/dist/alerting/slack.d.ts +176 -0
  4. package/dist/app-auth/index.d.ts +14 -17
  5. package/dist/assets/index.d.ts +2 -504
  6. package/dist/assets/schema.d.ts +264 -0
  7. package/dist/assets/types.d.ts +237 -0
  8. package/dist/assistant/AssistantDock.d.ts +56 -0
  9. package/dist/assistant/AssistantHistory.d.ts +41 -0
  10. package/dist/assistant/AssistantPanel.d.ts +84 -0
  11. package/dist/assistant/ProposalCard.d.ts +41 -0
  12. package/dist/assistant/ResizeHandle.d.ts +19 -0
  13. package/dist/assistant/client-context.d.ts +20 -0
  14. package/dist/assistant/client.d.ts +117 -0
  15. package/dist/assistant/index.d.ts +19 -848
  16. package/dist/assistant/launcher.d.ts +23 -0
  17. package/dist/assistant/persistence.d.ts +26 -0
  18. package/dist/assistant/presentation.d.ts +99 -0
  19. package/dist/assistant/provider-label.d.ts +7 -0
  20. package/dist/assistant/reducer.d.ts +130 -0
  21. package/dist/assistant/sse.d.ts +24 -0
  22. package/dist/assistant/time-ago.d.ts +6 -0
  23. package/dist/assistant/transcript.d.ts +97 -0
  24. package/dist/assistant/types.d.ts +291 -0
  25. package/dist/assistant/use-stick-to-bottom.d.ts +28 -0
  26. package/dist/assistant/useAssistantChat.d.ts +63 -0
  27. package/dist/assistant/useAssistantModels.d.ts +22 -0
  28. package/dist/assistant/useAssistantThreads.d.ts +47 -0
  29. package/dist/assistant/usePanelPrefs.d.ts +55 -0
  30. package/dist/billing/index.d.ts +19 -21
  31. package/dist/brand/index.d.ts +16 -10
  32. package/dist/brand-extraction/extract.d.ts +34 -0
  33. package/dist/brand-extraction/index.d.ts +12 -214
  34. package/dist/brand-extraction/map.d.ts +58 -0
  35. package/dist/brand-extraction/types.d.ts +119 -0
  36. package/dist/catalog/index.d.ts +11 -101
  37. package/dist/chat-react/composer-mode-controls.d.ts +14 -0
  38. package/dist/chat-react/entry-composer.d.ts +92 -0
  39. package/dist/chat-react/index.d.ts +22 -118
  40. package/dist/chat-react/types.d.ts +11 -0
  41. package/dist/chat-routes/attachment-store.d.ts +84 -0
  42. package/dist/chat-routes/attachment-upload.d.ts +84 -0
  43. package/dist/chat-routes/attachment-validation.d.ts +95 -0
  44. package/dist/chat-routes/binary-sniff.d.ts +45 -0
  45. package/dist/chat-routes/completed-sandbox-turn.d.ts +25 -0
  46. package/dist/chat-routes/detached-turn.d.ts +197 -0
  47. package/dist/chat-routes/dispatch-parts.d.ts +101 -0
  48. package/dist/chat-routes/draft-persistence.d.ts +189 -0
  49. package/dist/chat-routes/durable-projection.d.ts +18 -0
  50. package/dist/chat-routes/file-index.d.ts +115 -0
  51. package/dist/chat-routes/index.d.ts +25 -1840
  52. package/dist/chat-routes/model-failover-stream.d.ts +206 -0
  53. package/dist/chat-routes/promote-file-part.d.ts +84 -0
  54. package/dist/chat-routes/resolve-attachments.d.ts +72 -0
  55. package/dist/chat-routes/sandbox-producer.d.ts +146 -0
  56. package/dist/chat-routes/sandbox-turn-usage.d.ts +4 -0
  57. package/dist/{stale-turn-lock-DucQzvXu.d.ts → chat-routes/stale-turn-lock.d.ts} +7 -9
  58. package/dist/chat-routes/turn-routes.d.ts +540 -0
  59. package/dist/chat-routes/upload.d.ts +84 -0
  60. package/dist/{wire-DOZ-O6hD.d.ts → chat-routes/wire.d.ts} +41 -44
  61. package/dist/chat-store/core.d.ts +19 -0
  62. package/dist/chat-store/index.d.ts +22 -322
  63. package/dist/{parts-BqIHMdyu.d.ts → chat-store/parts.d.ts} +49 -47
  64. package/dist/chat-store/schema.d.ts +157 -0
  65. package/dist/chat-store/store.d.ts +177 -0
  66. package/dist/config/index.d.ts +13 -18
  67. package/dist/crypto/index.d.ts +10 -12
  68. package/dist/crypto/web-token.d.ts +22 -0
  69. package/dist/design-canvas/apply.d.ts +70 -0
  70. package/dist/design-canvas/drizzle-store.d.ts +29 -0
  71. package/dist/design-canvas/drizzle.d.ts +7 -575
  72. package/dist/{export-presets-mgVulRaV.d.ts → design-canvas/export-presets.d.ts} +18 -22
  73. package/dist/design-canvas/index.d.ts +22 -268
  74. package/dist/design-canvas/mcp-entry.d.ts +15 -0
  75. package/dist/design-canvas/mcp-handler.d.ts +34 -0
  76. package/dist/design-canvas/mcp-tools.d.ts +30 -0
  77. package/dist/{model-DnfO_PdJ.d.ts → design-canvas/model.d.ts} +33 -35
  78. package/dist/{operations-ByJ6yXOW.d.ts → design-canvas/operations.d.ts} +21 -25
  79. package/dist/design-canvas/schema.d.ts +558 -0
  80. package/dist/{store-CqfDtnPQ.d.ts → design-canvas/store.d.ts} +8 -12
  81. package/dist/design-canvas/templates.d.ts +72 -0
  82. package/dist/design-canvas/validate.d.ts +32 -0
  83. package/dist/design-canvas-react/components/BleedTrimOverlay.d.ts +22 -0
  84. package/dist/design-canvas-react/components/BrandKnot.d.ts +11 -0
  85. package/dist/design-canvas-react/components/CanvasEmptyState.d.ts +32 -0
  86. package/dist/design-canvas-react/components/CanvasInsertPanel.d.ts +53 -0
  87. package/dist/{lazy-DrkVyDpe.d.ts → design-canvas-react/components/DesignCanvas.d.ts} +27 -20
  88. package/dist/design-canvas-react/components/DesignCanvasEditor.d.ts +23 -0
  89. package/dist/design-canvas-react/components/ElementNode.d.ts +51 -0
  90. package/dist/design-canvas-react/components/ExportControl.d.ts +21 -0
  91. package/dist/design-canvas-react/components/GridLayer.d.ts +47 -0
  92. package/dist/design-canvas-react/components/InlineTextEditor.d.ts +25 -0
  93. package/dist/design-canvas-react/components/LayersPanel.d.ts +20 -0
  94. package/dist/design-canvas-react/components/PagesStrip.d.ts +34 -0
  95. package/dist/design-canvas-react/components/Rulers.d.ts +31 -0
  96. package/dist/design-canvas-react/components/SelectionLayer.d.ts +51 -0
  97. package/dist/design-canvas-react/components/SnapGuidesOverlay.d.ts +25 -0
  98. package/dist/design-canvas-react/components/Toolbar.d.ts +64 -0
  99. package/dist/design-canvas-react/components/Workspace.d.ts +92 -0
  100. package/dist/design-canvas-react/components/ZoomControls.d.ts +14 -0
  101. package/dist/design-canvas-react/components/glyphs.d.ts +46 -0
  102. package/dist/design-canvas-react/components/icon-button.d.ts +22 -0
  103. package/dist/design-canvas-react/components/index.d.ts +27 -0
  104. package/dist/design-canvas-react/components/layer-tree.d.ts +34 -0
  105. package/dist/design-canvas-react/components/ruler-math.d.ts +78 -0
  106. package/dist/design-canvas-react/components/transform-math.d.ts +168 -0
  107. package/dist/{command-stack-TNPWJCzW.d.ts → design-canvas-react/contracts.d.ts} +16 -63
  108. package/dist/design-canvas-react/engine/command-stack.d.ts +43 -0
  109. package/dist/design-canvas-react/engine/commands.d.ts +154 -0
  110. package/dist/design-canvas-react/engine/selection.d.ts +48 -0
  111. package/dist/design-canvas-react/engine/snap.d.ts +24 -0
  112. package/dist/design-canvas-react/engine/zoom-pan.d.ts +18 -0
  113. package/dist/design-canvas-react/engine.d.ts +21 -399
  114. package/dist/design-canvas-react/export-math.d.ts +104 -0
  115. package/dist/design-canvas-react/export.d.ts +89 -0
  116. package/dist/design-canvas-react/index.d.ts +16 -586
  117. package/dist/design-canvas-react/insert-builders.d.ts +61 -0
  118. package/dist/design-canvas-react/lazy.d.ts +21 -6
  119. package/dist/documents/docx.d.ts +50 -0
  120. package/dist/documents/extract.d.ts +87 -0
  121. package/dist/documents/index.d.ts +26 -232
  122. package/dist/documents/media-type.d.ts +33 -0
  123. package/dist/documents/pdf-inspector.d.ts +5 -9
  124. package/dist/{types-DrBidf3O.d.ts → documents/types.d.ts} +13 -15
  125. package/dist/documents/zip.d.ts +56 -0
  126. package/dist/eval/calibration.d.ts +106 -0
  127. package/dist/eval/index.d.ts +8 -116
  128. package/dist/eval-campaign/index.d.ts +11 -12
  129. package/dist/{trust-gate-Dcm5xSva.d.ts → eval-campaign/trust-gate.d.ts} +5 -9
  130. package/dist/forms/blank.d.ts +48 -0
  131. package/dist/forms/fill.d.ts +105 -0
  132. package/dist/forms/index.d.ts +58 -332
  133. package/dist/forms/registry.d.ts +115 -0
  134. package/dist/forms/verify.d.ts +58 -0
  135. package/dist/harness/index.d.ts +21 -19
  136. package/dist/intakes/api.d.ts +5 -11
  137. package/dist/{completion-CvcNUz07.d.ts → intakes/completion.d.ts} +7 -11
  138. package/dist/intakes/context-sufficiency.d.ts +113 -0
  139. package/dist/intakes/drizzle/schema.d.ts +338 -0
  140. package/dist/intakes/drizzle/store.d.ts +75 -0
  141. package/dist/intakes/drizzle.d.ts +12 -391
  142. package/dist/intakes/index.d.ts +23 -113
  143. package/dist/{model-C8U0HZxL.d.ts → intakes/model.d.ts} +15 -17
  144. package/dist/intakes-react/components/BrandMark.d.ts +10 -0
  145. package/dist/intakes-react/components/IntakeInterview.d.ts +15 -0
  146. package/dist/intakes-react/components/index.d.ts +1 -0
  147. package/dist/intakes-react/contracts.d.ts +42 -0
  148. package/dist/intakes-react/index.d.ts +12 -47
  149. package/dist/intakes-react/lazy.d.ts +9 -8
  150. package/dist/integrations/index.d.ts +10 -12
  151. package/dist/{contract-OxG_jVMx.d.ts → interactions/contract.d.ts} +40 -42
  152. package/dist/interactions/index.d.ts +16 -256
  153. package/dist/interactions/route.d.ts +151 -0
  154. package/dist/interactions/sidecar.d.ts +100 -0
  155. package/dist/knowledge/index.d.ts +7 -11
  156. package/dist/knowledge-loop/index.d.ts +13 -20
  157. package/dist/legibility/checks/empty-state.d.ts +59 -0
  158. package/dist/legibility/checks/reachability.d.ts +103 -0
  159. package/dist/legibility/checks/silent-failure.d.ts +57 -0
  160. package/dist/legibility/checks/success.d.ts +38 -0
  161. package/dist/legibility/checks/vocabulary.d.ts +65 -0
  162. package/dist/legibility/cli-args.d.ts +30 -0
  163. package/dist/legibility/cli.d.ts +25 -0
  164. package/dist/legibility/index.d.ts +10 -530
  165. package/dist/legibility/report.d.ts +22 -0
  166. package/dist/legibility/scan.d.ts +29 -0
  167. package/dist/legibility/source.d.ts +132 -0
  168. package/dist/legibility/suppress.d.ts +36 -0
  169. package/dist/legibility/types.d.ts +168 -0
  170. package/dist/legibility/walk-sources.d.ts +21 -0
  171. package/dist/{agent-activity-C8ZG0F0M.d.ts → missions/agent-activity.d.ts} +3 -5
  172. package/dist/missions/engine.d.ts +251 -0
  173. package/dist/missions/events.d.ts +195 -0
  174. package/dist/missions/index.d.ts +12 -765
  175. package/dist/missions/plan-parse.d.ts +50 -0
  176. package/dist/missions/service.d.ts +265 -0
  177. package/dist/{failover-D-3UXXTb.d.ts → model-resolution/failover.d.ts} +10 -12
  178. package/dist/model-resolution/index.d.ts +15 -18
  179. package/dist/object-store/index.d.ts +15 -17
  180. package/dist/openui/action.d.ts +54 -0
  181. package/dist/openui/authoring.d.ts +25 -0
  182. package/dist/openui/index.d.ts +24 -206
  183. package/dist/openui/route.d.ts +124 -0
  184. package/dist/openui/segments.d.ts +71 -0
  185. package/dist/openui/values.d.ts +82 -0
  186. package/dist/openui-react/index.d.ts +9 -13
  187. package/dist/peer-floors/check.d.ts +9 -190
  188. package/dist/peer-floors/cli.d.ts +2 -3
  189. package/dist/peer-floors/dependency-source.d.ts +178 -0
  190. package/dist/plans/index.d.ts +13 -14
  191. package/dist/{billing-BuNlaKlE.d.ts → platform/billing.d.ts} +28 -32
  192. package/dist/platform/guards.d.ts +79 -0
  193. package/dist/platform/hub.d.ts +107 -0
  194. package/dist/platform/index.d.ts +7 -112
  195. package/dist/{sso-Cm00S61u.d.ts → platform/sso.d.ts} +15 -97
  196. package/dist/preflight/cli.d.ts +3 -6
  197. package/dist/preflight/index.d.ts +16 -18
  198. package/dist/preset-cloudflare/headers.d.ts +12 -0
  199. package/dist/preset-cloudflare/index.d.ts +22 -74
  200. package/dist/preset-cloudflare/workflow-instance.d.ts +35 -0
  201. package/dist/profile/budget.d.ts +72 -0
  202. package/dist/profile/fingerprint.d.ts +65 -0
  203. package/dist/profile/index.d.ts +27 -19
  204. package/dist/prompt/index.d.ts +3 -5
  205. package/dist/record/drizzle/schema.d.ts +488 -0
  206. package/dist/record/drizzle/store.d.ts +224 -0
  207. package/dist/record/drizzle.d.ts +10 -679
  208. package/dist/record/fold.d.ts +99 -0
  209. package/dist/record/index.d.ts +13 -13
  210. package/dist/{fold-DACU7gtf.d.ts → record/model.d.ts} +22 -124
  211. package/dist/record/ulid.d.ts +12 -0
  212. package/dist/redact/index.d.ts +14 -16
  213. package/dist/run/index.d.ts +11 -16
  214. package/dist/runtime/agent.d.ts +23 -0
  215. package/dist/runtime/certified-delivery.d.ts +57 -0
  216. package/dist/runtime/index.d.ts +17 -367
  217. package/dist/runtime/loop.d.ts +58 -0
  218. package/dist/runtime/model-catalog.d.ts +103 -0
  219. package/dist/{model-CdCDfBA9.d.ts → runtime/model.d.ts} +25 -27
  220. package/dist/runtime/openai-stream.d.ts +126 -0
  221. package/dist/runtime/surface-profile.d.ts +115 -0
  222. package/dist/sandbox/binary-read.d.ts +63 -0
  223. package/dist/sandbox/diagnostics.d.ts +69 -0
  224. package/dist/sandbox/index.d.ts +103 -1085
  225. package/dist/sandbox/model.d.ts +179 -0
  226. package/dist/sandbox/outcome.d.ts +10 -0
  227. package/dist/sandbox/prewarm-claim-d1.d.ts +80 -0
  228. package/dist/sandbox/prewarm.d.ts +193 -0
  229. package/dist/sandbox/recovery.d.ts +216 -0
  230. package/dist/sandbox/terminal-connection.d.ts +145 -0
  231. package/dist/sandbox/workspace-sandbox-manager.d.ts +44 -0
  232. package/dist/sequences/apply.d.ts +54 -0
  233. package/dist/sequences/captions.d.ts +91 -0
  234. package/dist/sequences/drizzle-store.d.ts +36 -0
  235. package/dist/sequences/drizzle.d.ts +7 -1252
  236. package/dist/sequences/exports.d.ts +138 -0
  237. package/dist/sequences/index.d.ts +19 -340
  238. package/dist/sequences/mcp-entry.d.ts +15 -0
  239. package/dist/sequences/mcp-handler.d.ts +39 -0
  240. package/dist/sequences/mcp-tools.d.ts +47 -0
  241. package/dist/{store-B7LLlk9p.d.ts → sequences/model.d.ts} +26 -110
  242. package/dist/sequences/operations.d.ts +126 -0
  243. package/dist/sequences/schema.d.ts +1231 -0
  244. package/dist/sequences/store.d.ts +81 -0
  245. package/dist/sequences/validate.d.ts +98 -0
  246. package/dist/sequences-react/components/BrandMark.d.ts +10 -0
  247. package/dist/sequences-react/components/PreviewCanvas.d.ts +26 -0
  248. package/dist/sequences-react/components/SnapIndicatorLine.d.ts +11 -0
  249. package/dist/sequences-react/components/TimelineClipChip.d.ts +80 -0
  250. package/dist/sequences-react/components/TimelineEditor.d.ts +44 -0
  251. package/dist/sequences-react/components/TimelineEmptyState.d.ts +21 -0
  252. package/dist/sequences-react/components/TimelineGhostLanes.d.ts +14 -0
  253. package/dist/sequences-react/components/TimelinePlayhead.d.ts +11 -0
  254. package/dist/sequences-react/components/TimelineRuler.d.ts +16 -0
  255. package/dist/sequences-react/components/TimelineSmallScreenGate.d.ts +12 -0
  256. package/dist/sequences-react/components/TimelineTrackRow.d.ts +51 -0
  257. package/dist/sequences-react/components/ZoomControl.d.ts +15 -0
  258. package/dist/sequences-react/components/composite-command.d.ts +8 -0
  259. package/dist/sequences-react/components/glyphs.d.ts +26 -0
  260. package/dist/sequences-react/components/index.d.ts +31 -0
  261. package/dist/sequences-react/components/interaction-math.d.ts +103 -0
  262. package/dist/sequences-react/contracts.d.ts +187 -0
  263. package/dist/sequences-react/engine/command-stack.d.ts +18 -0
  264. package/dist/sequences-react/engine/commands.d.ts +146 -0
  265. package/dist/sequences-react/engine/playback.d.ts +18 -0
  266. package/dist/sequences-react/engine/snap.d.ts +29 -0
  267. package/dist/sequences-react/engine/zoom.d.ts +29 -0
  268. package/dist/sequences-react/index.d.ts +20 -880
  269. package/dist/sequences-react/lazy.d.ts +8 -0
  270. package/dist/sequences-react/media/frame-provider.d.ts +70 -0
  271. package/dist/sequences-react/media/transcription.d.ts +33 -0
  272. package/dist/sequences-react/media/waveform.d.ts +34 -0
  273. package/dist/session-shell/index.d.ts +31 -204
  274. package/dist/session-shell/nav-guard.d.ts +170 -0
  275. package/dist/session-shell/path.d.ts +19 -0
  276. package/dist/signoff/cli.d.ts +4 -7
  277. package/dist/signoff/config.d.ts +12 -0
  278. package/dist/signoff/exec.d.ts +44 -0
  279. package/dist/signoff/index.d.ts +56 -14
  280. package/dist/signoff/invoked-as-script.d.ts +25 -0
  281. package/dist/signoff/node-version.d.ts +50 -0
  282. package/dist/signoff/proof-attach.d.ts +88 -0
  283. package/dist/signoff/proof-cli.d.ts +1 -0
  284. package/dist/signoff/proof-fixture.d.ts +13 -0
  285. package/dist/signoff/proof-from-report.d.ts +22 -0
  286. package/dist/signoff/proof-git.d.ts +57 -0
  287. package/dist/signoff/proof-record.d.ts +202 -0
  288. package/dist/signoff/proof-verify.d.ts +103 -0
  289. package/dist/signoff/proof.d.ts +35 -310
  290. package/dist/signoff/report.d.ts +7 -0
  291. package/dist/{run-D80hoLKh.d.ts → signoff/run.d.ts} +3 -6
  292. package/dist/signoff/schedule.d.ts +55 -0
  293. package/dist/signoff/seeds.d.ts +50 -0
  294. package/dist/signoff/store.d.ts +22 -0
  295. package/dist/{types-Bd6uW9vQ.d.ts → signoff/types.d.ts} +15 -17
  296. package/dist/signoff/workflow-pin.d.ts +56 -0
  297. package/dist/signoff/workspace.d.ts +40 -0
  298. package/dist/skills/index.d.ts +28 -32
  299. package/dist/skills-placement/index.d.ts +7 -11
  300. package/dist/spend/budget.d.ts +123 -0
  301. package/dist/spend/ceiling.d.ts +51 -0
  302. package/dist/spend/cli-args.d.ts +20 -0
  303. package/dist/spend/cli.d.ts +1 -0
  304. package/dist/spend/fixtures/incident-parked-time.d.ts +55 -0
  305. package/dist/spend/index.d.ts +38 -1144
  306. package/dist/spend/liveness.d.ts +131 -0
  307. package/dist/spend/ownership.d.ts +87 -0
  308. package/dist/spend/reconcile.d.ts +109 -0
  309. package/dist/spend/reference.d.ts +42 -0
  310. package/dist/spend/report.d.ts +12 -0
  311. package/dist/spend/store.d.ts +123 -0
  312. package/dist/spend/types.d.ts +466 -0
  313. package/dist/store/index.d.ts +10 -12
  314. package/dist/stories/app-shell/fixtures.d.ts +43 -0
  315. package/dist/stories/app-shell/shell.d.ts +81 -0
  316. package/dist/stories/assistant/fixtures.d.ts +73 -0
  317. package/dist/stories/chat/fixtures.d.ts +70 -0
  318. package/dist/stories/chat/markdown.d.ts +11 -0
  319. package/dist/stories/chat/run-drill-in.d.ts +19 -0
  320. package/dist/stories/chat-controls/fixtures.d.ts +116 -0
  321. package/dist/stories/design-canvas/fixtures.d.ts +57 -0
  322. package/dist/stories/fixtures/canvas.d.ts +10 -0
  323. package/dist/stories/fixtures/catalog.d.ts +7 -0
  324. package/dist/stories/fixtures/chat.d.ts +39 -0
  325. package/dist/stories/fixtures/index.d.ts +4 -0
  326. package/dist/stories/fixtures/sequences.d.ts +17 -0
  327. package/dist/stories/panels/fixtures.d.ts +63 -0
  328. package/dist/stories/sequences/fixtures.d.ts +30 -0
  329. package/dist/stories/studio/fixtures.d.ts +22 -0
  330. package/dist/stream/index.d.ts +10 -56
  331. package/dist/{stream-normalizer-DKRxyVlZ.d.ts → stream/stream-normalizer.d.ts} +23 -26
  332. package/dist/{turn-buffer-COMQUwO2.d.ts → stream/turn-buffer.d.ts} +21 -23
  333. package/dist/stream/turn-identity.d.ts +49 -0
  334. package/dist/studio/generation.d.ts +179 -0
  335. package/dist/studio/index.d.ts +12 -181
  336. package/dist/studio-react/avatar-composer.d.ts +8 -0
  337. package/dist/studio-react/composer-hero.d.ts +12 -0
  338. package/dist/studio-react/composer-shell.d.ts +18 -0
  339. package/dist/studio-react/generation-card.d.ts +9 -0
  340. package/dist/studio-react/generation-detail-modal.d.ts +11 -0
  341. package/dist/studio-react/generation-detail.d.ts +6 -0
  342. package/dist/studio-react/generation-grid.d.ts +15 -0
  343. package/dist/studio-react/image-composer.d.ts +8 -0
  344. package/dist/studio-react/index.d.ts +32 -245
  345. package/dist/studio-react/library-drawer.d.ts +12 -0
  346. package/dist/studio-react/library-panel.d.ts +15 -0
  347. package/dist/studio-react/publish-package-composer.d.ts +18 -0
  348. package/dist/studio-react/result-canvas.d.ts +6 -0
  349. package/dist/studio-react/speech-composer.d.ts +4 -0
  350. package/dist/studio-react/studio-header.d.ts +5 -0
  351. package/dist/studio-react/studio-sheet.d.ts +12 -0
  352. package/dist/studio-react/studio-workspace.d.ts +23 -0
  353. package/dist/studio-react/transcription-composer.d.ts +12 -0
  354. package/dist/studio-react/type-config.d.ts +11 -0
  355. package/dist/studio-react/use-studio-generations.d.ts +20 -0
  356. package/dist/studio-react/video-composer.d.ts +10 -0
  357. package/dist/tangle/index.d.ts +7 -9
  358. package/dist/teams/drizzle/access.d.ts +82 -0
  359. package/dist/{invitations-schema-_fI7HkJP.d.ts → teams/drizzle/invitations-schema.d.ts} +39 -27
  360. package/dist/teams/drizzle/personal-organization.d.ts +41 -0
  361. package/dist/{access-490O6aOU.d.ts → teams/drizzle/schema.d.ts} +57 -122
  362. package/dist/teams/drizzle.d.ts +12 -44
  363. package/dist/teams/index.d.ts +20 -44
  364. package/dist/teams/invitations-api.d.ts +17 -21
  365. package/dist/{invitations-DoYMvXea.d.ts → teams/invitations.d.ts} +14 -18
  366. package/dist/teams/invite.d.ts +42 -0
  367. package/dist/teams/members-api.d.ts +12 -16
  368. package/dist/teams/resend.d.ts +3 -13
  369. package/dist/{roles-B4nU3jDi.d.ts → teams/roles.d.ts} +18 -20
  370. package/dist/teams-react/components/BrandMark.d.ts +10 -0
  371. package/dist/teams-react/components/InvitationsPanel.d.ts +13 -0
  372. package/dist/teams-react/components/InviteAcceptPage.d.ts +10 -0
  373. package/dist/teams-react/components/MembersPanel.d.ts +14 -0
  374. package/dist/teams-react/components/RoleSelect.d.ts +17 -0
  375. package/dist/teams-react/components/index.d.ts +3 -0
  376. package/dist/teams-react/contracts.d.ts +134 -0
  377. package/dist/teams-react/index.d.ts +12 -143
  378. package/dist/teams-react/lazy.d.ts +11 -11
  379. package/dist/test-setup.d.ts +1 -0
  380. package/dist/theme/index.d.ts +6 -104
  381. package/dist/theme/tailwind-preset.d.ts +1 -2
  382. package/dist/theme/theme.d.ts +106 -0
  383. package/dist/theme-contract/cli.d.ts +21 -0
  384. package/dist/theme-contract/index.d.ts +4 -6
  385. package/dist/{auth-BYtiazA4.d.ts → tools/auth.d.ts} +8 -11
  386. package/dist/tools/capability.d.ts +54 -0
  387. package/dist/tools/dispatch.d.ts +37 -0
  388. package/dist/tools/errors.d.ts +8 -0
  389. package/dist/tools/gating.d.ts +62 -0
  390. package/dist/tools/http.d.ts +27 -0
  391. package/dist/tools/index.d.ts +12 -217
  392. package/dist/{mcp-rpc-DYwPlYbZ.d.ts → tools/mcp-rpc.d.ts} +7 -9
  393. package/dist/{mcp-xxoZZfor.d.ts → tools/mcp.d.ts} +14 -16
  394. package/dist/tools/openai.d.ts +28 -0
  395. package/dist/tools/registry.d.ts +39 -0
  396. package/dist/tools/runtime.d.ts +22 -0
  397. package/dist/{types-B25Mib1r.d.ts → tools/types.d.ts} +15 -83
  398. package/dist/{flow-types-CJxEmaRy.d.ts → trace/flow-types.d.ts} +2 -4
  399. package/dist/trace/index.d.ts +11 -148
  400. package/dist/trace/mission-flow.d.ts +82 -0
  401. package/dist/trace/mission-trace.d.ts +52 -0
  402. package/dist/turn-health/classify.d.ts +207 -0
  403. package/dist/turn-health/index.d.ts +29 -637
  404. package/dist/turn-health/lifecycle.d.ts +75 -0
  405. package/dist/turn-health/sink.d.ts +122 -0
  406. package/dist/turn-health/sweep.d.ts +245 -0
  407. package/dist/turn-stream/adapters.d.ts +257 -0
  408. package/dist/turn-stream/core.d.ts +293 -0
  409. package/dist/turn-stream/do.d.ts +144 -0
  410. package/dist/turn-stream/index.d.ts +62 -738
  411. package/dist/turn-stream/memory.d.ts +41 -0
  412. package/dist/vault/ConfirmDialog.d.ts +22 -0
  413. package/dist/vault/VaultPane.d.ts +15 -0
  414. package/dist/{VaultPane-BDP6SB_K.d.ts → vault/contracts.d.ts} +15 -22
  415. package/dist/vault/index.d.ts +15 -22
  416. package/dist/vault/lazy.d.ts +9 -7
  417. package/dist/vault/server.d.ts +8 -10
  418. package/dist/web/free-route-limit.d.ts +187 -0
  419. package/dist/web/index.d.ts +15 -207
  420. package/dist/{rate-limit-BOVmJRXZ.d.ts → web/rate-limit.d.ts} +3 -5
  421. package/dist/web-react/agent-session-controls.d.ts +105 -0
  422. package/dist/web-react/async/async-view.d.ts +69 -0
  423. package/dist/web-react/async/index.d.ts +13 -305
  424. package/dist/web-react/async/state.d.ts +107 -0
  425. package/dist/web-react/async/use-async-resource.d.ts +41 -0
  426. package/dist/web-react/async/use-confirmed-mutation.d.ts +90 -0
  427. package/dist/web-react/brand-mark.d.ts +11 -0
  428. package/dist/web-react/chat-attachments.d.ts +21 -0
  429. package/dist/web-react/chat-composer.d.ts +174 -0
  430. package/dist/web-react/chat-interactions.d.ts +1 -0
  431. package/dist/web-react/chat-mentions.d.ts +48 -0
  432. package/dist/web-react/chat-stream.d.ts +106 -0
  433. package/dist/web-react/class-names.d.ts +10 -0
  434. package/dist/web-react/controls.d.ts +265 -0
  435. package/dist/web-react/durable-chat-cards.d.ts +40 -0
  436. package/dist/web-react/durable-interaction-submit.d.ts +22 -0
  437. package/dist/web-react/durable-plan-card.d.ts +13 -0
  438. package/dist/web-react/durable-plan-flow.d.ts +77 -0
  439. package/dist/web-react/harness-glyphs.d.ts +28 -0
  440. package/dist/web-react/index.d.ts +80 -2347
  441. package/dist/web-react/inert.d.ts +39 -0
  442. package/dist/web-react/insight-card.d.ts +203 -0
  443. package/dist/web-react/interaction-card-support.d.ts +115 -0
  444. package/dist/web-react/interaction-plan-card.d.ts +39 -0
  445. package/dist/web-react/interaction-question-card.d.ts +100 -0
  446. package/dist/web-react/message-attachments.d.ts +56 -0
  447. package/dist/web-react/mission-activity.d.ts +96 -0
  448. package/dist/web-react/motion.d.ts +43 -0
  449. package/dist/web-react/provenance-model.d.ts +195 -0
  450. package/dist/web-react/provenance.d.ts +82 -0
  451. package/dist/web-react/provider-logo.d.ts +14 -0
  452. package/dist/web-react/record-grid-model.d.ts +257 -0
  453. package/dist/web-react/record-grid.d.ts +108 -0
  454. package/dist/web-react/sandbox-terminal.d.ts +90 -0
  455. package/dist/web-react/seat-paywall.d.ts +47 -0
  456. package/dist/web-react/session-history.d.ts +196 -0
  457. package/dist/web-react/smooth-text.d.ts +29 -0
  458. package/dist/web-react/sparkline.d.ts +150 -0
  459. package/dist/web-react/terminal.d.ts +1 -92
  460. package/dist/web-react/use-chat-interactions.d.ts +78 -0
  461. package/dist/web-react/use-composer-attachments.d.ts +111 -0
  462. package/dist/web-react/use-file-mentions.d.ts +94 -0
  463. package/dist/web-react/work-product.d.ts +105 -0
  464. package/dist/work-product/claim-support.d.ts +288 -0
  465. package/dist/work-product/index.d.ts +16 -849
  466. package/dist/work-product/provenance.d.ts +61 -0
  467. package/dist/{queue-VTBA5ONX.d.ts → work-product/queue.d.ts} +10 -12
  468. package/dist/work-product/quote.d.ts +139 -0
  469. package/dist/work-product/route.d.ts +88 -0
  470. package/dist/work-product/service.d.ts +123 -0
  471. package/dist/work-product/tools.d.ts +144 -0
  472. package/dist/{types-CCeYywdS.d.ts → work-product/types.d.ts} +29 -31
  473. package/dist/work-product-react/index.d.ts +19 -8
  474. package/dist/workspace-react/index.d.ts +8 -11
  475. package/package.json +5 -4
  476. package/dist/agent-session-controls-CmlXwp_H.d.ts +0 -384
  477. package/dist/apply-6wlMOLf8.d.ts +0 -280
  478. package/dist/attachment-validation-BfJDBU1g.d.ts +0 -261
  479. package/dist/budget-BOucfcb_.d.ts +0 -142
  480. package/dist/values-C7RidJuI.d.ts +0 -156
@@ -0,0 +1,41 @@
1
+ /**
2
+ * In-process turn-stream harness: a fake namespace that routes `idFromName`
3
+ * to REAL {@link TurnStreamDO} instances over an in-memory storage/socket
4
+ * state. The adapters and the DO run their production code paths — only the
5
+ * Cloudflare runtime (isolation, hibernation, real sockets) is simulated.
6
+ *
7
+ * For vitest composition tests and keyless local dev (the same role
8
+ * `createMemoryTurnEventStore` plays for the D1 store). Not for production:
9
+ * state is per-process and evaporates on restart.
10
+ */
11
+ import { TurnStreamDO, type TurnStreamDOOptions, type TurnStreamDOState, type TurnStreamSocket } from './do';
12
+ import type { TurnStreamNamespaceLike } from './adapters';
13
+ /** A test-side viewer socket: records frames sent by the DO and lets the
14
+ * test drive the `sync` handshake. */
15
+ export interface MemoryTurnStreamSocket extends TurnStreamSocket {
16
+ readonly frames: string[];
17
+ readonly closed: boolean;
18
+ }
19
+ /** Define an in-memory channel for streaming turn-based data with viewer socket connection support */
20
+ export interface MemoryTurnStreamChannel {
21
+ /** Attach a viewer socket to this channel (bypasses the HTTP 101 — the
22
+ * upgrade handshake is Cloudflare-runtime-only) and run its `sync`. */
23
+ connect(input: {
24
+ sessionId: string;
25
+ scope: 'thread' | 'workspace';
26
+ afterSeq?: number;
27
+ }): Promise<MemoryTurnStreamSocket>;
28
+ readonly instance: TurnStreamDO;
29
+ }
30
+ /** Provide an interface to manage channels and namespaces for memory-based turn stream testing */
31
+ export interface MemoryTurnStreamHarness {
32
+ namespace: TurnStreamNamespaceLike;
33
+ /** The channel (creating its DO instance if needed) for a channel key —
34
+ * e.g. `threadChannelKey(ws, thread)` — to connect test viewers. */
35
+ channel(name: string): MemoryTurnStreamChannel;
36
+ }
37
+ /**
38
+ * Build the harness. `createInstance` lets a product test run its own
39
+ * `TurnStreamDO` subclass through the same wiring.
40
+ */
41
+ export declare function createMemoryTurnStreamHarness(createInstance?: (state: TurnStreamDOState) => TurnStreamDO, _options?: TurnStreamDOOptions): MemoryTurnStreamHarness;
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Self-contained confirm dialog — no dialog library. A focus-trapped modal with
3
+ * Esc-to-cancel and Enter-to-confirm, used for create / delete / discard-unsaved
4
+ * flows so the pane carries zero UI-kit dependency.
5
+ */
6
+ import { type ReactNode } from 'react';
7
+ export interface ConfirmDialogProps {
8
+ open: boolean;
9
+ title: string;
10
+ description?: ReactNode;
11
+ confirmLabel?: string;
12
+ cancelLabel?: string;
13
+ /** Styles the confirm button as a destructive action. */
14
+ destructive?: boolean;
15
+ /** Disables the confirm button (e.g. while the action is in flight). */
16
+ confirmDisabled?: boolean;
17
+ onConfirm: () => void;
18
+ onCancel: () => void;
19
+ /** Optional body (e.g. an input field for the create flow). */
20
+ children?: ReactNode;
21
+ }
22
+ export declare function ConfirmDialog({ open, title, description, confirmLabel, cancelLabel, destructive, confirmDisabled, onConfirm, onCancel, children, }: ConfirmDialogProps): import("react").JSX.Element | null;
@@ -0,0 +1,15 @@
1
+ /**
2
+ * The shared 3-pane vault: tree | artifact viewer | optional agent dock. This is
3
+ * pure shell MECHANISM — selection, the dirty-guard + pending-nav state machine,
4
+ * rich/source editor modes, create/delete/refresh, skeletons, an error boundary,
5
+ * and an empty state. It renders NO file tree and NO artifact viewer of its own:
6
+ * those arrive through the `renderTree` / `renderArtifact` / `renderDock` seams,
7
+ * so a product wires sandbox-ui's RichFileTree + FileArtifactPane in ~10 lines.
8
+ *
9
+ * Data flows exclusively through `port` (a `VaultDataPort`). The pane never
10
+ * imports a fetch client, a router, a toast system, or a markdown library — the
11
+ * optional `codec` seam supplies rich/source parsing (identity passthrough by
12
+ * default). Chrome uses the shared theme tokens (bg-card, border-border, …).
13
+ */
14
+ import type { VaultPaneProps } from './contracts';
15
+ export declare function VaultPane(props: VaultPaneProps): import("react").JSX.Element;
@@ -1,6 +1,3 @@
1
- import * as react from 'react';
2
- import { ReactNode } from 'react';
3
-
4
1
  /**
5
2
  * Seams between the shared VaultPane and the host product. Everything here is
6
3
  * interface-only: the pane never imports a file tree, an artifact viewer, a
@@ -14,13 +11,13 @@ import { ReactNode } from 'react';
14
11
  * The only import is React's `ReactNode` type — pure type, no runtime, so this
15
12
  * file stays server-safe and the contracts are usable without React mounted.
16
13
  */
17
-
14
+ import type { ReactNode } from 'react';
18
15
  /**
19
16
  * One node in the vault tree. Field-for-field identical to sandbox-ui's
20
17
  * `FileNode`, so a `VaultTreeNode[]` IS a `FileNode[]` — the product hands
21
18
  * sandbox-ui's `RichFileTree` the `root` from `renderTree` with no conversion.
22
19
  */
23
- interface VaultTreeNode {
20
+ export interface VaultTreeNode {
24
21
  name: string;
25
22
  path: string;
26
23
  type: 'file' | 'directory';
@@ -29,7 +26,7 @@ interface VaultTreeNode {
29
26
  mimeType?: string;
30
27
  }
31
28
  /** A loaded vault file: its text content plus optional preview hints. */
32
- interface VaultFile {
29
+ export interface VaultFile {
33
30
  path: string;
34
31
  content: string;
35
32
  mimeType?: string;
@@ -44,7 +41,7 @@ interface VaultFile {
44
41
  * over fetch, a sandbox session, a worker RPC, whatever the product uses. The
45
42
  * pane calls these; it never knows the transport.
46
43
  */
47
- interface VaultDataPort {
44
+ export interface VaultDataPort {
48
45
  /** List the full vault tree. The returned nodes feed `renderTree` directly. */
49
46
  listTree(): Promise<VaultTreeNode[]>;
50
47
  /** Read a single file by path. */
@@ -58,14 +55,14 @@ interface VaultDataPort {
58
55
  deleteFile(path: string): Promise<void>;
59
56
  }
60
57
  /** The Vault operation that failed at the product-owned data-port seam. */
61
- type VaultOperation = 'list' | 'read' | 'save' | 'create' | 'delete';
58
+ export type VaultOperation = 'list' | 'read' | 'save' | 'create' | 'delete';
62
59
  /** Whether the operation itself failed or a mutation succeeded but its
63
60
  * follow-up tree refresh did not. */
64
- type VaultOperationPhase = 'operation' | 'post-mutation-refresh';
61
+ export type VaultOperationPhase = 'operation' | 'post-mutation-refresh';
65
62
  /** Structured failure reported to an optional host observer. VaultPane always
66
63
  * renders its own recovery UI; this payload is for telemetry or additional
67
64
  * product presentation and never controls the pane's state machine. */
68
- interface VaultOperationFailure {
65
+ export interface VaultOperationFailure {
69
66
  operation: VaultOperation;
70
67
  phase: VaultOperationPhase;
71
68
  path?: string;
@@ -78,7 +75,7 @@ interface VaultOperationFailure {
78
75
  * dirtiness, so any structure (frontmatter + body, AST, etc.) works as long as
79
76
  * `parse` and `serialize` are inverses for unchanged content.
80
77
  */
81
- type VaultRichParts = unknown;
78
+ export type VaultRichParts = unknown;
82
79
  /**
83
80
  * Optional rich/source codec. When supplied, the pane's rich mode edits
84
81
  * `parse(raw)` and the source mode edits `raw`; switching modes recomputes
@@ -91,18 +88,18 @@ type VaultRichParts = unknown;
91
88
  * uses that round-trip to detect edits, so a non-inverse opens files false-dirty
92
89
  * and a save corrupts them.
93
90
  */
94
- interface VaultMarkdownCodec {
91
+ export interface VaultMarkdownCodec {
95
92
  parse(raw: string): VaultRichParts;
96
93
  serialize(parts: VaultRichParts): string;
97
94
  }
98
95
  /** Props the pane passes to the product's tree renderer (e.g. RichFileTree). */
99
- interface VaultTreeRenderProps {
96
+ export interface VaultTreeRenderProps {
100
97
  root: VaultTreeNode;
101
98
  selectedPath?: string;
102
99
  onSelect: (path: string) => void;
103
100
  }
104
101
  /** Props the pane passes to the product's artifact renderer (e.g. FileArtifactPane). */
105
- interface VaultArtifactRenderProps {
102
+ export interface VaultArtifactRenderProps {
106
103
  file: VaultFile | null;
107
104
  loading: boolean;
108
105
  /** Current editor mode. In 'rich' mode the product MAY host a WYSIWYG editor
@@ -121,13 +118,13 @@ interface VaultArtifactRenderProps {
121
118
  onSave: () => void;
122
119
  }
123
120
  /** Props the pane passes to the product's optional dock renderer (e.g. an agent dock). */
124
- interface VaultDockRenderProps {
121
+ export interface VaultDockRenderProps {
125
122
  file: VaultFile | null;
126
123
  open: boolean;
127
124
  onClose: () => void;
128
125
  }
129
126
  /** Configures the dock toggle VaultPane renders above the artifact pane. */
130
- interface VaultDockToggle {
127
+ export interface VaultDockToggle {
131
128
  /** Button + aria label (e.g. 'Discuss', 'Review'). */
132
129
  label: string;
133
130
  /** Tooltip when enabled. Defaults to `label`. */
@@ -137,9 +134,9 @@ interface VaultDockToggle {
137
134
  disabledWhenDirty?: boolean;
138
135
  }
139
136
  /** The two editor surfaces the pane switches between for editable text files. */
140
- type VaultEditorMode = 'rich' | 'source';
137
+ export type VaultEditorMode = 'rich' | 'source';
141
138
  /** Define the properties and render methods for the vault pane UI components */
142
- interface VaultPaneProps {
139
+ export interface VaultPaneProps {
143
140
  /** Product-owned data access. */
144
141
  port: VaultDataPort;
145
142
  /** Renders the left tree pane. The product passes sandbox-ui's RichFileTree. */
@@ -186,7 +183,3 @@ interface VaultPaneProps {
186
183
  codec?: VaultMarkdownCodec;
187
184
  className?: string;
188
185
  }
189
-
190
- declare function VaultPane(props: VaultPaneProps): react.JSX.Element;
191
-
192
- export { type VaultArtifactRenderProps as V, type VaultDataPort as a, type VaultDockRenderProps as b, type VaultDockToggle as c, type VaultEditorMode as d, type VaultFile as e, type VaultMarkdownCodec as f, type VaultOperation as g, type VaultOperationFailure as h, type VaultOperationPhase as i, VaultPane as j, type VaultPaneProps as k, type VaultRichParts as l, type VaultTreeNode as m, type VaultTreeRenderProps as n };
@@ -1,22 +1,15 @@
1
- export { V as VaultArtifactRenderProps, a as VaultDataPort, b as VaultDockRenderProps, c as VaultDockToggle, d as VaultEditorMode, e as VaultFile, f as VaultMarkdownCodec, g as VaultOperation, h as VaultOperationFailure, i as VaultOperationPhase, j as VaultPane, k as VaultPaneProps, l as VaultRichParts, m as VaultTreeNode, n as VaultTreeRenderProps } from '../VaultPane-BDP6SB_K.js';
2
- import * as react from 'react';
3
- import { ReactNode } from 'react';
4
-
5
- interface ConfirmDialogProps {
6
- open: boolean;
7
- title: string;
8
- description?: ReactNode;
9
- confirmLabel?: string;
10
- cancelLabel?: string;
11
- /** Styles the confirm button as a destructive action. */
12
- destructive?: boolean;
13
- /** Disables the confirm button (e.g. while the action is in flight). */
14
- confirmDisabled?: boolean;
15
- onConfirm: () => void;
16
- onCancel: () => void;
17
- /** Optional body (e.g. an input field for the create flow). */
18
- children?: ReactNode;
19
- }
20
- declare function ConfirmDialog({ open, title, description, confirmLabel, cancelLabel, destructive, confirmDisabled, onConfirm, onCancel, children, }: ConfirmDialogProps): react.JSX.Element | null;
21
-
22
- export { ConfirmDialog, type ConfirmDialogProps };
1
+ /**
2
+ * `@tangle-network/agent-app/vault` the shared 3-pane VaultPane (tree |
3
+ * artifact viewer | optional agent dock) every Tangle agent product otherwise
4
+ * hand-rolls. Pure shell mechanism: selection, the dirty-guard state machine,
5
+ * rich/source editor modes, create/delete, skeletons, and an error boundary.
6
+ * The product supplies the data (`VaultDataPort`) and the renderers; the pane
7
+ * imports no file tree, no artifact viewer, and no dialog library.
8
+ *
9
+ * Never re-exported from the package root barrel — `react` is an optional peer
10
+ * and DOM access begins only inside component render. A `React.lazy` code-split
11
+ * entry lives at `./vault/lazy`.
12
+ */
13
+ export * from './contracts';
14
+ export { VaultPane } from './VaultPane';
15
+ export { ConfirmDialog, type ConfirmDialogProps } from './ConfirmDialog';
@@ -1,8 +1,10 @@
1
- import * as react from 'react';
2
- import { j as VaultPane } from '../VaultPane-BDP6SB_K.js';
3
- export { k as VaultPaneProps } from '../VaultPane-BDP6SB_K.js';
4
-
1
+ /**
2
+ * Code-split entry for the vault surface. Products that don't need the vault on
3
+ * initial load import `VaultPaneLazy` (a `React.lazy` handle) instead of the
4
+ * component directly, so the pane chunk loads on first render. Mount inside a
5
+ * `<Suspense>` boundary; the product provides the fallback.
6
+ */
7
+ import type { VaultPaneProps } from './contracts';
8
+ export type { VaultPaneProps };
5
9
  /** Resolve VaultPane component lazily to optimize loading and improve performance */
6
- declare const VaultPaneLazy: react.LazyExoticComponent<typeof VaultPane>;
7
-
8
- export { VaultPaneLazy };
10
+ export declare const VaultPaneLazy: import("react").LazyExoticComponent<typeof import("./VaultPane").VaultPane>;
@@ -29,11 +29,11 @@
29
29
  * live baseline (both this and `VAULT_DELETION_REFUSAL_MIN_LIVE_FILES` must
30
30
  * hold — a tiny vault can lose all its files without tripping this ratio
31
31
  * gate; `refusesAllFiles` catches that case separately). */
32
- declare const VAULT_DELETION_REFUSAL_RATIO = 0.75;
32
+ export declare const VAULT_DELETION_REFUSAL_RATIO = 0.75;
33
33
  /** The blast-radius ratio gate only engages once the live baseline is at
34
34
  * least this large, so a 2-file vault losing 1 file (50%) is not refused on
35
35
  * ratio alone. */
36
- declare const VAULT_DELETION_REFUSAL_MIN_LIVE_FILES = 10;
36
+ export declare const VAULT_DELETION_REFUSAL_MIN_LIVE_FILES = 10;
37
37
  /** Overrides for `assessVaultDeletionBatch`'s two thresholds. Both default to
38
38
  * the exported constants above. Values are validated fail-loud:
39
39
  * `refusalRatio` must be finite and in (0, 1] — `NaN` (a config parse
@@ -41,11 +41,11 @@ declare const VAULT_DELETION_REFUSAL_MIN_LIVE_FILES = 10;
41
41
  * disable the guard, and `0` would refuse a zero-deletion batch; and
42
42
  * `minLiveFiles` must be finite and >= 0. Invalid values throw `RangeError`
43
43
  * instead of running with a guard that cannot fire (or cannot pass). */
44
- interface VaultDeletionPolicy {
44
+ export interface VaultDeletionPolicy {
45
45
  refusalRatio?: number;
46
46
  minLiveFiles?: number;
47
47
  }
48
- interface VaultDeletionAssessment {
48
+ export interface VaultDeletionAssessment {
49
49
  /** True when no refusal reason fired. */
50
50
  allowed: boolean;
51
51
  /** Precedence when multiple reasons would fire: `empty-manifest` beats
@@ -74,7 +74,7 @@ interface VaultDeletionAssessment {
74
74
  * diagnostic that matters to a caller is "the scan was empty", not merely
75
75
  * "everything would go".
76
76
  */
77
- declare function assessVaultDeletionBatch(input: {
77
+ export declare function assessVaultDeletionBatch(input: {
78
78
  /** LIVE (non-tombstoned) baseline path set — the caller pre-filters, as gtm does. */
79
79
  baselinePaths: readonly string[];
80
80
  /** Paths a reconciliation pass proposes to delete; intersected with `baselinePaths` internally. */
@@ -85,7 +85,7 @@ declare function assessVaultDeletionBatch(input: {
85
85
  /** The subset of a sandbox's filesystem-incarnation identity this module
86
86
  * needs. A product's real incarnation type is structurally compatible —
87
87
  * no import required. */
88
- interface FilesystemIncarnationLike {
88
+ export interface FilesystemIncarnationLike {
89
89
  filesystemIncarnationId?: string;
90
90
  filesystemIncarnationProvenance?: 'fresh' | 'restored' | 'unknown';
91
91
  filesystemIncarnationReadiness?: 'transitioning' | 'ready';
@@ -96,7 +96,7 @@ interface FilesystemIncarnationLike {
96
96
  * caller's `switch` gets compile-time coverage instead of a stringly-typed
97
97
  * status it can forget to branch on.
98
98
  */
99
- type IncarnationComparison = {
99
+ export type IncarnationComparison = {
100
100
  verdict: 'match';
101
101
  } | {
102
102
  verdict: 'mismatch';
@@ -125,6 +125,4 @@ type IncarnationComparison = {
125
125
  * 4. `mismatch` — the baseline id and current id disagree.
126
126
  * 5. `match` — same incarnation.
127
127
  */
128
- declare function compareIncarnationBaseline(baselineId: string | undefined, current: FilesystemIncarnationLike): IncarnationComparison;
129
-
130
- export { type FilesystemIncarnationLike, type IncarnationComparison, VAULT_DELETION_REFUSAL_MIN_LIVE_FILES, VAULT_DELETION_REFUSAL_RATIO, type VaultDeletionAssessment, type VaultDeletionPolicy, assessVaultDeletionBatch, compareIncarnationBaseline };
128
+ export declare function compareIncarnationBaseline(baselineId: string | undefined, current: FilesystemIncarnationLike): IncarnationComparison;
@@ -0,0 +1,187 @@
1
+ /**
2
+ * Rate-limit policy for FREE routes: authenticated, unmetered, compute-bearing
3
+ * endpoints.
4
+ *
5
+ * Billing meters the chat turn. Everything deterministic a product adds beside
6
+ * it — a planning recompute fired on every slider drag, a redline diff, a
7
+ * deadline computation — runs unmetered, so nothing bounds how much worker CPU
8
+ * one authenticated caller can spend. `checkRateLimit` is the primitive; this
9
+ * is the policy around it, so a route declares a cost class instead of each one
10
+ * inventing a key format, a budget, and a denial response.
11
+ *
12
+ * Three rules this enforces that a hand-rolled call site usually does not:
13
+ *
14
+ * 1. **Identity is required.** A missing subject is denied, never pooled into a
15
+ * shared bucket and never quietly keyed by IP — a shared bucket makes one
16
+ * heavy user throttle everyone, and an IP key makes one NAT do the same.
17
+ * 2. **A limiter that throws denies.** KV `get`/`put` failures are transport
18
+ * failures; treating them as "allowed" converts a KV outage into an
19
+ * unbounded-compute hole, which is exactly when the limiter matters most.
20
+ * 3. **The denial is a typed, correctable outcome** — reason, HTTP status and
21
+ * `Retry-After` — so the caller answers the client rather than failing
22
+ * opaquely or, worse, continuing.
23
+ *
24
+ * ```ts
25
+ * export const action = withFreeRouteLimit(
26
+ * {
27
+ * route: 'tax.plan.recompute',
28
+ * costClass: 'interactive',
29
+ * kv: ({ context }) => context.cloudflare.env.RATE_LIMIT_KV,
30
+ * identify: async ({ request }) => {
31
+ * const session = await requireSession(request)
32
+ * return { subject: session.userId, workspace: session.workspaceId }
33
+ * },
34
+ * },
35
+ * async ({ request }) => Response.json(recompute(await request.json())),
36
+ * )
37
+ * ```
38
+ */
39
+ import { type KvLike } from './rate-limit';
40
+ /** Requests allowed per identity inside a sliding window. */
41
+ export interface RateLimitBudget {
42
+ limit: number;
43
+ windowSeconds: number;
44
+ }
45
+ /**
46
+ * How expensive one call is, which is what picks the default budget.
47
+ *
48
+ * - `interactive` — a control the user drags or types into, recomputed per
49
+ * tick. Sized for sustained two-per-second interaction, so a real slider
50
+ * never trips it and a script still stops.
51
+ * - `compute` — a derivation the user triggers deliberately (recalculate a
52
+ * plan, diff a document, compute a deadline set). The default.
53
+ * - `heavy` — whole-document or whole-matter work measured in seconds of CPU.
54
+ */
55
+ export type FreeRouteClass = 'interactive' | 'compute' | 'heavy';
56
+ /** Default budget per cost class. A product overrides with an explicit
57
+ * `budget` when it has measured its own route. */
58
+ export declare const FREE_ROUTE_BUDGETS: Readonly<Record<FreeRouteClass, RateLimitBudget>>;
59
+ /** A workspace's shared ceiling defaults to this many times one member's, so a
60
+ * multi-seat tenant is bounded without a single active member tripping it. */
61
+ export declare const WORKSPACE_BUDGET_MULTIPLIER = 5;
62
+ /** Why a call was refused. Every value is a REFUSAL — there is no reason code
63
+ * that lets the handler run. */
64
+ export type FreeRouteDenialReason =
65
+ /** No authenticated subject. Not correctable by waiting. */
66
+ 'unidentified'
67
+ /** The window is full for this subject or workspace. */
68
+ | 'rate-limited'
69
+ /** The limiter itself failed (KV read/write threw). Denied, not passed. */
70
+ | 'limiter-unavailable';
71
+ /** Which window refused the call. `null` when no window was consulted. */
72
+ export type FreeRouteDimension = 'subject' | 'workspace' | null;
73
+ /**
74
+ * A correctable refusal: the caller maps `status` + `retryAfterSeconds` onto a
75
+ * response (see {@link freeRouteLimitResponse}) so the client learns what to do
76
+ * next. Carrying the limiter's own failure in `cause` keeps a KV outage
77
+ * diagnosable instead of collapsing into a generic 429.
78
+ */
79
+ export declare class FreeRouteLimitError extends Error {
80
+ readonly reason: FreeRouteDenialReason;
81
+ readonly status: 401 | 429 | 503;
82
+ readonly retryAfterSeconds: number;
83
+ readonly dimension: FreeRouteDimension;
84
+ readonly route: string;
85
+ constructor(init: {
86
+ reason: FreeRouteDenialReason;
87
+ status: 401 | 429 | 503;
88
+ retryAfterSeconds: number;
89
+ dimension: FreeRouteDimension;
90
+ route: string;
91
+ message: string;
92
+ cause?: unknown;
93
+ });
94
+ }
95
+ /** What remains of the binding window after an allowed call. */
96
+ export interface FreeRouteAllowance {
97
+ /** Remaining calls in whichever window is tightest. */
98
+ remaining: number;
99
+ /** Unix seconds at which that window resets. */
100
+ resetAt: number;
101
+ /** The budget that window enforces. */
102
+ budget: RateLimitBudget;
103
+ /** Which window is tightest — `subject` unless a workspace ceiling binds. */
104
+ dimension: Exclude<FreeRouteDimension, null>;
105
+ }
106
+ /** Typed outcome at the route boundary: an allowance, or a refusal that says
107
+ * how to correct it. There is no third state and no silent pass. */
108
+ export type FreeRouteLimitOutcome = {
109
+ succeeded: true;
110
+ value: FreeRouteAllowance;
111
+ } | {
112
+ succeeded: false;
113
+ error: FreeRouteLimitError;
114
+ };
115
+ export interface FreeRouteLimitInput {
116
+ kv: KvLike;
117
+ /** Stable route name. Part of the key, so two routes never share a window. */
118
+ route: string;
119
+ /** The authenticated subject (user id). Absent or blank ⇒ denied. */
120
+ subject: string | null | undefined;
121
+ /** Tenant the call belongs to. When present, a second, wider window bounds
122
+ * the workspace as a whole. */
123
+ workspace?: string | null;
124
+ /** Cost class picking the default budget. Ignored when `budget` is given.
125
+ * Default `'compute'`. */
126
+ costClass?: FreeRouteClass;
127
+ budget?: RateLimitBudget;
128
+ /** Workspace ceiling. Defaults to the subject budget's limit multiplied by
129
+ * {@link WORKSPACE_BUDGET_MULTIPLIER} over the same window. */
130
+ workspaceBudget?: RateLimitBudget;
131
+ }
132
+ /**
133
+ * Decide whether one authenticated, unmetered call may run.
134
+ *
135
+ * Checks the subject's window first, then the workspace ceiling when a
136
+ * workspace is supplied; the tighter of the two is what the allowance reports.
137
+ * Every failure path returns a refusal — none returns an allowance.
138
+ */
139
+ export declare function checkFreeRouteLimit(input: FreeRouteLimitInput): Promise<FreeRouteLimitOutcome>;
140
+ export interface FreeRouteLimitResponseOptions {
141
+ /** Extra response headers (a product's security headers, CORS). */
142
+ headers?: Record<string, string>;
143
+ /** Client-facing message. Defaults to the error's own message. */
144
+ message?: string;
145
+ }
146
+ /** The refusal as an HTTP response: the error's status, a JSON body carrying
147
+ * the machine-readable `reason`, and `Retry-After` when waiting can fix it. */
148
+ export declare function freeRouteLimitResponse(error: FreeRouteLimitError, options?: FreeRouteLimitResponseOptions): Response;
149
+ /** The authenticated caller behind one request. */
150
+ export interface FreeRouteIdentity {
151
+ subject: string;
152
+ workspace?: string | null;
153
+ }
154
+ export interface WithFreeRouteLimitOptions<TArgs> {
155
+ /** Stable route name; part of the key. */
156
+ route: string;
157
+ costClass?: FreeRouteClass;
158
+ budget?: RateLimitBudget;
159
+ workspaceBudget?: RateLimitBudget;
160
+ /** The KV binding for this request. */
161
+ kv: (args: TArgs) => KvLike;
162
+ /**
163
+ * Resolve the authenticated caller. Return `null` for an unauthenticated
164
+ * request — the wrapper then refuses with 401 and the handler never runs.
165
+ *
166
+ * A THROW here propagates: an auth lookup that failed is not the same as an
167
+ * absent session, and the wrapper will not invent a status for it. The
168
+ * handler still does not run, so the failure stays closed.
169
+ */
170
+ identify: (args: TArgs) => Promise<FreeRouteIdentity | null> | FreeRouteIdentity | null;
171
+ /** Build the refusal response. Defaults to {@link freeRouteLimitResponse}. */
172
+ onDenied?: (error: FreeRouteLimitError, args: TArgs) => Response | Promise<Response>;
173
+ }
174
+ /**
175
+ * Wrap an authenticated, unmetered, compute-bearing route handler in its
176
+ * budget. The limit is applied BEFORE the handler is entered — including
177
+ * before the request body is read — so a refused call costs a KV read, not the
178
+ * compute the route exists to do.
179
+ *
180
+ * The handler's own response is returned untouched: this never rewrites status,
181
+ * body or headers on the success path, so it cannot break a streaming or
182
+ * pre-built response.
183
+ *
184
+ * `TArgs` is the router's handler-argument object (react-router's
185
+ * `ActionFunctionArgs`, or any single-object shape a product uses).
186
+ */
187
+ export declare function withFreeRouteLimit<TArgs>(options: WithFreeRouteLimitOptions<TArgs>, handler: (args: TArgs) => Response | Promise<Response>): (args: TArgs) => Promise<Response>;