@tangle-network/agent-app 0.45.54 → 0.45.56

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 (492) 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/index.js +3 -3
  17. package/dist/assistant/launcher.d.ts +23 -0
  18. package/dist/assistant/persistence.d.ts +26 -0
  19. package/dist/assistant/presentation.d.ts +99 -0
  20. package/dist/assistant/provider-label.d.ts +7 -0
  21. package/dist/assistant/reducer.d.ts +130 -0
  22. package/dist/assistant/sse.d.ts +24 -0
  23. package/dist/assistant/time-ago.d.ts +6 -0
  24. package/dist/assistant/transcript.d.ts +97 -0
  25. package/dist/assistant/types.d.ts +291 -0
  26. package/dist/assistant/use-stick-to-bottom.d.ts +28 -0
  27. package/dist/assistant/useAssistantChat.d.ts +63 -0
  28. package/dist/assistant/useAssistantModels.d.ts +22 -0
  29. package/dist/assistant/useAssistantThreads.d.ts +47 -0
  30. package/dist/assistant/usePanelPrefs.d.ts +55 -0
  31. package/dist/billing/index.d.ts +19 -21
  32. package/dist/brand/index.d.ts +16 -10
  33. package/dist/brand-extraction/extract.d.ts +34 -0
  34. package/dist/brand-extraction/index.d.ts +12 -214
  35. package/dist/brand-extraction/map.d.ts +58 -0
  36. package/dist/brand-extraction/types.d.ts +119 -0
  37. package/dist/catalog/index.d.ts +11 -101
  38. package/dist/chat-react/composer-mode-controls.d.ts +14 -0
  39. package/dist/chat-react/entry-composer.d.ts +92 -0
  40. package/dist/chat-react/index.d.ts +22 -118
  41. package/dist/chat-react/index.js +2 -2
  42. package/dist/chat-react/types.d.ts +11 -0
  43. package/dist/chat-routes/attachment-store.d.ts +84 -0
  44. package/dist/chat-routes/attachment-upload.d.ts +89 -0
  45. package/dist/chat-routes/attachment-validation.d.ts +95 -0
  46. package/dist/chat-routes/binary-sniff.d.ts +45 -0
  47. package/dist/chat-routes/completed-sandbox-turn.d.ts +25 -0
  48. package/dist/chat-routes/detached-turn.d.ts +197 -0
  49. package/dist/chat-routes/dispatch-parts.d.ts +101 -0
  50. package/dist/chat-routes/draft-persistence.d.ts +189 -0
  51. package/dist/chat-routes/durable-projection.d.ts +18 -0
  52. package/dist/chat-routes/file-index.d.ts +115 -0
  53. package/dist/chat-routes/index.d.ts +25 -1840
  54. package/dist/chat-routes/index.js +6 -2
  55. package/dist/chat-routes/index.js.map +1 -1
  56. package/dist/chat-routes/model-failover-stream.d.ts +206 -0
  57. package/dist/chat-routes/promote-file-part.d.ts +84 -0
  58. package/dist/chat-routes/resolve-attachments.d.ts +72 -0
  59. package/dist/chat-routes/sandbox-producer.d.ts +146 -0
  60. package/dist/chat-routes/sandbox-turn-usage.d.ts +4 -0
  61. package/dist/{stale-turn-lock-DucQzvXu.d.ts → chat-routes/stale-turn-lock.d.ts} +7 -9
  62. package/dist/chat-routes/turn-routes.d.ts +540 -0
  63. package/dist/chat-routes/upload.d.ts +84 -0
  64. package/dist/{wire-DOZ-O6hD.d.ts → chat-routes/wire.d.ts} +41 -44
  65. package/dist/chat-store/core.d.ts +19 -0
  66. package/dist/chat-store/index.d.ts +22 -322
  67. package/dist/{parts-BqIHMdyu.d.ts → chat-store/parts.d.ts} +49 -47
  68. package/dist/chat-store/schema.d.ts +157 -0
  69. package/dist/chat-store/store.d.ts +177 -0
  70. package/dist/{chunk-PVP57G3S.js → chunk-2IFGVBNI.js} +2 -2
  71. package/dist/{chunk-MQO5ML66.js → chunk-KJ2Q27U7.js} +2 -2
  72. package/dist/{chunk-CCVG2TL6.js → chunk-YNMPMW3G.js} +64 -2
  73. package/dist/chunk-YNMPMW3G.js.map +1 -0
  74. package/dist/config/index.d.ts +13 -18
  75. package/dist/crypto/index.d.ts +10 -12
  76. package/dist/crypto/web-token.d.ts +22 -0
  77. package/dist/design-canvas/apply.d.ts +70 -0
  78. package/dist/design-canvas/drizzle-store.d.ts +29 -0
  79. package/dist/design-canvas/drizzle.d.ts +7 -575
  80. package/dist/{export-presets-mgVulRaV.d.ts → design-canvas/export-presets.d.ts} +18 -22
  81. package/dist/design-canvas/index.d.ts +22 -268
  82. package/dist/design-canvas/mcp-entry.d.ts +15 -0
  83. package/dist/design-canvas/mcp-handler.d.ts +34 -0
  84. package/dist/design-canvas/mcp-tools.d.ts +30 -0
  85. package/dist/{model-DnfO_PdJ.d.ts → design-canvas/model.d.ts} +33 -35
  86. package/dist/{operations-ByJ6yXOW.d.ts → design-canvas/operations.d.ts} +21 -25
  87. package/dist/design-canvas/schema.d.ts +558 -0
  88. package/dist/{store-CqfDtnPQ.d.ts → design-canvas/store.d.ts} +8 -12
  89. package/dist/design-canvas/templates.d.ts +72 -0
  90. package/dist/design-canvas/validate.d.ts +32 -0
  91. package/dist/design-canvas-react/components/BleedTrimOverlay.d.ts +22 -0
  92. package/dist/design-canvas-react/components/BrandKnot.d.ts +11 -0
  93. package/dist/design-canvas-react/components/CanvasEmptyState.d.ts +32 -0
  94. package/dist/design-canvas-react/components/CanvasInsertPanel.d.ts +53 -0
  95. package/dist/{lazy-DrkVyDpe.d.ts → design-canvas-react/components/DesignCanvas.d.ts} +27 -20
  96. package/dist/design-canvas-react/components/DesignCanvasEditor.d.ts +23 -0
  97. package/dist/design-canvas-react/components/ElementNode.d.ts +51 -0
  98. package/dist/design-canvas-react/components/ExportControl.d.ts +21 -0
  99. package/dist/design-canvas-react/components/GridLayer.d.ts +47 -0
  100. package/dist/design-canvas-react/components/InlineTextEditor.d.ts +25 -0
  101. package/dist/design-canvas-react/components/LayersPanel.d.ts +20 -0
  102. package/dist/design-canvas-react/components/PagesStrip.d.ts +34 -0
  103. package/dist/design-canvas-react/components/Rulers.d.ts +31 -0
  104. package/dist/design-canvas-react/components/SelectionLayer.d.ts +51 -0
  105. package/dist/design-canvas-react/components/SnapGuidesOverlay.d.ts +25 -0
  106. package/dist/design-canvas-react/components/Toolbar.d.ts +64 -0
  107. package/dist/design-canvas-react/components/Workspace.d.ts +92 -0
  108. package/dist/design-canvas-react/components/ZoomControls.d.ts +14 -0
  109. package/dist/design-canvas-react/components/glyphs.d.ts +46 -0
  110. package/dist/design-canvas-react/components/icon-button.d.ts +22 -0
  111. package/dist/design-canvas-react/components/index.d.ts +27 -0
  112. package/dist/design-canvas-react/components/layer-tree.d.ts +34 -0
  113. package/dist/design-canvas-react/components/ruler-math.d.ts +78 -0
  114. package/dist/design-canvas-react/components/transform-math.d.ts +168 -0
  115. package/dist/{command-stack-TNPWJCzW.d.ts → design-canvas-react/contracts.d.ts} +16 -63
  116. package/dist/design-canvas-react/engine/command-stack.d.ts +43 -0
  117. package/dist/design-canvas-react/engine/commands.d.ts +154 -0
  118. package/dist/design-canvas-react/engine/selection.d.ts +48 -0
  119. package/dist/design-canvas-react/engine/snap.d.ts +24 -0
  120. package/dist/design-canvas-react/engine/zoom-pan.d.ts +18 -0
  121. package/dist/design-canvas-react/engine.d.ts +21 -399
  122. package/dist/design-canvas-react/export-math.d.ts +104 -0
  123. package/dist/design-canvas-react/export.d.ts +89 -0
  124. package/dist/design-canvas-react/index.d.ts +16 -586
  125. package/dist/design-canvas-react/insert-builders.d.ts +61 -0
  126. package/dist/design-canvas-react/lazy.d.ts +21 -6
  127. package/dist/documents/docx.d.ts +50 -0
  128. package/dist/documents/extract.d.ts +87 -0
  129. package/dist/documents/index.d.ts +26 -232
  130. package/dist/documents/media-type.d.ts +33 -0
  131. package/dist/documents/pdf-inspector.d.ts +5 -9
  132. package/dist/{types-DrBidf3O.d.ts → documents/types.d.ts} +13 -15
  133. package/dist/documents/zip.d.ts +56 -0
  134. package/dist/eval/calibration.d.ts +106 -0
  135. package/dist/eval/index.d.ts +8 -116
  136. package/dist/eval-campaign/index.d.ts +11 -12
  137. package/dist/{trust-gate-Dcm5xSva.d.ts → eval-campaign/trust-gate.d.ts} +5 -9
  138. package/dist/forms/blank.d.ts +48 -0
  139. package/dist/forms/fill.d.ts +105 -0
  140. package/dist/forms/index.d.ts +58 -332
  141. package/dist/forms/registry.d.ts +115 -0
  142. package/dist/forms/verify.d.ts +58 -0
  143. package/dist/harness/index.d.ts +21 -19
  144. package/dist/intakes/api.d.ts +5 -11
  145. package/dist/{completion-CvcNUz07.d.ts → intakes/completion.d.ts} +7 -11
  146. package/dist/intakes/context-sufficiency.d.ts +113 -0
  147. package/dist/intakes/drizzle/schema.d.ts +338 -0
  148. package/dist/intakes/drizzle/store.d.ts +75 -0
  149. package/dist/intakes/drizzle.d.ts +12 -391
  150. package/dist/intakes/index.d.ts +23 -113
  151. package/dist/{model-C8U0HZxL.d.ts → intakes/model.d.ts} +15 -17
  152. package/dist/intakes-react/components/BrandMark.d.ts +10 -0
  153. package/dist/intakes-react/components/IntakeInterview.d.ts +15 -0
  154. package/dist/intakes-react/components/index.d.ts +1 -0
  155. package/dist/intakes-react/contracts.d.ts +42 -0
  156. package/dist/intakes-react/index.d.ts +12 -47
  157. package/dist/intakes-react/lazy.d.ts +9 -8
  158. package/dist/integrations/index.d.ts +10 -12
  159. package/dist/{contract-OxG_jVMx.d.ts → interactions/contract.d.ts} +40 -42
  160. package/dist/interactions/index.d.ts +16 -256
  161. package/dist/interactions/route.d.ts +151 -0
  162. package/dist/interactions/sidecar.d.ts +100 -0
  163. package/dist/knowledge/index.d.ts +7 -11
  164. package/dist/knowledge-loop/index.d.ts +13 -20
  165. package/dist/legibility/checks/empty-state.d.ts +59 -0
  166. package/dist/legibility/checks/reachability.d.ts +103 -0
  167. package/dist/legibility/checks/silent-failure.d.ts +57 -0
  168. package/dist/legibility/checks/success.d.ts +38 -0
  169. package/dist/legibility/checks/vocabulary.d.ts +65 -0
  170. package/dist/legibility/cli-args.d.ts +30 -0
  171. package/dist/legibility/cli.d.ts +25 -0
  172. package/dist/legibility/index.d.ts +10 -530
  173. package/dist/legibility/report.d.ts +22 -0
  174. package/dist/legibility/scan.d.ts +29 -0
  175. package/dist/legibility/source.d.ts +132 -0
  176. package/dist/legibility/suppress.d.ts +36 -0
  177. package/dist/legibility/types.d.ts +168 -0
  178. package/dist/legibility/walk-sources.d.ts +21 -0
  179. package/dist/{agent-activity-C8ZG0F0M.d.ts → missions/agent-activity.d.ts} +3 -5
  180. package/dist/missions/engine.d.ts +251 -0
  181. package/dist/missions/events.d.ts +195 -0
  182. package/dist/missions/index.d.ts +12 -765
  183. package/dist/missions/plan-parse.d.ts +50 -0
  184. package/dist/missions/service.d.ts +265 -0
  185. package/dist/{failover-D-3UXXTb.d.ts → model-resolution/failover.d.ts} +10 -12
  186. package/dist/model-resolution/index.d.ts +15 -18
  187. package/dist/object-store/index.d.ts +15 -17
  188. package/dist/openui/action.d.ts +54 -0
  189. package/dist/openui/authoring.d.ts +25 -0
  190. package/dist/openui/index.d.ts +24 -206
  191. package/dist/openui/route.d.ts +124 -0
  192. package/dist/openui/segments.d.ts +71 -0
  193. package/dist/openui/values.d.ts +82 -0
  194. package/dist/openui-react/index.d.ts +9 -13
  195. package/dist/peer-floors/check.d.ts +9 -190
  196. package/dist/peer-floors/cli.d.ts +2 -3
  197. package/dist/peer-floors/dependency-source.d.ts +178 -0
  198. package/dist/plans/index.d.ts +13 -14
  199. package/dist/{billing-BuNlaKlE.d.ts → platform/billing.d.ts} +28 -32
  200. package/dist/platform/guards.d.ts +79 -0
  201. package/dist/platform/hub.d.ts +107 -0
  202. package/dist/platform/index.d.ts +7 -112
  203. package/dist/{sso-Cm00S61u.d.ts → platform/sso.d.ts} +15 -97
  204. package/dist/preflight/cli.d.ts +3 -6
  205. package/dist/preflight/index.d.ts +16 -18
  206. package/dist/preset-cloudflare/headers.d.ts +12 -0
  207. package/dist/preset-cloudflare/index.d.ts +22 -74
  208. package/dist/preset-cloudflare/workflow-instance.d.ts +35 -0
  209. package/dist/profile/budget.d.ts +72 -0
  210. package/dist/profile/fingerprint.d.ts +65 -0
  211. package/dist/profile/index.d.ts +27 -19
  212. package/dist/prompt/index.d.ts +3 -5
  213. package/dist/record/drizzle/schema.d.ts +488 -0
  214. package/dist/record/drizzle/store.d.ts +224 -0
  215. package/dist/record/drizzle.d.ts +10 -679
  216. package/dist/record/fold.d.ts +99 -0
  217. package/dist/record/index.d.ts +13 -13
  218. package/dist/{fold-DACU7gtf.d.ts → record/model.d.ts} +22 -124
  219. package/dist/record/ulid.d.ts +12 -0
  220. package/dist/redact/index.d.ts +14 -16
  221. package/dist/run/index.d.ts +11 -16
  222. package/dist/runtime/agent.d.ts +23 -0
  223. package/dist/runtime/certified-delivery.d.ts +57 -0
  224. package/dist/runtime/index.d.ts +17 -367
  225. package/dist/runtime/loop.d.ts +58 -0
  226. package/dist/runtime/model-catalog.d.ts +103 -0
  227. package/dist/{model-CdCDfBA9.d.ts → runtime/model.d.ts} +25 -27
  228. package/dist/runtime/openai-stream.d.ts +126 -0
  229. package/dist/runtime/surface-profile.d.ts +115 -0
  230. package/dist/sandbox/binary-read.d.ts +63 -0
  231. package/dist/sandbox/diagnostics.d.ts +69 -0
  232. package/dist/sandbox/index.d.ts +103 -1085
  233. package/dist/sandbox/model.d.ts +179 -0
  234. package/dist/sandbox/outcome.d.ts +10 -0
  235. package/dist/sandbox/prewarm-claim-d1.d.ts +80 -0
  236. package/dist/sandbox/prewarm.d.ts +193 -0
  237. package/dist/sandbox/recovery.d.ts +216 -0
  238. package/dist/sandbox/terminal-connection.d.ts +145 -0
  239. package/dist/sandbox/workspace-sandbox-manager.d.ts +44 -0
  240. package/dist/sequences/apply.d.ts +54 -0
  241. package/dist/sequences/captions.d.ts +91 -0
  242. package/dist/sequences/drizzle-store.d.ts +36 -0
  243. package/dist/sequences/drizzle.d.ts +7 -1252
  244. package/dist/sequences/exports.d.ts +138 -0
  245. package/dist/sequences/index.d.ts +19 -340
  246. package/dist/sequences/mcp-entry.d.ts +15 -0
  247. package/dist/sequences/mcp-handler.d.ts +39 -0
  248. package/dist/sequences/mcp-tools.d.ts +47 -0
  249. package/dist/{store-B7LLlk9p.d.ts → sequences/model.d.ts} +26 -110
  250. package/dist/sequences/operations.d.ts +126 -0
  251. package/dist/sequences/schema.d.ts +1231 -0
  252. package/dist/sequences/store.d.ts +81 -0
  253. package/dist/sequences/validate.d.ts +98 -0
  254. package/dist/sequences-react/components/BrandMark.d.ts +10 -0
  255. package/dist/sequences-react/components/PreviewCanvas.d.ts +26 -0
  256. package/dist/sequences-react/components/SnapIndicatorLine.d.ts +11 -0
  257. package/dist/sequences-react/components/TimelineClipChip.d.ts +80 -0
  258. package/dist/sequences-react/components/TimelineEditor.d.ts +44 -0
  259. package/dist/sequences-react/components/TimelineEmptyState.d.ts +21 -0
  260. package/dist/sequences-react/components/TimelineGhostLanes.d.ts +14 -0
  261. package/dist/sequences-react/components/TimelinePlayhead.d.ts +11 -0
  262. package/dist/sequences-react/components/TimelineRuler.d.ts +16 -0
  263. package/dist/sequences-react/components/TimelineSmallScreenGate.d.ts +12 -0
  264. package/dist/sequences-react/components/TimelineTrackRow.d.ts +51 -0
  265. package/dist/sequences-react/components/ZoomControl.d.ts +15 -0
  266. package/dist/sequences-react/components/composite-command.d.ts +8 -0
  267. package/dist/sequences-react/components/glyphs.d.ts +26 -0
  268. package/dist/sequences-react/components/index.d.ts +31 -0
  269. package/dist/sequences-react/components/interaction-math.d.ts +103 -0
  270. package/dist/sequences-react/contracts.d.ts +187 -0
  271. package/dist/sequences-react/engine/command-stack.d.ts +18 -0
  272. package/dist/sequences-react/engine/commands.d.ts +146 -0
  273. package/dist/sequences-react/engine/playback.d.ts +18 -0
  274. package/dist/sequences-react/engine/snap.d.ts +29 -0
  275. package/dist/sequences-react/engine/zoom.d.ts +29 -0
  276. package/dist/sequences-react/index.d.ts +20 -880
  277. package/dist/sequences-react/lazy.d.ts +8 -0
  278. package/dist/sequences-react/media/frame-provider.d.ts +70 -0
  279. package/dist/sequences-react/media/transcription.d.ts +33 -0
  280. package/dist/sequences-react/media/waveform.d.ts +34 -0
  281. package/dist/session-shell/index.d.ts +31 -204
  282. package/dist/session-shell/nav-guard.d.ts +170 -0
  283. package/dist/session-shell/path.d.ts +19 -0
  284. package/dist/signoff/cli.d.ts +4 -7
  285. package/dist/signoff/config.d.ts +12 -0
  286. package/dist/signoff/exec.d.ts +44 -0
  287. package/dist/signoff/index.d.ts +56 -14
  288. package/dist/signoff/invoked-as-script.d.ts +25 -0
  289. package/dist/signoff/node-version.d.ts +50 -0
  290. package/dist/signoff/proof-attach.d.ts +88 -0
  291. package/dist/signoff/proof-cli.d.ts +1 -0
  292. package/dist/signoff/proof-fixture.d.ts +13 -0
  293. package/dist/signoff/proof-from-report.d.ts +22 -0
  294. package/dist/signoff/proof-git.d.ts +57 -0
  295. package/dist/signoff/proof-record.d.ts +202 -0
  296. package/dist/signoff/proof-verify.d.ts +103 -0
  297. package/dist/signoff/proof.d.ts +35 -310
  298. package/dist/signoff/report.d.ts +7 -0
  299. package/dist/{run-D80hoLKh.d.ts → signoff/run.d.ts} +3 -6
  300. package/dist/signoff/schedule.d.ts +55 -0
  301. package/dist/signoff/seeds.d.ts +50 -0
  302. package/dist/signoff/store.d.ts +22 -0
  303. package/dist/{types-Bd6uW9vQ.d.ts → signoff/types.d.ts} +15 -17
  304. package/dist/signoff/workflow-pin.d.ts +56 -0
  305. package/dist/signoff/workspace.d.ts +40 -0
  306. package/dist/skills/index.d.ts +28 -32
  307. package/dist/skills-placement/index.d.ts +7 -11
  308. package/dist/spend/budget.d.ts +123 -0
  309. package/dist/spend/ceiling.d.ts +51 -0
  310. package/dist/spend/cli-args.d.ts +20 -0
  311. package/dist/spend/cli.d.ts +1 -0
  312. package/dist/spend/fixtures/incident-parked-time.d.ts +55 -0
  313. package/dist/spend/index.d.ts +38 -1144
  314. package/dist/spend/liveness.d.ts +131 -0
  315. package/dist/spend/ownership.d.ts +87 -0
  316. package/dist/spend/reconcile.d.ts +109 -0
  317. package/dist/spend/reference.d.ts +42 -0
  318. package/dist/spend/report.d.ts +12 -0
  319. package/dist/spend/store.d.ts +123 -0
  320. package/dist/spend/types.d.ts +466 -0
  321. package/dist/store/index.d.ts +10 -12
  322. package/dist/stories/app-shell/fixtures.d.ts +43 -0
  323. package/dist/stories/app-shell/shell.d.ts +81 -0
  324. package/dist/stories/assistant/fixtures.d.ts +73 -0
  325. package/dist/stories/chat/fixtures.d.ts +70 -0
  326. package/dist/stories/chat/markdown.d.ts +11 -0
  327. package/dist/stories/chat/run-drill-in.d.ts +19 -0
  328. package/dist/stories/chat-controls/fixtures.d.ts +116 -0
  329. package/dist/stories/design-canvas/fixtures.d.ts +57 -0
  330. package/dist/stories/fixtures/canvas.d.ts +10 -0
  331. package/dist/stories/fixtures/catalog.d.ts +7 -0
  332. package/dist/stories/fixtures/chat.d.ts +39 -0
  333. package/dist/stories/fixtures/index.d.ts +4 -0
  334. package/dist/stories/fixtures/sequences.d.ts +17 -0
  335. package/dist/stories/panels/fixtures.d.ts +63 -0
  336. package/dist/stories/sequences/fixtures.d.ts +30 -0
  337. package/dist/stories/studio/fixtures.d.ts +22 -0
  338. package/dist/stream/index.d.ts +10 -56
  339. package/dist/{stream-normalizer-DKRxyVlZ.d.ts → stream/stream-normalizer.d.ts} +23 -26
  340. package/dist/{turn-buffer-COMQUwO2.d.ts → stream/turn-buffer.d.ts} +21 -23
  341. package/dist/stream/turn-identity.d.ts +49 -0
  342. package/dist/studio/generation.d.ts +179 -0
  343. package/dist/studio/index.d.ts +12 -181
  344. package/dist/studio-react/avatar-composer.d.ts +8 -0
  345. package/dist/studio-react/composer-hero.d.ts +12 -0
  346. package/dist/studio-react/composer-shell.d.ts +18 -0
  347. package/dist/studio-react/generation-card.d.ts +9 -0
  348. package/dist/studio-react/generation-detail-modal.d.ts +11 -0
  349. package/dist/studio-react/generation-detail.d.ts +6 -0
  350. package/dist/studio-react/generation-grid.d.ts +15 -0
  351. package/dist/studio-react/image-composer.d.ts +8 -0
  352. package/dist/studio-react/index.d.ts +32 -245
  353. package/dist/studio-react/library-drawer.d.ts +12 -0
  354. package/dist/studio-react/library-panel.d.ts +15 -0
  355. package/dist/studio-react/publish-package-composer.d.ts +18 -0
  356. package/dist/studio-react/result-canvas.d.ts +6 -0
  357. package/dist/studio-react/speech-composer.d.ts +4 -0
  358. package/dist/studio-react/studio-header.d.ts +5 -0
  359. package/dist/studio-react/studio-sheet.d.ts +12 -0
  360. package/dist/studio-react/studio-workspace.d.ts +23 -0
  361. package/dist/studio-react/transcription-composer.d.ts +12 -0
  362. package/dist/studio-react/type-config.d.ts +11 -0
  363. package/dist/studio-react/use-studio-generations.d.ts +20 -0
  364. package/dist/studio-react/video-composer.d.ts +10 -0
  365. package/dist/tangle/index.d.ts +7 -9
  366. package/dist/teams/drizzle/access.d.ts +82 -0
  367. package/dist/{invitations-schema-_fI7HkJP.d.ts → teams/drizzle/invitations-schema.d.ts} +39 -27
  368. package/dist/teams/drizzle/personal-organization.d.ts +41 -0
  369. package/dist/{access-490O6aOU.d.ts → teams/drizzle/schema.d.ts} +57 -122
  370. package/dist/teams/drizzle.d.ts +12 -44
  371. package/dist/teams/index.d.ts +20 -44
  372. package/dist/teams/invitations-api.d.ts +17 -21
  373. package/dist/{invitations-DoYMvXea.d.ts → teams/invitations.d.ts} +14 -18
  374. package/dist/teams/invite.d.ts +42 -0
  375. package/dist/teams/members-api.d.ts +12 -16
  376. package/dist/teams/resend.d.ts +3 -13
  377. package/dist/{roles-B4nU3jDi.d.ts → teams/roles.d.ts} +18 -20
  378. package/dist/teams-react/components/BrandMark.d.ts +10 -0
  379. package/dist/teams-react/components/InvitationsPanel.d.ts +13 -0
  380. package/dist/teams-react/components/InviteAcceptPage.d.ts +10 -0
  381. package/dist/teams-react/components/MembersPanel.d.ts +14 -0
  382. package/dist/teams-react/components/RoleSelect.d.ts +17 -0
  383. package/dist/teams-react/components/index.d.ts +3 -0
  384. package/dist/teams-react/contracts.d.ts +134 -0
  385. package/dist/teams-react/index.d.ts +12 -143
  386. package/dist/teams-react/lazy.d.ts +11 -11
  387. package/dist/test-setup.d.ts +1 -0
  388. package/dist/theme/index.d.ts +6 -104
  389. package/dist/theme/tailwind-preset.d.ts +1 -2
  390. package/dist/theme/theme.d.ts +106 -0
  391. package/dist/theme-contract/cli.d.ts +21 -0
  392. package/dist/theme-contract/index.d.ts +4 -6
  393. package/dist/{auth-BYtiazA4.d.ts → tools/auth.d.ts} +8 -11
  394. package/dist/tools/capability.d.ts +54 -0
  395. package/dist/tools/dispatch.d.ts +37 -0
  396. package/dist/tools/errors.d.ts +8 -0
  397. package/dist/tools/gating.d.ts +62 -0
  398. package/dist/tools/http.d.ts +27 -0
  399. package/dist/tools/index.d.ts +12 -217
  400. package/dist/{mcp-rpc-DYwPlYbZ.d.ts → tools/mcp-rpc.d.ts} +7 -9
  401. package/dist/{mcp-xxoZZfor.d.ts → tools/mcp.d.ts} +14 -16
  402. package/dist/tools/openai.d.ts +28 -0
  403. package/dist/tools/registry.d.ts +39 -0
  404. package/dist/tools/runtime.d.ts +22 -0
  405. package/dist/{types-B25Mib1r.d.ts → tools/types.d.ts} +15 -83
  406. package/dist/{flow-types-CJxEmaRy.d.ts → trace/flow-types.d.ts} +2 -4
  407. package/dist/trace/index.d.ts +11 -148
  408. package/dist/trace/mission-flow.d.ts +82 -0
  409. package/dist/trace/mission-trace.d.ts +52 -0
  410. package/dist/turn-health/classify.d.ts +207 -0
  411. package/dist/turn-health/index.d.ts +29 -637
  412. package/dist/turn-health/lifecycle.d.ts +75 -0
  413. package/dist/turn-health/sink.d.ts +122 -0
  414. package/dist/turn-health/sweep.d.ts +245 -0
  415. package/dist/turn-stream/adapters.d.ts +257 -0
  416. package/dist/turn-stream/core.d.ts +293 -0
  417. package/dist/turn-stream/do.d.ts +144 -0
  418. package/dist/turn-stream/index.d.ts +62 -738
  419. package/dist/turn-stream/memory.d.ts +41 -0
  420. package/dist/vault/ConfirmDialog.d.ts +22 -0
  421. package/dist/vault/VaultPane.d.ts +15 -0
  422. package/dist/{VaultPane-BDP6SB_K.d.ts → vault/contracts.d.ts} +15 -22
  423. package/dist/vault/index.d.ts +15 -22
  424. package/dist/vault/lazy.d.ts +9 -7
  425. package/dist/vault/server.d.ts +8 -10
  426. package/dist/web/free-route-limit.d.ts +187 -0
  427. package/dist/web/index.d.ts +15 -207
  428. package/dist/{rate-limit-BOVmJRXZ.d.ts → web/rate-limit.d.ts} +3 -5
  429. package/dist/web-react/agent-session-controls.d.ts +105 -0
  430. package/dist/web-react/async/async-view.d.ts +69 -0
  431. package/dist/web-react/async/index.d.ts +13 -305
  432. package/dist/web-react/async/state.d.ts +107 -0
  433. package/dist/web-react/async/use-async-resource.d.ts +41 -0
  434. package/dist/web-react/async/use-confirmed-mutation.d.ts +90 -0
  435. package/dist/web-react/brand-mark.d.ts +11 -0
  436. package/dist/web-react/chat-attachments.d.ts +21 -0
  437. package/dist/web-react/chat-composer.d.ts +174 -0
  438. package/dist/web-react/chat-interactions.d.ts +1 -0
  439. package/dist/web-react/chat-mentions.d.ts +48 -0
  440. package/dist/web-react/chat-stream.d.ts +106 -0
  441. package/dist/web-react/class-names.d.ts +10 -0
  442. package/dist/web-react/controls.d.ts +265 -0
  443. package/dist/web-react/durable-chat-cards.d.ts +40 -0
  444. package/dist/web-react/durable-interaction-submit.d.ts +22 -0
  445. package/dist/web-react/durable-plan-card.d.ts +13 -0
  446. package/dist/web-react/durable-plan-flow.d.ts +77 -0
  447. package/dist/web-react/harness-glyphs.d.ts +28 -0
  448. package/dist/web-react/index.d.ts +80 -2347
  449. package/dist/web-react/index.js +3 -3
  450. package/dist/web-react/inert.d.ts +39 -0
  451. package/dist/web-react/insight-card.d.ts +203 -0
  452. package/dist/web-react/interaction-card-support.d.ts +115 -0
  453. package/dist/web-react/interaction-plan-card.d.ts +39 -0
  454. package/dist/web-react/interaction-question-card.d.ts +100 -0
  455. package/dist/web-react/message-attachments.d.ts +56 -0
  456. package/dist/web-react/mission-activity.d.ts +96 -0
  457. package/dist/web-react/motion.d.ts +43 -0
  458. package/dist/web-react/provenance-model.d.ts +195 -0
  459. package/dist/web-react/provenance.d.ts +82 -0
  460. package/dist/web-react/provider-logo.d.ts +14 -0
  461. package/dist/web-react/record-grid-model.d.ts +257 -0
  462. package/dist/web-react/record-grid.d.ts +108 -0
  463. package/dist/web-react/sandbox-terminal.d.ts +90 -0
  464. package/dist/web-react/seat-paywall.d.ts +47 -0
  465. package/dist/web-react/session-history.d.ts +196 -0
  466. package/dist/web-react/smooth-text.d.ts +29 -0
  467. package/dist/web-react/sparkline.d.ts +150 -0
  468. package/dist/web-react/terminal.d.ts +1 -92
  469. package/dist/web-react/use-chat-interactions.d.ts +78 -0
  470. package/dist/web-react/use-composer-attachments.d.ts +111 -0
  471. package/dist/web-react/use-file-mentions.d.ts +94 -0
  472. package/dist/web-react/work-product.d.ts +105 -0
  473. package/dist/work-product/claim-support.d.ts +288 -0
  474. package/dist/work-product/index.d.ts +16 -849
  475. package/dist/work-product/provenance.d.ts +61 -0
  476. package/dist/{queue-VTBA5ONX.d.ts → work-product/queue.d.ts} +10 -12
  477. package/dist/work-product/quote.d.ts +139 -0
  478. package/dist/work-product/route.d.ts +88 -0
  479. package/dist/work-product/service.d.ts +123 -0
  480. package/dist/work-product/tools.d.ts +144 -0
  481. package/dist/{types-CCeYywdS.d.ts → work-product/types.d.ts} +29 -31
  482. package/dist/work-product-react/index.d.ts +19 -8
  483. package/dist/workspace-react/index.d.ts +8 -11
  484. package/package.json +4 -3
  485. package/dist/agent-session-controls-CmlXwp_H.d.ts +0 -384
  486. package/dist/apply-6wlMOLf8.d.ts +0 -280
  487. package/dist/attachment-validation-BfJDBU1g.d.ts +0 -261
  488. package/dist/budget-BOucfcb_.d.ts +0 -142
  489. package/dist/chunk-CCVG2TL6.js.map +0 -1
  490. package/dist/values-C7RidJuI.d.ts +0 -156
  491. /package/dist/{chunk-PVP57G3S.js.map → chunk-2IFGVBNI.js.map} +0 -0
  492. /package/dist/{chunk-MQO5ML66.js.map → chunk-KJ2Q27U7.js.map} +0 -0
@@ -131,7 +131,7 @@ import {
131
131
  withoutRecordGridCreated,
132
132
  withoutRecordGridRemoved,
133
133
  withoutRecordGridUpdate
134
- } from "../chunk-MQO5ML66.js";
134
+ } from "../chunk-KJ2Q27U7.js";
135
135
  import "../chunk-FBVLEGEG.js";
136
136
  import {
137
137
  EvidenceLineageTable,
@@ -166,7 +166,7 @@ import {
166
166
  useComposerAttachments,
167
167
  usePending,
168
168
  usePopover
169
- } from "../chunk-PVP57G3S.js";
169
+ } from "../chunk-2IFGVBNI.js";
170
170
  import {
171
171
  ProviderLogo
172
172
  } from "../chunk-MLG6XKPV.js";
@@ -179,7 +179,7 @@ import "../chunk-PC2WYTK7.js";
179
179
  import "../chunk-QY4BRKRJ.js";
180
180
  import {
181
181
  ATTACHMENT_ACCEPT
182
- } from "../chunk-CCVG2TL6.js";
182
+ } from "../chunk-YNMPMW3G.js";
183
183
  import {
184
184
  attachmentInputToPart,
185
185
  attachmentKindForMime,
@@ -0,0 +1,39 @@
1
+ /**
2
+ * `inert`, across the React versions this package's peer range admits.
3
+ *
4
+ * MEASURED, not reasoned. `react` + `react-dom` 18.3.1 and 19.2.8, each
5
+ * rendering `<div inert={…}>x</div>` through `renderToStaticMarkup`, and the
6
+ * same four cases re-read as `outerHTML` after `createRoot().render` — server
7
+ * and client agreed on every row:
8
+ *
9
+ * | prop | React 18.3.1 | React 19.2.8 |
10
+ * | --------------- | ------------------------------- | ------------------------------- |
11
+ * | `inert={false}` | `<div>x</div>` — NO attribute | `<div>x</div>` — NO attribute |
12
+ * | `inert={''}` | `<div inert="">x</div>` — inert | `<div>x</div>` — NO attribute |
13
+ * | `inert={true}` | `<div>x</div>` — NO attribute | `<div inert="">x</div>` — inert |
14
+ * | `inert={'1'}` | `<div inert="1">x</div>` — inert | `<div inert="">x</div>` — inert |
15
+ *
16
+ * React 18 warns on the two it drops (`Received \`false\`/\`true\` for a
17
+ * non-boolean attribute \`inert\`.`); React 19 warns on the one it drops
18
+ * (`Received an empty string for a boolean attribute \`inert\`.`).
19
+ *
20
+ * So the FALSE case needs no help: both majors already emit nothing, and a
21
+ * plain `inert={!open}` binding never made an open panel inert on either. The
22
+ * TRUE case is the defect — `true` is dropped by 18 and `''` is dropped by 19,
23
+ * so a plain boolean binding leaves a COLLAPSED panel focusable and
24
+ * screen-reader readable on React 18, which `peerDependencies` (`react >=18`)
25
+ * admits.
26
+ *
27
+ * The last row is the answer, and it is why this file no longer detects
28
+ * anything. `inert` is an HTML boolean attribute: its PRESENCE is what makes an
29
+ * element inert, whatever the value reads. A non-empty string is emitted by
30
+ * both majors, warned about by neither, and inert on both — so there is one
31
+ * spelling and no branch.
32
+ */
33
+ /**
34
+ * Props that make an element inert when `inert` is true, and nothing at all
35
+ * when it is false.
36
+ */
37
+ export declare function inertProps(inert: boolean): {
38
+ inert?: boolean;
39
+ };
@@ -0,0 +1,203 @@
1
+ /**
2
+ * `InsightCard` + `InsightDeck` — the number that moved, and the paged deck of
3
+ * them.
4
+ *
5
+ * Every product on this shell computes insights already: `/spend` knows today's
6
+ * burn against yesterday's, `/missions` knows how many runs landed, the eval
7
+ * lanes know a pass rate per release. All of it renders as a line of text, so
8
+ * the reader does the comparison in their head and the series behind the number
9
+ * never reaches the screen at all.
10
+ *
11
+ * Two rules this surface exists to hold:
12
+ *
13
+ * - **A delta needs a baseline.** `previous` absent means no delta is drawn —
14
+ * not a green `+0%`, which is the specific fabrication a hand-rolled card
15
+ * produces when it defaults its baseline to zero, and which reads as "we
16
+ * measured, nothing changed" when the truth is "we have nothing to compare
17
+ * against". {@link insightDelta} returns `null` rather than a zero.
18
+ * - **Direction is not sentiment.** Spend going up and missions going up are
19
+ * the same arrow and opposite news, so tone is a caller declaration
20
+ * (`polarity`), and the default is neutral. A card that paints every rise
21
+ * green teaches the reader to stop reading the label.
22
+ *
23
+ * The deck is built on `web-react/async` rather than a loading boolean, so it
24
+ * inherits that module's invariant instead of restating it: `AsyncView` renders
25
+ * `error` with its message and retry, and `empty` is reachable only from a load
26
+ * that resolved — a failed fetch can never paint "No insights yet"
27
+ * (`docs/async-state-module.md`).
28
+ *
29
+ * Motion: cards arrive with `.agent-arrive`, staggered by `--stagger-index`
30
+ * from the deck, and a page TURN remounts them so the next page arrives as a
31
+ * sequence instead of swapping text under cards that never moved. A REFRESH is
32
+ * the opposite case and gets the opposite treatment — see the deck's own note.
33
+ * Every piece of that is decoration, carries no `data-motion`, and collapses
34
+ * under `prefers-reduced-motion` — the live label included.
35
+ *
36
+ * The live label does NOT opt out, and the reasoning is worth stating because
37
+ * the opposite reads plausible. What tells the reader a figure is still being
38
+ * computed is the WORD (`liveLabel`, "Updating"): it is rendered only while
39
+ * `live`, and a settled card does not render it at all. The sweep through its
40
+ * glyphs is emphasis on a signal that is already there, not the signal. So a
41
+ * reader who asked for less motion still sees the word — static, in the
42
+ * shimmer's resting gradient, still legible, and still disappearing the moment
43
+ * the figure is final. Nothing here overrides a request the reader made.
44
+ */
45
+ import { type CSSProperties, type ReactElement } from 'react';
46
+ import { type AsyncEmptySpec, type AsyncResourceState } from './async';
47
+ export type InsightDirection = 'up' | 'down' | 'flat';
48
+ /** Which way is good news for THIS metric. `neutral` is the default because it
49
+ * is the only answer that is true for every metric. */
50
+ export type InsightPolarity = 'higher-is-better' | 'lower-is-better' | 'neutral';
51
+ export type InsightTone = 'positive' | 'negative' | 'neutral';
52
+ export interface InsightDelta {
53
+ /** The baseline the move is measured against — rendered, so the delta is
54
+ * never a number floating free of what produced it. */
55
+ readonly previous: number;
56
+ readonly absolute: number;
57
+ /** `null` when the baseline is `0`: a share of nothing is undefined, and
58
+ * "+∞%" or a silently-dropped percentage are both worse than the absolute. */
59
+ readonly percent: number | null;
60
+ readonly direction: InsightDirection;
61
+ }
62
+ /**
63
+ * The move, or `null` when there is no honest one to state.
64
+ *
65
+ * `unknown` inputs on purpose: these arrive from a fetched payload, and the
66
+ * cases that must not produce a delta — a missing baseline, a `null` from a
67
+ * first-ever reading, a `NaN` from a producer's division — are exactly the ones
68
+ * a narrower signature would let through as `0`.
69
+ */
70
+ export declare function insightDelta(value: unknown, previous: unknown): InsightDelta | null;
71
+ /** Maps a direction onto good/bad news, which only the caller knows. */
72
+ export declare function insightDeltaTone(direction: InsightDirection, polarity?: InsightPolarity): InsightTone;
73
+ /**
74
+ * The delta as words: direction, magnitude, and the baseline it is measured
75
+ * against. Words rather than an arrow plus a bare number, because the arrow is
76
+ * `aria-hidden` and a reader hearing "12%" learns nothing about which way.
77
+ */
78
+ export declare function formatInsightDelta(delta: InsightDelta, format?: (value: number) => string): string;
79
+ export interface InsightAction {
80
+ label: string;
81
+ onClick: () => void;
82
+ }
83
+ export interface InsightCardProps {
84
+ /** What was measured, in the reader's words ("Spend today"). */
85
+ title: string;
86
+ /** The number that moved. A `string` renders verbatim — a total the caller
87
+ * already formatted with its own currency — and takes no delta, because
88
+ * there is nothing to subtract. A non-finite number is not a measurement and
89
+ * renders as {@link INSIGHT_UNAVAILABLE_GLYPH}, never as "NaN" or "∞". */
90
+ value: number | string;
91
+ /** "USD", "runs", "%" — the unit the number is in, beside it rather than
92
+ * glued into it, so the figure stays scannable. */
93
+ unit?: string;
94
+ /** The baseline. Absent ⇒ the card renders the value and no delta. */
95
+ previous?: number;
96
+ polarity?: InsightPolarity;
97
+ /** One number format for the value, the delta and the series, so the three
98
+ * cannot disagree about decimals on the same card. */
99
+ format?: (value: number) => string;
100
+ series?: readonly number[];
101
+ /** Names the series in its accessible label; defaults to the card's title. */
102
+ seriesLabel?: string;
103
+ /** One line of context under the number — what the window is, what is
104
+ * excluded. Not a restatement of the title. */
105
+ description?: string;
106
+ /** The next action for this insight. An element renders as supplied (a link,
107
+ * a dialog trigger); the object form renders the standard button. */
108
+ action?: InsightAction | ReactElement;
109
+ /** The number is still being computed. The label's PRESENCE is the signal, so
110
+ * it reads the same with motion collapsed — see the module note. */
111
+ live?: boolean;
112
+ liveLabel?: string;
113
+ className?: string;
114
+ style?: CSSProperties;
115
+ }
116
+ export declare function InsightCard({ title, value, unit, previous, polarity, format, series, seriesLabel, description, action, live, liveLabel, className, style, }: InsightCardProps): ReactElement;
117
+ export interface Insight extends InsightCardProps {
118
+ /** Stable across refreshes: it keys the card. Paired with the deck holding
119
+ * the last loaded page across a reload, a stable id is what lets a settled
120
+ * card keep its own DOM node — and therefore not replay its arrival — when
121
+ * a poll returns the same insight. */
122
+ readonly id: string;
123
+ }
124
+ export declare const DEFAULT_INSIGHT_PAGE_SIZE = 3;
125
+ /**
126
+ * The page size — ONE definition, read by the count and by the slice.
127
+ *
128
+ * Two definitions is how a deck hides an insight with no error at all: a count
129
+ * that divides by the raw `2.5` claims two pages of a five-card deck, a slice
130
+ * that floors it puts two cards on each, and the fifth card is on no page the
131
+ * reader can reach. Nothing renders wrong; a card is simply gone.
132
+ *
133
+ * A page size is a count of cards, so a fraction, a zero and a negative are not
134
+ * smaller decks — they are caller mistakes, and this normalises them back to the
135
+ * default and says so once per offending value. Normalised rather than thrown
136
+ * because the value is often computed from a measured viewport, where the first
137
+ * paint legitimately produces a `0`: a deck that pages in threes is a far
138
+ * smaller failure than a dashboard that throws during render.
139
+ */
140
+ export declare function insightPageSize(pageSize?: number): number;
141
+ /** Always at least one page, so "Page 1 of 0" cannot be rendered. */
142
+ export declare function insightPageCount(total: number, pageSize?: number): number;
143
+ /** The items on `page`, with the page clamped into range — a deck whose list
144
+ * shrank under the reader shows the last page that exists, never a blank one. */
145
+ export declare function insightPageSlice<T>(items: readonly T[], page: number, pageSize?: number): readonly T[];
146
+ export interface InsightDeckProps {
147
+ /** The same five-state contract every other screen fetches through. */
148
+ state: AsyncResourceState<readonly Insight[]>;
149
+ /** Required by `AsyncView`: an empty deck must say what is missing and what
150
+ * to do about it. */
151
+ empty: AsyncEmptySpec | ReactElement;
152
+ /** Names the region for assistive tech and titles nothing visually — the
153
+ * cards carry their own headings. */
154
+ label?: string;
155
+ pageSize?: number;
156
+ loadingLabel?: string;
157
+ retryLabel?: string;
158
+ className?: string;
159
+ /**
160
+ * The page the reader is ON, whatever moved them there.
161
+ *
162
+ * That includes the render-time clamp: a list that shrinks under a reader
163
+ * standing on page 3 leaves them on the last page that exists, and a parent
164
+ * persisting this to a URL or to storage would otherwise keep writing a page
165
+ * number nothing can reach. Reported once per effective page, never twice for
166
+ * the same one.
167
+ */
168
+ onPageChange?: (page: number) => void;
169
+ }
170
+ /**
171
+ * The paged deck.
172
+ *
173
+ * `AsyncView` owns the non-`ready` branches, which is what makes the invariant
174
+ * structural here: the cards are rendered from one branch of that component,
175
+ * and no branch of this one could paint the empty copy over a failure.
176
+ *
177
+ * **A REFRESH DOES NOT REPLACE WHAT IS ON SCREEN.** `useAsyncResource` re-enters
178
+ * `loading` with no value held on every reload, and handing that straight to
179
+ * `AsyncView` swaps the ready subtree for the busy block — which destroys the
180
+ * DOM the reader is standing in. Measured, on a real reload: `document.
181
+ * activeElement` fell to `document.body`, so a keyboard reader mid-page lost
182
+ * their place on every automatic poll; and every settled card was a NEW node, so
183
+ * `.agent-arrive` replayed across the whole visible page — the exact flash this
184
+ * surface's motion rules exist to prevent. Holding the page NUMBER above the
185
+ * boundary fixed the counter and none of that, because the subtree under it was
186
+ * still being torn down.
187
+ *
188
+ * So the deck holds the last insights it rendered and keeps handing them to the
189
+ * SAME `AsyncView` branch while a reload is in flight: same element, same
190
+ * position, same keys — React reuses the nodes, focus stays where the reader put
191
+ * it, and nothing re-animates. `aria-busy` on the region is the signal that a
192
+ * load is in flight; a per-card one is `live` on the card.
193
+ *
194
+ * The bridge is only ever over a WAIT. `error` and `empty` are answers about the
195
+ * resource, so they drop what was held and render their own branch — a failed
196
+ * fetch still cannot paint stale numbers, and the async module's invariant is
197
+ * untouched.
198
+ *
199
+ * It bridges one resource, not one component: if the SUBJECT changes (a
200
+ * different workspace, a different window), give the deck a `key` so it remounts
201
+ * rather than showing the previous subject's numbers while the new ones load.
202
+ */
203
+ export declare function InsightDeck({ state, empty, label, pageSize, loadingLabel, retryLabel, className, onPageChange, }: InsightDeckProps): ReactElement;
@@ -0,0 +1,115 @@
1
+ /**
2
+ * Shared answer-building + submit plumbing for the interaction cards
3
+ * (question, plan). Client-safe, no React: cards own their state, this owns
4
+ * the wire. Lifted from the gtm-agent fork (the most fix-absorbed of the three
5
+ * product copies), including the 30s submit timeout that keeps a dead route
6
+ * from wedging a card in "Submitting…".
7
+ */
8
+ import type { ChatInteraction, ChatInteractionField, ChatInteractionStatus, InteractionAnswers, InteractionData } from './chat-interactions';
9
+ /** Status-badge labels for an interaction card. `cancelled`/`expired` read the
10
+ * same across cards; each card supplies its own verbs for the other states
11
+ * (a question is answered/declined; a plan is approved/rejected). */
12
+ export declare function interactionStatusLabels(labels: {
13
+ pending: string;
14
+ answered: string;
15
+ declined: string;
16
+ }): Record<ChatInteractionStatus, string>;
17
+ /** Terminal-state notes for an interaction card. The expiry/withdrawal lines
18
+ * share one shape around the card's noun ("question"/"plan"); any extra notes
19
+ * (e.g. a plan's `declined` revision line) merge on top. */
20
+ export declare function interactionTerminalNotes(noun: string, extra?: Partial<Record<ChatInteractionStatus, string>>): Partial<Record<ChatInteractionStatus, string>>;
21
+ /** Define a record mapping field names to objects with optional selected, text, and custom string arrays or values */
22
+ export type FieldValues = Record<string, {
23
+ selected?: string[];
24
+ text?: string;
25
+ custom?: string;
26
+ }>;
27
+ /** Converts acknowledged, persisted answers back into the local field state
28
+ * consumed by the shared cards. Persisted values are authoritative: this is
29
+ * intentionally used only when an interaction carries `answers`, never to
30
+ * guess an answer from the absence of an outstanding sidecar ask. */
31
+ export declare function fieldValuesFromAnswers(fields: ChatInteractionField[], answers: InteractionAnswers | undefined): FieldValues;
32
+ /** The submitted value for one field, or null when it has no answer yet.
33
+ *
34
+ * Returns `InteractionAnswers[string]`, not the wider `InteractionData[string]`:
35
+ * a card reads its value out of a rendered control, so every branch below
36
+ * yields a plain scalar or string array. `InteractionData` also admits a
37
+ * one-use `secret_handle` reference, which no control here can produce and
38
+ * which `onResolved` must never receive — that path persists into the visible
39
+ * transcript. Declaring the narrow type keeps the handle out by construction
40
+ * rather than by review. */
41
+ export declare function fieldAnswer(field: ChatInteractionField, values: FieldValues): InteractionAnswers[string] | null;
42
+ /** All required fields answered → the respond payload; else null (not
43
+ * submittable yet). Optional unanswered fields are omitted. */
44
+ export declare function buildAnswerData(fields: ChatInteractionField[], values: FieldValues): InteractionAnswers | null;
45
+ /** Determine if a status is late answerable by checking if it is expired or cancelled */
46
+ export declare function isLateAnswerableStatus(status: ChatInteractionStatus): boolean;
47
+ /** Secrets must never leave the sidecar answer channel for the visible chat
48
+ * transcript, so a secret-bearing ask cannot be late-answered. */
49
+ export declare function hasSecretField(fields: ChatInteractionField[]): boolean;
50
+ /** Renders the late answer as a self-contained chat message: the original
51
+ * question, its context, and the user's answer(s). */
52
+ export declare function lateAnswerMessage(interaction: ChatInteraction, data: InteractionData): string;
53
+ /** Define the timeout duration in milliseconds for submitting an interaction */
54
+ export declare const INTERACTION_SUBMIT_TIMEOUT_MS = 30000;
55
+ /** Provide the timeout message displayed when the agent cannot be reached during interaction submission */
56
+ export declare const INTERACTION_SUBMIT_TIMEOUT_MESSAGE = "Could not reach the agent. Try again.";
57
+ /** One card submission: which ask, resolved how, with what answers. */
58
+ export interface InteractionAnswerSubmission {
59
+ id: string;
60
+ outcome: 'accepted' | 'declined';
61
+ data?: InteractionData;
62
+ }
63
+ /** Resolve the result of an interaction submission indicating success or failure with details */
64
+ export type InteractionSubmitResult = {
65
+ ok: true;
66
+ } | {
67
+ ok: false;
68
+ expired: boolean;
69
+ message: string;
70
+ };
71
+ /** The cards' only side-effect seam: POST one resolution, report the normalized
72
+ * outcome. Products bind their route URL + routing fields (workspaceId,
73
+ * threadId, session path param) via `createInteractionAnswerSubmitter` or a
74
+ * hand-rolled implementation. */
75
+ export type SubmitInteractionAnswer = (submission: InteractionAnswerSubmission) => Promise<InteractionSubmitResult>;
76
+ /** Extracts the most specific error message a route returned. */
77
+ export declare function responseErrorMessage(res: Response): Promise<{
78
+ code?: string;
79
+ message: string;
80
+ }>;
81
+ /** Define options for submitting interaction answers including URL, body, timeout, and fetch implementation */
82
+ export interface InteractionAnswerSubmitterOptions {
83
+ /** The product's answer route (the POST half of `createInteractionAnswerRoute`).
84
+ * A function when the URL carries the session (e.g. `/api/sessions/${id}/interactions`). */
85
+ url: string | ((submission: InteractionAnswerSubmission) => string);
86
+ /** Extra routing fields merged into the POST body (e.g. workspaceId, threadId). */
87
+ body?: Record<string, unknown> | ((submission: InteractionAnswerSubmission) => Record<string, unknown>);
88
+ timeoutMs?: number;
89
+ fetchImpl?: typeof fetch;
90
+ }
91
+ /**
92
+ * Runs a host-supplied submitter under the CARD's own deadline, and always
93
+ * resolves.
94
+ *
95
+ * `createInteractionAnswerSubmitter` aborts its own fetch, but a product may
96
+ * pass any `SubmitInteractionAnswer` — commonly one wrapping an untimed
97
+ * `fetch`. The deadline cannot live only in the submitter, because what gets
98
+ * stuck is the card: its in-flight guard is cleared by the awaited promise
99
+ * settling, so a submitter that never settles leaves that guard set for the
100
+ * life of the instance — "Submitting…" forever, and no answer can be sent
101
+ * again. A submitter with its own shorter timeout simply wins the race.
102
+ *
103
+ * Rejection is normalized too: a submitter that throws would otherwise escape
104
+ * the click handler as an unhandled rejection, leaving the user with a card
105
+ * that silently did nothing. It becomes a visible, retryable message instead.
106
+ */
107
+ export declare function settleInteractionSubmit(run: () => Promise<InteractionSubmitResult>, timeoutMs?: number): Promise<InteractionSubmitResult>;
108
+ /**
109
+ * Builds the `SubmitInteractionAnswer` the cards consume: POSTs
110
+ * `{ ...routingFields, id, outcome, data? }` with an abortable timeout and
111
+ * normalizes the outcome. `expired` is the 410 path — the ask is gone
112
+ * (answered elsewhere, timed out, or the session moved on) and the card must
113
+ * flip to the same dead state a cancel event produces.
114
+ */
115
+ export declare function createInteractionAnswerSubmitter(options: InteractionAnswerSubmitterOptions): SubmitInteractionAnswer;
@@ -0,0 +1,39 @@
1
+ /**
2
+ * InteractionPlanCard — the plan-approval round-trip card (kind:"plan",
3
+ * claude-code plan mode). The plan itself arrives as markdown in
4
+ * `interaction.body`; the answerSpec is producer-defined, so fields render
5
+ * generically — a free-text field doubles as the rejection-feedback input.
6
+ * Approve POSTs outcome:"accepted", Request changes POSTs outcome:"declined"
7
+ * with any typed feedback.
8
+ *
9
+ * Markdown is injected (`renderMarkdown`, matching the rest of `web-react`);
10
+ * without it the plan body falls back to pre-wrapped plain text. Pure data +
11
+ * callbacks: no fetch inside the component.
12
+ */
13
+ import { type ReactNode } from 'react';
14
+ import type { ChatInteraction, ChatInteractionStatus } from './chat-interactions';
15
+ import { type SubmitInteractionAnswer } from './interaction-card-support';
16
+ export interface InteractionPlanCardProps {
17
+ interaction: ChatInteraction;
18
+ /** Viewer-vs-editor gate: false renders everything read-only. */
19
+ canWrite: boolean;
20
+ /** POST one resolution to the product's answer route (see
21
+ * `createInteractionAnswerSubmitter`). */
22
+ submitAnswer: SubmitInteractionAnswer;
23
+ /** Fired when this card resolves locally (approved/rejected, or discovered
24
+ * expired via a 410) so the stream/route state stays in sync. */
25
+ onResolved?: (id: string, status: Exclude<ChatInteractionStatus, 'pending'>) => void;
26
+ /** Fired when the user asks the agent to re-submit an expired/withdrawn plan
27
+ * as a new chat turn. Receives the interaction so a callback shared across
28
+ * cards (e.g. via DurableChatCards) knows which plan fired. Return/resolve
29
+ * `false` (or throw) to report the send failed and keep the affordance
30
+ * retryable. Omit to hide it entirely. */
31
+ onReRequest?: (interaction: ChatInteraction) => boolean | void | Promise<boolean | void>;
32
+ /** Overrides the default re-request button label
33
+ * ("Ask agent to re-submit the plan" — gtm's exact current copy). */
34
+ reRequestLabel?: string;
35
+ /** Renders the plan body (markdown). Falls back to pre-wrapped plain text. */
36
+ renderMarkdown?: (markdown: string) => ReactNode;
37
+ className?: string;
38
+ }
39
+ export declare function InteractionPlanCard({ interaction, canWrite, submitAnswer, onResolved, onReRequest, reRequestLabel, renderMarkdown, className, }: InteractionPlanCardProps): import("react").JSX.Element;
@@ -0,0 +1,100 @@
1
+ /**
2
+ * InteractionQuestionCard — the agent-ask card every sandbox-backed chat UI
3
+ * forked (~1,000 lines each in gtm/legal/tax). Renders the answerSpec
4
+ * verbatim: selects (radio/checkbox by `multi`, write-in row only when the
5
+ * sidecar granted `allowCustom`), free text, and minimal number/boolean/secret
6
+ * inputs for open kinds.
7
+ *
8
+ * Behavior lifted from the gtm-agent fork (the most fix-absorbed):
9
+ * - a terminal stream status always wins over local optimistic state,
10
+ * - a 410 from the answer route flips the card to the same dead state a
11
+ * cancel event produces (never a raw error),
12
+ * - expired/withdrawn asks stay answerable: the answer is delivered as a NEW
13
+ * chat turn via `onLateAnswer` (secret-bearing asks are blocked from that
14
+ * path),
15
+ * - one submit in flight at a time; a failed/timed-out submit stays
16
+ * retryable.
17
+ *
18
+ * Pure data + callbacks: no fetch inside the component. Products bind the wire
19
+ * via `createInteractionAnswerSubmitter` (or any `SubmitInteractionAnswer`).
20
+ */
21
+ import { type ReactNode } from 'react';
22
+ import type { ChatInteraction, ChatInteractionStatus, ChatSelectField } from './chat-interactions';
23
+ import { type SubmitInteractionAnswer } from './interaction-card-support';
24
+ export type InteractionBadgeVariant = 'outline' | 'default' | 'destructive';
25
+ export declare function InteractionBadge({ variant, children }: {
26
+ variant: InteractionBadgeVariant;
27
+ children: string;
28
+ }): import("react").JSX.Element;
29
+ export declare function InteractionActionButton({ variant, onClick, disabled, children, }: {
30
+ variant?: 'primary' | 'outline';
31
+ onClick: () => void;
32
+ disabled?: boolean;
33
+ children: string;
34
+ }): import("react").JSX.Element;
35
+ export interface QuestionOptionListProps {
36
+ /** Radio/checkbox group name — unique per field so selection is isolated. */
37
+ groupName: string;
38
+ /** Stable prefix for per-option input ids (label htmlFor pairing). */
39
+ idPrefix: string;
40
+ options: ChatSelectField['options'];
41
+ /** Checkbox (multi-select) vs radio (single). */
42
+ multi: boolean;
43
+ selectedValues: string[];
44
+ disabled: boolean;
45
+ onToggle: (value: string) => void;
46
+ /** Terminal answered state: the selected rows highlight (primary edge, tint,
47
+ * trailing check) so the card shows WHAT was answered, not just that it was. */
48
+ answered?: boolean;
49
+ }
50
+ /** The radio/checkbox option rows for a select field. Renders a fragment of
51
+ * option `<label>` rows so a card keeps its own wrapping layout and appends
52
+ * its own write-in input.
53
+ *
54
+ * The rows arrive as a SEQUENCE (`.agent-arrive` + `--stagger-index`), which
55
+ * is the difference between reading a list and being shown one: the eye is
56
+ * told there are N choices and in what order before it has read any of them.
57
+ * The index is safe to take straight from the map because an option list does
58
+ * not re-sort under a mounted card — a different set of options is a
59
+ * different `key`, and a different ask resets the card wholesale. */
60
+ export declare function QuestionOptionList({ groupName, idPrefix, options, multi, selectedValues, disabled, onToggle, answered, }: QuestionOptionListProps): import("react").JSX.Element;
61
+ export interface InteractionQuestionCardProps {
62
+ interaction: ChatInteraction;
63
+ /** Viewer-vs-editor gate: false renders everything read-only. */
64
+ canWrite: boolean;
65
+ /** POST one resolution to the product's answer route (see
66
+ * `createInteractionAnswerSubmitter`). Never called for late answers. */
67
+ submitAnswer: SubmitInteractionAnswer;
68
+ /** Fired when this card resolves locally (answered, or discovered expired
69
+ * via a 410) so the stream/route state stays in sync. */
70
+ onResolved?: (id: string, status: Exclude<ChatInteractionStatus, 'pending'>, answers?: ChatInteraction['answers']) => void;
71
+ /** Delivers a late answer (the ask expired/was withdrawn) as a fresh chat
72
+ * turn. Return/resolve `false` when the send was rejected so the card stays
73
+ * retryable. Omit to hide the late-answer affordance entirely. */
74
+ onLateAnswer?: (message: string) => boolean | void | Promise<boolean | void>;
75
+ /** Overrides the kind badge ("Question"). */
76
+ kindLabel?: string;
77
+ /** What happens if nobody answers, rendered beside the submit action.
78
+ *
79
+ * The caller owns both the clock and the copy: this card holds no timer, so a
80
+ * deadline that counts down re-renders on the caller's cadence rather than
81
+ * driving one of its own — and the consequence of silence ("the default is
82
+ * taken", "the run fails") is the host's policy to state, not this card's to
83
+ * infer. */
84
+ timeoutNote?: ReactNode;
85
+ /** Renders `body` as markdown. Omitted, `body` renders as plain text — so a
86
+ * host that passes authored markdown without this shows its syntax raw.
87
+ *
88
+ * `body` ONLY. `title` and every `field.label` stay plain strings: a label is
89
+ * also the input's accessible name (`aria-label`), which has to be text, and
90
+ * rendering one as nodes would either break that or silently disagree with
91
+ * what a screen reader announces. Put prose in `body`.
92
+ *
93
+ * `interaction.body` is untrusted: it arrives off the wire, written by an
94
+ * agent or whoever authored the ask. This card never injects HTML, but a
95
+ * renderer that does is an XSS sink — so return React elements, and sanitize
96
+ * (DOMPurify or equivalent) if you must produce HTML. */
97
+ renderMarkdown?: (markdown: string) => ReactNode;
98
+ className?: string;
99
+ }
100
+ export declare function InteractionQuestionCard({ interaction, canWrite, submitAnswer, onResolved, onLateAnswer, kindLabel, timeoutNote, renderMarkdown, className, }: InteractionQuestionCardProps): import("react").JSX.Element;
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Renders a message's attachment parts (images + files) as thumbnails and
3
+ * download chips — the transcript-side counterpart to `ChatComposer`'s
4
+ * staged-upload chips. Ported from gtm-agent's `chat-attachment-parts.tsx`
5
+ * onto agent-app's RAW-BYTES download contract: the host supplies
6
+ * `resolveFileUrl(part)`, a URL that serves the attachment's raw bytes
7
+ * directly, so this module never parses a JSON `{file:{blobUrl,body}}`
8
+ * envelope or decodes a `[base64]` marker the way gtm's vault route did.
9
+ *
10
+ * No icon-library or primitives dependency (`ChatComposer`'s house style):
11
+ * the loading skeleton is an inline `animate-pulse` span and the few glyphs
12
+ * are inline SVGs.
13
+ */
14
+ import { type ReactNode } from 'react';
15
+ import type { ChatAttachmentPart } from './chat-attachments';
16
+ /** Typed outcome of fetching one attachment's raw bytes. Callers must check
17
+ * `ok` before touching `blob` — a failed fetch never produces a blank
18
+ * render, it produces a visible error state. */
19
+ export type AttachmentFileResult = {
20
+ ok: true;
21
+ blob: Blob;
22
+ } | {
23
+ ok: false;
24
+ message: string;
25
+ };
26
+ export declare function __resetAttachmentFileCacheForTests(): void;
27
+ /** Fetches (and caches) the raw bytes behind one attachment url. Concurrent
28
+ * callers for the SAME url dedupe to one in-flight fetch. Only a successful
29
+ * settlement stays cached — evicting failures means a remount or click-retry
30
+ * after a transient error issues a fresh fetch. */
31
+ export declare function loadAttachmentFile(url: string, fetchFile?: (url: string) => Promise<Response>): Promise<AttachmentFileResult>;
32
+ /** Drives an anchor-click download from an already-resolved blob. Returns a
33
+ * typed outcome rather than throwing — a chip that fails to synthesize the
34
+ * download must show the failure, not silently no-op. */
35
+ export declare function triggerAttachmentDownload(name: string, blob: Blob): {
36
+ ok: true;
37
+ } | {
38
+ ok: false;
39
+ message: string;
40
+ };
41
+ export interface MessageAttachmentsProps {
42
+ parts: ChatAttachmentPart[];
43
+ /** URL serving the attachment's RAW bytes. */
44
+ resolveFileUrl: (part: ChatAttachmentPart) => string;
45
+ /** Row alignment — a user-bubble attachment row is right-aligned by
46
+ * default; pass `"start"` for an assistant-turn attachment, which sits
47
+ * inline with the rest of the transcript. */
48
+ justify?: 'start' | 'end';
49
+ /** Override the fetch used to load an attachment's bytes. Default:
50
+ * `fetch(url, { credentials: 'same-origin' })`. */
51
+ fetchFile?: (url: string) => Promise<Response>;
52
+ }
53
+ /** Renders a message's attachment parts as a row of image thumbnails and file
54
+ * chips. `null` when there are none, so callers can render unconditionally
55
+ * without an extra length check. */
56
+ export declare function MessageAttachments({ parts, resolveFileUrl, justify, fetchFile }: MessageAttachmentsProps): ReactNode;