@tangle-network/agent-app 0.45.53 → 0.45.55

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (480) hide show
  1. package/README.md +1 -1
  2. package/dist/alerting/index.d.ts +5 -175
  3. package/dist/alerting/slack.d.ts +176 -0
  4. package/dist/app-auth/index.d.ts +14 -17
  5. package/dist/assets/index.d.ts +2 -504
  6. package/dist/assets/schema.d.ts +264 -0
  7. package/dist/assets/types.d.ts +237 -0
  8. package/dist/assistant/AssistantDock.d.ts +56 -0
  9. package/dist/assistant/AssistantHistory.d.ts +41 -0
  10. package/dist/assistant/AssistantPanel.d.ts +84 -0
  11. package/dist/assistant/ProposalCard.d.ts +41 -0
  12. package/dist/assistant/ResizeHandle.d.ts +19 -0
  13. package/dist/assistant/client-context.d.ts +20 -0
  14. package/dist/assistant/client.d.ts +117 -0
  15. package/dist/assistant/index.d.ts +19 -848
  16. package/dist/assistant/launcher.d.ts +23 -0
  17. package/dist/assistant/persistence.d.ts +26 -0
  18. package/dist/assistant/presentation.d.ts +99 -0
  19. package/dist/assistant/provider-label.d.ts +7 -0
  20. package/dist/assistant/reducer.d.ts +130 -0
  21. package/dist/assistant/sse.d.ts +24 -0
  22. package/dist/assistant/time-ago.d.ts +6 -0
  23. package/dist/assistant/transcript.d.ts +97 -0
  24. package/dist/assistant/types.d.ts +291 -0
  25. package/dist/assistant/use-stick-to-bottom.d.ts +28 -0
  26. package/dist/assistant/useAssistantChat.d.ts +63 -0
  27. package/dist/assistant/useAssistantModels.d.ts +22 -0
  28. package/dist/assistant/useAssistantThreads.d.ts +47 -0
  29. package/dist/assistant/usePanelPrefs.d.ts +55 -0
  30. package/dist/billing/index.d.ts +19 -21
  31. package/dist/brand/index.d.ts +16 -10
  32. package/dist/brand-extraction/extract.d.ts +34 -0
  33. package/dist/brand-extraction/index.d.ts +12 -214
  34. package/dist/brand-extraction/map.d.ts +58 -0
  35. package/dist/brand-extraction/types.d.ts +119 -0
  36. package/dist/catalog/index.d.ts +11 -101
  37. package/dist/chat-react/composer-mode-controls.d.ts +14 -0
  38. package/dist/chat-react/entry-composer.d.ts +92 -0
  39. package/dist/chat-react/index.d.ts +22 -118
  40. package/dist/chat-react/types.d.ts +11 -0
  41. package/dist/chat-routes/attachment-store.d.ts +84 -0
  42. package/dist/chat-routes/attachment-upload.d.ts +84 -0
  43. package/dist/chat-routes/attachment-validation.d.ts +95 -0
  44. package/dist/chat-routes/binary-sniff.d.ts +45 -0
  45. package/dist/chat-routes/completed-sandbox-turn.d.ts +25 -0
  46. package/dist/chat-routes/detached-turn.d.ts +197 -0
  47. package/dist/chat-routes/dispatch-parts.d.ts +101 -0
  48. package/dist/chat-routes/draft-persistence.d.ts +189 -0
  49. package/dist/chat-routes/durable-projection.d.ts +18 -0
  50. package/dist/chat-routes/file-index.d.ts +115 -0
  51. package/dist/chat-routes/index.d.ts +25 -1840
  52. package/dist/chat-routes/model-failover-stream.d.ts +206 -0
  53. package/dist/chat-routes/promote-file-part.d.ts +84 -0
  54. package/dist/chat-routes/resolve-attachments.d.ts +72 -0
  55. package/dist/chat-routes/sandbox-producer.d.ts +146 -0
  56. package/dist/chat-routes/sandbox-turn-usage.d.ts +4 -0
  57. package/dist/{stale-turn-lock-DucQzvXu.d.ts → chat-routes/stale-turn-lock.d.ts} +7 -9
  58. package/dist/chat-routes/turn-routes.d.ts +540 -0
  59. package/dist/chat-routes/upload.d.ts +84 -0
  60. package/dist/{wire-DOZ-O6hD.d.ts → chat-routes/wire.d.ts} +41 -44
  61. package/dist/chat-store/core.d.ts +19 -0
  62. package/dist/chat-store/index.d.ts +22 -322
  63. package/dist/{parts-BqIHMdyu.d.ts → chat-store/parts.d.ts} +49 -47
  64. package/dist/chat-store/schema.d.ts +157 -0
  65. package/dist/chat-store/store.d.ts +177 -0
  66. package/dist/config/index.d.ts +13 -18
  67. package/dist/crypto/index.d.ts +10 -12
  68. package/dist/crypto/web-token.d.ts +22 -0
  69. package/dist/design-canvas/apply.d.ts +70 -0
  70. package/dist/design-canvas/drizzle-store.d.ts +29 -0
  71. package/dist/design-canvas/drizzle.d.ts +7 -575
  72. package/dist/{export-presets-mgVulRaV.d.ts → design-canvas/export-presets.d.ts} +18 -22
  73. package/dist/design-canvas/index.d.ts +22 -268
  74. package/dist/design-canvas/mcp-entry.d.ts +15 -0
  75. package/dist/design-canvas/mcp-handler.d.ts +34 -0
  76. package/dist/design-canvas/mcp-tools.d.ts +30 -0
  77. package/dist/{model-DnfO_PdJ.d.ts → design-canvas/model.d.ts} +33 -35
  78. package/dist/{operations-ByJ6yXOW.d.ts → design-canvas/operations.d.ts} +21 -25
  79. package/dist/design-canvas/schema.d.ts +558 -0
  80. package/dist/{store-CqfDtnPQ.d.ts → design-canvas/store.d.ts} +8 -12
  81. package/dist/design-canvas/templates.d.ts +72 -0
  82. package/dist/design-canvas/validate.d.ts +32 -0
  83. package/dist/design-canvas-react/components/BleedTrimOverlay.d.ts +22 -0
  84. package/dist/design-canvas-react/components/BrandKnot.d.ts +11 -0
  85. package/dist/design-canvas-react/components/CanvasEmptyState.d.ts +32 -0
  86. package/dist/design-canvas-react/components/CanvasInsertPanel.d.ts +53 -0
  87. package/dist/{lazy-DrkVyDpe.d.ts → design-canvas-react/components/DesignCanvas.d.ts} +27 -20
  88. package/dist/design-canvas-react/components/DesignCanvasEditor.d.ts +23 -0
  89. package/dist/design-canvas-react/components/ElementNode.d.ts +51 -0
  90. package/dist/design-canvas-react/components/ExportControl.d.ts +21 -0
  91. package/dist/design-canvas-react/components/GridLayer.d.ts +47 -0
  92. package/dist/design-canvas-react/components/InlineTextEditor.d.ts +25 -0
  93. package/dist/design-canvas-react/components/LayersPanel.d.ts +20 -0
  94. package/dist/design-canvas-react/components/PagesStrip.d.ts +34 -0
  95. package/dist/design-canvas-react/components/Rulers.d.ts +31 -0
  96. package/dist/design-canvas-react/components/SelectionLayer.d.ts +51 -0
  97. package/dist/design-canvas-react/components/SnapGuidesOverlay.d.ts +25 -0
  98. package/dist/design-canvas-react/components/Toolbar.d.ts +64 -0
  99. package/dist/design-canvas-react/components/Workspace.d.ts +92 -0
  100. package/dist/design-canvas-react/components/ZoomControls.d.ts +14 -0
  101. package/dist/design-canvas-react/components/glyphs.d.ts +46 -0
  102. package/dist/design-canvas-react/components/icon-button.d.ts +22 -0
  103. package/dist/design-canvas-react/components/index.d.ts +27 -0
  104. package/dist/design-canvas-react/components/layer-tree.d.ts +34 -0
  105. package/dist/design-canvas-react/components/ruler-math.d.ts +78 -0
  106. package/dist/design-canvas-react/components/transform-math.d.ts +168 -0
  107. package/dist/{command-stack-TNPWJCzW.d.ts → design-canvas-react/contracts.d.ts} +16 -63
  108. package/dist/design-canvas-react/engine/command-stack.d.ts +43 -0
  109. package/dist/design-canvas-react/engine/commands.d.ts +154 -0
  110. package/dist/design-canvas-react/engine/selection.d.ts +48 -0
  111. package/dist/design-canvas-react/engine/snap.d.ts +24 -0
  112. package/dist/design-canvas-react/engine/zoom-pan.d.ts +18 -0
  113. package/dist/design-canvas-react/engine.d.ts +21 -399
  114. package/dist/design-canvas-react/export-math.d.ts +104 -0
  115. package/dist/design-canvas-react/export.d.ts +89 -0
  116. package/dist/design-canvas-react/index.d.ts +16 -586
  117. package/dist/design-canvas-react/insert-builders.d.ts +61 -0
  118. package/dist/design-canvas-react/lazy.d.ts +21 -6
  119. package/dist/documents/docx.d.ts +50 -0
  120. package/dist/documents/extract.d.ts +87 -0
  121. package/dist/documents/index.d.ts +26 -232
  122. package/dist/documents/media-type.d.ts +33 -0
  123. package/dist/documents/pdf-inspector.d.ts +5 -9
  124. package/dist/{types-DrBidf3O.d.ts → documents/types.d.ts} +13 -15
  125. package/dist/documents/zip.d.ts +56 -0
  126. package/dist/eval/calibration.d.ts +106 -0
  127. package/dist/eval/index.d.ts +8 -116
  128. package/dist/eval-campaign/index.d.ts +11 -12
  129. package/dist/{trust-gate-Dcm5xSva.d.ts → eval-campaign/trust-gate.d.ts} +5 -9
  130. package/dist/forms/blank.d.ts +48 -0
  131. package/dist/forms/fill.d.ts +105 -0
  132. package/dist/forms/index.d.ts +58 -332
  133. package/dist/forms/registry.d.ts +115 -0
  134. package/dist/forms/verify.d.ts +58 -0
  135. package/dist/harness/index.d.ts +21 -19
  136. package/dist/intakes/api.d.ts +5 -11
  137. package/dist/{completion-CvcNUz07.d.ts → intakes/completion.d.ts} +7 -11
  138. package/dist/intakes/context-sufficiency.d.ts +113 -0
  139. package/dist/intakes/drizzle/schema.d.ts +338 -0
  140. package/dist/intakes/drizzle/store.d.ts +75 -0
  141. package/dist/intakes/drizzle.d.ts +12 -391
  142. package/dist/intakes/index.d.ts +23 -113
  143. package/dist/{model-C8U0HZxL.d.ts → intakes/model.d.ts} +15 -17
  144. package/dist/intakes-react/components/BrandMark.d.ts +10 -0
  145. package/dist/intakes-react/components/IntakeInterview.d.ts +15 -0
  146. package/dist/intakes-react/components/index.d.ts +1 -0
  147. package/dist/intakes-react/contracts.d.ts +42 -0
  148. package/dist/intakes-react/index.d.ts +12 -47
  149. package/dist/intakes-react/lazy.d.ts +9 -8
  150. package/dist/integrations/index.d.ts +10 -12
  151. package/dist/{contract-OxG_jVMx.d.ts → interactions/contract.d.ts} +40 -42
  152. package/dist/interactions/index.d.ts +16 -256
  153. package/dist/interactions/route.d.ts +151 -0
  154. package/dist/interactions/sidecar.d.ts +100 -0
  155. package/dist/knowledge/index.d.ts +7 -11
  156. package/dist/knowledge-loop/index.d.ts +13 -20
  157. package/dist/legibility/checks/empty-state.d.ts +59 -0
  158. package/dist/legibility/checks/reachability.d.ts +103 -0
  159. package/dist/legibility/checks/silent-failure.d.ts +57 -0
  160. package/dist/legibility/checks/success.d.ts +38 -0
  161. package/dist/legibility/checks/vocabulary.d.ts +65 -0
  162. package/dist/legibility/cli-args.d.ts +30 -0
  163. package/dist/legibility/cli.d.ts +25 -0
  164. package/dist/legibility/index.d.ts +10 -530
  165. package/dist/legibility/report.d.ts +22 -0
  166. package/dist/legibility/scan.d.ts +29 -0
  167. package/dist/legibility/source.d.ts +132 -0
  168. package/dist/legibility/suppress.d.ts +36 -0
  169. package/dist/legibility/types.d.ts +168 -0
  170. package/dist/legibility/walk-sources.d.ts +21 -0
  171. package/dist/{agent-activity-C8ZG0F0M.d.ts → missions/agent-activity.d.ts} +3 -5
  172. package/dist/missions/engine.d.ts +251 -0
  173. package/dist/missions/events.d.ts +195 -0
  174. package/dist/missions/index.d.ts +12 -765
  175. package/dist/missions/plan-parse.d.ts +50 -0
  176. package/dist/missions/service.d.ts +265 -0
  177. package/dist/{failover-D-3UXXTb.d.ts → model-resolution/failover.d.ts} +10 -12
  178. package/dist/model-resolution/index.d.ts +15 -18
  179. package/dist/object-store/index.d.ts +15 -17
  180. package/dist/openui/action.d.ts +54 -0
  181. package/dist/openui/authoring.d.ts +25 -0
  182. package/dist/openui/index.d.ts +24 -206
  183. package/dist/openui/route.d.ts +124 -0
  184. package/dist/openui/segments.d.ts +71 -0
  185. package/dist/openui/values.d.ts +82 -0
  186. package/dist/openui-react/index.d.ts +9 -13
  187. package/dist/peer-floors/check.d.ts +9 -190
  188. package/dist/peer-floors/cli.d.ts +2 -3
  189. package/dist/peer-floors/dependency-source.d.ts +178 -0
  190. package/dist/plans/index.d.ts +13 -14
  191. package/dist/{billing-BuNlaKlE.d.ts → platform/billing.d.ts} +28 -32
  192. package/dist/platform/guards.d.ts +79 -0
  193. package/dist/platform/hub.d.ts +107 -0
  194. package/dist/platform/index.d.ts +7 -112
  195. package/dist/{sso-Cm00S61u.d.ts → platform/sso.d.ts} +15 -97
  196. package/dist/preflight/cli.d.ts +3 -6
  197. package/dist/preflight/index.d.ts +16 -18
  198. package/dist/preset-cloudflare/headers.d.ts +12 -0
  199. package/dist/preset-cloudflare/index.d.ts +22 -74
  200. package/dist/preset-cloudflare/workflow-instance.d.ts +35 -0
  201. package/dist/profile/budget.d.ts +72 -0
  202. package/dist/profile/fingerprint.d.ts +65 -0
  203. package/dist/profile/index.d.ts +27 -19
  204. package/dist/prompt/index.d.ts +3 -5
  205. package/dist/record/drizzle/schema.d.ts +488 -0
  206. package/dist/record/drizzle/store.d.ts +224 -0
  207. package/dist/record/drizzle.d.ts +10 -679
  208. package/dist/record/fold.d.ts +99 -0
  209. package/dist/record/index.d.ts +13 -13
  210. package/dist/{fold-DACU7gtf.d.ts → record/model.d.ts} +22 -124
  211. package/dist/record/ulid.d.ts +12 -0
  212. package/dist/redact/index.d.ts +14 -16
  213. package/dist/run/index.d.ts +11 -16
  214. package/dist/runtime/agent.d.ts +23 -0
  215. package/dist/runtime/certified-delivery.d.ts +57 -0
  216. package/dist/runtime/index.d.ts +17 -367
  217. package/dist/runtime/loop.d.ts +58 -0
  218. package/dist/runtime/model-catalog.d.ts +103 -0
  219. package/dist/{model-CdCDfBA9.d.ts → runtime/model.d.ts} +25 -27
  220. package/dist/runtime/openai-stream.d.ts +126 -0
  221. package/dist/runtime/surface-profile.d.ts +115 -0
  222. package/dist/sandbox/binary-read.d.ts +63 -0
  223. package/dist/sandbox/diagnostics.d.ts +69 -0
  224. package/dist/sandbox/index.d.ts +103 -1085
  225. package/dist/sandbox/model.d.ts +179 -0
  226. package/dist/sandbox/outcome.d.ts +10 -0
  227. package/dist/sandbox/prewarm-claim-d1.d.ts +80 -0
  228. package/dist/sandbox/prewarm.d.ts +193 -0
  229. package/dist/sandbox/recovery.d.ts +216 -0
  230. package/dist/sandbox/terminal-connection.d.ts +145 -0
  231. package/dist/sandbox/workspace-sandbox-manager.d.ts +44 -0
  232. package/dist/sequences/apply.d.ts +54 -0
  233. package/dist/sequences/captions.d.ts +91 -0
  234. package/dist/sequences/drizzle-store.d.ts +36 -0
  235. package/dist/sequences/drizzle.d.ts +7 -1252
  236. package/dist/sequences/exports.d.ts +138 -0
  237. package/dist/sequences/index.d.ts +19 -340
  238. package/dist/sequences/mcp-entry.d.ts +15 -0
  239. package/dist/sequences/mcp-handler.d.ts +39 -0
  240. package/dist/sequences/mcp-tools.d.ts +47 -0
  241. package/dist/{store-B7LLlk9p.d.ts → sequences/model.d.ts} +26 -110
  242. package/dist/sequences/operations.d.ts +126 -0
  243. package/dist/sequences/schema.d.ts +1231 -0
  244. package/dist/sequences/store.d.ts +81 -0
  245. package/dist/sequences/validate.d.ts +98 -0
  246. package/dist/sequences-react/components/BrandMark.d.ts +10 -0
  247. package/dist/sequences-react/components/PreviewCanvas.d.ts +26 -0
  248. package/dist/sequences-react/components/SnapIndicatorLine.d.ts +11 -0
  249. package/dist/sequences-react/components/TimelineClipChip.d.ts +80 -0
  250. package/dist/sequences-react/components/TimelineEditor.d.ts +44 -0
  251. package/dist/sequences-react/components/TimelineEmptyState.d.ts +21 -0
  252. package/dist/sequences-react/components/TimelineGhostLanes.d.ts +14 -0
  253. package/dist/sequences-react/components/TimelinePlayhead.d.ts +11 -0
  254. package/dist/sequences-react/components/TimelineRuler.d.ts +16 -0
  255. package/dist/sequences-react/components/TimelineSmallScreenGate.d.ts +12 -0
  256. package/dist/sequences-react/components/TimelineTrackRow.d.ts +51 -0
  257. package/dist/sequences-react/components/ZoomControl.d.ts +15 -0
  258. package/dist/sequences-react/components/composite-command.d.ts +8 -0
  259. package/dist/sequences-react/components/glyphs.d.ts +26 -0
  260. package/dist/sequences-react/components/index.d.ts +31 -0
  261. package/dist/sequences-react/components/interaction-math.d.ts +103 -0
  262. package/dist/sequences-react/contracts.d.ts +187 -0
  263. package/dist/sequences-react/engine/command-stack.d.ts +18 -0
  264. package/dist/sequences-react/engine/commands.d.ts +146 -0
  265. package/dist/sequences-react/engine/playback.d.ts +18 -0
  266. package/dist/sequences-react/engine/snap.d.ts +29 -0
  267. package/dist/sequences-react/engine/zoom.d.ts +29 -0
  268. package/dist/sequences-react/index.d.ts +20 -880
  269. package/dist/sequences-react/lazy.d.ts +8 -0
  270. package/dist/sequences-react/media/frame-provider.d.ts +70 -0
  271. package/dist/sequences-react/media/transcription.d.ts +33 -0
  272. package/dist/sequences-react/media/waveform.d.ts +34 -0
  273. package/dist/session-shell/index.d.ts +31 -204
  274. package/dist/session-shell/nav-guard.d.ts +170 -0
  275. package/dist/session-shell/path.d.ts +19 -0
  276. package/dist/signoff/cli.d.ts +4 -7
  277. package/dist/signoff/config.d.ts +12 -0
  278. package/dist/signoff/exec.d.ts +44 -0
  279. package/dist/signoff/index.d.ts +56 -14
  280. package/dist/signoff/invoked-as-script.d.ts +25 -0
  281. package/dist/signoff/node-version.d.ts +50 -0
  282. package/dist/signoff/proof-attach.d.ts +88 -0
  283. package/dist/signoff/proof-cli.d.ts +1 -0
  284. package/dist/signoff/proof-fixture.d.ts +13 -0
  285. package/dist/signoff/proof-from-report.d.ts +22 -0
  286. package/dist/signoff/proof-git.d.ts +57 -0
  287. package/dist/signoff/proof-record.d.ts +202 -0
  288. package/dist/signoff/proof-verify.d.ts +103 -0
  289. package/dist/signoff/proof.d.ts +35 -310
  290. package/dist/signoff/report.d.ts +7 -0
  291. package/dist/{run-D80hoLKh.d.ts → signoff/run.d.ts} +3 -6
  292. package/dist/signoff/schedule.d.ts +55 -0
  293. package/dist/signoff/seeds.d.ts +50 -0
  294. package/dist/signoff/store.d.ts +22 -0
  295. package/dist/{types-Bd6uW9vQ.d.ts → signoff/types.d.ts} +15 -17
  296. package/dist/signoff/workflow-pin.d.ts +56 -0
  297. package/dist/signoff/workspace.d.ts +40 -0
  298. package/dist/skills/index.d.ts +28 -32
  299. package/dist/skills-placement/index.d.ts +7 -11
  300. package/dist/spend/budget.d.ts +123 -0
  301. package/dist/spend/ceiling.d.ts +51 -0
  302. package/dist/spend/cli-args.d.ts +20 -0
  303. package/dist/spend/cli.d.ts +1 -0
  304. package/dist/spend/fixtures/incident-parked-time.d.ts +55 -0
  305. package/dist/spend/index.d.ts +38 -1144
  306. package/dist/spend/liveness.d.ts +131 -0
  307. package/dist/spend/ownership.d.ts +87 -0
  308. package/dist/spend/reconcile.d.ts +109 -0
  309. package/dist/spend/reference.d.ts +42 -0
  310. package/dist/spend/report.d.ts +12 -0
  311. package/dist/spend/store.d.ts +123 -0
  312. package/dist/spend/types.d.ts +466 -0
  313. package/dist/store/index.d.ts +10 -12
  314. package/dist/stories/app-shell/fixtures.d.ts +43 -0
  315. package/dist/stories/app-shell/shell.d.ts +81 -0
  316. package/dist/stories/assistant/fixtures.d.ts +73 -0
  317. package/dist/stories/chat/fixtures.d.ts +70 -0
  318. package/dist/stories/chat/markdown.d.ts +11 -0
  319. package/dist/stories/chat/run-drill-in.d.ts +19 -0
  320. package/dist/stories/chat-controls/fixtures.d.ts +116 -0
  321. package/dist/stories/design-canvas/fixtures.d.ts +57 -0
  322. package/dist/stories/fixtures/canvas.d.ts +10 -0
  323. package/dist/stories/fixtures/catalog.d.ts +7 -0
  324. package/dist/stories/fixtures/chat.d.ts +39 -0
  325. package/dist/stories/fixtures/index.d.ts +4 -0
  326. package/dist/stories/fixtures/sequences.d.ts +17 -0
  327. package/dist/stories/panels/fixtures.d.ts +63 -0
  328. package/dist/stories/sequences/fixtures.d.ts +30 -0
  329. package/dist/stories/studio/fixtures.d.ts +22 -0
  330. package/dist/stream/index.d.ts +10 -56
  331. package/dist/{stream-normalizer-DKRxyVlZ.d.ts → stream/stream-normalizer.d.ts} +23 -26
  332. package/dist/{turn-buffer-COMQUwO2.d.ts → stream/turn-buffer.d.ts} +21 -23
  333. package/dist/stream/turn-identity.d.ts +49 -0
  334. package/dist/studio/generation.d.ts +179 -0
  335. package/dist/studio/index.d.ts +12 -181
  336. package/dist/studio-react/avatar-composer.d.ts +8 -0
  337. package/dist/studio-react/composer-hero.d.ts +12 -0
  338. package/dist/studio-react/composer-shell.d.ts +18 -0
  339. package/dist/studio-react/generation-card.d.ts +9 -0
  340. package/dist/studio-react/generation-detail-modal.d.ts +11 -0
  341. package/dist/studio-react/generation-detail.d.ts +6 -0
  342. package/dist/studio-react/generation-grid.d.ts +15 -0
  343. package/dist/studio-react/image-composer.d.ts +8 -0
  344. package/dist/studio-react/index.d.ts +32 -245
  345. package/dist/studio-react/library-drawer.d.ts +12 -0
  346. package/dist/studio-react/library-panel.d.ts +15 -0
  347. package/dist/studio-react/publish-package-composer.d.ts +18 -0
  348. package/dist/studio-react/result-canvas.d.ts +6 -0
  349. package/dist/studio-react/speech-composer.d.ts +4 -0
  350. package/dist/studio-react/studio-header.d.ts +5 -0
  351. package/dist/studio-react/studio-sheet.d.ts +12 -0
  352. package/dist/studio-react/studio-workspace.d.ts +23 -0
  353. package/dist/studio-react/transcription-composer.d.ts +12 -0
  354. package/dist/studio-react/type-config.d.ts +11 -0
  355. package/dist/studio-react/use-studio-generations.d.ts +20 -0
  356. package/dist/studio-react/video-composer.d.ts +10 -0
  357. package/dist/tangle/index.d.ts +7 -9
  358. package/dist/teams/drizzle/access.d.ts +82 -0
  359. package/dist/{invitations-schema-_fI7HkJP.d.ts → teams/drizzle/invitations-schema.d.ts} +39 -27
  360. package/dist/teams/drizzle/personal-organization.d.ts +41 -0
  361. package/dist/{access-490O6aOU.d.ts → teams/drizzle/schema.d.ts} +57 -122
  362. package/dist/teams/drizzle.d.ts +12 -44
  363. package/dist/teams/index.d.ts +20 -44
  364. package/dist/teams/invitations-api.d.ts +17 -21
  365. package/dist/{invitations-DoYMvXea.d.ts → teams/invitations.d.ts} +14 -18
  366. package/dist/teams/invite.d.ts +42 -0
  367. package/dist/teams/members-api.d.ts +12 -16
  368. package/dist/teams/resend.d.ts +3 -13
  369. package/dist/{roles-B4nU3jDi.d.ts → teams/roles.d.ts} +18 -20
  370. package/dist/teams-react/components/BrandMark.d.ts +10 -0
  371. package/dist/teams-react/components/InvitationsPanel.d.ts +13 -0
  372. package/dist/teams-react/components/InviteAcceptPage.d.ts +10 -0
  373. package/dist/teams-react/components/MembersPanel.d.ts +14 -0
  374. package/dist/teams-react/components/RoleSelect.d.ts +17 -0
  375. package/dist/teams-react/components/index.d.ts +3 -0
  376. package/dist/teams-react/contracts.d.ts +134 -0
  377. package/dist/teams-react/index.d.ts +12 -143
  378. package/dist/teams-react/lazy.d.ts +11 -11
  379. package/dist/test-setup.d.ts +1 -0
  380. package/dist/theme/index.d.ts +6 -104
  381. package/dist/theme/tailwind-preset.d.ts +1 -2
  382. package/dist/theme/theme.d.ts +106 -0
  383. package/dist/theme-contract/cli.d.ts +21 -0
  384. package/dist/theme-contract/index.d.ts +4 -6
  385. package/dist/{auth-BYtiazA4.d.ts → tools/auth.d.ts} +8 -11
  386. package/dist/tools/capability.d.ts +54 -0
  387. package/dist/tools/dispatch.d.ts +37 -0
  388. package/dist/tools/errors.d.ts +8 -0
  389. package/dist/tools/gating.d.ts +62 -0
  390. package/dist/tools/http.d.ts +27 -0
  391. package/dist/tools/index.d.ts +12 -217
  392. package/dist/{mcp-rpc-DYwPlYbZ.d.ts → tools/mcp-rpc.d.ts} +7 -9
  393. package/dist/{mcp-xxoZZfor.d.ts → tools/mcp.d.ts} +14 -16
  394. package/dist/tools/openai.d.ts +28 -0
  395. package/dist/tools/registry.d.ts +39 -0
  396. package/dist/tools/runtime.d.ts +22 -0
  397. package/dist/{types-B25Mib1r.d.ts → tools/types.d.ts} +15 -83
  398. package/dist/{flow-types-CJxEmaRy.d.ts → trace/flow-types.d.ts} +2 -4
  399. package/dist/trace/index.d.ts +11 -148
  400. package/dist/trace/mission-flow.d.ts +82 -0
  401. package/dist/trace/mission-trace.d.ts +52 -0
  402. package/dist/turn-health/classify.d.ts +207 -0
  403. package/dist/turn-health/index.d.ts +29 -637
  404. package/dist/turn-health/lifecycle.d.ts +75 -0
  405. package/dist/turn-health/sink.d.ts +122 -0
  406. package/dist/turn-health/sweep.d.ts +245 -0
  407. package/dist/turn-stream/adapters.d.ts +257 -0
  408. package/dist/turn-stream/core.d.ts +293 -0
  409. package/dist/turn-stream/do.d.ts +144 -0
  410. package/dist/turn-stream/index.d.ts +62 -738
  411. package/dist/turn-stream/memory.d.ts +41 -0
  412. package/dist/vault/ConfirmDialog.d.ts +22 -0
  413. package/dist/vault/VaultPane.d.ts +15 -0
  414. package/dist/{VaultPane-BDP6SB_K.d.ts → vault/contracts.d.ts} +15 -22
  415. package/dist/vault/index.d.ts +15 -22
  416. package/dist/vault/lazy.d.ts +9 -7
  417. package/dist/vault/server.d.ts +8 -10
  418. package/dist/web/free-route-limit.d.ts +187 -0
  419. package/dist/web/index.d.ts +15 -207
  420. package/dist/{rate-limit-BOVmJRXZ.d.ts → web/rate-limit.d.ts} +3 -5
  421. package/dist/web-react/agent-session-controls.d.ts +105 -0
  422. package/dist/web-react/async/async-view.d.ts +69 -0
  423. package/dist/web-react/async/index.d.ts +13 -305
  424. package/dist/web-react/async/state.d.ts +107 -0
  425. package/dist/web-react/async/use-async-resource.d.ts +41 -0
  426. package/dist/web-react/async/use-confirmed-mutation.d.ts +90 -0
  427. package/dist/web-react/brand-mark.d.ts +11 -0
  428. package/dist/web-react/chat-attachments.d.ts +21 -0
  429. package/dist/web-react/chat-composer.d.ts +174 -0
  430. package/dist/web-react/chat-interactions.d.ts +1 -0
  431. package/dist/web-react/chat-mentions.d.ts +48 -0
  432. package/dist/web-react/chat-stream.d.ts +106 -0
  433. package/dist/web-react/class-names.d.ts +10 -0
  434. package/dist/web-react/controls.d.ts +265 -0
  435. package/dist/web-react/durable-chat-cards.d.ts +40 -0
  436. package/dist/web-react/durable-interaction-submit.d.ts +22 -0
  437. package/dist/web-react/durable-plan-card.d.ts +13 -0
  438. package/dist/web-react/durable-plan-flow.d.ts +77 -0
  439. package/dist/web-react/harness-glyphs.d.ts +28 -0
  440. package/dist/web-react/index.d.ts +80 -2347
  441. package/dist/web-react/inert.d.ts +39 -0
  442. package/dist/web-react/insight-card.d.ts +203 -0
  443. package/dist/web-react/interaction-card-support.d.ts +115 -0
  444. package/dist/web-react/interaction-plan-card.d.ts +39 -0
  445. package/dist/web-react/interaction-question-card.d.ts +100 -0
  446. package/dist/web-react/message-attachments.d.ts +56 -0
  447. package/dist/web-react/mission-activity.d.ts +96 -0
  448. package/dist/web-react/motion.d.ts +43 -0
  449. package/dist/web-react/provenance-model.d.ts +195 -0
  450. package/dist/web-react/provenance.d.ts +82 -0
  451. package/dist/web-react/provider-logo.d.ts +14 -0
  452. package/dist/web-react/record-grid-model.d.ts +257 -0
  453. package/dist/web-react/record-grid.d.ts +108 -0
  454. package/dist/web-react/sandbox-terminal.d.ts +90 -0
  455. package/dist/web-react/seat-paywall.d.ts +47 -0
  456. package/dist/web-react/session-history.d.ts +196 -0
  457. package/dist/web-react/smooth-text.d.ts +29 -0
  458. package/dist/web-react/sparkline.d.ts +150 -0
  459. package/dist/web-react/terminal.d.ts +1 -92
  460. package/dist/web-react/use-chat-interactions.d.ts +78 -0
  461. package/dist/web-react/use-composer-attachments.d.ts +111 -0
  462. package/dist/web-react/use-file-mentions.d.ts +94 -0
  463. package/dist/web-react/work-product.d.ts +105 -0
  464. package/dist/work-product/claim-support.d.ts +288 -0
  465. package/dist/work-product/index.d.ts +16 -849
  466. package/dist/work-product/provenance.d.ts +61 -0
  467. package/dist/{queue-VTBA5ONX.d.ts → work-product/queue.d.ts} +10 -12
  468. package/dist/work-product/quote.d.ts +139 -0
  469. package/dist/work-product/route.d.ts +88 -0
  470. package/dist/work-product/service.d.ts +123 -0
  471. package/dist/work-product/tools.d.ts +144 -0
  472. package/dist/{types-CCeYywdS.d.ts → work-product/types.d.ts} +29 -31
  473. package/dist/work-product-react/index.d.ts +19 -8
  474. package/dist/workspace-react/index.d.ts +8 -11
  475. package/package.json +5 -4
  476. package/dist/agent-session-controls-CmlXwp_H.d.ts +0 -384
  477. package/dist/apply-6wlMOLf8.d.ts +0 -280
  478. package/dist/attachment-validation-BfJDBU1g.d.ts +0 -261
  479. package/dist/budget-BOucfcb_.d.ts +0 -142
  480. package/dist/values-C7RidJuI.d.ts +0 -156
@@ -0,0 +1,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;
@@ -0,0 +1,96 @@
1
+ /**
2
+ * Mission + delegation observability surfaces — different nouns, one trace
3
+ * tree:
4
+ *
5
+ * - {@link MissionActivityLane}: the collapsed sub-rows under a mission step
6
+ * (what the step's agent is actually doing), expanding to a compact web
7
+ * waterfall rendered from the `/trace` converters.
8
+ * - {@link AgentActivityPanel}: the standalone cross-context surface — every
9
+ * delegation a workspace ran, regardless of which mission (if any) spawned
10
+ * it — behind a `fetchActivity` data port with cursor + refresh.
11
+ * - {@link FlowWaterfall}: the web counterpart of `/trace`'s ASCII
12
+ * `renderWaterfall` (which stays CLI) — proportional bars over a FlowTrace.
13
+ *
14
+ * Same styling contract as the rest of `/web-react`: Tailwind classes against
15
+ * the shared design tokens, inline SVG glyphs, no icon library. The pure
16
+ * layout/merge/format helpers are exported for tests and reuse.
17
+ */
18
+ import { type ReactNode } from 'react';
19
+ import type { StepAgentActivity } from '../missions/agent-activity';
20
+ import type { FlowTrace } from '../trace/index';
21
+ export type ActivityTone = 'live' | 'ok' | 'error' | 'neutral';
22
+ /** Map a delegation status (free-form string on the wire) to a render tone. */
23
+ export declare function activityTone(status: string): ActivityTone;
24
+ /** "$0.4000" under a cent shows 4 decimals; null when unknown/zero. */
25
+ export declare function formatActivityCost(costUsd?: number): string | null;
26
+ /** "8s" / "2m 05s" / "1h 12m"; null when unknown. */
27
+ export declare function formatActivityDuration(durationMs?: number): string | null;
28
+ /** A delegation record on the cross-context surface; `missionRef` links a
29
+ * promoted delegation back to the mission/step that spawned it. */
30
+ export interface AgentActivityRecord extends StepAgentActivity {
31
+ missionRef?: {
32
+ missionId: string;
33
+ stepId?: string;
34
+ label?: string;
35
+ };
36
+ }
37
+ export interface AgentActivityPage {
38
+ items: AgentActivityRecord[];
39
+ /** Opaque continuation token; absent ⇒ no further pages. */
40
+ nextCursor?: string;
41
+ }
42
+ /**
43
+ * Fold a fetched page into the held rows: dedupe by `taskId` with the
44
+ * incoming row winning (a refresh re-fetches the head page, so newer
45
+ * snapshots of in-flight runs replace stale ones), newest `startedAt` first.
46
+ */
47
+ export declare function mergeActivityPages(existing: AgentActivityRecord[], incoming: AgentActivityRecord[]): AgentActivityRecord[];
48
+ export interface WaterfallRow {
49
+ name: string;
50
+ kind: 'pipeline' | 'model' | 'tool';
51
+ /** Bar geometry as percentages of the trace's total span. */
52
+ offsetPct: number;
53
+ widthPct: number;
54
+ durationLabel: string;
55
+ approx: boolean;
56
+ /** False only when the span's meta carries an explicit failure. */
57
+ ok: boolean;
58
+ }
59
+ /** Project a FlowTrace into proportional bar geometry for {@link FlowWaterfall}. */
60
+ export declare function waterfallLayout(trace: FlowTrace): WaterfallRow[];
61
+ export interface FlowWaterfallProps {
62
+ trace: FlowTrace;
63
+ }
64
+ /** Compact proportional waterfall over a FlowTrace — span name, bar, duration
65
+ * per row; total + cost in the footer. */
66
+ export declare function FlowWaterfall({ trace }: FlowWaterfallProps): import("react").JSX.Element | null;
67
+ export interface MissionActivityLaneProps {
68
+ /** The step's delegated-run snapshot (`MissionStepState.agentActivity`). */
69
+ activity: StepAgentActivity[];
70
+ /** Epoch ms origin for the expanded waterfall — usually the step start. */
71
+ startedAt?: number;
72
+ /** Wall clock for extending in-flight runs on the waterfall. */
73
+ nowMs?: number;
74
+ }
75
+ /**
76
+ * Collapsed sub-rows under a mission step — one row per delegated run —
77
+ * expanding to the step's waterfall. Renders nothing for an empty lane.
78
+ *
79
+ * A sub-row appears because a delegated run STARTED or FINISHED, which is the
80
+ * one kind of list change worth choreographing: it arrives, and the group
81
+ * arrives as a sequence. Keying on `taskId` is what keeps the rest still — the
82
+ * snapshot re-renders every poll, and a row whose status merely advanced holds
83
+ * the DOM node it already had.
84
+ */
85
+ export declare function MissionActivityLane({ activity, startedAt, nowMs }: MissionActivityLaneProps): import("react").JSX.Element | null;
86
+ export interface AgentActivityPanelProps {
87
+ /** Data port — page through the product's delegation records. Called with
88
+ * no cursor on mount/refresh, with `nextCursor` for older pages. */
89
+ fetchActivity: (cursor?: string) => Promise<AgentActivityPage>;
90
+ /** Render the mission link for a promoted delegation (chip, anchor, router
91
+ * Link — the product's routing, not ours). */
92
+ renderMissionRef?: (ref: NonNullable<AgentActivityRecord['missionRef']>, record: AgentActivityRecord) => ReactNode;
93
+ title?: string;
94
+ emptyLabel?: string;
95
+ }
96
+ export declare function AgentActivityPanel({ fetchActivity, renderMissionRef, title, emptyLabel }: AgentActivityPanelProps): import("react").JSX.Element;