@tangle-network/agent-app 0.45.53 → 0.45.55

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (480) hide show
  1. package/README.md +1 -1
  2. package/dist/alerting/index.d.ts +5 -175
  3. package/dist/alerting/slack.d.ts +176 -0
  4. package/dist/app-auth/index.d.ts +14 -17
  5. package/dist/assets/index.d.ts +2 -504
  6. package/dist/assets/schema.d.ts +264 -0
  7. package/dist/assets/types.d.ts +237 -0
  8. package/dist/assistant/AssistantDock.d.ts +56 -0
  9. package/dist/assistant/AssistantHistory.d.ts +41 -0
  10. package/dist/assistant/AssistantPanel.d.ts +84 -0
  11. package/dist/assistant/ProposalCard.d.ts +41 -0
  12. package/dist/assistant/ResizeHandle.d.ts +19 -0
  13. package/dist/assistant/client-context.d.ts +20 -0
  14. package/dist/assistant/client.d.ts +117 -0
  15. package/dist/assistant/index.d.ts +19 -848
  16. package/dist/assistant/launcher.d.ts +23 -0
  17. package/dist/assistant/persistence.d.ts +26 -0
  18. package/dist/assistant/presentation.d.ts +99 -0
  19. package/dist/assistant/provider-label.d.ts +7 -0
  20. package/dist/assistant/reducer.d.ts +130 -0
  21. package/dist/assistant/sse.d.ts +24 -0
  22. package/dist/assistant/time-ago.d.ts +6 -0
  23. package/dist/assistant/transcript.d.ts +97 -0
  24. package/dist/assistant/types.d.ts +291 -0
  25. package/dist/assistant/use-stick-to-bottom.d.ts +28 -0
  26. package/dist/assistant/useAssistantChat.d.ts +63 -0
  27. package/dist/assistant/useAssistantModels.d.ts +22 -0
  28. package/dist/assistant/useAssistantThreads.d.ts +47 -0
  29. package/dist/assistant/usePanelPrefs.d.ts +55 -0
  30. package/dist/billing/index.d.ts +19 -21
  31. package/dist/brand/index.d.ts +16 -10
  32. package/dist/brand-extraction/extract.d.ts +34 -0
  33. package/dist/brand-extraction/index.d.ts +12 -214
  34. package/dist/brand-extraction/map.d.ts +58 -0
  35. package/dist/brand-extraction/types.d.ts +119 -0
  36. package/dist/catalog/index.d.ts +11 -101
  37. package/dist/chat-react/composer-mode-controls.d.ts +14 -0
  38. package/dist/chat-react/entry-composer.d.ts +92 -0
  39. package/dist/chat-react/index.d.ts +22 -118
  40. package/dist/chat-react/types.d.ts +11 -0
  41. package/dist/chat-routes/attachment-store.d.ts +84 -0
  42. package/dist/chat-routes/attachment-upload.d.ts +84 -0
  43. package/dist/chat-routes/attachment-validation.d.ts +95 -0
  44. package/dist/chat-routes/binary-sniff.d.ts +45 -0
  45. package/dist/chat-routes/completed-sandbox-turn.d.ts +25 -0
  46. package/dist/chat-routes/detached-turn.d.ts +197 -0
  47. package/dist/chat-routes/dispatch-parts.d.ts +101 -0
  48. package/dist/chat-routes/draft-persistence.d.ts +189 -0
  49. package/dist/chat-routes/durable-projection.d.ts +18 -0
  50. package/dist/chat-routes/file-index.d.ts +115 -0
  51. package/dist/chat-routes/index.d.ts +25 -1840
  52. package/dist/chat-routes/model-failover-stream.d.ts +206 -0
  53. package/dist/chat-routes/promote-file-part.d.ts +84 -0
  54. package/dist/chat-routes/resolve-attachments.d.ts +72 -0
  55. package/dist/chat-routes/sandbox-producer.d.ts +146 -0
  56. package/dist/chat-routes/sandbox-turn-usage.d.ts +4 -0
  57. package/dist/{stale-turn-lock-DucQzvXu.d.ts → chat-routes/stale-turn-lock.d.ts} +7 -9
  58. package/dist/chat-routes/turn-routes.d.ts +540 -0
  59. package/dist/chat-routes/upload.d.ts +84 -0
  60. package/dist/{wire-DOZ-O6hD.d.ts → chat-routes/wire.d.ts} +41 -44
  61. package/dist/chat-store/core.d.ts +19 -0
  62. package/dist/chat-store/index.d.ts +22 -322
  63. package/dist/{parts-BqIHMdyu.d.ts → chat-store/parts.d.ts} +49 -47
  64. package/dist/chat-store/schema.d.ts +157 -0
  65. package/dist/chat-store/store.d.ts +177 -0
  66. package/dist/config/index.d.ts +13 -18
  67. package/dist/crypto/index.d.ts +10 -12
  68. package/dist/crypto/web-token.d.ts +22 -0
  69. package/dist/design-canvas/apply.d.ts +70 -0
  70. package/dist/design-canvas/drizzle-store.d.ts +29 -0
  71. package/dist/design-canvas/drizzle.d.ts +7 -575
  72. package/dist/{export-presets-mgVulRaV.d.ts → design-canvas/export-presets.d.ts} +18 -22
  73. package/dist/design-canvas/index.d.ts +22 -268
  74. package/dist/design-canvas/mcp-entry.d.ts +15 -0
  75. package/dist/design-canvas/mcp-handler.d.ts +34 -0
  76. package/dist/design-canvas/mcp-tools.d.ts +30 -0
  77. package/dist/{model-DnfO_PdJ.d.ts → design-canvas/model.d.ts} +33 -35
  78. package/dist/{operations-ByJ6yXOW.d.ts → design-canvas/operations.d.ts} +21 -25
  79. package/dist/design-canvas/schema.d.ts +558 -0
  80. package/dist/{store-CqfDtnPQ.d.ts → design-canvas/store.d.ts} +8 -12
  81. package/dist/design-canvas/templates.d.ts +72 -0
  82. package/dist/design-canvas/validate.d.ts +32 -0
  83. package/dist/design-canvas-react/components/BleedTrimOverlay.d.ts +22 -0
  84. package/dist/design-canvas-react/components/BrandKnot.d.ts +11 -0
  85. package/dist/design-canvas-react/components/CanvasEmptyState.d.ts +32 -0
  86. package/dist/design-canvas-react/components/CanvasInsertPanel.d.ts +53 -0
  87. package/dist/{lazy-DrkVyDpe.d.ts → design-canvas-react/components/DesignCanvas.d.ts} +27 -20
  88. package/dist/design-canvas-react/components/DesignCanvasEditor.d.ts +23 -0
  89. package/dist/design-canvas-react/components/ElementNode.d.ts +51 -0
  90. package/dist/design-canvas-react/components/ExportControl.d.ts +21 -0
  91. package/dist/design-canvas-react/components/GridLayer.d.ts +47 -0
  92. package/dist/design-canvas-react/components/InlineTextEditor.d.ts +25 -0
  93. package/dist/design-canvas-react/components/LayersPanel.d.ts +20 -0
  94. package/dist/design-canvas-react/components/PagesStrip.d.ts +34 -0
  95. package/dist/design-canvas-react/components/Rulers.d.ts +31 -0
  96. package/dist/design-canvas-react/components/SelectionLayer.d.ts +51 -0
  97. package/dist/design-canvas-react/components/SnapGuidesOverlay.d.ts +25 -0
  98. package/dist/design-canvas-react/components/Toolbar.d.ts +64 -0
  99. package/dist/design-canvas-react/components/Workspace.d.ts +92 -0
  100. package/dist/design-canvas-react/components/ZoomControls.d.ts +14 -0
  101. package/dist/design-canvas-react/components/glyphs.d.ts +46 -0
  102. package/dist/design-canvas-react/components/icon-button.d.ts +22 -0
  103. package/dist/design-canvas-react/components/index.d.ts +27 -0
  104. package/dist/design-canvas-react/components/layer-tree.d.ts +34 -0
  105. package/dist/design-canvas-react/components/ruler-math.d.ts +78 -0
  106. package/dist/design-canvas-react/components/transform-math.d.ts +168 -0
  107. package/dist/{command-stack-TNPWJCzW.d.ts → design-canvas-react/contracts.d.ts} +16 -63
  108. package/dist/design-canvas-react/engine/command-stack.d.ts +43 -0
  109. package/dist/design-canvas-react/engine/commands.d.ts +154 -0
  110. package/dist/design-canvas-react/engine/selection.d.ts +48 -0
  111. package/dist/design-canvas-react/engine/snap.d.ts +24 -0
  112. package/dist/design-canvas-react/engine/zoom-pan.d.ts +18 -0
  113. package/dist/design-canvas-react/engine.d.ts +21 -399
  114. package/dist/design-canvas-react/export-math.d.ts +104 -0
  115. package/dist/design-canvas-react/export.d.ts +89 -0
  116. package/dist/design-canvas-react/index.d.ts +16 -586
  117. package/dist/design-canvas-react/insert-builders.d.ts +61 -0
  118. package/dist/design-canvas-react/lazy.d.ts +21 -6
  119. package/dist/documents/docx.d.ts +50 -0
  120. package/dist/documents/extract.d.ts +87 -0
  121. package/dist/documents/index.d.ts +26 -232
  122. package/dist/documents/media-type.d.ts +33 -0
  123. package/dist/documents/pdf-inspector.d.ts +5 -9
  124. package/dist/{types-DrBidf3O.d.ts → documents/types.d.ts} +13 -15
  125. package/dist/documents/zip.d.ts +56 -0
  126. package/dist/eval/calibration.d.ts +106 -0
  127. package/dist/eval/index.d.ts +8 -116
  128. package/dist/eval-campaign/index.d.ts +11 -12
  129. package/dist/{trust-gate-Dcm5xSva.d.ts → eval-campaign/trust-gate.d.ts} +5 -9
  130. package/dist/forms/blank.d.ts +48 -0
  131. package/dist/forms/fill.d.ts +105 -0
  132. package/dist/forms/index.d.ts +58 -332
  133. package/dist/forms/registry.d.ts +115 -0
  134. package/dist/forms/verify.d.ts +58 -0
  135. package/dist/harness/index.d.ts +21 -19
  136. package/dist/intakes/api.d.ts +5 -11
  137. package/dist/{completion-CvcNUz07.d.ts → intakes/completion.d.ts} +7 -11
  138. package/dist/intakes/context-sufficiency.d.ts +113 -0
  139. package/dist/intakes/drizzle/schema.d.ts +338 -0
  140. package/dist/intakes/drizzle/store.d.ts +75 -0
  141. package/dist/intakes/drizzle.d.ts +12 -391
  142. package/dist/intakes/index.d.ts +23 -113
  143. package/dist/{model-C8U0HZxL.d.ts → intakes/model.d.ts} +15 -17
  144. package/dist/intakes-react/components/BrandMark.d.ts +10 -0
  145. package/dist/intakes-react/components/IntakeInterview.d.ts +15 -0
  146. package/dist/intakes-react/components/index.d.ts +1 -0
  147. package/dist/intakes-react/contracts.d.ts +42 -0
  148. package/dist/intakes-react/index.d.ts +12 -47
  149. package/dist/intakes-react/lazy.d.ts +9 -8
  150. package/dist/integrations/index.d.ts +10 -12
  151. package/dist/{contract-OxG_jVMx.d.ts → interactions/contract.d.ts} +40 -42
  152. package/dist/interactions/index.d.ts +16 -256
  153. package/dist/interactions/route.d.ts +151 -0
  154. package/dist/interactions/sidecar.d.ts +100 -0
  155. package/dist/knowledge/index.d.ts +7 -11
  156. package/dist/knowledge-loop/index.d.ts +13 -20
  157. package/dist/legibility/checks/empty-state.d.ts +59 -0
  158. package/dist/legibility/checks/reachability.d.ts +103 -0
  159. package/dist/legibility/checks/silent-failure.d.ts +57 -0
  160. package/dist/legibility/checks/success.d.ts +38 -0
  161. package/dist/legibility/checks/vocabulary.d.ts +65 -0
  162. package/dist/legibility/cli-args.d.ts +30 -0
  163. package/dist/legibility/cli.d.ts +25 -0
  164. package/dist/legibility/index.d.ts +10 -530
  165. package/dist/legibility/report.d.ts +22 -0
  166. package/dist/legibility/scan.d.ts +29 -0
  167. package/dist/legibility/source.d.ts +132 -0
  168. package/dist/legibility/suppress.d.ts +36 -0
  169. package/dist/legibility/types.d.ts +168 -0
  170. package/dist/legibility/walk-sources.d.ts +21 -0
  171. package/dist/{agent-activity-C8ZG0F0M.d.ts → missions/agent-activity.d.ts} +3 -5
  172. package/dist/missions/engine.d.ts +251 -0
  173. package/dist/missions/events.d.ts +195 -0
  174. package/dist/missions/index.d.ts +12 -765
  175. package/dist/missions/plan-parse.d.ts +50 -0
  176. package/dist/missions/service.d.ts +265 -0
  177. package/dist/{failover-D-3UXXTb.d.ts → model-resolution/failover.d.ts} +10 -12
  178. package/dist/model-resolution/index.d.ts +15 -18
  179. package/dist/object-store/index.d.ts +15 -17
  180. package/dist/openui/action.d.ts +54 -0
  181. package/dist/openui/authoring.d.ts +25 -0
  182. package/dist/openui/index.d.ts +24 -206
  183. package/dist/openui/route.d.ts +124 -0
  184. package/dist/openui/segments.d.ts +71 -0
  185. package/dist/openui/values.d.ts +82 -0
  186. package/dist/openui-react/index.d.ts +9 -13
  187. package/dist/peer-floors/check.d.ts +9 -190
  188. package/dist/peer-floors/cli.d.ts +2 -3
  189. package/dist/peer-floors/dependency-source.d.ts +178 -0
  190. package/dist/plans/index.d.ts +13 -14
  191. package/dist/{billing-BuNlaKlE.d.ts → platform/billing.d.ts} +28 -32
  192. package/dist/platform/guards.d.ts +79 -0
  193. package/dist/platform/hub.d.ts +107 -0
  194. package/dist/platform/index.d.ts +7 -112
  195. package/dist/{sso-Cm00S61u.d.ts → platform/sso.d.ts} +15 -97
  196. package/dist/preflight/cli.d.ts +3 -6
  197. package/dist/preflight/index.d.ts +16 -18
  198. package/dist/preset-cloudflare/headers.d.ts +12 -0
  199. package/dist/preset-cloudflare/index.d.ts +22 -74
  200. package/dist/preset-cloudflare/workflow-instance.d.ts +35 -0
  201. package/dist/profile/budget.d.ts +72 -0
  202. package/dist/profile/fingerprint.d.ts +65 -0
  203. package/dist/profile/index.d.ts +27 -19
  204. package/dist/prompt/index.d.ts +3 -5
  205. package/dist/record/drizzle/schema.d.ts +488 -0
  206. package/dist/record/drizzle/store.d.ts +224 -0
  207. package/dist/record/drizzle.d.ts +10 -679
  208. package/dist/record/fold.d.ts +99 -0
  209. package/dist/record/index.d.ts +13 -13
  210. package/dist/{fold-DACU7gtf.d.ts → record/model.d.ts} +22 -124
  211. package/dist/record/ulid.d.ts +12 -0
  212. package/dist/redact/index.d.ts +14 -16
  213. package/dist/run/index.d.ts +11 -16
  214. package/dist/runtime/agent.d.ts +23 -0
  215. package/dist/runtime/certified-delivery.d.ts +57 -0
  216. package/dist/runtime/index.d.ts +17 -367
  217. package/dist/runtime/loop.d.ts +58 -0
  218. package/dist/runtime/model-catalog.d.ts +103 -0
  219. package/dist/{model-CdCDfBA9.d.ts → runtime/model.d.ts} +25 -27
  220. package/dist/runtime/openai-stream.d.ts +126 -0
  221. package/dist/runtime/surface-profile.d.ts +115 -0
  222. package/dist/sandbox/binary-read.d.ts +63 -0
  223. package/dist/sandbox/diagnostics.d.ts +69 -0
  224. package/dist/sandbox/index.d.ts +103 -1085
  225. package/dist/sandbox/model.d.ts +179 -0
  226. package/dist/sandbox/outcome.d.ts +10 -0
  227. package/dist/sandbox/prewarm-claim-d1.d.ts +80 -0
  228. package/dist/sandbox/prewarm.d.ts +193 -0
  229. package/dist/sandbox/recovery.d.ts +216 -0
  230. package/dist/sandbox/terminal-connection.d.ts +145 -0
  231. package/dist/sandbox/workspace-sandbox-manager.d.ts +44 -0
  232. package/dist/sequences/apply.d.ts +54 -0
  233. package/dist/sequences/captions.d.ts +91 -0
  234. package/dist/sequences/drizzle-store.d.ts +36 -0
  235. package/dist/sequences/drizzle.d.ts +7 -1252
  236. package/dist/sequences/exports.d.ts +138 -0
  237. package/dist/sequences/index.d.ts +19 -340
  238. package/dist/sequences/mcp-entry.d.ts +15 -0
  239. package/dist/sequences/mcp-handler.d.ts +39 -0
  240. package/dist/sequences/mcp-tools.d.ts +47 -0
  241. package/dist/{store-B7LLlk9p.d.ts → sequences/model.d.ts} +26 -110
  242. package/dist/sequences/operations.d.ts +126 -0
  243. package/dist/sequences/schema.d.ts +1231 -0
  244. package/dist/sequences/store.d.ts +81 -0
  245. package/dist/sequences/validate.d.ts +98 -0
  246. package/dist/sequences-react/components/BrandMark.d.ts +10 -0
  247. package/dist/sequences-react/components/PreviewCanvas.d.ts +26 -0
  248. package/dist/sequences-react/components/SnapIndicatorLine.d.ts +11 -0
  249. package/dist/sequences-react/components/TimelineClipChip.d.ts +80 -0
  250. package/dist/sequences-react/components/TimelineEditor.d.ts +44 -0
  251. package/dist/sequences-react/components/TimelineEmptyState.d.ts +21 -0
  252. package/dist/sequences-react/components/TimelineGhostLanes.d.ts +14 -0
  253. package/dist/sequences-react/components/TimelinePlayhead.d.ts +11 -0
  254. package/dist/sequences-react/components/TimelineRuler.d.ts +16 -0
  255. package/dist/sequences-react/components/TimelineSmallScreenGate.d.ts +12 -0
  256. package/dist/sequences-react/components/TimelineTrackRow.d.ts +51 -0
  257. package/dist/sequences-react/components/ZoomControl.d.ts +15 -0
  258. package/dist/sequences-react/components/composite-command.d.ts +8 -0
  259. package/dist/sequences-react/components/glyphs.d.ts +26 -0
  260. package/dist/sequences-react/components/index.d.ts +31 -0
  261. package/dist/sequences-react/components/interaction-math.d.ts +103 -0
  262. package/dist/sequences-react/contracts.d.ts +187 -0
  263. package/dist/sequences-react/engine/command-stack.d.ts +18 -0
  264. package/dist/sequences-react/engine/commands.d.ts +146 -0
  265. package/dist/sequences-react/engine/playback.d.ts +18 -0
  266. package/dist/sequences-react/engine/snap.d.ts +29 -0
  267. package/dist/sequences-react/engine/zoom.d.ts +29 -0
  268. package/dist/sequences-react/index.d.ts +20 -880
  269. package/dist/sequences-react/lazy.d.ts +8 -0
  270. package/dist/sequences-react/media/frame-provider.d.ts +70 -0
  271. package/dist/sequences-react/media/transcription.d.ts +33 -0
  272. package/dist/sequences-react/media/waveform.d.ts +34 -0
  273. package/dist/session-shell/index.d.ts +31 -204
  274. package/dist/session-shell/nav-guard.d.ts +170 -0
  275. package/dist/session-shell/path.d.ts +19 -0
  276. package/dist/signoff/cli.d.ts +4 -7
  277. package/dist/signoff/config.d.ts +12 -0
  278. package/dist/signoff/exec.d.ts +44 -0
  279. package/dist/signoff/index.d.ts +56 -14
  280. package/dist/signoff/invoked-as-script.d.ts +25 -0
  281. package/dist/signoff/node-version.d.ts +50 -0
  282. package/dist/signoff/proof-attach.d.ts +88 -0
  283. package/dist/signoff/proof-cli.d.ts +1 -0
  284. package/dist/signoff/proof-fixture.d.ts +13 -0
  285. package/dist/signoff/proof-from-report.d.ts +22 -0
  286. package/dist/signoff/proof-git.d.ts +57 -0
  287. package/dist/signoff/proof-record.d.ts +202 -0
  288. package/dist/signoff/proof-verify.d.ts +103 -0
  289. package/dist/signoff/proof.d.ts +35 -310
  290. package/dist/signoff/report.d.ts +7 -0
  291. package/dist/{run-D80hoLKh.d.ts → signoff/run.d.ts} +3 -6
  292. package/dist/signoff/schedule.d.ts +55 -0
  293. package/dist/signoff/seeds.d.ts +50 -0
  294. package/dist/signoff/store.d.ts +22 -0
  295. package/dist/{types-Bd6uW9vQ.d.ts → signoff/types.d.ts} +15 -17
  296. package/dist/signoff/workflow-pin.d.ts +56 -0
  297. package/dist/signoff/workspace.d.ts +40 -0
  298. package/dist/skills/index.d.ts +28 -32
  299. package/dist/skills-placement/index.d.ts +7 -11
  300. package/dist/spend/budget.d.ts +123 -0
  301. package/dist/spend/ceiling.d.ts +51 -0
  302. package/dist/spend/cli-args.d.ts +20 -0
  303. package/dist/spend/cli.d.ts +1 -0
  304. package/dist/spend/fixtures/incident-parked-time.d.ts +55 -0
  305. package/dist/spend/index.d.ts +38 -1144
  306. package/dist/spend/liveness.d.ts +131 -0
  307. package/dist/spend/ownership.d.ts +87 -0
  308. package/dist/spend/reconcile.d.ts +109 -0
  309. package/dist/spend/reference.d.ts +42 -0
  310. package/dist/spend/report.d.ts +12 -0
  311. package/dist/spend/store.d.ts +123 -0
  312. package/dist/spend/types.d.ts +466 -0
  313. package/dist/store/index.d.ts +10 -12
  314. package/dist/stories/app-shell/fixtures.d.ts +43 -0
  315. package/dist/stories/app-shell/shell.d.ts +81 -0
  316. package/dist/stories/assistant/fixtures.d.ts +73 -0
  317. package/dist/stories/chat/fixtures.d.ts +70 -0
  318. package/dist/stories/chat/markdown.d.ts +11 -0
  319. package/dist/stories/chat/run-drill-in.d.ts +19 -0
  320. package/dist/stories/chat-controls/fixtures.d.ts +116 -0
  321. package/dist/stories/design-canvas/fixtures.d.ts +57 -0
  322. package/dist/stories/fixtures/canvas.d.ts +10 -0
  323. package/dist/stories/fixtures/catalog.d.ts +7 -0
  324. package/dist/stories/fixtures/chat.d.ts +39 -0
  325. package/dist/stories/fixtures/index.d.ts +4 -0
  326. package/dist/stories/fixtures/sequences.d.ts +17 -0
  327. package/dist/stories/panels/fixtures.d.ts +63 -0
  328. package/dist/stories/sequences/fixtures.d.ts +30 -0
  329. package/dist/stories/studio/fixtures.d.ts +22 -0
  330. package/dist/stream/index.d.ts +10 -56
  331. package/dist/{stream-normalizer-DKRxyVlZ.d.ts → stream/stream-normalizer.d.ts} +23 -26
  332. package/dist/{turn-buffer-COMQUwO2.d.ts → stream/turn-buffer.d.ts} +21 -23
  333. package/dist/stream/turn-identity.d.ts +49 -0
  334. package/dist/studio/generation.d.ts +179 -0
  335. package/dist/studio/index.d.ts +12 -181
  336. package/dist/studio-react/avatar-composer.d.ts +8 -0
  337. package/dist/studio-react/composer-hero.d.ts +12 -0
  338. package/dist/studio-react/composer-shell.d.ts +18 -0
  339. package/dist/studio-react/generation-card.d.ts +9 -0
  340. package/dist/studio-react/generation-detail-modal.d.ts +11 -0
  341. package/dist/studio-react/generation-detail.d.ts +6 -0
  342. package/dist/studio-react/generation-grid.d.ts +15 -0
  343. package/dist/studio-react/image-composer.d.ts +8 -0
  344. package/dist/studio-react/index.d.ts +32 -245
  345. package/dist/studio-react/library-drawer.d.ts +12 -0
  346. package/dist/studio-react/library-panel.d.ts +15 -0
  347. package/dist/studio-react/publish-package-composer.d.ts +18 -0
  348. package/dist/studio-react/result-canvas.d.ts +6 -0
  349. package/dist/studio-react/speech-composer.d.ts +4 -0
  350. package/dist/studio-react/studio-header.d.ts +5 -0
  351. package/dist/studio-react/studio-sheet.d.ts +12 -0
  352. package/dist/studio-react/studio-workspace.d.ts +23 -0
  353. package/dist/studio-react/transcription-composer.d.ts +12 -0
  354. package/dist/studio-react/type-config.d.ts +11 -0
  355. package/dist/studio-react/use-studio-generations.d.ts +20 -0
  356. package/dist/studio-react/video-composer.d.ts +10 -0
  357. package/dist/tangle/index.d.ts +7 -9
  358. package/dist/teams/drizzle/access.d.ts +82 -0
  359. package/dist/{invitations-schema-_fI7HkJP.d.ts → teams/drizzle/invitations-schema.d.ts} +39 -27
  360. package/dist/teams/drizzle/personal-organization.d.ts +41 -0
  361. package/dist/{access-490O6aOU.d.ts → teams/drizzle/schema.d.ts} +57 -122
  362. package/dist/teams/drizzle.d.ts +12 -44
  363. package/dist/teams/index.d.ts +20 -44
  364. package/dist/teams/invitations-api.d.ts +17 -21
  365. package/dist/{invitations-DoYMvXea.d.ts → teams/invitations.d.ts} +14 -18
  366. package/dist/teams/invite.d.ts +42 -0
  367. package/dist/teams/members-api.d.ts +12 -16
  368. package/dist/teams/resend.d.ts +3 -13
  369. package/dist/{roles-B4nU3jDi.d.ts → teams/roles.d.ts} +18 -20
  370. package/dist/teams-react/components/BrandMark.d.ts +10 -0
  371. package/dist/teams-react/components/InvitationsPanel.d.ts +13 -0
  372. package/dist/teams-react/components/InviteAcceptPage.d.ts +10 -0
  373. package/dist/teams-react/components/MembersPanel.d.ts +14 -0
  374. package/dist/teams-react/components/RoleSelect.d.ts +17 -0
  375. package/dist/teams-react/components/index.d.ts +3 -0
  376. package/dist/teams-react/contracts.d.ts +134 -0
  377. package/dist/teams-react/index.d.ts +12 -143
  378. package/dist/teams-react/lazy.d.ts +11 -11
  379. package/dist/test-setup.d.ts +1 -0
  380. package/dist/theme/index.d.ts +6 -104
  381. package/dist/theme/tailwind-preset.d.ts +1 -2
  382. package/dist/theme/theme.d.ts +106 -0
  383. package/dist/theme-contract/cli.d.ts +21 -0
  384. package/dist/theme-contract/index.d.ts +4 -6
  385. package/dist/{auth-BYtiazA4.d.ts → tools/auth.d.ts} +8 -11
  386. package/dist/tools/capability.d.ts +54 -0
  387. package/dist/tools/dispatch.d.ts +37 -0
  388. package/dist/tools/errors.d.ts +8 -0
  389. package/dist/tools/gating.d.ts +62 -0
  390. package/dist/tools/http.d.ts +27 -0
  391. package/dist/tools/index.d.ts +12 -217
  392. package/dist/{mcp-rpc-DYwPlYbZ.d.ts → tools/mcp-rpc.d.ts} +7 -9
  393. package/dist/{mcp-xxoZZfor.d.ts → tools/mcp.d.ts} +14 -16
  394. package/dist/tools/openai.d.ts +28 -0
  395. package/dist/tools/registry.d.ts +39 -0
  396. package/dist/tools/runtime.d.ts +22 -0
  397. package/dist/{types-B25Mib1r.d.ts → tools/types.d.ts} +15 -83
  398. package/dist/{flow-types-CJxEmaRy.d.ts → trace/flow-types.d.ts} +2 -4
  399. package/dist/trace/index.d.ts +11 -148
  400. package/dist/trace/mission-flow.d.ts +82 -0
  401. package/dist/trace/mission-trace.d.ts +52 -0
  402. package/dist/turn-health/classify.d.ts +207 -0
  403. package/dist/turn-health/index.d.ts +29 -637
  404. package/dist/turn-health/lifecycle.d.ts +75 -0
  405. package/dist/turn-health/sink.d.ts +122 -0
  406. package/dist/turn-health/sweep.d.ts +245 -0
  407. package/dist/turn-stream/adapters.d.ts +257 -0
  408. package/dist/turn-stream/core.d.ts +293 -0
  409. package/dist/turn-stream/do.d.ts +144 -0
  410. package/dist/turn-stream/index.d.ts +62 -738
  411. package/dist/turn-stream/memory.d.ts +41 -0
  412. package/dist/vault/ConfirmDialog.d.ts +22 -0
  413. package/dist/vault/VaultPane.d.ts +15 -0
  414. package/dist/{VaultPane-BDP6SB_K.d.ts → vault/contracts.d.ts} +15 -22
  415. package/dist/vault/index.d.ts +15 -22
  416. package/dist/vault/lazy.d.ts +9 -7
  417. package/dist/vault/server.d.ts +8 -10
  418. package/dist/web/free-route-limit.d.ts +187 -0
  419. package/dist/web/index.d.ts +15 -207
  420. package/dist/{rate-limit-BOVmJRXZ.d.ts → web/rate-limit.d.ts} +3 -5
  421. package/dist/web-react/agent-session-controls.d.ts +105 -0
  422. package/dist/web-react/async/async-view.d.ts +69 -0
  423. package/dist/web-react/async/index.d.ts +13 -305
  424. package/dist/web-react/async/state.d.ts +107 -0
  425. package/dist/web-react/async/use-async-resource.d.ts +41 -0
  426. package/dist/web-react/async/use-confirmed-mutation.d.ts +90 -0
  427. package/dist/web-react/brand-mark.d.ts +11 -0
  428. package/dist/web-react/chat-attachments.d.ts +21 -0
  429. package/dist/web-react/chat-composer.d.ts +174 -0
  430. package/dist/web-react/chat-interactions.d.ts +1 -0
  431. package/dist/web-react/chat-mentions.d.ts +48 -0
  432. package/dist/web-react/chat-stream.d.ts +106 -0
  433. package/dist/web-react/class-names.d.ts +10 -0
  434. package/dist/web-react/controls.d.ts +265 -0
  435. package/dist/web-react/durable-chat-cards.d.ts +40 -0
  436. package/dist/web-react/durable-interaction-submit.d.ts +22 -0
  437. package/dist/web-react/durable-plan-card.d.ts +13 -0
  438. package/dist/web-react/durable-plan-flow.d.ts +77 -0
  439. package/dist/web-react/harness-glyphs.d.ts +28 -0
  440. package/dist/web-react/index.d.ts +80 -2347
  441. package/dist/web-react/inert.d.ts +39 -0
  442. package/dist/web-react/insight-card.d.ts +203 -0
  443. package/dist/web-react/interaction-card-support.d.ts +115 -0
  444. package/dist/web-react/interaction-plan-card.d.ts +39 -0
  445. package/dist/web-react/interaction-question-card.d.ts +100 -0
  446. package/dist/web-react/message-attachments.d.ts +56 -0
  447. package/dist/web-react/mission-activity.d.ts +96 -0
  448. package/dist/web-react/motion.d.ts +43 -0
  449. package/dist/web-react/provenance-model.d.ts +195 -0
  450. package/dist/web-react/provenance.d.ts +82 -0
  451. package/dist/web-react/provider-logo.d.ts +14 -0
  452. package/dist/web-react/record-grid-model.d.ts +257 -0
  453. package/dist/web-react/record-grid.d.ts +108 -0
  454. package/dist/web-react/sandbox-terminal.d.ts +90 -0
  455. package/dist/web-react/seat-paywall.d.ts +47 -0
  456. package/dist/web-react/session-history.d.ts +196 -0
  457. package/dist/web-react/smooth-text.d.ts +29 -0
  458. package/dist/web-react/sparkline.d.ts +150 -0
  459. package/dist/web-react/terminal.d.ts +1 -92
  460. package/dist/web-react/use-chat-interactions.d.ts +78 -0
  461. package/dist/web-react/use-composer-attachments.d.ts +111 -0
  462. package/dist/web-react/use-file-mentions.d.ts +94 -0
  463. package/dist/web-react/work-product.d.ts +105 -0
  464. package/dist/work-product/claim-support.d.ts +288 -0
  465. package/dist/work-product/index.d.ts +16 -849
  466. package/dist/work-product/provenance.d.ts +61 -0
  467. package/dist/{queue-VTBA5ONX.d.ts → work-product/queue.d.ts} +10 -12
  468. package/dist/work-product/quote.d.ts +139 -0
  469. package/dist/work-product/route.d.ts +88 -0
  470. package/dist/work-product/service.d.ts +123 -0
  471. package/dist/work-product/tools.d.ts +144 -0
  472. package/dist/{types-CCeYywdS.d.ts → work-product/types.d.ts} +29 -31
  473. package/dist/work-product-react/index.d.ts +19 -8
  474. package/dist/workspace-react/index.d.ts +8 -11
  475. package/package.json +5 -4
  476. package/dist/agent-session-controls-CmlXwp_H.d.ts +0 -384
  477. package/dist/apply-6wlMOLf8.d.ts +0 -280
  478. package/dist/attachment-validation-BfJDBU1g.d.ts +0 -261
  479. package/dist/budget-BOucfcb_.d.ts +0 -142
  480. package/dist/values-C7RidJuI.d.ts +0 -156
@@ -0,0 +1,132 @@
1
+ /**
2
+ * A purpose-built TS/TSX scanner: the one place this subpath decides what part
3
+ * of a file is CODE and what part is COPY A HUMAN READS.
4
+ *
5
+ * Every legibility check needs the same distinction, and getting it from
6
+ * per-check regexes is what makes a lint gate imprecise enough to be turned off.
7
+ * `grep -i artifact` over one product's `apps/web/src` returns 11 hits and every
8
+ * single one is an import specifier, a prop name, or a doc comment — zero are on
9
+ * screen. A checker that reports those 11 is deleted within a week, and then it
10
+ * guards nothing.
11
+ *
12
+ * So this module lexes instead: one pass produces (a) classified SEGMENTS —
13
+ * comments, string literals, template chunks, JSX text, JSX attribute values —
14
+ * and (b) a JSX ELEMENT TREE with spans, attributes, and the enclosing
15
+ * expression container. Checks read those, never the raw bytes.
16
+ *
17
+ * It is a lexer, not a type-aware parser, and that boundary is deliberate: this
18
+ * package ships one runtime dependency and adding `typescript` to every
19
+ * consumer's install to lint copy is the wrong trade. What a lexer cannot do —
20
+ * resolve a string through a variable, follow a component's props to its render
21
+ * — is out of scope by construction and documented per check.
22
+ *
23
+ * Node-agnostic: pure string in, data out. The `fs` walking lives in `scan.ts`.
24
+ */
25
+ /** What a stretch of source is, once the lexer has decided. */
26
+ export type SegmentKind =
27
+ /** `//…` or `/*…*​/` — never user-visible; every check skips these. */
28
+ 'comment'
29
+ /** A `'…'` / `"…"` literal in code position. Visible only in some contexts. */
30
+ | 'string'
31
+ /** One literal chunk of a template literal (the `${…}` holes are code). */
32
+ | 'template'
33
+ /** Text between JSX tags. The highest-confidence user-visible signal there is. */
34
+ | 'jsx-text'
35
+ /** A `name="…"` attribute value on a JSX element. */
36
+ | 'jsx-attribute';
37
+ /** One classified stretch of source. */
38
+ export interface SourceSegment {
39
+ readonly kind: SegmentKind;
40
+ /** Offset of the first character of the segment's VALUE (inside the quotes). */
41
+ readonly start: number;
42
+ /** Offset just past the segment's value. */
43
+ readonly end: number;
44
+ /** The value text, quotes stripped, escapes left as written. */
45
+ readonly value: string;
46
+ /** For `jsx-attribute`: the attribute name. For `jsx-text`: absent. */
47
+ readonly attribute?: string;
48
+ /** For `jsx-attribute` / `jsx-text`: the owning element's tag name. */
49
+ readonly tag?: string;
50
+ }
51
+ /** One attribute on a JSX element. */
52
+ export interface JsxAttribute {
53
+ readonly name: string;
54
+ readonly start: number;
55
+ /** The literal value when written `name="…"`; null when `name={…}` or bare. */
56
+ readonly value: string | null;
57
+ /** True when written `name={…}` — the value is code, not copy. */
58
+ readonly expression: boolean;
59
+ }
60
+ /** One JSX element, with the span every subtree question needs. */
61
+ export interface JsxElement {
62
+ /** Tag as written (`div`, `Button`, `Card.Header`); `''` for a fragment. */
63
+ readonly tag: string;
64
+ readonly attributes: JsxAttribute[];
65
+ readonly children: JsxElement[];
66
+ parent: JsxElement | null;
67
+ /** Offset of the opening `<`. */
68
+ readonly start: number;
69
+ /** Offset just past the opening tag's `>`. */
70
+ openEnd: number;
71
+ /** Offset just past the element's end (`/>` or `</tag>`). */
72
+ end: number;
73
+ /**
74
+ * Offset of the `{` of the nearest enclosing JSX expression container, or
75
+ * null at the top of a return/assignment. This is what scopes an empty state
76
+ * to its own conditional branch instead of to the whole page.
77
+ */
78
+ readonly containerStart: number | null;
79
+ }
80
+ /** Everything one pass over a file produces. */
81
+ export interface ScannedSource {
82
+ readonly text: string;
83
+ readonly segments: readonly SourceSegment[];
84
+ /** Every element, in document (open-tag) order. */
85
+ readonly elements: readonly JsxElement[];
86
+ /**
87
+ * `text` with every comment, string body and template body replaced by
88
+ * spaces, offsets preserved. Structural regexes (catch bodies, fetch calls)
89
+ * run over this so a `catch` inside a string can never be a finding.
90
+ */
91
+ readonly masked: string;
92
+ }
93
+ /** 1-based line/column for a byte offset. */
94
+ export interface SourcePosition {
95
+ readonly line: number;
96
+ readonly column: number;
97
+ }
98
+ /**
99
+ * Lex one TS/TSX source.
100
+ *
101
+ * The loop keeps a frame stack. A code frame pops back to its JSX parent when
102
+ * an unmatched `}` closes the expression container that opened it; a JSX tag
103
+ * frame becomes a children frame at `>` and pops at `/>`.
104
+ */
105
+ export declare function scanSource(text: string): ScannedSource;
106
+ /** Line-start offsets, for `positionAt`. */
107
+ export declare function lineIndex(text: string): number[];
108
+ /** 1-based line/column of `offset`, given a `lineIndex` result. */
109
+ export declare function positionAt(starts: readonly number[], offset: number): SourcePosition;
110
+ /** The innermost element whose span contains `offset`. */
111
+ export declare function elementAt(elements: readonly JsxElement[], offset: number): JsxElement | null;
112
+ /**
113
+ * The nearest enclosing FUNCTION body containing `offset`, over MASKED text.
114
+ *
115
+ * Walks outward from the innermost block until one is introduced by `)` +
116
+ * optional `=>`, `function …`, or a method head — the scope a handler occupies.
117
+ * This is what keeps a check from joining a request in one handler to a success
118
+ * message in another, which is the difference between a report worth reading
119
+ * and one that gets the gate switched off.
120
+ */
121
+ export declare function enclosingFunctionBlock(masked: string, offset: number): {
122
+ start: number;
123
+ end: number;
124
+ } | null;
125
+ /**
126
+ * The innermost `{ … }` block containing `offset`, over MASKED text.
127
+ * Returns null when `offset` sits at top level.
128
+ */
129
+ export declare function enclosingBlock(masked: string, offset: number): {
130
+ start: number;
131
+ end: number;
132
+ } | null;
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Suppression: how a product says "this one is deliberate" without switching
3
+ * the gate off.
4
+ *
5
+ * The design constraint is the whole reason this gate exists at all. A checker
6
+ * that cannot be silenced per-line gets silenced per-repo — the config flag is
7
+ * flipped once, in a rush, and nobody ever flips it back. So every finding is
8
+ * individually suppressible; and because a silent suppression is
9
+ * indistinguishable from a disabled check six months later, a suppression
10
+ * without a written reason is ITSELF a finding, and does not suppress.
11
+ *
12
+ * // legibility-ignore engineering-vocabulary — "conflict" is the term of art
13
+ * // a litigator uses; renaming it would make the screen less clear, not more
14
+ * <p>Conflict check cleared</p>
15
+ *
16
+ * Forms:
17
+ * - a comment on its own line suppresses the NEXT line that has content
18
+ * - a trailing comment suppresses ITS OWN line
19
+ * - `legibility-ignore-file <check>` suppresses the check for the whole file
20
+ * - several checks may be named, comma-separated
21
+ * - JSX comments (`{​/* … *​/}`) work, since they lex as comments too
22
+ *
23
+ * Honoured suppressions are returned, not swallowed: the report prints the
24
+ * count and `--list-suppressions` prints every one with its reason, so the
25
+ * exemptions stay as visible as the failures.
26
+ */
27
+ import type { ScannedFile } from './scan';
28
+ import { type LegibilityCheckId, type RawFinding } from './types';
29
+ export interface SuppressionIndex {
30
+ /** Decide a finding: honoured suppression, or not. */
31
+ reasonFor(check: LegibilityCheckId, line: number): string | null;
32
+ /** Findings the suppression syntax itself produced (missing reason, unknown check). */
33
+ readonly selfFindings: readonly RawFinding[];
34
+ }
35
+ /** Parse every `legibility-ignore` directive in one lexed file. */
36
+ export declare function buildSuppressionIndex(file: ScannedFile): SuppressionIndex;
@@ -0,0 +1,168 @@
1
+ /**
2
+ * The vocabulary of the legibility gate: what a finding is, what a suppression
3
+ * is, and what a product configures.
4
+ *
5
+ * Kept in its own module so the checks, the report formatter and the bin all
6
+ * agree on one shape, and so a consumer can import the types without pulling in
7
+ * `node:fs`.
8
+ */
9
+ /** The checks this gate runs. Each is individually suppressible, by name. */
10
+ export type LegibilityCheckId =
11
+ /** Words on screen that belong to the codebase, not to the reader. */
12
+ 'engineering-vocabulary'
13
+ /** An empty/zero state whose subtree offers no next action. */
14
+ | 'dead-end-empty-state'
15
+ /** A success state set without inspecting the response that would deny it. */
16
+ | 'unchecked-success'
17
+ /** A `catch` that neither surfaces the failure nor rethrows it. */
18
+ | 'silent-failure'
19
+ /** A route no navigation entry and no in-source link can reach. */
20
+ | 'unreachable-capability'
21
+ /** A suppression comment that names a check but gives no reason. */
22
+ | 'suppression-without-reason';
23
+ export declare const LEGIBILITY_CHECKS: readonly LegibilityCheckId[];
24
+ /** One defect, at one place, with the fix named. */
25
+ export interface LegibilityFinding {
26
+ readonly check: LegibilityCheckId;
27
+ /** Path as reported — relative to the working directory when it is inside it. */
28
+ readonly file: string;
29
+ /** 1-based. */
30
+ readonly line: number;
31
+ /** 1-based. */
32
+ readonly column: number;
33
+ /** What is wrong, in one sentence a reviewer can act on. */
34
+ readonly message: string;
35
+ /** What to do about it. Every finding carries one; a finding without a fix is a complaint. */
36
+ readonly remedy: string;
37
+ /** The offending source, trimmed to one readable line. */
38
+ readonly evidence: string;
39
+ }
40
+ /** A suppression that was honoured, with the reason its author wrote. */
41
+ export interface LegibilitySuppression {
42
+ readonly check: LegibilityCheckId;
43
+ readonly reason: string;
44
+ readonly file: string;
45
+ readonly line: number;
46
+ }
47
+ export interface LegibilityReport {
48
+ readonly ok: boolean;
49
+ readonly findings: readonly LegibilityFinding[];
50
+ /** Honoured suppressions — printed, never silent. */
51
+ readonly suppressed: readonly LegibilitySuppression[];
52
+ readonly filesScanned: number;
53
+ readonly checksRun: readonly LegibilityCheckId[];
54
+ }
55
+ /** A banned term plus the sentence that replaces it. */
56
+ export interface BannedTerm {
57
+ /** Matched case-insensitively at word boundaries against visible copy. */
58
+ readonly term: string;
59
+ /** What to write instead — printed with the finding. */
60
+ readonly instead: string;
61
+ }
62
+ export interface VocabularyOptions {
63
+ /** Replaces the default list outright. */
64
+ readonly terms?: readonly BannedTerm[];
65
+ /** Added to the default list — the common case for a product's own jargon. */
66
+ readonly extraTerms?: readonly BannedTerm[];
67
+ /** Removed from the default list, for a word that is genuinely the reader's. */
68
+ readonly allowTerms?: readonly string[];
69
+ /**
70
+ * Additional JSX attributes / object keys whose string value is user-visible
71
+ * copy (the defaults cover `title`, `label`, `placeholder`, `empty*`, …).
72
+ */
73
+ readonly extraCopyKeys?: readonly string[];
74
+ /**
75
+ * Additional call names whose first string argument is user-visible copy
76
+ * (defaults cover `toast*`, `alert`, `setError`, `new Error`).
77
+ */
78
+ readonly extraCopyCalls?: readonly string[];
79
+ /**
80
+ * Also read strings filling an object key named like copy
81
+ * (`description: '…'`). OFF by default: measured as the tier that reports
82
+ * system prompts, MCP tool descriptions and document templates — text no
83
+ * reader ever sees. Turn it on when your data modules really do hold UI copy.
84
+ */
85
+ readonly includeObjectCopy?: boolean;
86
+ }
87
+ export interface EmptyStateOptions {
88
+ /** Extra tags that count as an action (defaults: button, a, input, form, *Button, *Link, …). */
89
+ readonly extraActionTags?: readonly string[];
90
+ /** Extra props that count as an action (defaults: onClick, onSubmit, href, to, action, …). */
91
+ readonly extraActionProps?: readonly string[];
92
+ /** Extra regexes (as source strings) that identify empty-state copy. */
93
+ readonly extraEmptyPatterns?: readonly string[];
94
+ /**
95
+ * Also report a zero-state that sits directly under a heading. OFF by
96
+ * default: measured as the largest false-positive class — a titled section
97
+ * with nothing in it labels a screen the reader is already oriented on, and a
98
+ * detail page carrying four of them buries the one screen that is entirely
99
+ * empty.
100
+ */
101
+ readonly reportSectionZeroStates?: boolean;
102
+ }
103
+ export interface SuccessOptions {
104
+ /**
105
+ * Callees that resolve on a failed request instead of throwing. `fetch` is the
106
+ * default and the reason this check exists; add your own thin wrapper here.
107
+ */
108
+ readonly httpCalls?: readonly string[];
109
+ /** Extra identifiers that mean "the user has been told it worked". */
110
+ readonly extraSuccessSignals?: readonly string[];
111
+ /**
112
+ * Calls that inspect a response and throw on a bad status
113
+ * (`assertOk(res)`). Their presence in the same function counts as checking.
114
+ */
115
+ readonly okGuards?: readonly string[];
116
+ }
117
+ export interface SilentFailureOptions {
118
+ /** Extra identifiers that count as surfacing a failure to the user. */
119
+ readonly extraErrorSinks?: readonly string[];
120
+ /**
121
+ * Path substrings whose modules cannot reach a browser, and whose handlers
122
+ * are therefore not this check's business. Defaults to react-router's
123
+ * server-only conventions (`/.server/`, `/routes/api.`); pass `[]` to read
124
+ * every module, at the measured cost of a large false-positive class
125
+ * (best-effort telemetry, audit writes and cache fallbacks).
126
+ */
127
+ readonly readerlessPaths?: readonly string[];
128
+ }
129
+ export interface ReachabilityOptions {
130
+ /**
131
+ * A react-router `routes.ts` (the `@react-router/dev/routes` shape:
132
+ * `route()` / `index()` / `layout()` / `prefix()`).
133
+ */
134
+ readonly routeConfigFile?: string;
135
+ /** Route paths supplied directly, for a product on another router. */
136
+ readonly routePaths?: readonly string[];
137
+ /** Files that define navigation. Their path literals are the nav entries. */
138
+ readonly navFiles?: readonly string[];
139
+ /** Route paths (or prefixes ending in `/*`) that need no door — defaults to `api/*`. */
140
+ readonly ignore?: readonly string[];
141
+ /**
142
+ * Treat a route whose module is not a `.tsx` file as a resource endpoint
143
+ * rather than a screen. Default true — react-router resource routes are `.ts`.
144
+ */
145
+ readonly ignoreNonTsxRoutes?: boolean;
146
+ }
147
+ /** What a product writes in `legibility.config.mjs`. */
148
+ export interface LegibilityConfig {
149
+ /** Source directories to scan, recursively. At least one. */
150
+ readonly srcDirs: readonly string[];
151
+ /** Turn a check off wholesale. Prefer a per-line suppression with a reason. */
152
+ readonly checks?: Partial<Record<LegibilityCheckId, boolean>>;
153
+ readonly vocabulary?: VocabularyOptions;
154
+ readonly emptyState?: EmptyStateOptions;
155
+ readonly success?: SuccessOptions;
156
+ readonly silentFailure?: SilentFailureOptions;
157
+ readonly reachability?: ReachabilityOptions;
158
+ /** Path substrings to skip, added to the defaults (tests, fixtures, generated). */
159
+ readonly ignorePaths?: readonly string[];
160
+ }
161
+ /** A finding before file/line resolution — what a check returns. */
162
+ export interface RawFinding {
163
+ readonly check: LegibilityCheckId;
164
+ readonly offset: number;
165
+ readonly message: string;
166
+ readonly remedy: string;
167
+ readonly evidence: string;
168
+ }
@@ -0,0 +1,21 @@
1
+ /**
2
+ * The node-only recursive source walker `/legibility` and `/theme-contract`
3
+ * both need: collect scannable files under a directory, skipping vendor and
4
+ * generated output. Extracted here because it drifted into two copies one day
5
+ * apart with different skip lists — `/theme-contract`'s was missing
6
+ * `.react-router` / `.wrangler` / `.turbo`, so it descended into and linted
7
+ * framework-generated output the newer list correctly skips.
8
+ *
9
+ * Zero dependencies beyond `node:fs`/`node:path`, so either subpath can import
10
+ * it without pulling in the other's unrelated surface (`/legibility`'s own
11
+ * hand-written lexer, in particular).
12
+ */
13
+ /**
14
+ * Recursively collect scannable files under `dir`.
15
+ *
16
+ * `ignore` is matched by substring against the full path — the caller's own
17
+ * exclusions (test files, fixtures, `.d.ts`, generated route types, …) layer
18
+ * on top of the shared `GENERATED_SKIP_DIRS` floor rather than being baked in
19
+ * here, since which files count as "source" is a per-checker policy.
20
+ */
21
+ export declare function walkSources(dir: string, ignore?: readonly string[], skipDirs?: ReadonlySet<string>): string[];
@@ -9,7 +9,7 @@
9
9
  * `step.updated`); the client re-validates with {@link stepAgentActivity}
10
10
  * because the value rides loader/JSON boundaries as untyped metadata.
11
11
  */
12
- interface StepAgentActivity {
12
+ export interface StepAgentActivity {
13
13
  taskId: string;
14
14
  /** Delegation profile: coder | researcher | ui-auditor | product-defined. */
15
15
  tool: string;
@@ -30,7 +30,7 @@ interface StepAgentActivity {
30
30
  spanId?: string;
31
31
  }
32
32
  /** Step state extended with the activity lane a loader/seed route attaches. */
33
- type WithAgentActivity<Step> = Step & {
33
+ export type WithAgentActivity<Step> = Step & {
34
34
  agentActivity?: StepAgentActivity[];
35
35
  };
36
36
  /**
@@ -38,6 +38,4 @@ type WithAgentActivity<Step> = Step & {
38
38
  * missing any required field are dropped (a torn row must not crash the lane);
39
39
  * optional fields are kept only when well-typed.
40
40
  */
41
- declare function stepAgentActivity(step: object): StepAgentActivity[];
42
-
43
- export { type StepAgentActivity as S, type WithAgentActivity as W, stepAgentActivity as s };
41
+ export declare function stepAgentActivity(step: object): StepAgentActivity[];
@@ -0,0 +1,251 @@
1
+ /**
2
+ * Mission execution engine — drives one mission's plan to completion under a
3
+ * SINGLE serialized owner (a Cloudflare Workflow, a Durable Object alarm, a
4
+ * queue consumer — one per mission). The owner wraps each `runStep` call in its
5
+ * durable-step primitive (e.g. Workflows `step.do(step.id, …)`) so a completed
6
+ * step's result is persisted and replayed instead of re-run after a mid-run
7
+ * restart. This module holds the logic that must be correct independent of any
8
+ * runtime, so it is injectable and unit-testable with the dispatch mocked.
9
+ *
10
+ * Idempotency is layered, belt-and-suspenders:
11
+ * 1. The owner's durable-step cache replays a completed step's result.
12
+ * 2. `runStep` re-reads the mission first; a step already `done` (with a
13
+ * resultRef) returns the cached pointer WITHOUT re-dispatching — this
14
+ * closes the at-least-once window where a callback re-runs after the
15
+ * side effect committed but before the owner durably recorded it.
16
+ * 3. The cursor advances only after a step is `done`, so a fresh run resumes
17
+ * from `mission.cursor` and never re-touches earlier steps.
18
+ *
19
+ * Seams (the product supplies domain; the engine owns mechanism):
20
+ * - {@link SandboxDispatch} — how a step actually executes.
21
+ * - {@link MissionEngineOptions.estimateStepCostUsd} — per-step USD estimate.
22
+ * - {@link MissionGateOptions.classifyStep} — which steps need approval.
23
+ * - {@link MissionApprovalsPort} — where gate proposals live and how they
24
+ * resolve.
25
+ */
26
+ import type { MissionCostLedger, MissionOutcome, MissionRecord, MissionService, MissionStatus, MissionStep } from './service';
27
+ import { type MissionEventSink } from './events';
28
+ /**
29
+ * A side-effecting unit of per-step work. The owner supplies the real
30
+ * implementation (e.g. a detached sandbox-session dispatcher); tests supply a
31
+ * mock. MUST return a SMALL pointer — large output is written to the product's
32
+ * storage and only the resultRef is returned.
33
+ */
34
+ export type SandboxDispatch = (input: SandboxDispatchInput) => Promise<SandboxDispatchResult>;
35
+ /** Define input parameters for dispatching a mission step in the sandbox environment */
36
+ export interface SandboxDispatchInput {
37
+ mission: MissionRecord;
38
+ step: MissionStep;
39
+ stepIndex: number;
40
+ }
41
+ /** Define the result of a completed sandbox dispatch including artifact reference and optional cost details */
42
+ export interface SandboxDispatchDoneResult {
43
+ kind?: 'done';
44
+ /** Small pointer at the produced artifact/output (vault path, asset id, exec
45
+ * digest). Stored on the step as `resultRef`; never the full payload. */
46
+ resultRef: string;
47
+ /** Optional one-line status surfaced on the step row. */
48
+ sublabel?: string;
49
+ /** Optional marginal spend for this step. `ledgerDelta` carries platform-
50
+ * reported truth (real token counts, wall time); `deltaUsd` is set ONLY when
51
+ * a provider-authored price is known. Omit fields rather than synthesizing
52
+ * zeros — the engine substitutes its injected per-step estimate for a
53
+ * missing deltaUsd and records that estimate in the ledger. */
54
+ cost?: {
55
+ deltaUsd?: number;
56
+ ledgerDelta?: Partial<MissionCostLedger>;
57
+ };
58
+ }
59
+ /** The dispatched step's detached session is still executing on the platform.
60
+ * The owner sleeps `pollAfterMs` and re-invokes the step; the dispatch is
61
+ * idempotent on the session ref, so the re-invocation settles the same session
62
+ * rather than starting a second run. */
63
+ export interface SandboxDispatchInProgressResult {
64
+ kind: 'in_progress';
65
+ sessionRef: string;
66
+ pollAfterMs: number;
67
+ sublabel?: string;
68
+ }
69
+ /** Resolve the result of a sandbox dispatch as done or in progress */
70
+ export type SandboxDispatchResult = SandboxDispatchDoneResult | SandboxDispatchInProgressResult;
71
+ /** Outcome of running a single step. `cached` distinguishes a replay/skip
72
+ * (step was already done) from a fresh execution so the engine and its tests
73
+ * can assert the dispatch was NOT re-invoked. */
74
+ export type StepOutcome = {
75
+ kind: 'done';
76
+ resultRef: string;
77
+ cached: boolean;
78
+ } | {
79
+ kind: 'in_progress';
80
+ sessionRef: string;
81
+ pollAfterMs: number;
82
+ sublabel?: string;
83
+ } | {
84
+ kind: 'skipped-cursor';
85
+ reason: string;
86
+ } | {
87
+ kind: 'failed';
88
+ error: string;
89
+ fatal: boolean;
90
+ };
91
+ /** Outcome of running the whole plan from the cursor to the end. */
92
+ export type PlanOutcome = {
93
+ kind: 'completed';
94
+ summary: string;
95
+ } | {
96
+ kind: 'in_progress';
97
+ stepId: string;
98
+ sessionRef: string;
99
+ pollAfterMs: number;
100
+ sublabel?: string;
101
+ } | {
102
+ kind: 'failed';
103
+ failedStepId: string;
104
+ error: string;
105
+ } | {
106
+ kind: 'halted';
107
+ status: MissionStatus;
108
+ reason?: string | null;
109
+ } | {
110
+ kind: 'terminal';
111
+ status: MissionStatus;
112
+ } | {
113
+ kind: 'not-found';
114
+ };
115
+ /** Define options to control mission plan execution with optional pre-step veto logic */
116
+ export interface MissionPlanRunOptions {
117
+ /** Pre-step veto (kill switch, schedule window). A non-null return pauses the
118
+ * mission with that reason before the step's side effect starts. */
119
+ beforeStep?: (mission: MissionRecord, step: MissionStep) => Promise<string | null>;
120
+ }
121
+ /** Thrown to make the owner's durable-step wrapper retry. The single-owner
122
+ * invariant makes a genuine concurrent change rare (it means another writer
123
+ * touched the row), so retrying — rather than corrupting state by forcing a
124
+ * stale write — is the correct response. Distinct from a task failure, which
125
+ * is recorded on the step. */
126
+ export declare class MissionConcurrencyError extends Error {
127
+ constructor(message: string);
128
+ }
129
+ /** Thrown by a {@link SandboxDispatch} for a TRANSIENT failure (platform blip,
130
+ * exec-time network fault) that should be re-attempted. `runStep` RE-THROWS it
131
+ * so the owner engages its bounded retry+backoff; the step is left `running`
132
+ * and the re-dispatch is made idempotent by the cached-done guard. A
133
+ * deterministic failure must be a plain Error instead — that is recorded as a
134
+ * fatal `failed` step and is never retried (no money-burning loop on a
135
+ * deterministic error). */
136
+ export declare class RetryableStepError extends Error {
137
+ constructor(message: string);
138
+ }
139
+ /** Resolution states a gate proposal can be in. `approved`/`executed` unblock
140
+ * the gated step; everything else keeps the mission parked. */
141
+ export type MissionProposalResolution = 'pending' | 'approved' | 'rejected' | 'executed' | 'ignored';
142
+ /** Define mission gate categories as step, budget, or volume */
143
+ export type MissionGateKind = 'step' | 'budget' | 'volume';
144
+ /** Product classification of one step. Returned by
145
+ * {@link MissionGateOptions.classifyStep}; the matching rules (regexes, intent
146
+ * vocabularies, path allowlists) are product domain and never live here. */
147
+ export interface StepGateClassification {
148
+ /** Product approval-type label persisted on the proposal ('generate',
149
+ * 'integration_invoke', …). */
150
+ type: string;
151
+ /** Counted against the per-mission external-action volume cap. */
152
+ externalAction?: boolean;
153
+ estCostUsd?: number | null;
154
+ }
155
+ /** A gate proposal the engine asks the product to persist. The id is
156
+ * deterministic per (gate, mission, step) — see the `*ProposalId` helpers —
157
+ * so a replay re-finds the same proposal instead of duplicating it. The
158
+ * product composes its own title/description from the structured fields. */
159
+ export interface MissionGateProposal {
160
+ id: string;
161
+ missionId: string;
162
+ stepId: string;
163
+ gate: MissionGateKind;
164
+ mission: MissionRecord;
165
+ step: MissionStep;
166
+ /** Present for `gate: 'step'` — the classification that triggered the gate. */
167
+ classification?: StepGateClassification;
168
+ /** Present for `gate: 'budget'`. */
169
+ budget?: {
170
+ spentUsd: number;
171
+ budgetUsd: number;
172
+ estimatedCostUsd: number;
173
+ };
174
+ /** Present for `gate: 'volume'`. */
175
+ volume?: {
176
+ externalActionCount: number;
177
+ cap: number;
178
+ };
179
+ }
180
+ /** Approval persistence seam — the product implements this over its own
181
+ * proposal table and resolution flow. */
182
+ export interface MissionApprovalsPort {
183
+ /** Resolution of the proposal with this id, or null when none exists. */
184
+ findResolution(proposalId: string): Promise<MissionProposalResolution | null>;
185
+ /** Persist a new gate proposal (id is deterministic; called at most once per
186
+ * (gate, mission, step) absent a resolution). */
187
+ createProposal(proposal: MissionGateProposal): Promise<void>;
188
+ /** Count of this mission's `gate: 'step'` proposals whose classification was
189
+ * `externalAction: true` — the denominator of the volume cap. */
190
+ countExternalActionProposals(missionId: string): Promise<number>;
191
+ }
192
+ /** Define configuration options for mission gating including approvals, step classification, and action limits */
193
+ export interface MissionGateOptions {
194
+ approvals: MissionApprovalsPort;
195
+ /** Which steps need human approval, and as what. Return null for an ungated
196
+ * step. The rules are product domain (intent regexes, kind tables). */
197
+ classifyStep: (step: MissionStep) => StepGateClassification | null;
198
+ /** Max external-action approvals per mission before an approved override is
199
+ * required to request another. Default 5. */
200
+ externalActionCap?: number;
201
+ }
202
+ /** Define configuration options for initializing and controlling the mission engine behavior */
203
+ export interface MissionEngineOptions {
204
+ service: MissionService;
205
+ /** Per-step USD estimate. Load-bearing twice: the budget gate parks on it
206
+ * BEFORE a step runs, and the engine records it as the step's spend when the
207
+ * dispatch reports no provider-authored price — using one estimator keeps
208
+ * spend and gate consistent. */
209
+ estimateStepCostUsd: (step: MissionStep) => number;
210
+ /** Best-effort live notifier. Fired AFTER each guarded write commits, so a
211
+ * broadcast always reflects persisted state; re-fired on idempotent replays
212
+ * so a reconnecting client converges. Never awaited; a throwing sink can
213
+ * never fail a step. Default: drop everything. */
214
+ sink?: MissionEventSink;
215
+ /** Approval gating. Omitted → no classification/volume gates, and a budget
216
+ * overrun pauses the mission (fail closed) instead of parking it
217
+ * waiting_approval behind an override proposal. */
218
+ gates?: MissionGateOptions;
219
+ /** Step kinds whose failure does NOT abort the whole mission — enrichment
220
+ * steps the plan can complete without. Every other kind is fatal-on-failure.
221
+ * Default `['optional', 'best-effort']`. */
222
+ nonFatalStepKinds?: readonly string[];
223
+ }
224
+ /** Resolve mission plan steps with concurrency control and durable state management */
225
+ export interface MissionEngine {
226
+ /** Run exactly one plan step. Idempotent: re-invoking for a step already
227
+ * `done` returns the cached pointer without re-dispatching. A lost guarded
228
+ * race throws {@link MissionConcurrencyError} so the owner's durable-step
229
+ * wrapper retries instead of writing a stale value. */
230
+ runStep(missionId: string, stepId: string, dispatch: SandboxDispatch): Promise<StepOutcome>;
231
+ /** Walk the plan from the durable cursor to the end, re-reading the mission
232
+ * between steps so a pause/stop control that lands while a step is running
233
+ * is honored before the next side effect. `runStep` is the owner's boundary:
234
+ * in production `(step) => durableStep.do(step.id, () => engine.runStep(…))`;
235
+ * in tests `engine.runStep` directly. */
236
+ runPlan(missionId: string, runStep: (step: MissionStep, stepIndex: number) => Promise<StepOutcome>, options?: MissionPlanRunOptions): Promise<PlanOutcome>;
237
+ /** Record spend durable-first, live second: the guarded ledger write commits,
238
+ * then the sink sees the new total. A guarded failure returns unchanged. */
239
+ recordCost(missionId: string, deltaUsd: number, ledgerDelta?: Partial<MissionCostLedger>): Promise<MissionOutcome<MissionRecord>>;
240
+ /** Pause durable-first, live second (the paused event fires only on a real
241
+ * edge, not an idempotent re-pause). */
242
+ pauseMission(missionId: string, reason: string): Promise<MissionOutcome<MissionRecord>>;
243
+ }
244
+ /** Deterministic proposal id for a step-classification gate. */
245
+ export declare function stepGateProposalId(missionId: string, stepId: string): string;
246
+ /** Deterministic proposal id for a budget-overrun override. */
247
+ export declare function budgetGateProposalId(missionId: string, stepId: string): string;
248
+ /** Deterministic proposal id for an external-action volume-cap override. */
249
+ export declare function volumeGateProposalId(missionId: string, stepId: string): string;
250
+ /** Create a mission engine configured with options to manage mission execution and error handling */
251
+ export declare function createMissionEngine(options: MissionEngineOptions): MissionEngine;