@tangle-network/agent-app 0.45.54 → 0.45.56

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (492) hide show
  1. package/README.md +1 -1
  2. package/dist/alerting/index.d.ts +5 -175
  3. package/dist/alerting/slack.d.ts +176 -0
  4. package/dist/app-auth/index.d.ts +14 -17
  5. package/dist/assets/index.d.ts +2 -504
  6. package/dist/assets/schema.d.ts +264 -0
  7. package/dist/assets/types.d.ts +237 -0
  8. package/dist/assistant/AssistantDock.d.ts +56 -0
  9. package/dist/assistant/AssistantHistory.d.ts +41 -0
  10. package/dist/assistant/AssistantPanel.d.ts +84 -0
  11. package/dist/assistant/ProposalCard.d.ts +41 -0
  12. package/dist/assistant/ResizeHandle.d.ts +19 -0
  13. package/dist/assistant/client-context.d.ts +20 -0
  14. package/dist/assistant/client.d.ts +117 -0
  15. package/dist/assistant/index.d.ts +19 -848
  16. package/dist/assistant/index.js +3 -3
  17. package/dist/assistant/launcher.d.ts +23 -0
  18. package/dist/assistant/persistence.d.ts +26 -0
  19. package/dist/assistant/presentation.d.ts +99 -0
  20. package/dist/assistant/provider-label.d.ts +7 -0
  21. package/dist/assistant/reducer.d.ts +130 -0
  22. package/dist/assistant/sse.d.ts +24 -0
  23. package/dist/assistant/time-ago.d.ts +6 -0
  24. package/dist/assistant/transcript.d.ts +97 -0
  25. package/dist/assistant/types.d.ts +291 -0
  26. package/dist/assistant/use-stick-to-bottom.d.ts +28 -0
  27. package/dist/assistant/useAssistantChat.d.ts +63 -0
  28. package/dist/assistant/useAssistantModels.d.ts +22 -0
  29. package/dist/assistant/useAssistantThreads.d.ts +47 -0
  30. package/dist/assistant/usePanelPrefs.d.ts +55 -0
  31. package/dist/billing/index.d.ts +19 -21
  32. package/dist/brand/index.d.ts +16 -10
  33. package/dist/brand-extraction/extract.d.ts +34 -0
  34. package/dist/brand-extraction/index.d.ts +12 -214
  35. package/dist/brand-extraction/map.d.ts +58 -0
  36. package/dist/brand-extraction/types.d.ts +119 -0
  37. package/dist/catalog/index.d.ts +11 -101
  38. package/dist/chat-react/composer-mode-controls.d.ts +14 -0
  39. package/dist/chat-react/entry-composer.d.ts +92 -0
  40. package/dist/chat-react/index.d.ts +22 -118
  41. package/dist/chat-react/index.js +2 -2
  42. package/dist/chat-react/types.d.ts +11 -0
  43. package/dist/chat-routes/attachment-store.d.ts +84 -0
  44. package/dist/chat-routes/attachment-upload.d.ts +89 -0
  45. package/dist/chat-routes/attachment-validation.d.ts +95 -0
  46. package/dist/chat-routes/binary-sniff.d.ts +45 -0
  47. package/dist/chat-routes/completed-sandbox-turn.d.ts +25 -0
  48. package/dist/chat-routes/detached-turn.d.ts +197 -0
  49. package/dist/chat-routes/dispatch-parts.d.ts +101 -0
  50. package/dist/chat-routes/draft-persistence.d.ts +189 -0
  51. package/dist/chat-routes/durable-projection.d.ts +18 -0
  52. package/dist/chat-routes/file-index.d.ts +115 -0
  53. package/dist/chat-routes/index.d.ts +25 -1840
  54. package/dist/chat-routes/index.js +6 -2
  55. package/dist/chat-routes/index.js.map +1 -1
  56. package/dist/chat-routes/model-failover-stream.d.ts +206 -0
  57. package/dist/chat-routes/promote-file-part.d.ts +84 -0
  58. package/dist/chat-routes/resolve-attachments.d.ts +72 -0
  59. package/dist/chat-routes/sandbox-producer.d.ts +146 -0
  60. package/dist/chat-routes/sandbox-turn-usage.d.ts +4 -0
  61. package/dist/{stale-turn-lock-DucQzvXu.d.ts → chat-routes/stale-turn-lock.d.ts} +7 -9
  62. package/dist/chat-routes/turn-routes.d.ts +540 -0
  63. package/dist/chat-routes/upload.d.ts +84 -0
  64. package/dist/{wire-DOZ-O6hD.d.ts → chat-routes/wire.d.ts} +41 -44
  65. package/dist/chat-store/core.d.ts +19 -0
  66. package/dist/chat-store/index.d.ts +22 -322
  67. package/dist/{parts-BqIHMdyu.d.ts → chat-store/parts.d.ts} +49 -47
  68. package/dist/chat-store/schema.d.ts +157 -0
  69. package/dist/chat-store/store.d.ts +177 -0
  70. package/dist/{chunk-PVP57G3S.js → chunk-2IFGVBNI.js} +2 -2
  71. package/dist/{chunk-MQO5ML66.js → chunk-KJ2Q27U7.js} +2 -2
  72. package/dist/{chunk-CCVG2TL6.js → chunk-YNMPMW3G.js} +64 -2
  73. package/dist/chunk-YNMPMW3G.js.map +1 -0
  74. package/dist/config/index.d.ts +13 -18
  75. package/dist/crypto/index.d.ts +10 -12
  76. package/dist/crypto/web-token.d.ts +22 -0
  77. package/dist/design-canvas/apply.d.ts +70 -0
  78. package/dist/design-canvas/drizzle-store.d.ts +29 -0
  79. package/dist/design-canvas/drizzle.d.ts +7 -575
  80. package/dist/{export-presets-mgVulRaV.d.ts → design-canvas/export-presets.d.ts} +18 -22
  81. package/dist/design-canvas/index.d.ts +22 -268
  82. package/dist/design-canvas/mcp-entry.d.ts +15 -0
  83. package/dist/design-canvas/mcp-handler.d.ts +34 -0
  84. package/dist/design-canvas/mcp-tools.d.ts +30 -0
  85. package/dist/{model-DnfO_PdJ.d.ts → design-canvas/model.d.ts} +33 -35
  86. package/dist/{operations-ByJ6yXOW.d.ts → design-canvas/operations.d.ts} +21 -25
  87. package/dist/design-canvas/schema.d.ts +558 -0
  88. package/dist/{store-CqfDtnPQ.d.ts → design-canvas/store.d.ts} +8 -12
  89. package/dist/design-canvas/templates.d.ts +72 -0
  90. package/dist/design-canvas/validate.d.ts +32 -0
  91. package/dist/design-canvas-react/components/BleedTrimOverlay.d.ts +22 -0
  92. package/dist/design-canvas-react/components/BrandKnot.d.ts +11 -0
  93. package/dist/design-canvas-react/components/CanvasEmptyState.d.ts +32 -0
  94. package/dist/design-canvas-react/components/CanvasInsertPanel.d.ts +53 -0
  95. package/dist/{lazy-DrkVyDpe.d.ts → design-canvas-react/components/DesignCanvas.d.ts} +27 -20
  96. package/dist/design-canvas-react/components/DesignCanvasEditor.d.ts +23 -0
  97. package/dist/design-canvas-react/components/ElementNode.d.ts +51 -0
  98. package/dist/design-canvas-react/components/ExportControl.d.ts +21 -0
  99. package/dist/design-canvas-react/components/GridLayer.d.ts +47 -0
  100. package/dist/design-canvas-react/components/InlineTextEditor.d.ts +25 -0
  101. package/dist/design-canvas-react/components/LayersPanel.d.ts +20 -0
  102. package/dist/design-canvas-react/components/PagesStrip.d.ts +34 -0
  103. package/dist/design-canvas-react/components/Rulers.d.ts +31 -0
  104. package/dist/design-canvas-react/components/SelectionLayer.d.ts +51 -0
  105. package/dist/design-canvas-react/components/SnapGuidesOverlay.d.ts +25 -0
  106. package/dist/design-canvas-react/components/Toolbar.d.ts +64 -0
  107. package/dist/design-canvas-react/components/Workspace.d.ts +92 -0
  108. package/dist/design-canvas-react/components/ZoomControls.d.ts +14 -0
  109. package/dist/design-canvas-react/components/glyphs.d.ts +46 -0
  110. package/dist/design-canvas-react/components/icon-button.d.ts +22 -0
  111. package/dist/design-canvas-react/components/index.d.ts +27 -0
  112. package/dist/design-canvas-react/components/layer-tree.d.ts +34 -0
  113. package/dist/design-canvas-react/components/ruler-math.d.ts +78 -0
  114. package/dist/design-canvas-react/components/transform-math.d.ts +168 -0
  115. package/dist/{command-stack-TNPWJCzW.d.ts → design-canvas-react/contracts.d.ts} +16 -63
  116. package/dist/design-canvas-react/engine/command-stack.d.ts +43 -0
  117. package/dist/design-canvas-react/engine/commands.d.ts +154 -0
  118. package/dist/design-canvas-react/engine/selection.d.ts +48 -0
  119. package/dist/design-canvas-react/engine/snap.d.ts +24 -0
  120. package/dist/design-canvas-react/engine/zoom-pan.d.ts +18 -0
  121. package/dist/design-canvas-react/engine.d.ts +21 -399
  122. package/dist/design-canvas-react/export-math.d.ts +104 -0
  123. package/dist/design-canvas-react/export.d.ts +89 -0
  124. package/dist/design-canvas-react/index.d.ts +16 -586
  125. package/dist/design-canvas-react/insert-builders.d.ts +61 -0
  126. package/dist/design-canvas-react/lazy.d.ts +21 -6
  127. package/dist/documents/docx.d.ts +50 -0
  128. package/dist/documents/extract.d.ts +87 -0
  129. package/dist/documents/index.d.ts +26 -232
  130. package/dist/documents/media-type.d.ts +33 -0
  131. package/dist/documents/pdf-inspector.d.ts +5 -9
  132. package/dist/{types-DrBidf3O.d.ts → documents/types.d.ts} +13 -15
  133. package/dist/documents/zip.d.ts +56 -0
  134. package/dist/eval/calibration.d.ts +106 -0
  135. package/dist/eval/index.d.ts +8 -116
  136. package/dist/eval-campaign/index.d.ts +11 -12
  137. package/dist/{trust-gate-Dcm5xSva.d.ts → eval-campaign/trust-gate.d.ts} +5 -9
  138. package/dist/forms/blank.d.ts +48 -0
  139. package/dist/forms/fill.d.ts +105 -0
  140. package/dist/forms/index.d.ts +58 -332
  141. package/dist/forms/registry.d.ts +115 -0
  142. package/dist/forms/verify.d.ts +58 -0
  143. package/dist/harness/index.d.ts +21 -19
  144. package/dist/intakes/api.d.ts +5 -11
  145. package/dist/{completion-CvcNUz07.d.ts → intakes/completion.d.ts} +7 -11
  146. package/dist/intakes/context-sufficiency.d.ts +113 -0
  147. package/dist/intakes/drizzle/schema.d.ts +338 -0
  148. package/dist/intakes/drizzle/store.d.ts +75 -0
  149. package/dist/intakes/drizzle.d.ts +12 -391
  150. package/dist/intakes/index.d.ts +23 -113
  151. package/dist/{model-C8U0HZxL.d.ts → intakes/model.d.ts} +15 -17
  152. package/dist/intakes-react/components/BrandMark.d.ts +10 -0
  153. package/dist/intakes-react/components/IntakeInterview.d.ts +15 -0
  154. package/dist/intakes-react/components/index.d.ts +1 -0
  155. package/dist/intakes-react/contracts.d.ts +42 -0
  156. package/dist/intakes-react/index.d.ts +12 -47
  157. package/dist/intakes-react/lazy.d.ts +9 -8
  158. package/dist/integrations/index.d.ts +10 -12
  159. package/dist/{contract-OxG_jVMx.d.ts → interactions/contract.d.ts} +40 -42
  160. package/dist/interactions/index.d.ts +16 -256
  161. package/dist/interactions/route.d.ts +151 -0
  162. package/dist/interactions/sidecar.d.ts +100 -0
  163. package/dist/knowledge/index.d.ts +7 -11
  164. package/dist/knowledge-loop/index.d.ts +13 -20
  165. package/dist/legibility/checks/empty-state.d.ts +59 -0
  166. package/dist/legibility/checks/reachability.d.ts +103 -0
  167. package/dist/legibility/checks/silent-failure.d.ts +57 -0
  168. package/dist/legibility/checks/success.d.ts +38 -0
  169. package/dist/legibility/checks/vocabulary.d.ts +65 -0
  170. package/dist/legibility/cli-args.d.ts +30 -0
  171. package/dist/legibility/cli.d.ts +25 -0
  172. package/dist/legibility/index.d.ts +10 -530
  173. package/dist/legibility/report.d.ts +22 -0
  174. package/dist/legibility/scan.d.ts +29 -0
  175. package/dist/legibility/source.d.ts +132 -0
  176. package/dist/legibility/suppress.d.ts +36 -0
  177. package/dist/legibility/types.d.ts +168 -0
  178. package/dist/legibility/walk-sources.d.ts +21 -0
  179. package/dist/{agent-activity-C8ZG0F0M.d.ts → missions/agent-activity.d.ts} +3 -5
  180. package/dist/missions/engine.d.ts +251 -0
  181. package/dist/missions/events.d.ts +195 -0
  182. package/dist/missions/index.d.ts +12 -765
  183. package/dist/missions/plan-parse.d.ts +50 -0
  184. package/dist/missions/service.d.ts +265 -0
  185. package/dist/{failover-D-3UXXTb.d.ts → model-resolution/failover.d.ts} +10 -12
  186. package/dist/model-resolution/index.d.ts +15 -18
  187. package/dist/object-store/index.d.ts +15 -17
  188. package/dist/openui/action.d.ts +54 -0
  189. package/dist/openui/authoring.d.ts +25 -0
  190. package/dist/openui/index.d.ts +24 -206
  191. package/dist/openui/route.d.ts +124 -0
  192. package/dist/openui/segments.d.ts +71 -0
  193. package/dist/openui/values.d.ts +82 -0
  194. package/dist/openui-react/index.d.ts +9 -13
  195. package/dist/peer-floors/check.d.ts +9 -190
  196. package/dist/peer-floors/cli.d.ts +2 -3
  197. package/dist/peer-floors/dependency-source.d.ts +178 -0
  198. package/dist/plans/index.d.ts +13 -14
  199. package/dist/{billing-BuNlaKlE.d.ts → platform/billing.d.ts} +28 -32
  200. package/dist/platform/guards.d.ts +79 -0
  201. package/dist/platform/hub.d.ts +107 -0
  202. package/dist/platform/index.d.ts +7 -112
  203. package/dist/{sso-Cm00S61u.d.ts → platform/sso.d.ts} +15 -97
  204. package/dist/preflight/cli.d.ts +3 -6
  205. package/dist/preflight/index.d.ts +16 -18
  206. package/dist/preset-cloudflare/headers.d.ts +12 -0
  207. package/dist/preset-cloudflare/index.d.ts +22 -74
  208. package/dist/preset-cloudflare/workflow-instance.d.ts +35 -0
  209. package/dist/profile/budget.d.ts +72 -0
  210. package/dist/profile/fingerprint.d.ts +65 -0
  211. package/dist/profile/index.d.ts +27 -19
  212. package/dist/prompt/index.d.ts +3 -5
  213. package/dist/record/drizzle/schema.d.ts +488 -0
  214. package/dist/record/drizzle/store.d.ts +224 -0
  215. package/dist/record/drizzle.d.ts +10 -679
  216. package/dist/record/fold.d.ts +99 -0
  217. package/dist/record/index.d.ts +13 -13
  218. package/dist/{fold-DACU7gtf.d.ts → record/model.d.ts} +22 -124
  219. package/dist/record/ulid.d.ts +12 -0
  220. package/dist/redact/index.d.ts +14 -16
  221. package/dist/run/index.d.ts +11 -16
  222. package/dist/runtime/agent.d.ts +23 -0
  223. package/dist/runtime/certified-delivery.d.ts +57 -0
  224. package/dist/runtime/index.d.ts +17 -367
  225. package/dist/runtime/loop.d.ts +58 -0
  226. package/dist/runtime/model-catalog.d.ts +103 -0
  227. package/dist/{model-CdCDfBA9.d.ts → runtime/model.d.ts} +25 -27
  228. package/dist/runtime/openai-stream.d.ts +126 -0
  229. package/dist/runtime/surface-profile.d.ts +115 -0
  230. package/dist/sandbox/binary-read.d.ts +63 -0
  231. package/dist/sandbox/diagnostics.d.ts +69 -0
  232. package/dist/sandbox/index.d.ts +103 -1085
  233. package/dist/sandbox/model.d.ts +179 -0
  234. package/dist/sandbox/outcome.d.ts +10 -0
  235. package/dist/sandbox/prewarm-claim-d1.d.ts +80 -0
  236. package/dist/sandbox/prewarm.d.ts +193 -0
  237. package/dist/sandbox/recovery.d.ts +216 -0
  238. package/dist/sandbox/terminal-connection.d.ts +145 -0
  239. package/dist/sandbox/workspace-sandbox-manager.d.ts +44 -0
  240. package/dist/sequences/apply.d.ts +54 -0
  241. package/dist/sequences/captions.d.ts +91 -0
  242. package/dist/sequences/drizzle-store.d.ts +36 -0
  243. package/dist/sequences/drizzle.d.ts +7 -1252
  244. package/dist/sequences/exports.d.ts +138 -0
  245. package/dist/sequences/index.d.ts +19 -340
  246. package/dist/sequences/mcp-entry.d.ts +15 -0
  247. package/dist/sequences/mcp-handler.d.ts +39 -0
  248. package/dist/sequences/mcp-tools.d.ts +47 -0
  249. package/dist/{store-B7LLlk9p.d.ts → sequences/model.d.ts} +26 -110
  250. package/dist/sequences/operations.d.ts +126 -0
  251. package/dist/sequences/schema.d.ts +1231 -0
  252. package/dist/sequences/store.d.ts +81 -0
  253. package/dist/sequences/validate.d.ts +98 -0
  254. package/dist/sequences-react/components/BrandMark.d.ts +10 -0
  255. package/dist/sequences-react/components/PreviewCanvas.d.ts +26 -0
  256. package/dist/sequences-react/components/SnapIndicatorLine.d.ts +11 -0
  257. package/dist/sequences-react/components/TimelineClipChip.d.ts +80 -0
  258. package/dist/sequences-react/components/TimelineEditor.d.ts +44 -0
  259. package/dist/sequences-react/components/TimelineEmptyState.d.ts +21 -0
  260. package/dist/sequences-react/components/TimelineGhostLanes.d.ts +14 -0
  261. package/dist/sequences-react/components/TimelinePlayhead.d.ts +11 -0
  262. package/dist/sequences-react/components/TimelineRuler.d.ts +16 -0
  263. package/dist/sequences-react/components/TimelineSmallScreenGate.d.ts +12 -0
  264. package/dist/sequences-react/components/TimelineTrackRow.d.ts +51 -0
  265. package/dist/sequences-react/components/ZoomControl.d.ts +15 -0
  266. package/dist/sequences-react/components/composite-command.d.ts +8 -0
  267. package/dist/sequences-react/components/glyphs.d.ts +26 -0
  268. package/dist/sequences-react/components/index.d.ts +31 -0
  269. package/dist/sequences-react/components/interaction-math.d.ts +103 -0
  270. package/dist/sequences-react/contracts.d.ts +187 -0
  271. package/dist/sequences-react/engine/command-stack.d.ts +18 -0
  272. package/dist/sequences-react/engine/commands.d.ts +146 -0
  273. package/dist/sequences-react/engine/playback.d.ts +18 -0
  274. package/dist/sequences-react/engine/snap.d.ts +29 -0
  275. package/dist/sequences-react/engine/zoom.d.ts +29 -0
  276. package/dist/sequences-react/index.d.ts +20 -880
  277. package/dist/sequences-react/lazy.d.ts +8 -0
  278. package/dist/sequences-react/media/frame-provider.d.ts +70 -0
  279. package/dist/sequences-react/media/transcription.d.ts +33 -0
  280. package/dist/sequences-react/media/waveform.d.ts +34 -0
  281. package/dist/session-shell/index.d.ts +31 -204
  282. package/dist/session-shell/nav-guard.d.ts +170 -0
  283. package/dist/session-shell/path.d.ts +19 -0
  284. package/dist/signoff/cli.d.ts +4 -7
  285. package/dist/signoff/config.d.ts +12 -0
  286. package/dist/signoff/exec.d.ts +44 -0
  287. package/dist/signoff/index.d.ts +56 -14
  288. package/dist/signoff/invoked-as-script.d.ts +25 -0
  289. package/dist/signoff/node-version.d.ts +50 -0
  290. package/dist/signoff/proof-attach.d.ts +88 -0
  291. package/dist/signoff/proof-cli.d.ts +1 -0
  292. package/dist/signoff/proof-fixture.d.ts +13 -0
  293. package/dist/signoff/proof-from-report.d.ts +22 -0
  294. package/dist/signoff/proof-git.d.ts +57 -0
  295. package/dist/signoff/proof-record.d.ts +202 -0
  296. package/dist/signoff/proof-verify.d.ts +103 -0
  297. package/dist/signoff/proof.d.ts +35 -310
  298. package/dist/signoff/report.d.ts +7 -0
  299. package/dist/{run-D80hoLKh.d.ts → signoff/run.d.ts} +3 -6
  300. package/dist/signoff/schedule.d.ts +55 -0
  301. package/dist/signoff/seeds.d.ts +50 -0
  302. package/dist/signoff/store.d.ts +22 -0
  303. package/dist/{types-Bd6uW9vQ.d.ts → signoff/types.d.ts} +15 -17
  304. package/dist/signoff/workflow-pin.d.ts +56 -0
  305. package/dist/signoff/workspace.d.ts +40 -0
  306. package/dist/skills/index.d.ts +28 -32
  307. package/dist/skills-placement/index.d.ts +7 -11
  308. package/dist/spend/budget.d.ts +123 -0
  309. package/dist/spend/ceiling.d.ts +51 -0
  310. package/dist/spend/cli-args.d.ts +20 -0
  311. package/dist/spend/cli.d.ts +1 -0
  312. package/dist/spend/fixtures/incident-parked-time.d.ts +55 -0
  313. package/dist/spend/index.d.ts +38 -1144
  314. package/dist/spend/liveness.d.ts +131 -0
  315. package/dist/spend/ownership.d.ts +87 -0
  316. package/dist/spend/reconcile.d.ts +109 -0
  317. package/dist/spend/reference.d.ts +42 -0
  318. package/dist/spend/report.d.ts +12 -0
  319. package/dist/spend/store.d.ts +123 -0
  320. package/dist/spend/types.d.ts +466 -0
  321. package/dist/store/index.d.ts +10 -12
  322. package/dist/stories/app-shell/fixtures.d.ts +43 -0
  323. package/dist/stories/app-shell/shell.d.ts +81 -0
  324. package/dist/stories/assistant/fixtures.d.ts +73 -0
  325. package/dist/stories/chat/fixtures.d.ts +70 -0
  326. package/dist/stories/chat/markdown.d.ts +11 -0
  327. package/dist/stories/chat/run-drill-in.d.ts +19 -0
  328. package/dist/stories/chat-controls/fixtures.d.ts +116 -0
  329. package/dist/stories/design-canvas/fixtures.d.ts +57 -0
  330. package/dist/stories/fixtures/canvas.d.ts +10 -0
  331. package/dist/stories/fixtures/catalog.d.ts +7 -0
  332. package/dist/stories/fixtures/chat.d.ts +39 -0
  333. package/dist/stories/fixtures/index.d.ts +4 -0
  334. package/dist/stories/fixtures/sequences.d.ts +17 -0
  335. package/dist/stories/panels/fixtures.d.ts +63 -0
  336. package/dist/stories/sequences/fixtures.d.ts +30 -0
  337. package/dist/stories/studio/fixtures.d.ts +22 -0
  338. package/dist/stream/index.d.ts +10 -56
  339. package/dist/{stream-normalizer-DKRxyVlZ.d.ts → stream/stream-normalizer.d.ts} +23 -26
  340. package/dist/{turn-buffer-COMQUwO2.d.ts → stream/turn-buffer.d.ts} +21 -23
  341. package/dist/stream/turn-identity.d.ts +49 -0
  342. package/dist/studio/generation.d.ts +179 -0
  343. package/dist/studio/index.d.ts +12 -181
  344. package/dist/studio-react/avatar-composer.d.ts +8 -0
  345. package/dist/studio-react/composer-hero.d.ts +12 -0
  346. package/dist/studio-react/composer-shell.d.ts +18 -0
  347. package/dist/studio-react/generation-card.d.ts +9 -0
  348. package/dist/studio-react/generation-detail-modal.d.ts +11 -0
  349. package/dist/studio-react/generation-detail.d.ts +6 -0
  350. package/dist/studio-react/generation-grid.d.ts +15 -0
  351. package/dist/studio-react/image-composer.d.ts +8 -0
  352. package/dist/studio-react/index.d.ts +32 -245
  353. package/dist/studio-react/library-drawer.d.ts +12 -0
  354. package/dist/studio-react/library-panel.d.ts +15 -0
  355. package/dist/studio-react/publish-package-composer.d.ts +18 -0
  356. package/dist/studio-react/result-canvas.d.ts +6 -0
  357. package/dist/studio-react/speech-composer.d.ts +4 -0
  358. package/dist/studio-react/studio-header.d.ts +5 -0
  359. package/dist/studio-react/studio-sheet.d.ts +12 -0
  360. package/dist/studio-react/studio-workspace.d.ts +23 -0
  361. package/dist/studio-react/transcription-composer.d.ts +12 -0
  362. package/dist/studio-react/type-config.d.ts +11 -0
  363. package/dist/studio-react/use-studio-generations.d.ts +20 -0
  364. package/dist/studio-react/video-composer.d.ts +10 -0
  365. package/dist/tangle/index.d.ts +7 -9
  366. package/dist/teams/drizzle/access.d.ts +82 -0
  367. package/dist/{invitations-schema-_fI7HkJP.d.ts → teams/drizzle/invitations-schema.d.ts} +39 -27
  368. package/dist/teams/drizzle/personal-organization.d.ts +41 -0
  369. package/dist/{access-490O6aOU.d.ts → teams/drizzle/schema.d.ts} +57 -122
  370. package/dist/teams/drizzle.d.ts +12 -44
  371. package/dist/teams/index.d.ts +20 -44
  372. package/dist/teams/invitations-api.d.ts +17 -21
  373. package/dist/{invitations-DoYMvXea.d.ts → teams/invitations.d.ts} +14 -18
  374. package/dist/teams/invite.d.ts +42 -0
  375. package/dist/teams/members-api.d.ts +12 -16
  376. package/dist/teams/resend.d.ts +3 -13
  377. package/dist/{roles-B4nU3jDi.d.ts → teams/roles.d.ts} +18 -20
  378. package/dist/teams-react/components/BrandMark.d.ts +10 -0
  379. package/dist/teams-react/components/InvitationsPanel.d.ts +13 -0
  380. package/dist/teams-react/components/InviteAcceptPage.d.ts +10 -0
  381. package/dist/teams-react/components/MembersPanel.d.ts +14 -0
  382. package/dist/teams-react/components/RoleSelect.d.ts +17 -0
  383. package/dist/teams-react/components/index.d.ts +3 -0
  384. package/dist/teams-react/contracts.d.ts +134 -0
  385. package/dist/teams-react/index.d.ts +12 -143
  386. package/dist/teams-react/lazy.d.ts +11 -11
  387. package/dist/test-setup.d.ts +1 -0
  388. package/dist/theme/index.d.ts +6 -104
  389. package/dist/theme/tailwind-preset.d.ts +1 -2
  390. package/dist/theme/theme.d.ts +106 -0
  391. package/dist/theme-contract/cli.d.ts +21 -0
  392. package/dist/theme-contract/index.d.ts +4 -6
  393. package/dist/{auth-BYtiazA4.d.ts → tools/auth.d.ts} +8 -11
  394. package/dist/tools/capability.d.ts +54 -0
  395. package/dist/tools/dispatch.d.ts +37 -0
  396. package/dist/tools/errors.d.ts +8 -0
  397. package/dist/tools/gating.d.ts +62 -0
  398. package/dist/tools/http.d.ts +27 -0
  399. package/dist/tools/index.d.ts +12 -217
  400. package/dist/{mcp-rpc-DYwPlYbZ.d.ts → tools/mcp-rpc.d.ts} +7 -9
  401. package/dist/{mcp-xxoZZfor.d.ts → tools/mcp.d.ts} +14 -16
  402. package/dist/tools/openai.d.ts +28 -0
  403. package/dist/tools/registry.d.ts +39 -0
  404. package/dist/tools/runtime.d.ts +22 -0
  405. package/dist/{types-B25Mib1r.d.ts → tools/types.d.ts} +15 -83
  406. package/dist/{flow-types-CJxEmaRy.d.ts → trace/flow-types.d.ts} +2 -4
  407. package/dist/trace/index.d.ts +11 -148
  408. package/dist/trace/mission-flow.d.ts +82 -0
  409. package/dist/trace/mission-trace.d.ts +52 -0
  410. package/dist/turn-health/classify.d.ts +207 -0
  411. package/dist/turn-health/index.d.ts +29 -637
  412. package/dist/turn-health/lifecycle.d.ts +75 -0
  413. package/dist/turn-health/sink.d.ts +122 -0
  414. package/dist/turn-health/sweep.d.ts +245 -0
  415. package/dist/turn-stream/adapters.d.ts +257 -0
  416. package/dist/turn-stream/core.d.ts +293 -0
  417. package/dist/turn-stream/do.d.ts +144 -0
  418. package/dist/turn-stream/index.d.ts +62 -738
  419. package/dist/turn-stream/memory.d.ts +41 -0
  420. package/dist/vault/ConfirmDialog.d.ts +22 -0
  421. package/dist/vault/VaultPane.d.ts +15 -0
  422. package/dist/{VaultPane-BDP6SB_K.d.ts → vault/contracts.d.ts} +15 -22
  423. package/dist/vault/index.d.ts +15 -22
  424. package/dist/vault/lazy.d.ts +9 -7
  425. package/dist/vault/server.d.ts +8 -10
  426. package/dist/web/free-route-limit.d.ts +187 -0
  427. package/dist/web/index.d.ts +15 -207
  428. package/dist/{rate-limit-BOVmJRXZ.d.ts → web/rate-limit.d.ts} +3 -5
  429. package/dist/web-react/agent-session-controls.d.ts +105 -0
  430. package/dist/web-react/async/async-view.d.ts +69 -0
  431. package/dist/web-react/async/index.d.ts +13 -305
  432. package/dist/web-react/async/state.d.ts +107 -0
  433. package/dist/web-react/async/use-async-resource.d.ts +41 -0
  434. package/dist/web-react/async/use-confirmed-mutation.d.ts +90 -0
  435. package/dist/web-react/brand-mark.d.ts +11 -0
  436. package/dist/web-react/chat-attachments.d.ts +21 -0
  437. package/dist/web-react/chat-composer.d.ts +174 -0
  438. package/dist/web-react/chat-interactions.d.ts +1 -0
  439. package/dist/web-react/chat-mentions.d.ts +48 -0
  440. package/dist/web-react/chat-stream.d.ts +106 -0
  441. package/dist/web-react/class-names.d.ts +10 -0
  442. package/dist/web-react/controls.d.ts +265 -0
  443. package/dist/web-react/durable-chat-cards.d.ts +40 -0
  444. package/dist/web-react/durable-interaction-submit.d.ts +22 -0
  445. package/dist/web-react/durable-plan-card.d.ts +13 -0
  446. package/dist/web-react/durable-plan-flow.d.ts +77 -0
  447. package/dist/web-react/harness-glyphs.d.ts +28 -0
  448. package/dist/web-react/index.d.ts +80 -2347
  449. package/dist/web-react/index.js +3 -3
  450. package/dist/web-react/inert.d.ts +39 -0
  451. package/dist/web-react/insight-card.d.ts +203 -0
  452. package/dist/web-react/interaction-card-support.d.ts +115 -0
  453. package/dist/web-react/interaction-plan-card.d.ts +39 -0
  454. package/dist/web-react/interaction-question-card.d.ts +100 -0
  455. package/dist/web-react/message-attachments.d.ts +56 -0
  456. package/dist/web-react/mission-activity.d.ts +96 -0
  457. package/dist/web-react/motion.d.ts +43 -0
  458. package/dist/web-react/provenance-model.d.ts +195 -0
  459. package/dist/web-react/provenance.d.ts +82 -0
  460. package/dist/web-react/provider-logo.d.ts +14 -0
  461. package/dist/web-react/record-grid-model.d.ts +257 -0
  462. package/dist/web-react/record-grid.d.ts +108 -0
  463. package/dist/web-react/sandbox-terminal.d.ts +90 -0
  464. package/dist/web-react/seat-paywall.d.ts +47 -0
  465. package/dist/web-react/session-history.d.ts +196 -0
  466. package/dist/web-react/smooth-text.d.ts +29 -0
  467. package/dist/web-react/sparkline.d.ts +150 -0
  468. package/dist/web-react/terminal.d.ts +1 -92
  469. package/dist/web-react/use-chat-interactions.d.ts +78 -0
  470. package/dist/web-react/use-composer-attachments.d.ts +111 -0
  471. package/dist/web-react/use-file-mentions.d.ts +94 -0
  472. package/dist/web-react/work-product.d.ts +105 -0
  473. package/dist/work-product/claim-support.d.ts +288 -0
  474. package/dist/work-product/index.d.ts +16 -849
  475. package/dist/work-product/provenance.d.ts +61 -0
  476. package/dist/{queue-VTBA5ONX.d.ts → work-product/queue.d.ts} +10 -12
  477. package/dist/work-product/quote.d.ts +139 -0
  478. package/dist/work-product/route.d.ts +88 -0
  479. package/dist/work-product/service.d.ts +123 -0
  480. package/dist/work-product/tools.d.ts +144 -0
  481. package/dist/{types-CCeYywdS.d.ts → work-product/types.d.ts} +29 -31
  482. package/dist/work-product-react/index.d.ts +19 -8
  483. package/dist/workspace-react/index.d.ts +8 -11
  484. package/package.json +4 -3
  485. package/dist/agent-session-controls-CmlXwp_H.d.ts +0 -384
  486. package/dist/apply-6wlMOLf8.d.ts +0 -280
  487. package/dist/attachment-validation-BfJDBU1g.d.ts +0 -261
  488. package/dist/budget-BOucfcb_.d.ts +0 -142
  489. package/dist/chunk-CCVG2TL6.js.map +0 -1
  490. package/dist/values-C7RidJuI.d.ts +0 -156
  491. /package/dist/{chunk-PVP57G3S.js.map → chunk-2IFGVBNI.js.map} +0 -0
  492. /package/dist/{chunk-MQO5ML66.js.map → chunk-KJ2Q27U7.js.map} +0 -0
@@ -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;
@@ -1,92 +1 @@
1
- /** Define the connection details and status for a sandbox terminal session */
2
- 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
- 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
- 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
- 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
- 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
- declare function tabTerminalConnectionId(storageKey?: string): string;
91
-
92
- export { type SandboxTerminalConnection, type SandboxTerminalConnectionResponse, type UseSandboxTerminalConnectionOptions, type UseSandboxTerminalConnectionResult, tabTerminalConnectionId, useSandboxTerminalConnection };
1
+ export * from './sandbox-terminal';
@@ -0,0 +1,78 @@
1
+ /**
2
+ * useChatInteractions — the interaction-state wiring every consumer of
3
+ * `ChatStreamCallbacks.onInteraction` re-implements: an id-keyed,
4
+ * insertion-ordered list with
5
+ *
6
+ * - forward-only status transitions (a replayed/stale `pending` never
7
+ * resurrects a resolved card),
8
+ * - pending-question content dedupe (a re-emitted duplicate ask never renders
9
+ * a second card),
10
+ * - cancel-event application (`interaction.cancel` → cancelled/expired),
11
+ * - local resolution marking (the card's `onResolved`),
12
+ * - reload restore from the answer route's GET list (sidecar registry is the
13
+ * source of truth after a reload),
14
+ * - turn-end settling (client mirror of the server's finalize pass: a turn
15
+ * that completed without a cancel was answered; a failed turn can make no
16
+ * such claim).
17
+ *
18
+ * The reducer functions are pure and exported for non-React consumers/tests;
19
+ * the hook is a thin `useState` shell over them.
20
+ */
21
+ import { type ChatInteraction, type ChatInteractionStatus, type InteractionAnswers, type InteractionCancelData, type InteractionRequestWire } from './chat-interactions';
22
+ /** Insert or update one interaction. A terminal existing entry wins over any
23
+ * incoming state for the same id; a new pending ask that duplicates another
24
+ * pending ask's content is dropped. Returns the same array when unchanged. */
25
+ export declare function upsertChatInteraction(list: ChatInteraction[], interaction: ChatInteraction): ChatInteraction[];
26
+ /** Applies an `interaction.cancel` event: only a pending ask moves, to
27
+ * `expired` (reason:"timeout") or `cancelled`. */
28
+ export declare function cancelChatInteraction(list: ChatInteraction[], cancel: InteractionCancelData): ChatInteraction[];
29
+ /** Marks one ask resolved locally (the card's `onResolved`). Forward-only. */
30
+ export declare function resolveChatInteraction(list: ChatInteraction[], id: string, status: Exclude<ChatInteractionStatus, 'pending'>, answers?: InteractionAnswers): ChatInteraction[];
31
+ /** Settles every still-pending ask when the turn ends: `answered` for a turn
32
+ * that completed cleanly, `expired` for one that failed. */
33
+ export declare function terminalizePendingChatInteractions(list: ChatInteraction[], status: Extract<ChatInteractionStatus, 'answered' | 'expired'>): ChatInteraction[];
34
+ /** Define modes for restoring chat interactions with legacy or durable strategies */
35
+ export type ChatInteractionRestoreMode = 'legacy' | 'durable';
36
+ /** Define options to control how chat interactions are restored during the restore process */
37
+ export interface RestoreChatInteractionsOptions {
38
+ /**
39
+ * `legacy` settles pending asks absent from the sidecar list as answered,
40
+ * preserving the pre-durable restore contract. `durable` leaves them
41
+ * pending because absence is ambiguous until `hydrateChatInteractions`
42
+ * applies the durable projection.
43
+ */
44
+ mode?: ChatInteractionRestoreMode;
45
+ }
46
+ /** Reload restore from the answer route's GET list. Legacy consumers retain
47
+ * the historical absence→answered behavior; durable consumers opt into the
48
+ * ambiguity-preserving mode and apply terminal parts through `hydrate`. */
49
+ export declare function restoreChatInteractions(list: ChatInteraction[], outstanding: InteractionRequestWire[], options?: RestoreChatInteractionsOptions): ChatInteraction[];
50
+ /** Applies transcript/state-store projections after reload. Terminal state and
51
+ * acknowledged answer values enrich an existing pending card without relying
52
+ * on the sidecar's outstanding-list absence. */
53
+ export declare function hydrateChatInteractions(list: ChatInteraction[], persisted: ChatInteraction[]): ChatInteraction[];
54
+ /** Resolve and manage chat interactions with methods to update, cancel, mark resolved, and restore state */
55
+ export interface UseChatInteractionsResult {
56
+ /** All known interactions, insertion-ordered. */
57
+ interactions: ChatInteraction[];
58
+ /** The asks currently blocking the run (waiting on the user). */
59
+ pending: ChatInteraction[];
60
+ /** Wire to `ChatStreamCallbacks.onInteraction` (and persisted-part replay). */
61
+ upsert: (interaction: ChatInteraction) => void;
62
+ /** Wire to `interaction.cancel` events. */
63
+ applyCancel: (cancel: InteractionCancelData) => void;
64
+ /** Wire to the cards' `onResolved`. */
65
+ markResolved: (id: string, status: Exclude<ChatInteractionStatus, 'pending'>, answers?: InteractionAnswers) => void;
66
+ /** Wire to the answer route's GET list after a reload/reconnect. */
67
+ restore: (outstanding: InteractionRequestWire[], options?: RestoreChatInteractionsOptions) => void;
68
+ /** Apply durable transcript/state projections after a reload. */
69
+ hydrate: (persisted: ChatInteraction[]) => void;
70
+ /** Settle still-pending asks when the turn ends. */
71
+ terminalizePending: (status: Extract<ChatInteractionStatus, 'answered' | 'expired'>) => void;
72
+ /** Drop everything (thread switch). */
73
+ reset: () => void;
74
+ }
75
+ /** Resolve options for restoring chat interactions from previous sessions */
76
+ export type UseChatInteractionsOptions = RestoreChatInteractionsOptions;
77
+ /** Manage chat interactions state with upsert, cancel, resolve, and restore capabilities */
78
+ export declare function useChatInteractions(options?: UseChatInteractionsOptions): UseChatInteractionsResult;
@@ -0,0 +1,111 @@
1
+ /**
2
+ * `useComposerAttachments` — the composer's staged-upload lifecycle: validate
3
+ * selected/dropped/pasted files against the shared limits (the SAME
4
+ * `sniffBinary`/`checkAttachmentType`/size-cap vocabulary the store-backed
5
+ * upload route enforces server-side, `../chat-routes/attachment-validation`
6
+ * + `../chat-routes/binary-sniff`), upload each accepted file with one POST
7
+ * request per file (so a single failure never poisons the batch), and track
8
+ * every file's status so a host composer can render chips and gate sending.
9
+ *
10
+ * Ported from gtm-agent's `src/components/composer-attachments.tsx`
11
+ * (gtm#584/#592/#593 hardened the sniff gate and batch semantics this leans
12
+ * on), de-gtm-ified:
13
+ * - the hardcoded `/api/vault/upload?workspaceId=` URL becomes
14
+ * `uploadUrl`/`buildUploadRequest` (the latter wins — it hands back both
15
+ * the URL and a `RequestInit` override, e.g. an auth header);
16
+ * - `sonner` toasts become `onReject` (client pre-validation, never hits the
17
+ * network) and `onError` (a request that reached the server and failed);
18
+ * - the sandbox-ui `validateComposerFiles` import becomes a small
19
+ * accept-list matcher re-implemented locally (`isAcceptedFileType`,
20
+ * mirroring its `accept`-string matching byte-for-byte) — this module
21
+ * stays free of the sandbox-ui peer;
22
+ * - the response is expected to be `{ files: ChatAttachmentInput[] }` (full
23
+ * server-authoritative descriptors — size/mediaType/kind — not gtm's
24
+ * `{path, name}`), so `references` is a verbatim pass-through with no
25
+ * client recompute;
26
+ * - `workspaceId`'s truthiness gate becomes `enabled` (default `true`).
27
+ *
28
+ * Import-free beyond React + the browser-safe `/chat-routes` validation core:
29
+ * this module ships through `/web-react` into client bundles
30
+ * (`tests/browser-safe-subpaths.test.ts` walks the graph), so nothing here
31
+ * may reach a Node builtin, `sandbox-ui`, or an engine package.
32
+ */
33
+ import type { ChatAttachmentInput, ChatAttachmentKind } from './chat-stream';
34
+ import type { ComposerFile } from './chat-composer';
35
+ export { ATTACHMENT_ACCEPT } from '../chat-routes/attachment-validation';
36
+ /** Define options for configuring file upload behavior and handling in a composer component */
37
+ export interface UseComposerAttachmentsOptions {
38
+ /** Simple upload target: every file POSTs here. Ignored when
39
+ * `buildUploadRequest` is provided. */
40
+ uploadUrl?: string;
41
+ /** Full request-building seam (auth headers, per-file routing, …) — wins
42
+ * over `uploadUrl` when both are set. */
43
+ buildUploadRequest?: (args: {
44
+ file: File;
45
+ name: string;
46
+ form: FormData;
47
+ }) => {
48
+ url: string;
49
+ init?: Omit<RequestInit, 'body' | 'signal'>;
50
+ };
51
+ /** Client pre-validation rejections — a file that never reaches the
52
+ * network (bad type, over a size cap, over count, disallowed kind). */
53
+ onReject?: (reason: string, file?: File) => void;
54
+ /** A file that reached the upload endpoint and failed (HTTP error,
55
+ * transport error, malformed response). */
56
+ onError?: (reason: string) => void;
57
+ limits?: {
58
+ maxCount?: number;
59
+ maxBinaryBytes?: number;
60
+ maxTextBytes?: number;
61
+ maxTotalBytes?: number;
62
+ };
63
+ /** Attachment kinds accepted, checked against the sniffed content's
64
+ * mime. Default: both (`['image', 'file']` — i.e. no restriction). */
65
+ allowedKinds?: ChatAttachmentKind[];
66
+ /** `<input accept>`-style gate for the file picker/drop/paste path.
67
+ * Default {@link ATTACHMENT_ACCEPT}. */
68
+ accept?: string;
69
+ /** When `false`, `addFiles` rejects every call via `onReject` (and
70
+ * `blockReason` explains why) instead of staging anything — the
71
+ * replacement for gtm's `workspaceId`-truthiness gate (e.g. no workspace
72
+ * loaded yet). Default `true`. */
73
+ enabled?: boolean;
74
+ }
75
+ /** Provide staged file chips, ready attachments, and methods to add, retry, or drop composer files */
76
+ export interface UseComposerAttachmentsResult {
77
+ /** Chip models for `ChatComposer`'s `pendingFiles` prop, one per staged
78
+ * file — `kind` is always `'file'` (agent-app's `ComposerFile.kind`
79
+ * discriminates file-vs-folder chips, not attachment media type). */
80
+ composerFiles: ComposerFile[];
81
+ /** Ready-to-send attachment descriptors — only files whose upload
82
+ * succeeded, straight from the server's response (no recompute). Feed
83
+ * this into `ChatTurnRequestPayload.attachments`. */
84
+ references: ChatAttachmentInput[];
85
+ /** Validate + stage + upload the given files, one request per file. */
86
+ addFiles: (files: File[] | FileList) => Promise<void>;
87
+ /** Re-upload a failed entry using its retained `File`. */
88
+ retry: (id: string) => void;
89
+ /** Drop one staged entry, aborting its upload and revoking its preview. */
90
+ removeAttachment: (id: string) => void;
91
+ /** Forget every staged entry (call after a successful send). */
92
+ clear: () => void;
93
+ /** True while any file is still pending or uploading. */
94
+ hasPending: boolean;
95
+ /** True while any file failed to upload. */
96
+ hasError: boolean;
97
+ /** Why a send is blocked, or `null` when the queue is clean. */
98
+ blockReason: string | null;
99
+ }
100
+ /**
101
+ * Owns the composer's attachment lifecycle: validate selected/dropped/pasted
102
+ * files against the shared limits, upload each accepted file to the
103
+ * product's store (one request per file), and track every file's status so
104
+ * the composer can render chips and gate sending.
105
+ *
106
+ * Failures surface loud — a rejected file calls `onReject` and is never
107
+ * uploaded; a failed upload calls `onError` and leaves an error chip the user
108
+ * can retry or remove. `references` only ever contains files whose upload the
109
+ * server actually confirmed.
110
+ */
111
+ export declare function useComposerAttachments(options: UseComposerAttachmentsOptions): UseComposerAttachmentsResult;