@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,333 +1,59 @@
1
- import { PDFForm } from 'pdf-lib';
2
-
3
1
  /**
4
- * The blank a form is filled from embedded, pinned, and never fetched at
5
- * fill time.
6
- *
7
- * A renderer that downloads its own blank works on a developer laptop and
8
- * fails in both places these products actually run: a Cloudflare Worker has no
9
- * business making an outbound call mid-request, and a sandbox container's
10
- * egress proxy refuses the agencies' own hosts (measured on tax-agent:
11
- * `www.irs.gov` CONNECT tunnel 403 while pypi and npm returned 200). A
12
- * form-filler that cannot reach its blank does not fail loudly it degrades
13
- * into an agent describing the form in prose, which is the exact behaviour
14
- * this module exists to end.
15
- *
16
- * Pinning the bytes by digest also pins the artifact: a filing made against
17
- * the 2025 revision is reproducible from the committed bytes, and an agency
18
- * revision shows up as a diff of the recorded checksum instead of silently
19
- * changing under a live URL.
20
- */
21
- /** A blank form's bytes, base64-encoded, with the provenance to check them. */
22
- interface FormBlank {
23
- /** Base64 of the PDF exactly as the agency published it. */
24
- base64: string;
25
- /** SHA-256 of the decoded bytes, lowercase hex. */
26
- sha256: string;
27
- /** Where the bytes came from. Provenance for a reviewer, not a fetch target. */
28
- sourceUrl: string;
29
- /** Decoded length in bytes. A cheap first check that the base64 is intact. */
30
- byteLength: number;
31
- }
32
- /**
33
- * Decode a blank once per isolate.
34
- *
35
- * Keyed on the blank OBJECT rather than a module-level singleton, because a
36
- * product carries several forms and a single cached slot would serve one
37
- * form's bytes for another's fill a failure that produces a plausible PDF
38
- * and no error at all.
39
- */
40
- declare function decodeFormBlank(blank: FormBlank): Uint8Array;
41
- /** Lowercase-hex SHA-256 of a byte range. */
42
- declare function sha256Hex(bytes: Uint8Array): Promise<string>;
43
- /**
44
- * Prove the embedded bytes are the file the registry was derived from.
45
- *
46
- * Run this in a test, not on the fill path: a registry is only meaningful
47
- * against the exact revision it was derived from, and a blank swapped for a
48
- * newer revision moves every widget without changing a single field name.
49
- */
50
- declare function assertFormBlankIntegrity(blank: FormBlank): Promise<void>;
51
-
52
- /**
53
- * The slot widget registry: the one place a form filler can be wrong
54
- * invisibly, and the one place a language model is never allowed to write.
55
- *
56
- * WHY THE MODEL NEVER NAMES A WIDGET
57
- *
58
- * An agency PDF's widget names carry no meaning a reader can check —
59
- * `topmostSubform[0].Page2[0].f2_06[0]` on an IRS form, `registered2` on a
60
- * Texas SOS form. A model asked for one produces a plausible string, and the
61
- * natural audit read the field back by the name you just wrote — PASSES
62
- * REGARDLESS, because it re-reads the invention rather than checking it.
63
- * Measured on tax-agent: three values written to model-chosen widgets landed
64
- * in "Combat zone" and the date boxes, and the audit reported 3 passed /
65
- * 0 failed.
66
- *
67
- * So the model supplies SEMANTIC SLOTS — a form line, a named box — and the
68
- * platform owns the slot → widget mapping. A misplaced figure stops being an
69
- * invention that survives review and becomes something that cannot be
70
- * expressed at all.
71
- *
72
- * WHY A SLOT CARRIES A LABEL, AND WHY THE LABEL DECLARES ITS BASIS
73
- *
74
- * A registry is still just a table, and a hand-typed table drifts (tax-agent's
75
- * form catalog carried wrong page counts for 7 of 17 forms). So every slot
76
- * states the label it believes it is aiming at, and states where that belief
77
- * came from:
78
- *
79
- * - `labelBasis: 'widget'` — the label must match the widget's OWN `/TU`
80
- * accessibility text inside the PDF. `checkRegistryAgainstBlank` re-checks
81
- * it against the bytes, so a mis-aimed slot fails a test rather than
82
- * quietly printing in the wrong box. Every one of Texas Form 205's 64
83
- * widgets carries `/TU`, so its whole registry can be checked this way.
84
- * - `labelBasis: 'derived'` — the label came from somewhere else (an XFA
85
- * template, a published instruction sheet, a human reading the form) and
86
- * CANNOT be re-checked against the widget. It is evidence for a reviewer,
87
- * never proof. Measured on IRS f1040: 0 of 199 widgets carry `/TU` or
88
- * `/Alt`, so its labels can only ever be derived.
89
- *
90
- * Declaring the basis is the point. A guess presented as truth is how a second
91
- * self-confirming artifact gets built on top of the first one.
92
- */
93
-
94
- /** What kind of widget a slot writes to. */
95
- type FormSlotKind = 'text' | 'checkbox';
96
- /** How a slot's text value is rendered into the box. */
97
- type FormSlotFormat = 'text' | 'currency';
98
- /** Where a slot's `label` came from, and therefore what it can prove. */
99
- type FormLabelBasis = 'widget' | 'derived';
100
- /** One semantic slot: what a caller supplies, and where the platform puts it. */
101
- interface FormSlot {
102
- /** The name a caller (and a model) uses: `15`, `entity_name`, `agent_is_org`. */
103
- slot: string;
104
- /**
105
- * The AcroForm widget path(s) this slot writes.
106
- *
107
- * A LIST because one semantic value legitimately occupies several boxes: IRS
108
- * Form 1040 states adjusted gross income twice, at the foot of page 1 and
109
- * the head of page 2, so page 2's arithmetic stands alone. Writing only one
110
- * of them leaves "subtract line 14 from line 11b" pointing at an empty box.
111
- */
112
- fields: readonly string[];
113
- kind: FormSlotKind;
114
- /** How the value is rendered. Ignored for `checkbox`. Default `'text'`. */
115
- format?: FormSlotFormat;
116
- /** What this slot is, in the form's own words. */
117
- label: string;
118
- /** Whether `label` is checkable against the PDF, or merely recorded. */
119
- labelBasis: FormLabelBasis;
120
- }
121
- /** A form's complete slot table, pinned to the revision it was derived from. */
122
- interface FormRegistry {
123
- /** Stable id for the form: `us-irs-1040`, `us-tx-sos-205`. */
124
- form: string;
125
- /** The agency's own revision marker: `2025`, `Rev. 12-21`. */
126
- revision: string;
127
- slots: readonly FormSlot[];
128
- }
129
- /** Why a registry does not match the blank it claims to describe. */
130
- type RegistryProblemCode = 'no_slots' | 'no_fields' | 'missing_field' | 'wrong_kind' | 'label_mismatch' | 'duplicate_field' | 'duplicate_slot';
131
- interface RegistryProblem {
132
- slot: string;
133
- field?: string;
134
- code: RegistryProblemCode;
135
- detail: string;
136
- }
137
- interface RegistryCheckResult {
138
- ok: boolean;
139
- /** Widgets actually compared against the PDF. Zero means nothing was proven. */
140
- checked: number;
141
- /** Slots whose label was compared against the widget's own `/TU`. */
142
- labelsChecked: number;
143
- problems: RegistryProblem[];
144
- }
145
- /** The `/TU` accessibility text a widget carries, if any. */
146
- declare function widgetLabel(form: PDFForm, field: string): Promise<string | undefined>;
147
- /**
148
- * Check a registry against the blank it claims to describe.
149
- *
150
- * This is the placement check. It runs in a test or in CI, never on the fill
151
- * path, and it is the ONLY thing that can catch a slot aimed at the wrong box
152
- * — reading a value back after writing it cannot, because it re-reads the same
153
- * name it wrote.
154
- *
155
- * It fails on ABSENCE, deliberately. tax-agent shipped an audit that silently
156
- * skipped an expected field the PDF did not expose, so a fill against entirely
157
- * wrong paths reported `passed=0 failed=0`. Here an empty registry, a slot
158
- * with no fields, and a field the PDF does not expose are each a problem with
159
- * a name, and `checked` is reported so a caller can see how much was actually
160
- * proven rather than trusting a bare `ok: true`.
161
- */
162
- declare function checkRegistryAgainstBlank(args: {
163
- /** The blank's bytes. Decode a `FormBlank` with `decodeFormBlank` first. */
164
- pdf: Uint8Array;
165
- registry: FormRegistry;
166
- }): Promise<RegistryCheckResult>;
167
-
168
- /**
169
- * Fill a real agency PDF from a slot → value map.
170
- *
171
- * Mechanically this is `pdf-lib` writing an AcroForm: TypeScript, no
172
- * container, no Python, no network. That matters because it is the only shape
173
- * that runs everywhere these products run — a Cloudflare Worker (where 100% of
174
- * tax-agent's production work products were produced, with no sandbox at all)
175
- * and a sandbox container whose egress proxy refuses the agency's own host.
176
- *
177
- * The invariant it enforces is in `registry.ts`: the caller supplies SEMANTIC
178
- * SLOTS and never a widget name. Two consequences show up here.
179
- *
180
- * NOTHING IS SILENT. Every slot ends in `filled` or in `unfilled` with a code
181
- * and a reason. A value the caller supplied that never reached the page means
182
- * the document and the data disagree, which is the one thing a reviewer must
183
- * not have to discover by eye. That includes a registry naming a widget the
184
- * PDF does not expose: it is reported per-slot rather than crashing the render
185
- * or — worse — being skipped, which is how tax-agent once audited a fill
186
- * against entirely wrong paths as `passed=0 failed=0`.
187
- *
188
- * NO ON-STATE IS EVER AUTHORED. A checkbox's "on" name is a property of the
189
- * PDF and frequently a hex-escaped sentence: Texas Form 205's seven boxes are
190
- * `is#20an#20organization`, `initially#20has#20#20managers` (note the double
191
- * space), and four more like them. A caller that types one of those strings is
192
- * authoring something it cannot check, so a checkbox slot takes a BOOLEAN and
193
- * the widget's own on-value is read out of the file. The escaped spelling is
194
- * not handled — it is unrepresentable.
195
- */
196
-
197
- /** One widget the fill actually wrote. */
198
- interface FilledWidget {
199
- slot: string;
200
- field: string;
201
- kind: FormSlot['kind'];
202
- /** The value as the caller supplied it, before formatting. */
203
- value: unknown;
204
- /** Exactly the text placed in the box. Absent for a checkbox. */
205
- text?: string;
206
- /** Whether a checkbox was ticked. Absent for a text field. */
207
- checked?: boolean;
208
- /** The widget's OWN on-state, decoded — read from the PDF, never authored. */
209
- onState?: string;
210
- }
211
- /** Why a supplied value did not reach the page. */
212
- type UnfilledCode = 'unknown_slot' | 'missing_field' | 'wrong_kind' | 'not_a_number' | 'not_a_boolean' | 'unformattable';
213
- interface UnfilledSlot {
214
- slot: string;
215
- field?: string;
216
- value: unknown;
217
- code: UnfilledCode;
218
- reason: string;
219
- }
220
- interface FillFormResult {
221
- bytes: Uint8Array;
222
- filled: FilledWidget[];
223
- unfilled: UnfilledSlot[];
224
- form: string;
225
- revision: string;
226
- }
227
- interface FillFormOptions {
228
- /** The blank's bytes. Decode a `FormBlank` with `decodeFormBlank` first. */
229
- pdf: Uint8Array;
230
- registry: FormRegistry;
231
- /** slot name → value. Keys the registry does not know are reported, not dropped. */
232
- values: Record<string, unknown>;
233
- /**
234
- * Override how a text value becomes box text. Return `undefined` to fall
235
- * through to the built-in formatting for the slot's `format`.
236
- */
237
- formatText?: (value: unknown, slot: FormSlot) => string | undefined;
238
- }
239
- /**
240
- * Format a figure the way a US agency form prints it: grouped thousands, two
241
- * decimals, negatives in parentheses.
242
- *
243
- * Two decimals rather than whole dollars because the caller's data carries
244
- * cents and a reviewer compares the document against that data — rounding here
245
- * would manufacture a disagreement between the two on every line with cents.
246
- */
247
- declare function formatFormCurrency(value: number): string;
248
- /** A number, or a number written the way a form prints one (`$141,318.74`). */
249
- declare function parseFormAmount(value: unknown): number | undefined;
250
- /**
251
- * A checkbox takes a boolean and nothing else.
252
- *
253
- * Strict on purpose. Accepting a truthy string would accept the widget's own
254
- * escaped on-state (`'is#20an#20organization'`) as "true", which is exactly
255
- * the authored-on-state this module refuses — and it would accept `'no'` as
256
- * true, silently ticking a box the caller meant to leave clear.
257
- */
258
- declare function parseFormBoolean(value: unknown): boolean | undefined;
259
- /**
260
- * Write a value map onto a blank, returning the bytes plus the exact
261
- * widget-by-widget account of what was and was not placed.
262
- */
263
- declare function fillPdfForm(options: FillFormOptions): Promise<FillFormResult>;
264
- /**
265
- * What to tell the agent after a fill.
266
- *
267
- * Names the values that did NOT reach the page. Those are exactly the cases
268
- * where the document and the data disagree, and the agent is the only party
269
- * that can resolve it — returning a bare "done" hands a reviewer a form
270
- * missing values the data claims are on it.
271
- */
272
- declare function describeFormFill(result: FillFormResult): string;
273
-
274
- /**
275
- * Read a filled form back and say, slot by slot, whether the document agrees
276
- * with the data it was built from.
277
- *
278
- * WHAT THIS PROVES, AND WHAT IT CANNOT
279
- *
280
- * This proves the WRITE LANDED: the value reached a real widget, that widget
281
- * exists in the produced file, and it holds the text or tick the data claims.
282
- * It does NOT prove PLACEMENT — that the widget is the right box on the page —
283
- * because it resolves the same field names the fill used. Reading a value back
284
- * by the name you just wrote passes even when the name was invented; measured
285
- * on tax-agent, an audit of that shape reported 3 passed / 0 failed for three
286
- * figures sitting in "Combat zone" and the date boxes.
287
- *
288
- * Placement is proven by `checkRegistryAgainstBlank`, which compares each
289
- * slot's claimed label against the widget's own `/TU` text inside the PDF.
290
- * The two checks are complements, and a product that runs only this one has
291
- * the audit that already failed once. That is stated here rather than in a
292
- * commit message because a future caller will otherwise reach for the
293
- * convenient half.
294
- *
295
- * FAILS ON ABSENCE. A registry field the produced PDF does not expose is
296
- * `missing_field`, and an empty `expected` map is `ok: false` — the
297
- * `passed=0 failed=0` verdict is the exact shape of the bug this replaces.
298
- */
299
-
300
- type SlotVerdict = 'ok' | 'unknown_slot' | 'missing_field' | 'wrong_kind' | 'not_written' | 'mismatch';
301
- /** What the slot's `label` is worth, checked against the produced file. */
302
- type LabelVerdict = 'matches_widget' | 'label_mismatch' | 'derived_unchecked' | 'no_widget_label';
303
- interface SlotVerification {
304
- slot: string;
305
- field?: string;
306
- verdict: SlotVerdict;
307
- /** What the data says the box should hold. */
308
- expected?: string;
309
- /** What the box actually holds, read out of the produced bytes. */
310
- actual?: string;
311
- labelVerdict?: LabelVerdict;
312
- label?: string;
313
- }
314
- interface VerifyFormResult {
315
- ok: boolean;
316
- /** Widgets actually read back. Zero means nothing was proven. */
317
- verified: number;
318
- slots: SlotVerification[];
319
- }
320
- /**
321
- * Verify a filled form against the value map it was filled from.
322
- *
323
- * `expected` is the SAME shape passed to `fillPdfForm` — deliberately, so a
324
- * caller cannot verify against a convenient restatement of what it wrote.
325
- */
326
- declare function verifyFilledForm(args: {
327
- /** The PRODUCED bytes, not the blank. */
328
- pdf: Uint8Array;
329
- registry: FormRegistry;
330
- expected: Record<string, unknown>;
331
- }): Promise<VerifyFormResult>;
332
-
333
- export { type FillFormOptions, type FillFormResult, type FilledWidget, type FormBlank, type FormLabelBasis, type FormRegistry, type FormSlot, type FormSlotFormat, type FormSlotKind, type LabelVerdict, type RegistryCheckResult, type RegistryProblem, type RegistryProblemCode, type SlotVerdict, type SlotVerification, type UnfilledCode, type UnfilledSlot, type VerifyFormResult, assertFormBlankIntegrity, checkRegistryAgainstBlank, decodeFormBlank, describeFormFill, fillPdfForm, formatFormCurrency, parseFormAmount, parseFormBoolean, sha256Hex, verifyFilledForm, widgetLabel };
2
+ * `/forms` fill a real agency PDF from semantic slots.
3
+ *
4
+ * THE ONE INVARIANT: the model supplies semantic slots (a form line, a named
5
+ * box); the PLATFORM owns slot widget. A widget name on an agency PDF
6
+ * (`topmostSubform[0].Page2[0].f2_06[0]`, `registered2`) carries no meaning a
7
+ * reader can check, so a model asked for one produces a plausible string — and
8
+ * the natural audit, reading the field back by the name you wrote, passes
9
+ * regardless because it re-reads the invention. Measured on tax-agent: three
10
+ * figures written to model-chosen widgets landed in "Combat zone" and the date
11
+ * boxes, audited 3 passed / 0 failed. Under this contract a misplaced value is
12
+ * not merely unlikely it is unrepresentable.
13
+ *
14
+ * Adding a form is a REGISTRY ENTRY, not a code path:
15
+ *
16
+ * ```ts
17
+ * const blank: FormBlank = { base64, sha256, sourceUrl, byteLength } // generated
18
+ * const registry: FormRegistry = {
19
+ * form: 'us-tx-sos-205',
20
+ * revision: 'Rev. 12-21',
21
+ * slots: [
22
+ * { slot: 'entity_name', fields: ['The name of the entity is:'], kind: 'text',
23
+ * label: 'The name of the entity is:', labelBasis: 'widget' },
24
+ * { slot: 'agent_is_organization', fields: ['registered'], kind: 'checkbox',
25
+ * label: 'If the initial registered agent is an organization, …', labelBasis: 'widget' },
26
+ * ],
27
+ * }
28
+ *
29
+ * const pdf = decodeFormBlank(blank)
30
+ * const filled = await fillPdfForm({ pdf, registry, values: { entity_name: 'BLUE MESA KITCHEN LLC' } })
31
+ * ```
32
+ *
33
+ * Two checks, and a product needs BOTH because they prove different things:
34
+ *
35
+ * - `checkRegistryAgainstBlank`PLACEMENT. Compares each slot's claimed
36
+ * label against the widget's own `/TU` text inside the PDF. This is the
37
+ * only check that can catch a slot aimed at the wrong box. Run it in CI.
38
+ * - `verifyFilledForm` TRANSPORT. Reads the produced bytes back and
39
+ * confirms each value reached its widget. Fails on absence; an empty
40
+ * expectation set is `ok: false`, because `passed=0 failed=0` is the bug.
41
+ *
42
+ * A slot whose label CANNOT be re-checked against the file says so
43
+ * (`labelBasis: 'derived'`) rather than presenting a guess as truth. Measured:
44
+ * IRS f1040 carries `/TU` on 0 of 199 widgets, so its labels come from the XFA
45
+ * template and are derived; every one of Texas Form 205's 64 widgets carries
46
+ * `/TU`, so its whole registry is checkable.
47
+ *
48
+ * DERIVING a registry is form-family specific and stays in the product — an
49
+ * IRS form's labels live in an XFA template, a Texas SOS form's live in `/TU`,
50
+ * a third agency's may live only on paper. This subpath owns the CONTRACT the
51
+ * derivation must satisfy, not the derivation.
52
+ *
53
+ * Server-only and opt-in: importing this subpath requires the otherwise
54
+ * optional `pdf-lib` peer, which is why it is isolated behind its own entry.
55
+ */
56
+ export { assertFormBlankIntegrity, decodeFormBlank, sha256Hex, type FormBlank, } from './blank';
57
+ export { checkRegistryAgainstBlank, widgetLabel, type FormLabelBasis, type FormRegistry, type FormSlot, type FormSlotFormat, type FormSlotKind, type RegistryCheckResult, type RegistryProblem, type RegistryProblemCode, } from './registry';
58
+ export { describeFormFill, fillPdfForm, formatFormCurrency, parseFormAmount, parseFormBoolean, type FilledWidget, type FillFormOptions, type FillFormResult, type UnfilledCode, type UnfilledSlot, } from './fill';
59
+ export { verifyFilledForm, type LabelVerdict, type SlotVerdict, type SlotVerification, type VerifyFormResult, } from './verify';
@@ -0,0 +1,115 @@
1
+ /**
2
+ * The slot → widget registry: the one place a form filler can be wrong
3
+ * invisibly, and the one place a language model is never allowed to write.
4
+ *
5
+ * WHY THE MODEL NEVER NAMES A WIDGET
6
+ *
7
+ * An agency PDF's widget names carry no meaning a reader can check —
8
+ * `topmostSubform[0].Page2[0].f2_06[0]` on an IRS form, `registered2` on a
9
+ * Texas SOS form. A model asked for one produces a plausible string, and the
10
+ * natural audit — read the field back by the name you just wrote — PASSES
11
+ * REGARDLESS, because it re-reads the invention rather than checking it.
12
+ * Measured on tax-agent: three values written to model-chosen widgets landed
13
+ * in "Combat zone" and the date boxes, and the audit reported 3 passed /
14
+ * 0 failed.
15
+ *
16
+ * So the model supplies SEMANTIC SLOTS — a form line, a named box — and the
17
+ * platform owns the slot → widget mapping. A misplaced figure stops being an
18
+ * invention that survives review and becomes something that cannot be
19
+ * expressed at all.
20
+ *
21
+ * WHY A SLOT CARRIES A LABEL, AND WHY THE LABEL DECLARES ITS BASIS
22
+ *
23
+ * A registry is still just a table, and a hand-typed table drifts (tax-agent's
24
+ * form catalog carried wrong page counts for 7 of 17 forms). So every slot
25
+ * states the label it believes it is aiming at, and states where that belief
26
+ * came from:
27
+ *
28
+ * - `labelBasis: 'widget'` — the label must match the widget's OWN `/TU`
29
+ * accessibility text inside the PDF. `checkRegistryAgainstBlank` re-checks
30
+ * it against the bytes, so a mis-aimed slot fails a test rather than
31
+ * quietly printing in the wrong box. Every one of Texas Form 205's 64
32
+ * widgets carries `/TU`, so its whole registry can be checked this way.
33
+ * - `labelBasis: 'derived'` — the label came from somewhere else (an XFA
34
+ * template, a published instruction sheet, a human reading the form) and
35
+ * CANNOT be re-checked against the widget. It is evidence for a reviewer,
36
+ * never proof. Measured on IRS f1040: 0 of 199 widgets carry `/TU` or
37
+ * `/Alt`, so its labels can only ever be derived.
38
+ *
39
+ * Declaring the basis is the point. A guess presented as truth is how a second
40
+ * self-confirming artifact gets built on top of the first one.
41
+ */
42
+ import type { PDFForm } from 'pdf-lib';
43
+ /** What kind of widget a slot writes to. */
44
+ export type FormSlotKind = 'text' | 'checkbox';
45
+ /** How a slot's text value is rendered into the box. */
46
+ export type FormSlotFormat = 'text' | 'currency';
47
+ /** Where a slot's `label` came from, and therefore what it can prove. */
48
+ export type FormLabelBasis = 'widget' | 'derived';
49
+ /** One semantic slot: what a caller supplies, and where the platform puts it. */
50
+ export interface FormSlot {
51
+ /** The name a caller (and a model) uses: `15`, `entity_name`, `agent_is_org`. */
52
+ slot: string;
53
+ /**
54
+ * The AcroForm widget path(s) this slot writes.
55
+ *
56
+ * A LIST because one semantic value legitimately occupies several boxes: IRS
57
+ * Form 1040 states adjusted gross income twice, at the foot of page 1 and
58
+ * the head of page 2, so page 2's arithmetic stands alone. Writing only one
59
+ * of them leaves "subtract line 14 from line 11b" pointing at an empty box.
60
+ */
61
+ fields: readonly string[];
62
+ kind: FormSlotKind;
63
+ /** How the value is rendered. Ignored for `checkbox`. Default `'text'`. */
64
+ format?: FormSlotFormat;
65
+ /** What this slot is, in the form's own words. */
66
+ label: string;
67
+ /** Whether `label` is checkable against the PDF, or merely recorded. */
68
+ labelBasis: FormLabelBasis;
69
+ }
70
+ /** A form's complete slot table, pinned to the revision it was derived from. */
71
+ export interface FormRegistry {
72
+ /** Stable id for the form: `us-irs-1040`, `us-tx-sos-205`. */
73
+ form: string;
74
+ /** The agency's own revision marker: `2025`, `Rev. 12-21`. */
75
+ revision: string;
76
+ slots: readonly FormSlot[];
77
+ }
78
+ /** Why a registry does not match the blank it claims to describe. */
79
+ export type RegistryProblemCode = 'no_slots' | 'no_fields' | 'missing_field' | 'wrong_kind' | 'label_mismatch' | 'duplicate_field' | 'duplicate_slot';
80
+ export interface RegistryProblem {
81
+ slot: string;
82
+ field?: string;
83
+ code: RegistryProblemCode;
84
+ detail: string;
85
+ }
86
+ export interface RegistryCheckResult {
87
+ ok: boolean;
88
+ /** Widgets actually compared against the PDF. Zero means nothing was proven. */
89
+ checked: number;
90
+ /** Slots whose label was compared against the widget's own `/TU`. */
91
+ labelsChecked: number;
92
+ problems: RegistryProblem[];
93
+ }
94
+ /** The `/TU` accessibility text a widget carries, if any. */
95
+ export declare function widgetLabel(form: PDFForm, field: string): Promise<string | undefined>;
96
+ /**
97
+ * Check a registry against the blank it claims to describe.
98
+ *
99
+ * This is the placement check. It runs in a test or in CI, never on the fill
100
+ * path, and it is the ONLY thing that can catch a slot aimed at the wrong box
101
+ * — reading a value back after writing it cannot, because it re-reads the same
102
+ * name it wrote.
103
+ *
104
+ * It fails on ABSENCE, deliberately. tax-agent shipped an audit that silently
105
+ * skipped an expected field the PDF did not expose, so a fill against entirely
106
+ * wrong paths reported `passed=0 failed=0`. Here an empty registry, a slot
107
+ * with no fields, and a field the PDF does not expose are each a problem with
108
+ * a name, and `checked` is reported so a caller can see how much was actually
109
+ * proven rather than trusting a bare `ok: true`.
110
+ */
111
+ export declare function checkRegistryAgainstBlank(args: {
112
+ /** The blank's bytes. Decode a `FormBlank` with `decodeFormBlank` first. */
113
+ pdf: Uint8Array;
114
+ registry: FormRegistry;
115
+ }): Promise<RegistryCheckResult>;
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Read a filled form back and say, slot by slot, whether the document agrees
3
+ * with the data it was built from.
4
+ *
5
+ * WHAT THIS PROVES, AND WHAT IT CANNOT
6
+ *
7
+ * This proves the WRITE LANDED: the value reached a real widget, that widget
8
+ * exists in the produced file, and it holds the text or tick the data claims.
9
+ * It does NOT prove PLACEMENT — that the widget is the right box on the page —
10
+ * because it resolves the same field names the fill used. Reading a value back
11
+ * by the name you just wrote passes even when the name was invented; measured
12
+ * on tax-agent, an audit of that shape reported 3 passed / 0 failed for three
13
+ * figures sitting in "Combat zone" and the date boxes.
14
+ *
15
+ * Placement is proven by `checkRegistryAgainstBlank`, which compares each
16
+ * slot's claimed label against the widget's own `/TU` text inside the PDF.
17
+ * The two checks are complements, and a product that runs only this one has
18
+ * the audit that already failed once. That is stated here rather than in a
19
+ * commit message because a future caller will otherwise reach for the
20
+ * convenient half.
21
+ *
22
+ * FAILS ON ABSENCE. A registry field the produced PDF does not expose is
23
+ * `missing_field`, and an empty `expected` map is `ok: false` — the
24
+ * `passed=0 failed=0` verdict is the exact shape of the bug this replaces.
25
+ */
26
+ import { type FormRegistry } from './registry';
27
+ export type SlotVerdict = 'ok' | 'unknown_slot' | 'missing_field' | 'wrong_kind' | 'not_written' | 'mismatch';
28
+ /** What the slot's `label` is worth, checked against the produced file. */
29
+ export type LabelVerdict = 'matches_widget' | 'label_mismatch' | 'derived_unchecked' | 'no_widget_label';
30
+ export interface SlotVerification {
31
+ slot: string;
32
+ field?: string;
33
+ verdict: SlotVerdict;
34
+ /** What the data says the box should hold. */
35
+ expected?: string;
36
+ /** What the box actually holds, read out of the produced bytes. */
37
+ actual?: string;
38
+ labelVerdict?: LabelVerdict;
39
+ label?: string;
40
+ }
41
+ export interface VerifyFormResult {
42
+ ok: boolean;
43
+ /** Widgets actually read back. Zero means nothing was proven. */
44
+ verified: number;
45
+ slots: SlotVerification[];
46
+ }
47
+ /**
48
+ * Verify a filled form against the value map it was filled from.
49
+ *
50
+ * `expected` is the SAME shape passed to `fillPdfForm` — deliberately, so a
51
+ * caller cannot verify against a convenient restatement of what it wrote.
52
+ */
53
+ export declare function verifyFilledForm(args: {
54
+ /** The PRODUCED bytes, not the blank. */
55
+ pdf: Uint8Array;
56
+ registry: FormRegistry;
57
+ expected: Record<string, unknown>;
58
+ }): Promise<VerifyFormResult>;