@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
@@ -1,9 +1,3 @@
1
- import { KnowledgeResearchLoopContext, AddSourceTextInput, SourceAdapter, RunKnowledgeResearchLoopOptions, KnowledgeResearchLoopResult } from '@tangle-network/agent-knowledge';
2
- import { KnowledgeSourceSpec, AgentKnowledgeConfig } from '../config/index.js';
3
- import '../knowledge/index.js';
4
- import '@tangle-network/agent-eval';
5
- import '../model-CdCDfBA9.js';
6
-
7
1
  /**
8
2
  * `@tangle-network/agent-app/knowledge-loop` — wire the declarative
9
3
  * `AgentKnowledgeConfig` to a running, source-grounded, eval-gated knowledge
@@ -45,14 +39,15 @@ import '../model-CdCDfBA9.js';
45
39
  * bundled. This module imports only TYPES + the loop entry from agent-knowledge
46
40
  * and stays substrate-free behind the `decide` / `driver` / `adapters` seams.
47
41
  */
48
-
42
+ import type { AddSourceTextInput, KnowledgeResearchLoopContext, KnowledgeResearchLoopResult, RunKnowledgeResearchLoopOptions, SourceAdapter } from '@tangle-network/agent-knowledge';
43
+ import type { AgentKnowledgeConfig, KnowledgeSourceSpec } from '../config/index';
49
44
  /**
50
45
  * A research candidate the decider evaluates before the loop applies it. This is
51
46
  * the propose-don't-apply unit: notes + the sources discovered this iteration +
52
47
  * the proposed write blocks, each carrying a confidence the gate scores against
53
48
  * the configured `minConfidence`.
54
49
  */
55
- interface KnowledgeCandidate {
50
+ export interface KnowledgeCandidate {
56
51
  /** Human-readable research transcript for this iteration. */
57
52
  notes?: string;
58
53
  /**
@@ -80,7 +75,7 @@ interface KnowledgeCandidate {
80
75
  metadata?: Record<string, unknown>;
81
76
  }
82
77
  /** The verdict a gate returns for one candidate. */
83
- interface KnowledgeGateVerdict {
78
+ export interface KnowledgeGateVerdict {
84
79
  /** Whether the candidate's proposal is accepted (applied) or gated out. */
85
80
  accepted: boolean;
86
81
  /** Why — surfaced in the decision metadata for audit. */
@@ -96,11 +91,11 @@ interface KnowledgeGateVerdict {
96
91
  * verdict on it. This is the seam an agentic judge or a sandbox run plugs into;
97
92
  * the default {@link createReviewerDecider} is a confidence gate.
98
93
  */
99
- interface KnowledgeDecider {
94
+ export interface KnowledgeDecider {
100
95
  (input: KnowledgeDeciderInput): Promise<KnowledgeDecision> | KnowledgeDecision;
101
96
  }
102
97
  /** Define the input parameters required to decide knowledge proposals within an agent-knowledge loop */
103
- interface KnowledgeDeciderInput {
98
+ export interface KnowledgeDeciderInput {
104
99
  /** The agent-knowledge loop context for this iteration. */
105
100
  context: KnowledgeResearchLoopContext;
106
101
  /** The acquisition goal (from `config.loop.goal` or a deps fallback). */
@@ -115,7 +110,7 @@ interface KnowledgeDeciderInput {
115
110
  driver?: KnowledgeLoopDriver;
116
111
  }
117
112
  /** Define a decision containing a candidate and the gate's verdict on that candidate */
118
- interface KnowledgeDecision {
113
+ export interface KnowledgeDecision {
119
114
  /** The candidate the policy produced (may be empty to end the loop). */
120
115
  candidate: KnowledgeCandidate;
121
116
  /** The gate's verdict on the candidate's proposal. */
@@ -128,7 +123,7 @@ interface KnowledgeDecision {
128
123
  * without this module importing the runtime engine. A deterministic / sandbox
129
124
  * decider may omit it.
130
125
  */
131
- interface KnowledgeLoopDriver {
126
+ export interface KnowledgeLoopDriver {
132
127
  (opts: {
133
128
  systemPrompt: string;
134
129
  userMessage: string;
@@ -137,7 +132,7 @@ interface KnowledgeLoopDriver {
137
132
  }>;
138
133
  }
139
134
  /** Define dependencies required to create and run a knowledge processing loop */
140
- interface CreateKnowledgeLoopDeps {
135
+ export interface CreateKnowledgeLoopDeps {
141
136
  /**
142
137
  * The knowledge-base root the loop reads/writes (an agent-knowledge layout).
143
138
  * Required — agent-knowledge owns disk; agent-app owns only the wiring.
@@ -174,7 +169,7 @@ interface CreateKnowledgeLoopDeps {
174
169
  onStep?: RunKnowledgeResearchLoopOptions['onStep'];
175
170
  }
176
171
  /** The handle `createKnowledgeLoop` returns. */
177
- interface KnowledgeLoop {
172
+ export interface KnowledgeLoop {
178
173
  /** Run the acquisition loop to completion and return the agent-knowledge result. */
179
174
  run(): Promise<KnowledgeResearchLoopResult>;
180
175
  /** The resolved goal the loop pursues. */
@@ -192,7 +187,7 @@ interface KnowledgeLoop {
192
187
  * accepted (nothing to gate). This is the floor policy; swap in an agentic judge
193
188
  * or a sandbox-run decider via `deps.decide` for richer review.
194
189
  */
195
- declare function reviewCandidate(candidate: KnowledgeCandidate, minConfidence: number): KnowledgeGateVerdict;
190
+ export declare function reviewCandidate(candidate: KnowledgeCandidate, minConfidence: number): KnowledgeGateVerdict;
196
191
  /**
197
192
  * Wrap a candidate-producing policy in the default reviewer gate. The policy
198
193
  * decides WHAT to propose (notes, sources, proposalText, confidence); the gate
@@ -200,12 +195,10 @@ declare function reviewCandidate(candidate: KnowledgeCandidate, minConfidence: n
200
195
  * want the standard confidence gate; pass a full {@link KnowledgeDecider} to
201
196
  * `deps.decide` to own the gate too.
202
197
  */
203
- declare function createReviewerDecider(propose: (input: KnowledgeDeciderInput) => Promise<KnowledgeCandidate> | KnowledgeCandidate): KnowledgeDecider;
198
+ export declare function createReviewerDecider(propose: (input: KnowledgeDeciderInput) => Promise<KnowledgeCandidate> | KnowledgeCandidate): KnowledgeDecider;
204
199
  /**
205
200
  * Build a runnable knowledge-acquisition loop from the product's
206
201
  * `AgentKnowledgeConfig` and a small set of seams. Maps config → agent-knowledge
207
202
  * `runKnowledgeResearchLoop` options; never reimplements the loop.
208
203
  */
209
- declare function createKnowledgeLoop(knowledge: AgentKnowledgeConfig, deps: CreateKnowledgeLoopDeps): KnowledgeLoop;
210
-
211
- export { type CreateKnowledgeLoopDeps, type KnowledgeCandidate, type KnowledgeDecider, type KnowledgeDeciderInput, type KnowledgeDecision, type KnowledgeGateVerdict, type KnowledgeLoop, type KnowledgeLoopDriver, createKnowledgeLoop, createReviewerDecider, reviewCandidate };
204
+ export declare function createKnowledgeLoop(knowledge: AgentKnowledgeConfig, deps: CreateKnowledgeLoopDeps): KnowledgeLoop;
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Check 2 — dead-end empty states.
3
+ *
4
+ * The defect, measured on one vertical: 21 empty states, 11 of them offering no
5
+ * next action. A screen that says "No deadlines tracked yet" and nothing else
6
+ * has told the reader they are in the right place and stranded them there. It
7
+ * is the cheapest, most repeated legibility failure in the fleet, and it is
8
+ * mechanically detectable: the empty branch renders no button, no link, no form
9
+ * control.
10
+ *
11
+ * ── How the empty branch is scoped ───────────────────────────────────────────
12
+ *
13
+ * The interesting part is not finding the words, it is deciding what subtree
14
+ * "the empty state" means. Walking up to the page root would find some button
15
+ * somewhere and never report anything; stopping at the `<p>` would report every
16
+ * empty state, action or not.
17
+ *
18
+ * The lexer records, for each element, the `{` of its enclosing JSX expression
19
+ * container. Elements sharing a container are one conditional branch — exactly
20
+ * how empty states are written:
21
+ *
22
+ * {rows.length === 0 && ( ← container
23
+ * <div className="empty"> ← branch root, same container
24
+ * <p>No deadlines tracked yet</p>
25
+ * </div>
26
+ * )}
27
+ *
28
+ * So the branch root is the outermost ancestor sharing the text's container,
29
+ * and the subtree searched for an action is exactly that branch. A component
30
+ * that takes its empty copy as props (`emptyTitle="No sessions yet"`) is its own
31
+ * root, and its action props are read the same way.
32
+ *
33
+ * Recall limit: copy held in a variable or returned from a helper is invisible
34
+ * to a lexer, and an "action" reached only through a child component's internals
35
+ * is assumed present when that component takes an action-shaped prop.
36
+ *
37
+ * ── A titled section's zero-state is not a dead end ──────────────────────────
38
+ *
39
+ * The one measured false-positive class, and the one that decides whether this
40
+ * check survives contact with a team. A contract detail screen carries four
41
+ * zero-states — "No parties recorded.", "No open findings.", "No resolved
42
+ * findings yet.", "No renewal alerts configured." — one under each `<h2>`. None
43
+ * of them strands anybody: the screen is full, the reader is oriented, and the
44
+ * line is the honest label for a section that is empty. Reporting all four (and
45
+ * a table's "No findings." beside its own Run button, and a kanban column's "No
46
+ * filings") buries the defect this check exists for — the screen whose ENTIRE
47
+ * body is "No deadlines tracked yet".
48
+ *
49
+ * So a branch whose nearest preceding SIBLING is a heading is a section label
50
+ * and is not reported. Measured over two production verticals: 21 findings → 12,
51
+ * removing 8 section labels and 1 success state, and keeping every page-level
52
+ * dead end. The recall cost is a real one — a screen whose whole body is one
53
+ * titled, actionless section reads as a section here — and `emptyState:
54
+ * { reportSectionZeroStates: true }` turns it back on.
55
+ */
56
+ import type { ScannedFile } from '../scan';
57
+ import type { EmptyStateOptions, RawFinding } from '../types';
58
+ /** Run the dead-end empty-state check over one lexed file. */
59
+ export declare function checkEmptyStates(file: ScannedFile, options?: EmptyStateOptions): RawFinding[];
@@ -0,0 +1,103 @@
1
+ /**
2
+ * Check 5 — a capability with no door.
3
+ *
4
+ * Two deterministic engines shipped in this fleet with no way to reach them: a
5
+ * contract redline that cites statutes, and a court-deadline calculator with 59
6
+ * golden tests. Both correct, both routed, neither in the navigation and
7
+ * neither linked from any screen. The only way to open them was to type the URL.
8
+ * No test failed, because every test was about the engine.
9
+ *
10
+ * This check joins two things a product already has — its route table and its
11
+ * navigation definition — and reports the routes that neither the navigation
12
+ * nor any link in the source reaches.
13
+ *
14
+ * ── Matching, and why it is by STATIC SEGMENTS ───────────────────────────────
15
+ *
16
+ * Links are written against a base that is computed at runtime:
17
+ *
18
+ * route('contracts/redline', …) under route(':workspaceId', …) under route('app', …)
19
+ * <Link to={`${base}/contracts/redline`}> base = `/app/${workspaceId}`
20
+ *
21
+ * Comparing strings finds nothing. So both sides are reduced to their STATIC
22
+ * segments — parameters and `${…}` holes drop out — and a link reaches a route
23
+ * when the link's segments are a suffix of the route's:
24
+ *
25
+ * route app/:workspaceId/contracts/redline → [app, contracts, redline]
26
+ * link `${base}/contracts/redline` → [contracts, redline] ✓ suffix
27
+ * link `${base}/contracts` → [contracts] ✗ (matches the parent, not this)
28
+ *
29
+ * The suffix rule is what makes the check usable without resolving `base`, and
30
+ * the cost is a known blind spot: a detail route (`reviews/:id`) has the same
31
+ * static segments as its list route, so a link to the list marks the detail
32
+ * reachable. That is a missed defect, never a false alarm — the deliberate
33
+ * direction for a gate that only survives if its reports are all real.
34
+ *
35
+ * ── Reachable FROM THE NAVIGATION, not merely linked ─────────────────────────
36
+ *
37
+ * A link is only a door if the screen holding it can itself be opened. The
38
+ * shipped defect is an ISLAND: a contract list, a contract detail page and a
39
+ * statute-citing redline engine, each linking the other two, and no navigation
40
+ * entry pointing at any of them. Every route in it has an inbound link, so a
41
+ * check that asks "does a link exist?" reports nothing at all — which is what
42
+ * happened, and the redline shipped unreachable.
43
+ *
44
+ * So doors are resolved transitively from the navigation:
45
+ *
46
+ * - a nav file's path literals are roots;
47
+ * - so is a link in a file that is NOT a route module (a shared component, a
48
+ * header, an index route) — it could be rendered anywhere, and assuming it
49
+ * is always available is the direction that removes findings rather than
50
+ * inventing them;
51
+ * - a link inside a ROUTE module counts only once that route is itself
52
+ * reachable, and the pass repeats to a fixpoint.
53
+ *
54
+ * An island therefore reports every route in it, which is right: one nav entry
55
+ * clears them all, and naming only the entry route would hide how much shipped
56
+ * behind it.
57
+ *
58
+ * ── What is not a screen ─────────────────────────────────────────────────────
59
+ *
60
+ * `index()` and `layout()` add no path of their own. A route whose module is
61
+ * not `.tsx` is a resource endpoint (the react-router convention) and is
62
+ * skipped by default, as is anything under `ignore` (default `api/*`).
63
+ */
64
+ import { type ScannedFile } from '../scan';
65
+ import type { RawFinding, ReachabilityOptions } from '../types';
66
+ /** One route as declared, with its composed path. */
67
+ export interface RouteEntry {
68
+ /** Full path from the root of the route table, no leading slash. */
69
+ readonly path: string;
70
+ /** The route module, when the declaration names one. */
71
+ readonly module: string | null;
72
+ /** Offset of the path literal in the route config, for file:line. */
73
+ readonly offset: number;
74
+ /**
75
+ * True when the declaration nests children. Such a route renders an Outlet
76
+ * shell; the destination is its index child, whose path is the same string.
77
+ * Asking a layout for its own door reports every product's `app` wrapper.
78
+ */
79
+ readonly isLayout: boolean;
80
+ }
81
+ /**
82
+ * Parse a `@react-router/dev/routes` config into composed route paths.
83
+ *
84
+ * Nesting is read from offset containment rather than from a grammar: a call
85
+ * whose parentheses sit inside another call's is that call's child, which is
86
+ * true of `route(p, m, [ route(…) ])` and needs no array bookkeeping.
87
+ */
88
+ export declare function parseRouteConfig(file: ScannedFile): RouteEntry[];
89
+ /** The comparable segments of a path: statics only, params and holes dropped. */
90
+ export declare function staticSegments(path: string): string[];
91
+ export interface ReachabilityInput {
92
+ /** Every scanned product file — the source of in-source links. */
93
+ readonly files: readonly ScannedFile[];
94
+ readonly options: ReachabilityOptions;
95
+ }
96
+ export interface ReachabilityResult {
97
+ readonly findings: readonly RawFinding[];
98
+ /** The route config, lexed — so the runner can apply its suppressions. */
99
+ readonly routeFile: ScannedFile | null;
100
+ readonly routeCount: number;
101
+ }
102
+ /** Run the unreachable-capability check over a whole product. */
103
+ export declare function checkReachability({ files, options }: ReachabilityInput): ReachabilityResult;
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Check 4 — a failure the reader never learns about.
3
+ *
4
+ * The shape: a `catch` that clears a loading flag, or returns a fallback, and
5
+ * tells nobody. The request failed; the screen renders the empty state. The
6
+ * reader is shown "No documents yet" for a network error, believes the answer,
7
+ * and acts on it. That is worse than an error message, because it is a
8
+ * confident wrong answer rather than a visible problem.
9
+ *
10
+ * ── What passes ──────────────────────────────────────────────────────────────
11
+ *
12
+ * The handler surfaces the failure (an error/notice state setter, a toast, an
13
+ * injected `onError`), or rethrows / rejects so a boundary above can. Anything
14
+ * else — an empty body, `setLoading(false)`, `return []`, a lone
15
+ * `console.error` — is a finding. `console.error` is deliberately NOT a sink:
16
+ * it writes to a console the reader does not have.
17
+ *
18
+ * ── Precision ────────────────────────────────────────────────────────────────
19
+ *
20
+ * Only handlers around I/O are read. A `try { JSON.parse(raw) } catch { return
21
+ * {} }` is a legitimate fallback over a value already in hand, and reporting it
22
+ * is exactly the noise that gets a gate switched off — so a `try` block with no
23
+ * `await`, no request call and no `.then` is skipped entirely. A `.catch(…)`
24
+ * handler is always on a promise, so it needs no such test.
25
+ *
26
+ * Three narrowings were MEASURED against two production verticals, where the
27
+ * unnarrowed check reported 52 handlers of which 14 were real (27%) — a rate
28
+ * that gets a check deleted, not fixed:
29
+ *
30
+ * 1. Only modules that can reach a browser are read ({@link READERLESS_PATHS}).
31
+ * 31 of the 52 sat in `.server/` service modules and resource routes, where
32
+ * the failure IS reported — to the operator's log — and the question of what
33
+ * the reader is told belongs to the caller that renders. This is the single
34
+ * largest noise class and it is a react-router CONVENTION, not a guess:
35
+ * `.server` modules are compiled out of the client bundle.
36
+ * 2. A handler that RESTORES the prior value has surfaced the failure: the
37
+ * control the reader just moved visibly snaps back.
38
+ * 3. A handler that RETURNS words — `return 'unknown'`, `new Response('Invalid
39
+ * JSON', …)` — hands a distinguishable outcome to a caller that renders it.
40
+ * Words inside a `console` call do not count, for the reason above.
41
+ *
42
+ * The cost is stated rather than hidden: narrowing 1 gives up the real
43
+ * one-hop defect (a service returning `[]` on a network error, which a screen
44
+ * then renders as "nothing here"). That is a caller-side finding this check
45
+ * cannot see from the callee, and a product that wants it back passes
46
+ * `readerlessPaths: []`.
47
+ */
48
+ import type { ScannedFile } from '../scan';
49
+ import type { RawFinding, SilentFailureOptions } from '../types';
50
+ /**
51
+ * Paths whose modules cannot render. `.server` is react-router's server-only
52
+ * convention (compiled out of the client bundle) and `routes/api.` its resource
53
+ * -route naming; a `catch` in either reports to an operator, not to a reader.
54
+ */
55
+ export declare const READERLESS_PATHS: readonly string[];
56
+ /** Run the silent-failure check over one lexed file. */
57
+ export declare function checkSilentFailure(file: ScannedFile, options?: SilentFailureOptions): RawFinding[];
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Check 3 — success reported before the response was read.
3
+ *
4
+ * The shipped defect: a Settings page that answered "Saved" to a 404. `fetch`
5
+ * resolves on 404 — it only rejects on a transport failure — so a handler that
6
+ * awaits it and then celebrates has not checked anything. The reader is told
7
+ * their change is stored; it is not; nothing in the UI ever says otherwise.
8
+ *
9
+ * ── What is required for a pass ──────────────────────────────────────────────
10
+ *
11
+ * Somewhere in the same function body, the response is INSPECTED: `res.ok`,
12
+ * `res.status`, a destructured `{ ok }`, or a guard call the product names in
13
+ * `success.okGuards`. Reading `await res.json()` is not inspection — a 404 body
14
+ * parses fine.
15
+ *
16
+ * Two failing shapes, reported with different messages because the fixes
17
+ * differ:
18
+ *
19
+ * 1. awaited but unchecked — `await fetch(url, {…}); toast.success('Saved')`
20
+ * 2. never awaited — `fetch(url, {…}); setSaved(true)`
21
+ *
22
+ * ── Precision ────────────────────────────────────────────────────────────────
23
+ *
24
+ * Scope is the enclosing FUNCTION body, not the file: a component with a fetch
25
+ * in one handler and a success in another must not report. The trigger is
26
+ * narrow on both ends — only calls the product declares as HTTP (default:
27
+ * `fetch`, which is the only one in the standard library that resolves on a
28
+ * failed request), and only success signals that are unambiguous: `toast.success`,
29
+ * a `set…Saved/Success/Done/Sent/Submitted(true)` setter, or a status setter
30
+ * given a success word. A wrapper that throws on a bad status is correct by
31
+ * construction and is not a default trigger; a wrapper that does NOT throw is
32
+ * the same bug one level down, so a product wraps `fetch` by adding its wrapper
33
+ * to `httpCalls`.
34
+ */
35
+ import type { ScannedFile } from '../scan';
36
+ import type { RawFinding, SuccessOptions } from '../types';
37
+ /** Run the unchecked-success check over one lexed file. */
38
+ export declare function checkUncheckedSuccess(file: ScannedFile, options?: SuccessOptions): RawFinding[];
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Check 1 — engineering vocabulary on screen.
3
+ *
4
+ * The defect: a word from the codebase reaches the reader. Shipped instances
5
+ * include "materialized" inside a user-facing error, a column of `sourceKind`,
6
+ * and a chip reading `undefined`. Nobody decided to say those words; they leaked
7
+ * because the label and the field name were the same string.
8
+ *
9
+ * ── Precision over recall, deliberately ──────────────────────────────────────
10
+ *
11
+ * A vocabulary gate lives or dies on false positives: one bad report and the
12
+ * check is disabled, after which it guards nothing. `grep -i artifact` over one
13
+ * product's `apps/web/src` returns 11 hits, all of them imports, prop names or
14
+ * doc comments — a checker that reports those is deleted in a week.
15
+ *
16
+ * So this check only reads positions the lexer PROVES are copy, in two tiers
17
+ * that are ON by default:
18
+ *
19
+ * 1. JSX text — `<p>No artifact yet</p>`. Unambiguous.
20
+ * 2. A JSX attribute value, when the attribute is in {@link COPY_KEYS}. An
21
+ * allowlist, so `className`, `data-*`, `aria-*`, `id`, `href` and every
22
+ * other internal attribute are excluded by construction rather than by a
23
+ * denylist that goes stale.
24
+ * 3. The first argument of a call in {@link COPY_CALLS} — `toast.error('…')`,
25
+ * `new Error('…')`, `setError('…')`. This is the tier that catches the
26
+ * flagship defect: "materialization" reached a reader from a `new Error`
27
+ * in a server module, not from a component.
28
+ *
29
+ * And ONE tier that is off by default, `includeObjectCopy`:
30
+ *
31
+ * 4. A string or template filling an object key named in {@link COPY_KEYS}
32
+ * (`emptyTitle: '…'`, `description: '…'`).
33
+ *
34
+ * Tier 4 is off because it was MEASURED as the false-positive tier. Over two
35
+ * production verticals it produced findings on a system prompt (`prompt:` in an
36
+ * agent profile), an MCP tool description the model reads, and the body of a
37
+ * legal document template where "Records" is a term of the drafted document —
38
+ * none of them on any screen. A key named `description` is model-facing about
39
+ * as often as it is reader-facing, and a checker that cannot tell them apart
40
+ * must not be the one that fails the build. Products whose data modules really
41
+ * do hold UI copy turn it on.
42
+ *
43
+ * Everything else — a bare string in code, an import specifier, a comment, an
44
+ * identifier, a test file — is not read at all. The cost is real recall: copy
45
+ * assembled through a variable (`const msg = base + suffix`) is invisible here,
46
+ * and no lexer can see it. That is the trade this check makes on purpose.
47
+ */
48
+ import type { ScannedFile } from '../scan';
49
+ import type { BannedTerm, RawFinding, VocabularyOptions } from '../types';
50
+ /**
51
+ * The default list. Every entry has shipped to a real screen in this fleet or
52
+ * its verticals, and every one carries the sentence that replaces it — a gate
53
+ * that only says "don't" leaves the author to guess.
54
+ */
55
+ export declare const DEFAULT_BANNED_TERMS: readonly BannedTerm[];
56
+ /**
57
+ * Attributes and object keys whose string value is copy. An allowlist: an
58
+ * attribute that is not here is never read, which is how `aria-label`,
59
+ * `className`, `data-testid` and `href` stay out without being enumerated.
60
+ */
61
+ export declare const COPY_KEYS: readonly string[];
62
+ /** Calls whose first string argument reaches the reader. */
63
+ export declare const COPY_CALLS: readonly string[];
64
+ /** Run the vocabulary check over one lexed file. */
65
+ export declare function checkVocabulary(file: ScannedFile, options?: VocabularyOptions): RawFinding[];
@@ -0,0 +1,30 @@
1
+ /**
2
+ * The bin's argument and config layer, split from `cli.ts` so it can be tested
3
+ * without executing a `main()` that calls `process.exit`.
4
+ *
5
+ * Errors are thrown as {@link LegibilityUsageError} rather than exiting here:
6
+ * exiting is the bin's job, and a parser that exits cannot be exercised.
7
+ */
8
+ import { type LegibilityCheckId, type LegibilityConfig } from './types';
9
+ export declare const DEFAULT_CONFIG_FILE = "legibility.config.mjs";
10
+ /** A usage or config problem — exit code 2, never a finding. */
11
+ export declare class LegibilityUsageError extends Error {
12
+ }
13
+ export interface ParsedArgs {
14
+ srcDirs: string[];
15
+ navFiles: string[];
16
+ ignorePaths: string[];
17
+ skip: LegibilityCheckId[];
18
+ routes?: string;
19
+ config?: string;
20
+ json: boolean;
21
+ listSuppressions: boolean;
22
+ help: boolean;
23
+ }
24
+ export declare const USAGE: string;
25
+ export declare function parseArgs(argv: readonly string[]): ParsedArgs;
26
+ /**
27
+ * Merge a config file with the flags. Flags WIN, so a one-off CI invocation can
28
+ * narrow a run without editing the committed config.
29
+ */
30
+ export declare function mergeConfig(fromFile: Partial<LegibilityConfig>, args: ParsedArgs): LegibilityConfig;
@@ -1 +1,26 @@
1
1
  #!/usr/bin/env node
2
+ /**
3
+ * `agent-app-legibility-check` — fail a product's CI when a screen leaves its
4
+ * reader guessing.
5
+ *
6
+ * Runs in the PRODUCT's repo, over the product's own source, next to typecheck:
7
+ *
8
+ * "scripts": {
9
+ * "legibility": "agent-app-legibility-check --src src --routes src/routes.ts --nav src/components/workspace-sidebar.tsx"
10
+ * }
11
+ *
12
+ * Flags (repeatable where a list makes sense):
13
+ * --src <dir> source directory to scan (required unless the config supplies it)
14
+ * --routes <file> react-router route config, for the unreachable-capability check
15
+ * --nav <file> a file whose path literals are navigation entries
16
+ * --ignore <substr> skip paths containing this substring
17
+ * --skip <check> turn one check off wholesale (prefer a per-line suppression)
18
+ * --config <file> a legibility.config.mjs default-exporting the config
19
+ * (default: ./legibility.config.mjs when present)
20
+ * --json print the report as JSON instead of text
21
+ * --list-suppressions print every honoured suppression with its reason
22
+ *
23
+ * Exit 0 with no findings, 1 with findings, 2 on a usage or config error — the
24
+ * same contract as `agent-app-preflight` and `agent-app-peer-check`.
25
+ */
26
+ export {};