@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
@@ -1,309 +1,17 @@
1
- import { ReactElement, ReactNode } from 'react';
2
-
3
1
  /**
4
- * The fetch-state contract: a failed load cannot render as empty data.
2
+ * `web-react/async` the three-state fetch primitive.
5
3
  *
6
- * Three shapes produce that defect, and two audited verticals shipped dozens of
7
- * each: a `catch` handler that only clears a loading flag, an early return on a
8
- * non-ok response, and a bare `null` returned while loading. All three end with
9
- * the same pixels a successful-but-empty load produces "No templates
10
- * available", an empty member list, a blank conversation so the reader cannot
11
- * tell "we asked and there is nothing" from "we could not ask", and the retry
12
- * that would fix it is never offered.
4
+ * A failed load, an empty result and a load in flight are three different
5
+ * things, and every product that hand-rolled them collapsed the first two: a
6
+ * network failure rendered as "No templates available", an empty member list or
7
+ * a blank conversation, with no message and no retry. The write half collapsed
8
+ * the same way in the other direction — a save button reading "Saved" over a
9
+ * 404, because a resolved promise was read as a landed write.
13
10
  *
14
- * `AsyncResourceState` makes the two outcomes separate variants: `error` is the
15
- * only one carrying a message and it is never reachable with a value, `empty` is
16
- * the only one carrying a resolved-but-empty value and it never carries a
17
- * message. A component rendering one is structurally not rendering the other.
18
- *
19
- * This file is React-free so the state model, the emptiness rule and the
20
- * Response readers can be unit-tested and reused outside a component.
21
- */
22
- /**
23
- * - `idle` — no load has been attempted (the hook is disabled, or its inputs
24
- * are not resolved yet). Distinct from `loading`: nothing is in flight.
25
- * - `loading` — a load is in flight and no value is held.
26
- * - `error` — the load failed. Carries the message and never a value.
27
- * - `empty` — the load succeeded and the value is empty. Never carries a message.
28
- * - `ready` — the load succeeded and the value is non-empty.
29
- */
30
- type AsyncResourceStatus = 'idle' | 'loading' | 'error' | 'empty' | 'ready';
31
- /** Re-runs the load. Present on every variant so the error branch can never be
32
- * rendered without the action that recovers from it. */
33
- interface AsyncRetryable {
34
- readonly retry: () => void;
35
- }
36
- type AsyncResourceState<T> = ({
37
- readonly status: 'idle';
38
- } & AsyncRetryable) | ({
39
- readonly status: 'loading';
40
- } & AsyncRetryable) | ({
41
- readonly status: 'error';
42
- readonly message: string;
43
- readonly error: unknown;
44
- } & AsyncRetryable) | ({
45
- readonly status: 'empty';
46
- readonly value: T;
47
- } & AsyncRetryable) | ({
48
- readonly status: 'ready';
49
- readonly value: T;
50
- } & AsyncRetryable);
51
- /** The state model without the retry action — what a reducer produces. */
52
- type AsyncResolution<T> = {
53
- readonly status: 'idle';
54
- } | {
55
- readonly status: 'loading';
56
- } | {
57
- readonly status: 'error';
58
- readonly message: string;
59
- readonly error: unknown;
60
- } | {
61
- readonly status: 'empty';
62
- readonly value: T;
63
- } | {
64
- readonly status: 'ready';
65
- readonly value: T;
66
- };
67
- declare const DEFAULT_ASYNC_ERROR_MESSAGE = "Something went wrong. Please try again.";
68
- /**
69
- * Default emptiness rule: `null`/`undefined`, an empty array, an empty `Map` or
70
- * `Set`. A string, a number and a plain object are `ready` — `''` and `{}` are
71
- * legitimate values for the resources that produce them, and guessing otherwise
72
- * would route a real answer into the empty branch. Pass `isEmpty` for a shape
73
- * this cannot see into (`{ items: [] }`, a paged envelope, a count).
74
- */
75
- declare function defaultIsEmpty(value: unknown): boolean;
76
- /** Best available human-readable message for a thrown value. Never returns an
77
- * empty string — a blank error block reads as a rendering bug. */
78
- declare function asyncErrorMessage(error: unknown, fallback?: string): string;
79
- /** Classifies a successfully loaded value into `ready` or `empty`. */
80
- declare function resolveAsyncValue<T>(value: T, isEmpty?: (value: T) => boolean): AsyncResolution<T>;
81
- /**
82
- * A non-ok HTTP response, as a throwable. `requireOk`/`readOkJson` raise this so
83
- * a non-ok response reaches the `error` branch instead of an early `return` that
84
- * leaves the caller rendering the empty branch.
85
- */
86
- declare class AsyncRequestError extends Error {
87
- readonly status: number;
88
- readonly statusText: string;
89
- readonly url: string;
90
- /** First 200 characters of the response body when it could be read, else `''`.
91
- * Kept off `message` so a server's HTML error page never becomes UI copy. */
92
- readonly body: string;
93
- constructor(response: {
94
- status: number;
95
- statusText?: string;
96
- url?: string;
97
- }, body?: string);
98
- }
99
- /** Returns the response when ok; throws `AsyncRequestError` otherwise. Reads the
100
- * body only on the failure path, so the caller keeps an unconsumed stream. */
101
- declare function requireOk(response: Response): Promise<Response>;
102
- /**
103
- * `requireOk` + `response.json()`. Without `parse` the result is `unknown`, so a
104
- * caller narrows at the JSON boundary rather than inheriting an unchecked shape;
105
- * with `parse` the validator runs inside the load and a rejection lands in the
106
- * `error` branch.
107
- */
108
- declare function readOkJson(response: Response): Promise<unknown>;
109
- declare function readOkJson<T>(response: Response, parse: (data: unknown) => T): Promise<T>;
110
-
111
- interface AsyncLoadContext {
112
- /** Aborted when the inputs change, a retry supersedes this load, or the
113
- * component unmounts. Forward it to `fetch` so a superseded request stops. */
114
- readonly signal: AbortSignal;
115
- }
116
- interface UseAsyncResourceOptions<T> {
117
- /**
118
- * The one load. Reject (or throw) to reach the `error` branch — a non-ok
119
- * response must reject too, which is what `requireOk`/`readOkJson` are for.
120
- * Read from a ref internally, so an inline arrow does not re-trigger; `deps`
121
- * is what declares when the load must run again.
122
- */
123
- load: (context: AsyncLoadContext) => Promise<T>;
124
- /** Re-runs the load when any entry changes by `Object.is`, like `useEffect`. */
125
- deps?: readonly unknown[];
126
- /** `false` holds the resource at `idle` and runs nothing — for inputs that are
127
- * not resolved yet. Flipping it to `true` starts the load. */
128
- enabled?: boolean;
129
- /** First-render seed (an SSR/loader page). The hook starts resolved and skips
130
- * the first load. Read once — later identity changes are ignored, so a
131
- * revalidating loader belongs in `deps`, not here. */
132
- initialValue?: T;
133
- /** Splits a successful load into `empty` vs `ready`. Default: `defaultIsEmpty`. */
134
- isEmpty?: (value: T) => boolean;
135
- /** Maps a thrown value to the message the `error` branch renders. */
136
- errorMessage?: (error: unknown) => string;
137
- }
138
- /**
139
- * The five-state fetch machine: `idle | loading | error | empty | ready`.
140
- *
141
- * What it guarantees, and what the hand-rolled versions it replaces did not:
142
- *
143
- * - a rejected load lands on `error` with a message and a `retry`, never on an
144
- * empty list;
145
- * - `empty` is only reachable from a load that actually succeeded;
146
- * - a superseded load (inputs changed, retry pressed, component unmounted) is
147
- * aborted and its late result is dropped by a monotonic sequence guard, so it
148
- * cannot repaint a newer view.
149
- */
150
- declare function useAsyncResource<T>({ load, deps, enabled, initialValue, isEmpty, errorMessage, }: UseAsyncResourceOptions<T>): AsyncResourceState<T>;
151
-
152
- /**
153
- * The brand that makes "Saved" unreachable without a confirmed write.
154
- *
155
- * A resolved promise is not a success: `fetch` resolves on a 404, and the
156
- * shipped defect this closes is a save button that rendered "Saved" because the
157
- * only thing awaited was that the request came back at all. The success variant
158
- * therefore carries a symbol no object literal can spell, so the only way into
159
- * `succeeded` is `confirmWrite` / `confirmResponse` / `confirmJson` — each of
160
- * which has already checked that the write landed.
161
- */
162
- declare const CONFIRMED_WRITE: unique symbol;
163
- interface MutationConfirmed<T> {
164
- readonly succeeded: true;
165
- readonly value: T;
166
- readonly [CONFIRMED_WRITE]: true;
167
- }
168
- interface MutationRejected {
169
- readonly succeeded: false;
170
- /** Safe to render: what the user is told the write did not do. */
171
- readonly message: string;
172
- readonly error?: unknown;
173
- }
174
- type MutationOutcome<T> = MutationConfirmed<T> | MutationRejected;
175
- /** Confirms a write whose success is already established (an SDK call that
176
- * throws on failure, a store returning its own typed outcome). The deliberate
177
- * act is the point — this call is what an audit greps for. */
178
- declare function confirmWrite<T>(value: T): MutationConfirmed<T>;
179
- /** A write that did not land. Constructible by hand: failing loud is never the
180
- * direction that needs guarding. */
181
- declare function rejectWrite(message: string, error?: unknown): MutationRejected;
182
- /** Confirms only a 2xx response. A 404/500 becomes a rejection carrying the
183
- * status — never a success, whatever the promise did. */
184
- declare function confirmResponse(response: Response): Promise<MutationOutcome<Response>>;
185
- /** `confirmResponse` + a JSON body. A non-ok status, an unreadable body and a
186
- * throwing `parse` are all rejections. */
187
- declare function confirmJson<T>(response: Response, parse: (data: unknown) => T): Promise<MutationOutcome<T>>;
188
- /** True only for a value built by one of the confirm helpers. Takes `unknown`
189
- * because an untyped consumer can return anything from `mutate`. */
190
- declare function isConfirmedWrite<T>(outcome: unknown): outcome is MutationConfirmed<T>;
191
- type MutationState<T> = {
192
- readonly status: 'idle';
193
- } | {
194
- readonly status: 'pending';
195
- } | {
196
- readonly status: 'succeeded';
197
- readonly value: T;
198
- } | {
199
- readonly status: 'failed';
200
- readonly message: string;
201
- readonly error: unknown;
202
- };
203
- interface UseConfirmedMutationOptions<TInput, TValue> {
204
- /**
205
- * Performs the write and returns a confirmation. Anything else — including a
206
- * hand-written `{ succeeded: true }` — is treated as a failed write, because
207
- * an unbranded object is exactly the shape produced by code that never
208
- * checked the response.
209
- *
210
- * The context signal aborts only when a later `run` supersedes this one. It is
211
- * NOT aborted on unmount: a write the user asked for must not be cancelled by
212
- * navigating away.
213
- */
214
- mutate: (input: TInput, context: AsyncLoadContext) => Promise<MutationOutcome<TValue>>;
215
- /** Fires after the state reaches `succeeded` (latest run only). */
216
- onSucceeded?: (value: TValue) => void;
217
- /** Fires after the state reaches `failed` (latest run only). */
218
- onFailed?: (message: string, error: unknown) => void;
219
- /** Maps a thrown value to the message the `failed` state renders. */
220
- errorMessage?: (error: unknown) => string;
221
- }
222
- interface ConfirmedMutation<TInput, TValue> {
223
- readonly state: MutationState<TValue>;
224
- /** Runs the write. Never rejects — the outcome is returned and mirrored into
225
- * `state`. Concurrent runs are last-write-wins; disable the control while
226
- * `state.status === 'pending'`. */
227
- readonly run: (input: TInput) => Promise<MutationOutcome<TValue>>;
228
- /** Back to `idle` (dismisses a "Saved" or error affordance). */
229
- readonly reset: () => void;
230
- }
231
- /**
232
- * `idle | pending | succeeded | failed` over a write that must confirm itself.
233
- *
234
- * `succeeded` is reachable only through a branded confirmation, so the audited
235
- * "Saved on a 404" bug cannot be written with this hook: the 404 path produces
236
- * `failed` carrying the status, and a `mutate` that forgot to check produces
237
- * `failed` carrying the contract violation rather than a success it never
238
- * earned.
239
- */
240
- declare function useConfirmedMutation<TInput, TValue>({ mutate, onSucceeded, onFailed, errorMessage, }: UseConfirmedMutationOptions<TInput, TValue>): ConfirmedMutation<TInput, TValue>;
241
-
242
- interface AsyncEmptyAction {
243
- label: string;
244
- onClick: () => void;
245
- }
246
- interface AsyncEmptySpec {
247
- /** What is not there, in the reader's words ("No templates yet"). Required:
248
- * an empty state with nothing to say is the state this module exists to
249
- * stop being mistaken for a failure. */
250
- title: string;
251
- description?: string;
252
- /** The next action. An element is rendered as supplied (a link, a dialog
253
- * trigger); the object form renders the standard button. */
254
- action?: AsyncEmptyAction | ReactElement;
255
- }
256
- interface AsyncErrorRenderProps {
257
- message: string;
258
- retry: () => void;
259
- }
260
- interface AsyncViewProps<T> {
261
- state: AsyncResourceState<T>;
262
- /** Rendered only for `ready`, with the loaded value — the branch cannot be
263
- * entered without one. */
264
- children: (value: T) => ReactNode;
265
- /** Required: `empty` must name what is missing and what to do about it. */
266
- empty: AsyncEmptySpec | ReactElement;
267
- /** Must return an element. Returning nothing is what produced the blank
268
- * screens this component replaces, so a nullish return falls back to the
269
- * built-in block rather than rendering nothing. */
270
- renderLoading?: () => ReactElement;
271
- renderError?: (props: AsyncErrorRenderProps) => ReactElement;
272
- /** `idle` renders the loading block by default — from the reader's side,
273
- * "not started" and "in flight" are the same wait. */
274
- renderIdle?: () => ReactElement;
275
- loadingLabel?: string;
276
- retryLabel?: string;
277
- /** Applied to the wrapper around the non-`ready` branches. `ready` renders the
278
- * children with no wrapper element, so grids and lists keep their layout. */
279
- className?: string;
280
- }
281
- /**
282
- * Renders the branch the state is actually in.
283
- *
284
- * The three anti-patterns this replaces (`catch` that only clears a loading
285
- * flag, early return on a non-ok response, bare `null` while loading) all end at
286
- * the same rendered output as a successful-but-empty load. Here every branch is
287
- * reached from a different variant and each renders visibly: `loading` and
288
- * `idle` render a labelled busy block, `error` renders the message plus the
289
- * retry, `empty` renders the caller's copy and next action, and `ready` is the
290
- * only branch with a value to hand to `children`.
291
- */
292
- declare function AsyncView<T>({ state, children, empty, renderLoading, renderError, renderIdle, loadingLabel, retryLabel, className, }: AsyncViewProps<T>): ReactElement;
293
- interface MutationStatusLabels {
294
- pending?: string;
295
- succeeded?: string;
296
- }
297
- interface MutationStatusProps<T> {
298
- state: MutationState<T>;
299
- labels?: MutationStatusLabels;
300
- className?: string;
301
- }
302
- /**
303
- * The write's own status line. "Saved" renders only from `succeeded`, which
304
- * `useConfirmedMutation` can only reach through a confirmed write, so the label
305
- * cannot appear over a failed request.
11
+ * Adoption, with the before/after for each shape:
12
+ * [`docs/async-state-module.md`](../../../docs/async-state-module.md).
306
13
  */
307
- declare function MutationStatus<T>({ state, labels, className }: MutationStatusProps<T>): ReactElement | null;
308
-
309
- export { type AsyncEmptyAction, type AsyncEmptySpec, type AsyncErrorRenderProps, type AsyncLoadContext, AsyncRequestError, type AsyncResolution, type AsyncResourceState, type AsyncResourceStatus, type AsyncRetryable, AsyncView, type AsyncViewProps, CONFIRMED_WRITE, type ConfirmedMutation, DEFAULT_ASYNC_ERROR_MESSAGE, type MutationConfirmed, type MutationOutcome, type MutationRejected, type MutationState, MutationStatus, type MutationStatusLabels, type MutationStatusProps, type UseAsyncResourceOptions, type UseConfirmedMutationOptions, asyncErrorMessage, confirmJson, confirmResponse, confirmWrite, defaultIsEmpty, isConfirmedWrite, readOkJson, rejectWrite, requireOk, resolveAsyncValue, useAsyncResource, useConfirmedMutation };
14
+ export { AsyncRequestError, DEFAULT_ASYNC_ERROR_MESSAGE, asyncErrorMessage, defaultIsEmpty, readOkJson, requireOk, resolveAsyncValue, type AsyncResolution, type AsyncResourceState, type AsyncResourceStatus, type AsyncRetryable, } from './state';
15
+ export { useAsyncResource, type AsyncLoadContext, type UseAsyncResourceOptions } from './use-async-resource';
16
+ export { CONFIRMED_WRITE, confirmJson, confirmResponse, confirmWrite, isConfirmedWrite, rejectWrite, useConfirmedMutation, type ConfirmedMutation, type MutationConfirmed, type MutationOutcome, type MutationRejected, type MutationState, type UseConfirmedMutationOptions, } from './use-confirmed-mutation';
17
+ export { AsyncView, MutationStatus, type AsyncEmptyAction, type AsyncEmptySpec, type AsyncErrorRenderProps, type AsyncViewProps, type MutationStatusLabels, type MutationStatusProps, } from './async-view';
@@ -0,0 +1,107 @@
1
+ /**
2
+ * The fetch-state contract: a failed load cannot render as empty data.
3
+ *
4
+ * Three shapes produce that defect, and two audited verticals shipped dozens of
5
+ * each: a `catch` handler that only clears a loading flag, an early return on a
6
+ * non-ok response, and a bare `null` returned while loading. All three end with
7
+ * the same pixels a successful-but-empty load produces — "No templates
8
+ * available", an empty member list, a blank conversation — so the reader cannot
9
+ * tell "we asked and there is nothing" from "we could not ask", and the retry
10
+ * that would fix it is never offered.
11
+ *
12
+ * `AsyncResourceState` makes the two outcomes separate variants: `error` is the
13
+ * only one carrying a message and it is never reachable with a value, `empty` is
14
+ * the only one carrying a resolved-but-empty value and it never carries a
15
+ * message. A component rendering one is structurally not rendering the other.
16
+ *
17
+ * This file is React-free so the state model, the emptiness rule and the
18
+ * Response readers can be unit-tested and reused outside a component.
19
+ */
20
+ /**
21
+ * - `idle` — no load has been attempted (the hook is disabled, or its inputs
22
+ * are not resolved yet). Distinct from `loading`: nothing is in flight.
23
+ * - `loading` — a load is in flight and no value is held.
24
+ * - `error` — the load failed. Carries the message and never a value.
25
+ * - `empty` — the load succeeded and the value is empty. Never carries a message.
26
+ * - `ready` — the load succeeded and the value is non-empty.
27
+ */
28
+ export type AsyncResourceStatus = 'idle' | 'loading' | 'error' | 'empty' | 'ready';
29
+ /** Re-runs the load. Present on every variant so the error branch can never be
30
+ * rendered without the action that recovers from it. */
31
+ export interface AsyncRetryable {
32
+ readonly retry: () => void;
33
+ }
34
+ export type AsyncResourceState<T> = ({
35
+ readonly status: 'idle';
36
+ } & AsyncRetryable) | ({
37
+ readonly status: 'loading';
38
+ } & AsyncRetryable) | ({
39
+ readonly status: 'error';
40
+ readonly message: string;
41
+ readonly error: unknown;
42
+ } & AsyncRetryable) | ({
43
+ readonly status: 'empty';
44
+ readonly value: T;
45
+ } & AsyncRetryable) | ({
46
+ readonly status: 'ready';
47
+ readonly value: T;
48
+ } & AsyncRetryable);
49
+ /** The state model without the retry action — what a reducer produces. */
50
+ export type AsyncResolution<T> = {
51
+ readonly status: 'idle';
52
+ } | {
53
+ readonly status: 'loading';
54
+ } | {
55
+ readonly status: 'error';
56
+ readonly message: string;
57
+ readonly error: unknown;
58
+ } | {
59
+ readonly status: 'empty';
60
+ readonly value: T;
61
+ } | {
62
+ readonly status: 'ready';
63
+ readonly value: T;
64
+ };
65
+ export declare const DEFAULT_ASYNC_ERROR_MESSAGE = "Something went wrong. Please try again.";
66
+ /**
67
+ * Default emptiness rule: `null`/`undefined`, an empty array, an empty `Map` or
68
+ * `Set`. A string, a number and a plain object are `ready` — `''` and `{}` are
69
+ * legitimate values for the resources that produce them, and guessing otherwise
70
+ * would route a real answer into the empty branch. Pass `isEmpty` for a shape
71
+ * this cannot see into (`{ items: [] }`, a paged envelope, a count).
72
+ */
73
+ export declare function defaultIsEmpty(value: unknown): boolean;
74
+ /** Best available human-readable message for a thrown value. Never returns an
75
+ * empty string — a blank error block reads as a rendering bug. */
76
+ export declare function asyncErrorMessage(error: unknown, fallback?: string): string;
77
+ /** Classifies a successfully loaded value into `ready` or `empty`. */
78
+ export declare function resolveAsyncValue<T>(value: T, isEmpty?: (value: T) => boolean): AsyncResolution<T>;
79
+ /**
80
+ * A non-ok HTTP response, as a throwable. `requireOk`/`readOkJson` raise this so
81
+ * a non-ok response reaches the `error` branch instead of an early `return` that
82
+ * leaves the caller rendering the empty branch.
83
+ */
84
+ export declare class AsyncRequestError extends Error {
85
+ readonly status: number;
86
+ readonly statusText: string;
87
+ readonly url: string;
88
+ /** First 200 characters of the response body when it could be read, else `''`.
89
+ * Kept off `message` so a server's HTML error page never becomes UI copy. */
90
+ readonly body: string;
91
+ constructor(response: {
92
+ status: number;
93
+ statusText?: string;
94
+ url?: string;
95
+ }, body?: string);
96
+ }
97
+ /** Returns the response when ok; throws `AsyncRequestError` otherwise. Reads the
98
+ * body only on the failure path, so the caller keeps an unconsumed stream. */
99
+ export declare function requireOk(response: Response): Promise<Response>;
100
+ /**
101
+ * `requireOk` + `response.json()`. Without `parse` the result is `unknown`, so a
102
+ * caller narrows at the JSON boundary rather than inheriting an unchecked shape;
103
+ * with `parse` the validator runs inside the load and a rejection lands in the
104
+ * `error` branch.
105
+ */
106
+ export declare function readOkJson(response: Response): Promise<unknown>;
107
+ export declare function readOkJson<T>(response: Response, parse: (data: unknown) => T): Promise<T>;
@@ -0,0 +1,41 @@
1
+ import { type AsyncResourceState } from './state';
2
+ export interface AsyncLoadContext {
3
+ /** Aborted when the inputs change, a retry supersedes this load, or the
4
+ * component unmounts. Forward it to `fetch` so a superseded request stops. */
5
+ readonly signal: AbortSignal;
6
+ }
7
+ export interface UseAsyncResourceOptions<T> {
8
+ /**
9
+ * The one load. Reject (or throw) to reach the `error` branch — a non-ok
10
+ * response must reject too, which is what `requireOk`/`readOkJson` are for.
11
+ * Read from a ref internally, so an inline arrow does not re-trigger; `deps`
12
+ * is what declares when the load must run again.
13
+ */
14
+ load: (context: AsyncLoadContext) => Promise<T>;
15
+ /** Re-runs the load when any entry changes by `Object.is`, like `useEffect`. */
16
+ deps?: readonly unknown[];
17
+ /** `false` holds the resource at `idle` and runs nothing — for inputs that are
18
+ * not resolved yet. Flipping it to `true` starts the load. */
19
+ enabled?: boolean;
20
+ /** First-render seed (an SSR/loader page). The hook starts resolved and skips
21
+ * the first load. Read once — later identity changes are ignored, so a
22
+ * revalidating loader belongs in `deps`, not here. */
23
+ initialValue?: T;
24
+ /** Splits a successful load into `empty` vs `ready`. Default: `defaultIsEmpty`. */
25
+ isEmpty?: (value: T) => boolean;
26
+ /** Maps a thrown value to the message the `error` branch renders. */
27
+ errorMessage?: (error: unknown) => string;
28
+ }
29
+ /**
30
+ * The five-state fetch machine: `idle | loading | error | empty | ready`.
31
+ *
32
+ * What it guarantees, and what the hand-rolled versions it replaces did not:
33
+ *
34
+ * - a rejected load lands on `error` with a message and a `retry`, never on an
35
+ * empty list;
36
+ * - `empty` is only reachable from a load that actually succeeded;
37
+ * - a superseded load (inputs changed, retry pressed, component unmounted) is
38
+ * aborted and its late result is dropped by a monotonic sequence guard, so it
39
+ * cannot repaint a newer view.
40
+ */
41
+ export declare function useAsyncResource<T>({ load, deps, enabled, initialValue, isEmpty, errorMessage, }: UseAsyncResourceOptions<T>): AsyncResourceState<T>;
@@ -0,0 +1,90 @@
1
+ import type { AsyncLoadContext } from './use-async-resource';
2
+ /**
3
+ * The brand that makes "Saved" unreachable without a confirmed write.
4
+ *
5
+ * A resolved promise is not a success: `fetch` resolves on a 404, and the
6
+ * shipped defect this closes is a save button that rendered "Saved" because the
7
+ * only thing awaited was that the request came back at all. The success variant
8
+ * therefore carries a symbol no object literal can spell, so the only way into
9
+ * `succeeded` is `confirmWrite` / `confirmResponse` / `confirmJson` — each of
10
+ * which has already checked that the write landed.
11
+ */
12
+ export declare const CONFIRMED_WRITE: unique symbol;
13
+ export interface MutationConfirmed<T> {
14
+ readonly succeeded: true;
15
+ readonly value: T;
16
+ readonly [CONFIRMED_WRITE]: true;
17
+ }
18
+ export interface MutationRejected {
19
+ readonly succeeded: false;
20
+ /** Safe to render: what the user is told the write did not do. */
21
+ readonly message: string;
22
+ readonly error?: unknown;
23
+ }
24
+ export type MutationOutcome<T> = MutationConfirmed<T> | MutationRejected;
25
+ /** Confirms a write whose success is already established (an SDK call that
26
+ * throws on failure, a store returning its own typed outcome). The deliberate
27
+ * act is the point — this call is what an audit greps for. */
28
+ export declare function confirmWrite<T>(value: T): MutationConfirmed<T>;
29
+ /** A write that did not land. Constructible by hand: failing loud is never the
30
+ * direction that needs guarding. */
31
+ export declare function rejectWrite(message: string, error?: unknown): MutationRejected;
32
+ /** Confirms only a 2xx response. A 404/500 becomes a rejection carrying the
33
+ * status — never a success, whatever the promise did. */
34
+ export declare function confirmResponse(response: Response): Promise<MutationOutcome<Response>>;
35
+ /** `confirmResponse` + a JSON body. A non-ok status, an unreadable body and a
36
+ * throwing `parse` are all rejections. */
37
+ export declare function confirmJson<T>(response: Response, parse: (data: unknown) => T): Promise<MutationOutcome<T>>;
38
+ /** True only for a value built by one of the confirm helpers. Takes `unknown`
39
+ * because an untyped consumer can return anything from `mutate`. */
40
+ export declare function isConfirmedWrite<T>(outcome: unknown): outcome is MutationConfirmed<T>;
41
+ export type MutationState<T> = {
42
+ readonly status: 'idle';
43
+ } | {
44
+ readonly status: 'pending';
45
+ } | {
46
+ readonly status: 'succeeded';
47
+ readonly value: T;
48
+ } | {
49
+ readonly status: 'failed';
50
+ readonly message: string;
51
+ readonly error: unknown;
52
+ };
53
+ export interface UseConfirmedMutationOptions<TInput, TValue> {
54
+ /**
55
+ * Performs the write and returns a confirmation. Anything else — including a
56
+ * hand-written `{ succeeded: true }` — is treated as a failed write, because
57
+ * an unbranded object is exactly the shape produced by code that never
58
+ * checked the response.
59
+ *
60
+ * The context signal aborts only when a later `run` supersedes this one. It is
61
+ * NOT aborted on unmount: a write the user asked for must not be cancelled by
62
+ * navigating away.
63
+ */
64
+ mutate: (input: TInput, context: AsyncLoadContext) => Promise<MutationOutcome<TValue>>;
65
+ /** Fires after the state reaches `succeeded` (latest run only). */
66
+ onSucceeded?: (value: TValue) => void;
67
+ /** Fires after the state reaches `failed` (latest run only). */
68
+ onFailed?: (message: string, error: unknown) => void;
69
+ /** Maps a thrown value to the message the `failed` state renders. */
70
+ errorMessage?: (error: unknown) => string;
71
+ }
72
+ export interface ConfirmedMutation<TInput, TValue> {
73
+ readonly state: MutationState<TValue>;
74
+ /** Runs the write. Never rejects — the outcome is returned and mirrored into
75
+ * `state`. Concurrent runs are last-write-wins; disable the control while
76
+ * `state.status === 'pending'`. */
77
+ readonly run: (input: TInput) => Promise<MutationOutcome<TValue>>;
78
+ /** Back to `idle` (dismisses a "Saved" or error affordance). */
79
+ readonly reset: () => void;
80
+ }
81
+ /**
82
+ * `idle | pending | succeeded | failed` over a write that must confirm itself.
83
+ *
84
+ * `succeeded` is reachable only through a branded confirmation, so the audited
85
+ * "Saved on a 404" bug cannot be written with this hook: the 404 path produces
86
+ * `failed` carrying the status, and a `mutate` that forgot to check produces
87
+ * `failed` carrying the contract violation rather than a success it never
88
+ * earned.
89
+ */
90
+ export declare function useConfirmedMutation<TInput, TValue>({ mutate, onSucceeded, onFailed, errorMessage, }: UseConfirmedMutationOptions<TInput, TValue>): ConfirmedMutation<TInput, TValue>;
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Load the canonical Tangle knot only when a web surface renders it.
3
+ * `/brand` imports the optional `@tangle-network/brand` peer, so a failed load
4
+ * renders a fixed-size spacer instead of crashing the chat shell.
5
+ */
6
+ interface BrandMarkProps {
7
+ size?: number;
8
+ className?: string;
9
+ }
10
+ export declare function BrandMark({ size, className }: BrandMarkProps): import("react").JSX.Element;
11
+ export {};
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Transcript-side counterpart to the composer's store-backed attachment
3
+ * primitive (agent-app#224). Unlike a `@`-mention, an attachment never rides
4
+ * inline in message text as a token to segment — it renders as its own
5
+ * card/chip keyed off the message's `parts`, so this module is just the
6
+ * browser-safe read side of the attachment vocabulary: the type guard, the
7
+ * per-message part filter, and the two pure conversions a composer/transcript
8
+ * needs before or after a byte upload.
9
+ *
10
+ * `ChatAttachmentPart` and its helpers are re-exported here from
11
+ * `../chat-store/parts` directly (not the `/chat-store` barrel), so a browser
12
+ * bundle gets the attachment vocabulary without importing `/chat-store`, whose
13
+ * barrel pulls the drizzle peer — same reasoning as `./chat-mentions`.
14
+ * `ChatAttachmentKind`/`ChatAttachmentInput` are NOT re-exported from here:
15
+ * they already ship from `./chat-stream` (the import-free `/chat-routes/wire`
16
+ * layer they're defined in), and re-exporting them again from here would
17
+ * collide across the two `export *`s in `./index`.
18
+ */
19
+ import { attachmentInputToPart, attachmentKindForMime, attachmentPartKey, attachmentPartsFromMessageParts, isChatAttachmentPart, type ChatAttachmentPart } from '../chat-store/parts';
20
+ export type { ChatAttachmentPart };
21
+ export { attachmentInputToPart, attachmentKindForMime, attachmentPartKey, attachmentPartsFromMessageParts, isChatAttachmentPart };