@tangle-network/agent-app 0.45.54 → 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 +4 -3
  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,108 @@
1
+ /**
2
+ * `RecordGrid` — the editable record table four verticals each hand-rolled: a
3
+ * cap table, two relationship record pages, a content board, and an entities
4
+ * panel. Every copy re-derived the same mechanism and each one lost a
5
+ * different part of it.
6
+ *
7
+ * What this owns:
8
+ *
9
+ * - **Typed columns with correctable errors.** A cell is text / number /
10
+ * currency / date / select / boolean (`./record-grid-model`), so a rejected
11
+ * edit explains itself next to the control instead of storing a coerced
12
+ * value.
13
+ * - **Optimistic write with a real rollback.** The edit lands instantly, the
14
+ * caller's writer returns a typed outcome, and a failure puts the previous
15
+ * value back AND says why. A grid that keeps a value the server refused is
16
+ * the defect this replaces.
17
+ * - **Provenance per cell.** An optional quote + link + basis, so a
18
+ * record-backed grid shows where a value came from without the product
19
+ * building a second surface for it.
20
+ * - **Three distinct data states, on `web-react/async`'s own contract.**
21
+ * `state: AsyncResourceState<Row[]>` and `empty: AsyncEmptySpec` are the
22
+ * same types every other screen fetches through — loading, error-with-
23
+ * retry and empty are different renders, a failed fetch never looks like
24
+ * "no data yet", and the empty state carries the CALLER's next action.
25
+ * The optimistic overlay is layered on top of whichever `ready`/`empty`
26
+ * value the caller last supplied, so a row created while the caller's own
27
+ * status is still `empty` renders immediately rather than waiting for a
28
+ * refetch.
29
+ * - **Keyboard-navigable, labelled controls.** Arrow keys move between cells,
30
+ * Enter edits, Escape cancels, and no destructive control is an unlabelled
31
+ * icon.
32
+ *
33
+ * Presentation is Tailwind against the shared design tokens, with no icon
34
+ * library and no sandbox-ui — the same contract as the rest of `/web-react`.
35
+ */
36
+ import { type ReactNode } from 'react';
37
+ import { type AsyncEmptySpec, type AsyncResourceState } from './async';
38
+ import { type RecordGridColumn, type RecordGridRow, type RecordGridValue } from './record-grid-model';
39
+ export * from './record-grid-model';
40
+ /** One committed cell edit, handed to `onUpdate`. */
41
+ export interface RecordGridCellChange {
42
+ /** The row as it was BEFORE the edit — what rollback restores. */
43
+ row: RecordGridRow;
44
+ columnId: string;
45
+ value: RecordGridValue;
46
+ /** The full value bag after the edit: what a whole-row write would send. */
47
+ values: Readonly<Record<string, RecordGridValue>>;
48
+ }
49
+ /** Outcome of an update or a delete. `value` optionally carries the server's
50
+ * canonical row, which replaces the optimistic one. */
51
+ export type RecordGridWriteOutcome = {
52
+ succeeded: true;
53
+ value?: RecordGridRow;
54
+ } | {
55
+ succeeded: false;
56
+ error: string;
57
+ };
58
+ /** Outcome of a create. The row is REQUIRED on success: a create that does not
59
+ * name the row it wrote leaves the grid unable to address it. */
60
+ export type RecordGridCreateOutcome = {
61
+ succeeded: true;
62
+ value: RecordGridRow;
63
+ } | {
64
+ succeeded: false;
65
+ error: string;
66
+ };
67
+ /** Properties for the editable, provenance-aware record grid. */
68
+ export interface RecordGridProps {
69
+ /** Column definitions, in render order. */
70
+ columns: readonly RecordGridColumn[];
71
+ /** Fetch state over the caller's rows — `web-react/async`'s
72
+ * `AsyncResourceState`, the same three-state contract every other screen
73
+ * in the shell fetches through. `ready`/`empty`'s value is the base rows;
74
+ * optimistic edits are layered over it and dropped as a later value
75
+ * catches up. `error` always carries `retry` — there is no way to render a
76
+ * failed fetch with no recovery action, by construction. */
77
+ state: AsyncResourceState<readonly RecordGridRow[]>;
78
+ /** Accessible name for the grid. Required — an unnamed grid is unusable with
79
+ * a screen reader. */
80
+ caption: string;
81
+ /** What the empty state says, and what it offers next — `web-react/async`'s
82
+ * `AsyncEmptySpec`, so an empty grid reads in the same words as an empty
83
+ * list or panel elsewhere in the product. */
84
+ empty: AsyncEmptySpec;
85
+ /** Persist one created row. Absent → no add affordance. */
86
+ onCreate?: (values: Readonly<Record<string, RecordGridValue>>) => Promise<RecordGridCreateOutcome>;
87
+ /** Persist one cell edit. Absent → every cell renders read-only. */
88
+ onUpdate?: (change: RecordGridCellChange) => Promise<RecordGridWriteOutcome>;
89
+ /** Delete one row. Absent → no delete affordance. */
90
+ onDelete?: (row: RecordGridRow) => Promise<RecordGridWriteOutcome>;
91
+ /** Starting values for the add form. */
92
+ newRowDefaults?: Readonly<Record<string, RecordGridValue>>;
93
+ /** Label of the add control and of the add form. Defaults to `Add row`. */
94
+ addLabel?: string;
95
+ /** BCP-47 locale for number, currency, and date display. */
96
+ locale?: string;
97
+ /** Rendered above the grid — filters, counts, a product action row. */
98
+ toolbar?: ReactNode;
99
+ /** Skeleton rows in the loading state. Defaults to 3. */
100
+ loadingRowCount?: number;
101
+ className?: string;
102
+ }
103
+ /**
104
+ * The shared editable record table. A row is a flat value bag keyed by column
105
+ * id, so a record store's fold output maps straight on: one cell per entry,
106
+ * its quote and link in `sources`.
107
+ */
108
+ export declare function RecordGrid({ columns, caption, state, empty, onCreate, onUpdate, onDelete, newRowDefaults, addLabel, locale, toolbar, loadingRowCount, className, }: RecordGridProps): import("react").JSX.Element;
@@ -0,0 +1,90 @@
1
+ /** Define the connection details and status for a sandbox terminal session */
2
+ export interface SandboxTerminalConnection {
3
+ runtimeUrl: string | null;
4
+ sidecarUrl: string | null;
5
+ token: string | null;
6
+ expiresAt: string | null;
7
+ status: string;
8
+ error: string | null;
9
+ loading: boolean;
10
+ sandboxId?: string;
11
+ connectionId?: string;
12
+ }
13
+ /**
14
+ * Define the response structure for a sandbox terminal connection including URLs, token, status, and errors
15
+ *
16
+ * The browser-direct scoped-token route (`createSandboxTerminalConnectionRoute`,
17
+ * `src/sandbox/terminal-connection.ts`) returns `sidecarUrl`. The hook also
18
+ * exposes that URL through the historical `runtimeUrl` state field so existing
19
+ * terminal panels do not need transport-specific branching.
20
+ *
21
+ * `connectionId` is the id the route's minted token's `sid` is bound to
22
+ * (echoed back from the `connectionId` the hook sent) — pass it straight
23
+ * through as `TerminalView`'s `connectionId` prop, since any other value
24
+ * fails the WS upgrade on the current platform.
25
+ */
26
+ export interface SandboxTerminalConnectionResponse {
27
+ runtimeUrl?: string;
28
+ sidecarUrl?: string;
29
+ token?: string;
30
+ expiresAt?: string;
31
+ status?: string;
32
+ error?: string;
33
+ sandboxId?: string;
34
+ connectionId?: string;
35
+ }
36
+ /**
37
+ * Define options for configuring a sandbox terminal connection including workspace ID and connection parameters
38
+ *
39
+ * `connectionId`, when set, is passed to
40
+ * `createSandboxTerminalConnectionRoute` as the `connectionId` query
41
+ * parameter — pass `tabTerminalConnectionId()` here so the route mints a
42
+ * token whose `sid` is bound to the same id `TerminalView` will dial. Give
43
+ * `TerminalView` the response's echoed `connectionId` (not this input
44
+ * value) alongside `sidecarUrl` as `apiUrl` and `token`, since a product's
45
+ * `resolveConnectionId` seam may rewrite it server-side.
46
+ */
47
+ export interface UseSandboxTerminalConnectionOptions {
48
+ workspaceId: string;
49
+ connectionUrl?: string | ((workspaceId: string) => string);
50
+ connectionId?: string;
51
+ fetcher?: typeof fetch;
52
+ provisionPollIntervalMs?: number;
53
+ provisionPollTimeoutMs?: number;
54
+ tokenRefreshSkewMs?: number;
55
+ }
56
+ /** Resolve sandbox terminal connection status and provide a method to initiate the connection */
57
+ export interface UseSandboxTerminalConnectionResult extends SandboxTerminalConnection {
58
+ connect: () => Promise<void>;
59
+ }
60
+ /**
61
+ * Manage and maintain a sandbox terminal connection with automatic polling and token refresh handling
62
+ *
63
+ * `connectionUrl` is backed by the browser-direct scoped-token route
64
+ * (`createSandboxTerminalConnectionRoute`,
65
+ * `src/sandbox/terminal-connection.ts`). The route returns `sidecarUrl`; the
66
+ * hook normalizes it into both URL fields for compatibility with existing
67
+ * terminal panels.
68
+ *
69
+ * Pass `tabTerminalConnectionId()` as `opts.connectionId` — the hook forwards
70
+ * it as the `connectionId` query parameter the browser-direct route requires
71
+ * to mint a token whose `sid` is bound to that exact id (the orchestrator's
72
+ * terminal WS gate fails closed on any other value). Give `TerminalView` the
73
+ * RESULT's echoed `connectionId` (not the input value — a product's
74
+ * `resolveConnectionId` seam may rewrite it), the resolved `sidecarUrl`/
75
+ * `runtimeUrl` as `apiUrl`, and `token` as its token prop.
76
+ */
77
+ export declare function useSandboxTerminalConnection(opts: UseSandboxTerminalConnectionOptions): UseSandboxTerminalConnectionResult;
78
+ /**
79
+ * Stable-per-tab, unique-per-client terminal connection id.
80
+ *
81
+ * Persists in `sessionStorage` so a reload in the same tab reuses the id (the
82
+ * sidecar restores the same PTY session via `TerminalView.connectionId`), while
83
+ * separate tabs/windows each get a distinct id. Pass the result as
84
+ * `TerminalView`'s `connectionId`. Without it (e.g. gtm-agent today) every tab
85
+ * shares one connection id and their reconnects evict each other.
86
+ *
87
+ * Falls back to an ephemeral id when `sessionStorage` is unavailable (SSR,
88
+ * privacy mode) — still unique per call, just not reload-stable.
89
+ */
90
+ export declare function tabTerminalConnectionId(storageKey?: string): string;
@@ -0,0 +1,47 @@
1
+ /**
2
+ * `SeatPaywall` — the shared "unlock this product" screen every agent app
3
+ * shows when a user has no active seat and has spent past the free tier.
4
+ *
5
+ * Copy contract (design §6.8): the included monthly AI usage is framed as a
6
+ * BENEFIT the buyer receives — never the ratio, never the word "margin", never
7
+ * "we debit 50%". Surface the allowance, hide the economics.
8
+ *
9
+ * Styling contract matches the rest of `web-react`: Tailwind classes over the
10
+ * shared design tokens (`bg-card`, `border-border`, `text-muted-foreground`,
11
+ * `bg-primary`, …); glyphs are inline SVGs; no icon or UI library.
12
+ */
13
+ import type { ReactNode } from 'react';
14
+ import type { ProductSeatOffer } from '../platform/billing';
15
+ export interface SeatPaywallProps {
16
+ /** Human product name shown in the headline, e.g. "Creative". */
17
+ product: string;
18
+ /** Fired when the user clicks the unlock CTA — route them to checkout. When
19
+ * it returns a promise the button shows a pending state and ignores repeat
20
+ * clicks until it settles (no double-charge on a slow checkout open). */
21
+ onCheckout: () => void | Promise<void>;
22
+ /** Monthly seat price in whole dollars. Default 100. */
23
+ priceUsd?: number;
24
+ /** Included monthly AI usage in whole dollars. Default 50. */
25
+ includedUsageUsd?: number;
26
+ /** Platform catalog terms. When present, these override the legacy dollar
27
+ * props and show any introductory period without product-local price copy. */
28
+ offer?: ProductSeatOffer;
29
+ /** Optional one-line value prop under the headline. */
30
+ tagline?: string;
31
+ /** CTA label. Default "Continue to checkout". */
32
+ ctaLabel?: string;
33
+ /** Value-prop bullets. Default = product/usage-derived only; pass your own to
34
+ * supply product-specific value props (the shell bakes no GTM copy). */
35
+ benefits?: ReactNode[];
36
+ /** Optional fine print under the CTA (e.g. "Cancel anytime."). Omitted by default. */
37
+ footnote?: ReactNode;
38
+ }
39
+ /**
40
+ * Centered card paywall. The price line reads
41
+ * "$100/mo · includes $50/mo of AI usage" so the included allowance anchors the
42
+ * value without ever exposing the ratio — and says it ONCE: the default
43
+ * benefits don't restate the usage line the subline already carries, and the
44
+ * CTA is the next step ("Continue to checkout"), not a third repeat of the
45
+ * eyebrow + headline's "Unlock {product}".
46
+ */
47
+ export declare function SeatPaywall({ product, onCheckout, priceUsd, includedUsageUsd, offer, tagline, ctaLabel, benefits, footnote, }: SeatPaywallProps): ReactNode;
@@ -0,0 +1,196 @@
1
+ /**
2
+ * The rendered half of the session shell: the history view behind the rail's
3
+ * session list, and the rename/delete dialogs both surfaces drive.
4
+ *
5
+ * Storage is a seam, not a dependency. Every product keeps sessions somewhere
6
+ * different (gtm threads, tax sessions, legal matters), so this takes a
7
+ * `fetchPage` data port and injected mutations — the same shape
8
+ * `AgentActivityPanel` (`fetchActivity`) and `ReviewQueuePanel` (`fetchQueue`)
9
+ * already use, rather than a fifth pattern.
10
+ *
11
+ * sandbox-ui free on purpose: `/web-react` must not force the optional peer, so
12
+ * these render on the shared design tokens like the rest of the subpath. The
13
+ * pure logic (nav items, routing, cookies, merging) lives in `/session-shell`,
14
+ * which a server loader can import without pulling React.
15
+ */
16
+ import { type ReactNode, type RefObject } from 'react';
17
+ import { type SessionPage, type SessionRailAction, type SessionSort, type SessionSummary } from '../session-shell/index';
18
+ export interface UseInfiniteScrollOptions {
19
+ /** Only fire `onLoadMore` while true (a next page exists, none in flight). */
20
+ enabled: boolean;
21
+ /** Scroll container the sentinel lives in. Defaults to the viewport. */
22
+ root?: RefObject<HTMLElement | null>;
23
+ /** Prefetch distance before the sentinel is actually reached. */
24
+ rootMargin?: string;
25
+ }
26
+ /**
27
+ * Fires `onLoadMore` when a sentinel element scrolls into view. Returns a ref
28
+ * callback for that sentinel (typically the last element in a list).
29
+ *
30
+ * The observer is re-created whenever `enabled` flips, so a short first page
31
+ * that leaves the sentinel on-screen keeps loading: when a load finishes and
32
+ * `enabled` returns to true, the fresh observer re-reads the current
33
+ * intersection state and fires again until the sentinel is pushed off-screen.
34
+ */
35
+ export declare function useInfiniteScroll(onLoadMore: () => void, { enabled, root, rootMargin }: UseInfiniteScrollOptions): (node: HTMLElement | null) => void;
36
+ export interface SessionPageQuery {
37
+ /** Trimmed search term; empty string means no filter. */
38
+ q: string;
39
+ sort: SessionSort;
40
+ /** `null` for the first page. */
41
+ cursor: string | null;
42
+ /** Aborted when the view changes or the component unmounts. */
43
+ signal: AbortSignal;
44
+ }
45
+ /** Data port — one page of sessions for the current view. */
46
+ export type FetchSessionPage = (query: SessionPageQuery) => Promise<SessionPage>;
47
+ export interface UseSessionHistoryOptions {
48
+ fetchPage: FetchSessionPage;
49
+ /** Trimmed search term driving the fetch. */
50
+ q: string;
51
+ sort: SessionSort;
52
+ /** SSR page 1 of the default view, so the first paint costs no request. */
53
+ initialPage: SessionPage;
54
+ /** The sort `initialPage` was rendered for. Default `'newest'`. */
55
+ defaultSort?: SessionSort;
56
+ }
57
+ export interface SessionHistoryState {
58
+ items: SessionSummary[];
59
+ hasMore: boolean;
60
+ isLoadingFirst: boolean;
61
+ isLoadingMore: boolean;
62
+ isError: boolean;
63
+ loadMore: () => void;
64
+ /** Re-run whichever load failed. */
65
+ retry: () => void;
66
+ /** Refetch page 1 — call after a client-side mutation (e.g. a delete). */
67
+ reload: () => void;
68
+ }
69
+ /**
70
+ * Infinite-scroll data source for the history view. Seeds from `initialPage`
71
+ * for the default view (no fetch) and otherwise fetches page 1 for the current
72
+ * search/sort; `loadMore` appends the next cursor page.
73
+ *
74
+ * Raw promises + `AbortController` rather than a router fetcher, so a filter
75
+ * change cancels in-flight requests, pages accumulate, and a late response from
76
+ * a superseded view is dropped by the monotonic `seq` guard.
77
+ */
78
+ export declare function useSessionHistory({ fetchPage, q, sort, initialPage, defaultSort, }: UseSessionHistoryOptions): SessionHistoryState;
79
+ export interface SessionActionsOptions {
80
+ /** Persist a new title. Reject to surface the error in the dialog. */
81
+ renameSession: (sessionId: string, title: string) => Promise<void>;
82
+ deleteSession: (sessionId: string) => Promise<void>;
83
+ /** Called after a successful rename/delete — revalidate the rail here. */
84
+ onChanged?: () => void;
85
+ /** Called after deleting the session the user is currently viewing, so the
86
+ * product can navigate away from a route that no longer resolves. */
87
+ onDeletedCurrent?: () => void;
88
+ /** The open session, compared against the delete target. */
89
+ currentSessionId?: string | null;
90
+ /** Product toast/log seam. Errors also render inside the dialog. */
91
+ notify?: (level: 'success' | 'error', message: string) => void;
92
+ labels?: Partial<SessionActionLabels>;
93
+ }
94
+ export interface SessionActionLabels {
95
+ renameTitle: string;
96
+ renameField: string;
97
+ renameSubmit: string;
98
+ deleteTitle: string;
99
+ deleteBody: (title: string) => string;
100
+ deleteSubmit: string;
101
+ cancel: string;
102
+ renamed: string;
103
+ deleted: string;
104
+ renameFailed: string;
105
+ deleteFailed: string;
106
+ }
107
+ export interface SessionActions {
108
+ openRename: (session: SessionSummary) => void;
109
+ openDelete: (session: SessionSummary) => void;
110
+ /** Render once, anywhere that survives navigation (the layout). */
111
+ dialogs: ReactNode;
112
+ busy: boolean;
113
+ }
114
+ /**
115
+ * Rename + delete for one session, shared by the rail kebab and the history
116
+ * row menu so both drive the same dialogs and the same product mutations.
117
+ *
118
+ * Dialogs are owned here rather than returned as raw state: two surfaces
119
+ * needing the same confirm step is exactly how a product ends up with two
120
+ * subtly different delete confirmations.
121
+ */
122
+ export declare function useSessionActions({ renameSession, deleteSession, onChanged, onDeletedCurrent, currentSessionId, notify, labels, }: SessionActionsOptions): SessionActions;
123
+ export interface SessionHistoryPanelProps {
124
+ history: SessionHistoryState;
125
+ /** Whether the workspace has any sessions at all — decided by the SSR page,
126
+ * independent of the active search, so filtering to zero shows "no matches"
127
+ * rather than the first-run empty state. */
128
+ hasAnySessions: boolean;
129
+ query: string;
130
+ onQueryChange: (value: string) => void;
131
+ sort: SessionSort;
132
+ onSortChange: (value: SessionSort) => void;
133
+ /** Product route for one session row. */
134
+ hrefForSession: (sessionId: string) => string;
135
+ /** Rendered as the row link. Defaults to an `<a>`; pass a router Link to keep
136
+ * client-side navigation. */
137
+ linkComponent?: LinkLikeComponent;
138
+ /** Ids currently mid-turn — renders the responding treatment. */
139
+ respondingSessionIds?: ReadonlySet<string>;
140
+ onRename?: (session: SessionSummary) => void;
141
+ onDelete?: (session: SessionSummary) => void;
142
+ /** Product-owned mutation for selected rows or a workspace-wide age range. */
143
+ onBulkAction?: (action: SessionBulkAction) => Promise<void>;
144
+ /** Menu wording, so this surface and the rail name the same act the same way
145
+ * — a product whose delete is really an archive says so in both places. */
146
+ renameLabel?: string;
147
+ deleteLabel?: string;
148
+ /**
149
+ * Row actions this shell has no opinion about — pin, categorise, share.
150
+ * Same seam and same ordering as the rail's `SessionRowActions.extraActions`:
151
+ * evaluated per session, placed between rename and delete. This menu is
152
+ * text-only, so `icon` is ignored here and honoured on the rail.
153
+ */
154
+ extraActions?: (session: SessionSummary) => SessionRailAction[];
155
+ /** New-session destination for the header action. Omitted ⇒ no button. */
156
+ newSessionHref?: string;
157
+ title?: string;
158
+ untitledLabel?: string;
159
+ emptyTitle?: string;
160
+ emptyDescription?: string;
161
+ /** Absolute → relative timestamp. Defaults to a compact built-in. */
162
+ formatTimestamp?: (isoDate: string | null) => string;
163
+ /** Max width of the reading column. `'full'` opts out for a product whose
164
+ * surface really is a wide table. Default keeps title and timestamp inside
165
+ * one scannable line rather than at opposite edges of a 1440px viewport. */
166
+ contentWidth?: 'reading' | 'full';
167
+ className?: string;
168
+ }
169
+ export type SessionBulkAction = {
170
+ kind: 'selected';
171
+ ids: string[];
172
+ } | {
173
+ kind: 'older-than';
174
+ days: number;
175
+ } | {
176
+ kind: 'newer-than';
177
+ days: number;
178
+ };
179
+ export interface LinkLikeProps {
180
+ to: string;
181
+ className?: string;
182
+ children?: ReactNode;
183
+ }
184
+ export type LinkLikeComponent = (props: LinkLikeProps) => ReactNode;
185
+ /** Compact relative time. Overridable — a product with its own i18n passes
186
+ * `formatTimestamp` rather than this being the only option. */
187
+ export declare function formatSessionTimestamp(isoDate: string | null): string;
188
+ /**
189
+ * The full session history: search, sort, cursor-paged rows with per-row
190
+ * actions, and the states in between (first-run empty, loading, no matches,
191
+ * error + retry).
192
+ *
193
+ * This is the surface the rail's capped list overflows into — the reason the
194
+ * rail can stay short without hiding the user's work.
195
+ */
196
+ export declare function SessionHistoryPanel({ history, hasAnySessions, query, onQueryChange, sort, onSortChange, hrefForSession, linkComponent: Link, respondingSessionIds, onRename, onDelete, onBulkAction, renameLabel, deleteLabel, extraActions, newSessionHref, title, untitledLabel, emptyTitle, emptyDescription, formatTimestamp, contentWidth, className, }: SessionHistoryPanelProps): import("react").JSX.Element;
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Smooth text reveal — turns chunky network deltas into a continuous
3
+ * typewriter paint. Streamed turns arrive in 100-500ms slabs (model burst,
4
+ * flush windows, replay polls); revealing characters at an adaptive rate
5
+ * makes the same bytes read as top-tier streaming. The rate scales with the
6
+ * backlog so the reveal never falls behind the stream — it crawls when caught
7
+ * up and sprints when a burst lands (e.g. a reasoning summary arriving all at
8
+ * once still *types out* instead of popping in).
9
+ */
10
+ /** Define configuration options for controlling smooth text reveal animation rates */
11
+ export interface SmoothRevealOptions {
12
+ /** Baseline reveal rate when nearly caught up. Default 90 chars/s. */
13
+ baseCharsPerSecond?: number;
14
+ /** Extra chars/s per backlog character — the catch-up pressure. Default 5. */
15
+ catchUpPerChar?: number;
16
+ /** Hard ceiling so giant bursts still animate. Default 2400 chars/s. */
17
+ maxCharsPerSecond?: number;
18
+ }
19
+ /** Pure reveal step: how many characters should be visible after `dtMs`.
20
+ * Exposed for tests; the hook is a thin rAF wrapper around it. */
21
+ export declare function nextRevealCount(shown: number, targetLength: number, dtMs: number, opts?: SmoothRevealOptions): number;
22
+ /**
23
+ * Animate `target` text into view. While `enabled`, the returned string grows
24
+ * smoothly toward `target` (which may itself keep growing); when `enabled` is
25
+ * false the full text returns immediately (history, completed turns). A
26
+ * target that is not an extension of the revealed prefix (new message) resets
27
+ * the reveal.
28
+ */
29
+ export declare function useSmoothText(target: string, enabled: boolean, opts?: SmoothRevealOptions): string;
@@ -0,0 +1,150 @@
1
+ /**
2
+ * `Sparkline` — the series behind a number, as inline SVG.
3
+ *
4
+ * `/spend`, `/missions` and the eval lanes all produce a number for today, and
5
+ * every product renders it as text. Text cannot separate "$41, up from $38"
6
+ * from "$41, up from $4" — the same sentence, two different situations — so the
7
+ * reader opens a second surface to find out which one they are in. The series
8
+ * next to the number answers it in one glance.
9
+ *
10
+ * No chart dependency: this subpath is react + `@tangle-network/ui` only, and a
11
+ * polyline is not worth a bundle. What a chart library would give us here is
12
+ * axes, ticks and a tooltip, none of which belong on a 96×24 glyph.
13
+ *
14
+ * The three shapes a hand-rolled sparkline gets wrong, each handled here rather
15
+ * than left to the caller:
16
+ *
17
+ * - **no readings** renders an explicit empty label, never a line. A line
18
+ * along the baseline is a claim — "this metric sat at zero" — and a series
19
+ * nobody has measured yet did not sit anywhere.
20
+ * - **one reading** renders a point. A line needs two coordinates; drawing one
21
+ * from a single reading invents the segment before it.
22
+ * - **equal readings** render flat at MID height. The obvious normalisation
23
+ * divides by `max - min`, which is `0` for a perfectly stable metric, and
24
+ * the resulting `NaN` lands in the `points` attribute — SVG drops the whole
25
+ * polyline, so the metric that never moved is the one that disappears.
26
+ * - **a missing reading renders as a GAP, and the accessible name says so.**
27
+ * A `null` from a hole in a series and a `NaN` from a producer's unguarded
28
+ * division are not smaller series — they are readings nobody has. Deleting
29
+ * them closed the line straight across the hole and announced a count that
30
+ * was short by the number deleted: measured on `[1, NaN, 3]`, one continuous
31
+ * two-point line labelled "2 readings, rising from 1 to 3", with nothing
32
+ * anywhere saying a reading was unreadable. The card's figure slot already
33
+ * refuses to let a non-measurement look measured; the series one line below
34
+ * it holds the same rule. The x axis is the SAMPLE index, so the hole keeps
35
+ * its width, the line breaks at it, and the label carries "N not available".
36
+ *
37
+ * Accessibility: `role="img"` with an `aria-label` naming the metric, its range
38
+ * and its direction. A sparkline with no accessible name is decoration a screen
39
+ * reader cannot report, which would leave the shape — the entire reason the
40
+ * component exists — visible to exactly one kind of reader.
41
+ *
42
+ * Deliberately not animated. `docs/product-surfaces.md` Pattern 4 lists chart
43
+ * draw-on under what this package does not animate: the shape IS the answer,
44
+ * and easing it in taxes every read of a surface people sit in for hours. The
45
+ * card around it arrives (`.agent-arrive`); the line does not draw itself.
46
+ */
47
+ import type { ReactElement } from 'react';
48
+ /** Where a series ended relative to where it started. */
49
+ export type SparklineDirection = 'rising' | 'falling' | 'flat';
50
+ export interface SparklinePoint {
51
+ readonly x: number;
52
+ readonly y: number;
53
+ }
54
+ export interface SparklineGeometry {
55
+ /** The finite readings, in order — what was actually plotted. */
56
+ readonly readings: readonly number[];
57
+ /** Every plotted point, in order. Positions are on the SAMPLE axis, so a
58
+ * missing reading leaves its width behind rather than closing up. */
59
+ readonly points: readonly SparklinePoint[];
60
+ /** The points split into runs of CONSECUTIVE samples. One run is one stroke:
61
+ * a line drawn across a missing reading states a movement nobody measured. */
62
+ readonly segments: readonly (readonly SparklinePoint[])[];
63
+ /** Samples that carried no usable reading — a `null`, a `NaN`, an infinity.
64
+ * Counted rather than discarded, because the accessible name has to state
65
+ * them: a shorter series announced as a complete one is the silent loss. */
66
+ readonly gaps: number;
67
+ readonly min: number;
68
+ readonly max: number;
69
+ readonly first: number;
70
+ readonly last: number;
71
+ readonly direction: SparklineDirection;
72
+ }
73
+ export interface SparklineGeometryOptions {
74
+ width?: number;
75
+ height?: number;
76
+ /** Keeps the stroke and the end dot inside the viewBox instead of clipping
77
+ * them at the extremes, where the interesting readings always are. */
78
+ inset?: number;
79
+ }
80
+ export declare const DEFAULT_SPARKLINE_WIDTH = 96;
81
+ export declare const DEFAULT_SPARKLINE_HEIGHT = 24;
82
+ /** Only a name, never a metric: it exists so the accessible label is never
83
+ * empty. Every caller in this package passes the metric's own title. */
84
+ export declare const DEFAULT_SPARKLINE_LABEL = "Trend";
85
+ export declare const DEFAULT_SPARKLINE_EMPTY_LABEL = "No history yet";
86
+ /** Nothing was measurable, which is not the same as nothing was measured yet —
87
+ * and "No history yet" over a series that arrived full of `NaN` reads as the
88
+ * metric being new when the producer is broken. */
89
+ export declare const DEFAULT_SPARKLINE_UNAVAILABLE_LABEL = "No readings available";
90
+ /** The package's default number rendering, pinned to `en-US` so a card and its
91
+ * series read the same on every host — a series formatted by the server's
92
+ * locale and a value formatted by the browser's is a defect nobody sees until
93
+ * the decimal separators disagree. */
94
+ export declare function formatSparklineValue(value: number): string;
95
+ /**
96
+ * The readings that can be plotted.
97
+ *
98
+ * A `null` from a gap in a series, or a `NaN` from a division a producer did
99
+ * not guard, is not plotted rather than coerced to `0`: plotting a missing
100
+ * reading at the baseline draws a cliff that never happened.
101
+ *
102
+ * This returns the readings ALONE, so it cannot tell a caller how many are
103
+ * missing. That is what {@link SparklineGeometry.gaps} is for, and what the
104
+ * accessible name reports — dropping a sample and then announcing the shorter
105
+ * count as the whole series is the defect, not the filter.
106
+ */
107
+ export declare function sparklineReadings(values: readonly number[]): number[];
108
+ /**
109
+ * Plots the series into the viewBox.
110
+ *
111
+ * Pure and exported so the cases that produce a broken chart — nothing, one
112
+ * reading, a flat series, negatives — are unit-testable without a DOM.
113
+ */
114
+ export declare function sparklineGeometry(values: readonly number[], { width, height, inset }?: SparklineGeometryOptions): SparklineGeometry;
115
+ /** `"2,14 48,3 94,21"` — the `points` attribute of the polyline. */
116
+ export declare function sparklinePointsAttribute(points: readonly SparklinePoint[]): string;
117
+ export interface SparklineLabelOptions {
118
+ label?: string;
119
+ format?: (value: number) => string;
120
+ }
121
+ /**
122
+ * The accessible name: metric, how many readings, how many are missing, the
123
+ * range, and the direction.
124
+ *
125
+ * All of it is load-bearing. The range without the direction describes a shape
126
+ * that could have been walked in either order; the direction without the range
127
+ * says "rising" about a metric that moved by a rounding error; and the count
128
+ * without the gaps is the number of readings that SURVIVED announced as the
129
+ * number that were taken — the shape a reader cannot see is exactly the one
130
+ * this sentence exists to carry.
131
+ */
132
+ export declare function sparklineLabel(values: readonly number[], { label, format }?: SparklineLabelOptions): string;
133
+ export interface SparklineProps {
134
+ values: readonly number[];
135
+ /** Names the metric in the accessible label. */
136
+ label?: string;
137
+ /** Renders a reading in that label; defaults to the package number format. */
138
+ format?: (value: number) => string;
139
+ width?: number;
140
+ height?: number;
141
+ /** Shown instead of a line when the metric has no history yet. */
142
+ emptyLabel?: string;
143
+ /** Shown instead of a line when every sample arrived unreadable — a different
144
+ * state from "no history yet", and one the reader has to be able to tell
145
+ * apart, because one is a new metric and the other is a broken producer. */
146
+ unavailableLabel?: string;
147
+ className?: string;
148
+ }
149
+ /** The series glyph. Strokes in `currentColor`, so tone is the caller's. */
150
+ export declare function Sparkline({ values, label, format, width, height, emptyLabel, unavailableLabel, className, }: SparklineProps): ReactElement;