@tangle-network/agent-app 0.45.54 → 0.45.55
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/alerting/index.d.ts +5 -175
- package/dist/alerting/slack.d.ts +176 -0
- package/dist/app-auth/index.d.ts +14 -17
- package/dist/assets/index.d.ts +2 -504
- package/dist/assets/schema.d.ts +264 -0
- package/dist/assets/types.d.ts +237 -0
- package/dist/assistant/AssistantDock.d.ts +56 -0
- package/dist/assistant/AssistantHistory.d.ts +41 -0
- package/dist/assistant/AssistantPanel.d.ts +84 -0
- package/dist/assistant/ProposalCard.d.ts +41 -0
- package/dist/assistant/ResizeHandle.d.ts +19 -0
- package/dist/assistant/client-context.d.ts +20 -0
- package/dist/assistant/client.d.ts +117 -0
- package/dist/assistant/index.d.ts +19 -848
- package/dist/assistant/launcher.d.ts +23 -0
- package/dist/assistant/persistence.d.ts +26 -0
- package/dist/assistant/presentation.d.ts +99 -0
- package/dist/assistant/provider-label.d.ts +7 -0
- package/dist/assistant/reducer.d.ts +130 -0
- package/dist/assistant/sse.d.ts +24 -0
- package/dist/assistant/time-ago.d.ts +6 -0
- package/dist/assistant/transcript.d.ts +97 -0
- package/dist/assistant/types.d.ts +291 -0
- package/dist/assistant/use-stick-to-bottom.d.ts +28 -0
- package/dist/assistant/useAssistantChat.d.ts +63 -0
- package/dist/assistant/useAssistantModels.d.ts +22 -0
- package/dist/assistant/useAssistantThreads.d.ts +47 -0
- package/dist/assistant/usePanelPrefs.d.ts +55 -0
- package/dist/billing/index.d.ts +19 -21
- package/dist/brand/index.d.ts +16 -10
- package/dist/brand-extraction/extract.d.ts +34 -0
- package/dist/brand-extraction/index.d.ts +12 -214
- package/dist/brand-extraction/map.d.ts +58 -0
- package/dist/brand-extraction/types.d.ts +119 -0
- package/dist/catalog/index.d.ts +11 -101
- package/dist/chat-react/composer-mode-controls.d.ts +14 -0
- package/dist/chat-react/entry-composer.d.ts +92 -0
- package/dist/chat-react/index.d.ts +22 -118
- package/dist/chat-react/types.d.ts +11 -0
- package/dist/chat-routes/attachment-store.d.ts +84 -0
- package/dist/chat-routes/attachment-upload.d.ts +84 -0
- package/dist/chat-routes/attachment-validation.d.ts +95 -0
- package/dist/chat-routes/binary-sniff.d.ts +45 -0
- package/dist/chat-routes/completed-sandbox-turn.d.ts +25 -0
- package/dist/chat-routes/detached-turn.d.ts +197 -0
- package/dist/chat-routes/dispatch-parts.d.ts +101 -0
- package/dist/chat-routes/draft-persistence.d.ts +189 -0
- package/dist/chat-routes/durable-projection.d.ts +18 -0
- package/dist/chat-routes/file-index.d.ts +115 -0
- package/dist/chat-routes/index.d.ts +25 -1840
- package/dist/chat-routes/model-failover-stream.d.ts +206 -0
- package/dist/chat-routes/promote-file-part.d.ts +84 -0
- package/dist/chat-routes/resolve-attachments.d.ts +72 -0
- package/dist/chat-routes/sandbox-producer.d.ts +146 -0
- package/dist/chat-routes/sandbox-turn-usage.d.ts +4 -0
- package/dist/{stale-turn-lock-DucQzvXu.d.ts → chat-routes/stale-turn-lock.d.ts} +7 -9
- package/dist/chat-routes/turn-routes.d.ts +540 -0
- package/dist/chat-routes/upload.d.ts +84 -0
- package/dist/{wire-DOZ-O6hD.d.ts → chat-routes/wire.d.ts} +41 -44
- package/dist/chat-store/core.d.ts +19 -0
- package/dist/chat-store/index.d.ts +22 -322
- package/dist/{parts-BqIHMdyu.d.ts → chat-store/parts.d.ts} +49 -47
- package/dist/chat-store/schema.d.ts +157 -0
- package/dist/chat-store/store.d.ts +177 -0
- package/dist/config/index.d.ts +13 -18
- package/dist/crypto/index.d.ts +10 -12
- package/dist/crypto/web-token.d.ts +22 -0
- package/dist/design-canvas/apply.d.ts +70 -0
- package/dist/design-canvas/drizzle-store.d.ts +29 -0
- package/dist/design-canvas/drizzle.d.ts +7 -575
- package/dist/{export-presets-mgVulRaV.d.ts → design-canvas/export-presets.d.ts} +18 -22
- package/dist/design-canvas/index.d.ts +22 -268
- package/dist/design-canvas/mcp-entry.d.ts +15 -0
- package/dist/design-canvas/mcp-handler.d.ts +34 -0
- package/dist/design-canvas/mcp-tools.d.ts +30 -0
- package/dist/{model-DnfO_PdJ.d.ts → design-canvas/model.d.ts} +33 -35
- package/dist/{operations-ByJ6yXOW.d.ts → design-canvas/operations.d.ts} +21 -25
- package/dist/design-canvas/schema.d.ts +558 -0
- package/dist/{store-CqfDtnPQ.d.ts → design-canvas/store.d.ts} +8 -12
- package/dist/design-canvas/templates.d.ts +72 -0
- package/dist/design-canvas/validate.d.ts +32 -0
- package/dist/design-canvas-react/components/BleedTrimOverlay.d.ts +22 -0
- package/dist/design-canvas-react/components/BrandKnot.d.ts +11 -0
- package/dist/design-canvas-react/components/CanvasEmptyState.d.ts +32 -0
- package/dist/design-canvas-react/components/CanvasInsertPanel.d.ts +53 -0
- package/dist/{lazy-DrkVyDpe.d.ts → design-canvas-react/components/DesignCanvas.d.ts} +27 -20
- package/dist/design-canvas-react/components/DesignCanvasEditor.d.ts +23 -0
- package/dist/design-canvas-react/components/ElementNode.d.ts +51 -0
- package/dist/design-canvas-react/components/ExportControl.d.ts +21 -0
- package/dist/design-canvas-react/components/GridLayer.d.ts +47 -0
- package/dist/design-canvas-react/components/InlineTextEditor.d.ts +25 -0
- package/dist/design-canvas-react/components/LayersPanel.d.ts +20 -0
- package/dist/design-canvas-react/components/PagesStrip.d.ts +34 -0
- package/dist/design-canvas-react/components/Rulers.d.ts +31 -0
- package/dist/design-canvas-react/components/SelectionLayer.d.ts +51 -0
- package/dist/design-canvas-react/components/SnapGuidesOverlay.d.ts +25 -0
- package/dist/design-canvas-react/components/Toolbar.d.ts +64 -0
- package/dist/design-canvas-react/components/Workspace.d.ts +92 -0
- package/dist/design-canvas-react/components/ZoomControls.d.ts +14 -0
- package/dist/design-canvas-react/components/glyphs.d.ts +46 -0
- package/dist/design-canvas-react/components/icon-button.d.ts +22 -0
- package/dist/design-canvas-react/components/index.d.ts +27 -0
- package/dist/design-canvas-react/components/layer-tree.d.ts +34 -0
- package/dist/design-canvas-react/components/ruler-math.d.ts +78 -0
- package/dist/design-canvas-react/components/transform-math.d.ts +168 -0
- package/dist/{command-stack-TNPWJCzW.d.ts → design-canvas-react/contracts.d.ts} +16 -63
- package/dist/design-canvas-react/engine/command-stack.d.ts +43 -0
- package/dist/design-canvas-react/engine/commands.d.ts +154 -0
- package/dist/design-canvas-react/engine/selection.d.ts +48 -0
- package/dist/design-canvas-react/engine/snap.d.ts +24 -0
- package/dist/design-canvas-react/engine/zoom-pan.d.ts +18 -0
- package/dist/design-canvas-react/engine.d.ts +21 -399
- package/dist/design-canvas-react/export-math.d.ts +104 -0
- package/dist/design-canvas-react/export.d.ts +89 -0
- package/dist/design-canvas-react/index.d.ts +16 -586
- package/dist/design-canvas-react/insert-builders.d.ts +61 -0
- package/dist/design-canvas-react/lazy.d.ts +21 -6
- package/dist/documents/docx.d.ts +50 -0
- package/dist/documents/extract.d.ts +87 -0
- package/dist/documents/index.d.ts +26 -232
- package/dist/documents/media-type.d.ts +33 -0
- package/dist/documents/pdf-inspector.d.ts +5 -9
- package/dist/{types-DrBidf3O.d.ts → documents/types.d.ts} +13 -15
- package/dist/documents/zip.d.ts +56 -0
- package/dist/eval/calibration.d.ts +106 -0
- package/dist/eval/index.d.ts +8 -116
- package/dist/eval-campaign/index.d.ts +11 -12
- package/dist/{trust-gate-Dcm5xSva.d.ts → eval-campaign/trust-gate.d.ts} +5 -9
- package/dist/forms/blank.d.ts +48 -0
- package/dist/forms/fill.d.ts +105 -0
- package/dist/forms/index.d.ts +58 -332
- package/dist/forms/registry.d.ts +115 -0
- package/dist/forms/verify.d.ts +58 -0
- package/dist/harness/index.d.ts +21 -19
- package/dist/intakes/api.d.ts +5 -11
- package/dist/{completion-CvcNUz07.d.ts → intakes/completion.d.ts} +7 -11
- package/dist/intakes/context-sufficiency.d.ts +113 -0
- package/dist/intakes/drizzle/schema.d.ts +338 -0
- package/dist/intakes/drizzle/store.d.ts +75 -0
- package/dist/intakes/drizzle.d.ts +12 -391
- package/dist/intakes/index.d.ts +23 -113
- package/dist/{model-C8U0HZxL.d.ts → intakes/model.d.ts} +15 -17
- package/dist/intakes-react/components/BrandMark.d.ts +10 -0
- package/dist/intakes-react/components/IntakeInterview.d.ts +15 -0
- package/dist/intakes-react/components/index.d.ts +1 -0
- package/dist/intakes-react/contracts.d.ts +42 -0
- package/dist/intakes-react/index.d.ts +12 -47
- package/dist/intakes-react/lazy.d.ts +9 -8
- package/dist/integrations/index.d.ts +10 -12
- package/dist/{contract-OxG_jVMx.d.ts → interactions/contract.d.ts} +40 -42
- package/dist/interactions/index.d.ts +16 -256
- package/dist/interactions/route.d.ts +151 -0
- package/dist/interactions/sidecar.d.ts +100 -0
- package/dist/knowledge/index.d.ts +7 -11
- package/dist/knowledge-loop/index.d.ts +13 -20
- package/dist/legibility/checks/empty-state.d.ts +59 -0
- package/dist/legibility/checks/reachability.d.ts +103 -0
- package/dist/legibility/checks/silent-failure.d.ts +57 -0
- package/dist/legibility/checks/success.d.ts +38 -0
- package/dist/legibility/checks/vocabulary.d.ts +65 -0
- package/dist/legibility/cli-args.d.ts +30 -0
- package/dist/legibility/cli.d.ts +25 -0
- package/dist/legibility/index.d.ts +10 -530
- package/dist/legibility/report.d.ts +22 -0
- package/dist/legibility/scan.d.ts +29 -0
- package/dist/legibility/source.d.ts +132 -0
- package/dist/legibility/suppress.d.ts +36 -0
- package/dist/legibility/types.d.ts +168 -0
- package/dist/legibility/walk-sources.d.ts +21 -0
- package/dist/{agent-activity-C8ZG0F0M.d.ts → missions/agent-activity.d.ts} +3 -5
- package/dist/missions/engine.d.ts +251 -0
- package/dist/missions/events.d.ts +195 -0
- package/dist/missions/index.d.ts +12 -765
- package/dist/missions/plan-parse.d.ts +50 -0
- package/dist/missions/service.d.ts +265 -0
- package/dist/{failover-D-3UXXTb.d.ts → model-resolution/failover.d.ts} +10 -12
- package/dist/model-resolution/index.d.ts +15 -18
- package/dist/object-store/index.d.ts +15 -17
- package/dist/openui/action.d.ts +54 -0
- package/dist/openui/authoring.d.ts +25 -0
- package/dist/openui/index.d.ts +24 -206
- package/dist/openui/route.d.ts +124 -0
- package/dist/openui/segments.d.ts +71 -0
- package/dist/openui/values.d.ts +82 -0
- package/dist/openui-react/index.d.ts +9 -13
- package/dist/peer-floors/check.d.ts +9 -190
- package/dist/peer-floors/cli.d.ts +2 -3
- package/dist/peer-floors/dependency-source.d.ts +178 -0
- package/dist/plans/index.d.ts +13 -14
- package/dist/{billing-BuNlaKlE.d.ts → platform/billing.d.ts} +28 -32
- package/dist/platform/guards.d.ts +79 -0
- package/dist/platform/hub.d.ts +107 -0
- package/dist/platform/index.d.ts +7 -112
- package/dist/{sso-Cm00S61u.d.ts → platform/sso.d.ts} +15 -97
- package/dist/preflight/cli.d.ts +3 -6
- package/dist/preflight/index.d.ts +16 -18
- package/dist/preset-cloudflare/headers.d.ts +12 -0
- package/dist/preset-cloudflare/index.d.ts +22 -74
- package/dist/preset-cloudflare/workflow-instance.d.ts +35 -0
- package/dist/profile/budget.d.ts +72 -0
- package/dist/profile/fingerprint.d.ts +65 -0
- package/dist/profile/index.d.ts +27 -19
- package/dist/prompt/index.d.ts +3 -5
- package/dist/record/drizzle/schema.d.ts +488 -0
- package/dist/record/drizzle/store.d.ts +224 -0
- package/dist/record/drizzle.d.ts +10 -679
- package/dist/record/fold.d.ts +99 -0
- package/dist/record/index.d.ts +13 -13
- package/dist/{fold-DACU7gtf.d.ts → record/model.d.ts} +22 -124
- package/dist/record/ulid.d.ts +12 -0
- package/dist/redact/index.d.ts +14 -16
- package/dist/run/index.d.ts +11 -16
- package/dist/runtime/agent.d.ts +23 -0
- package/dist/runtime/certified-delivery.d.ts +57 -0
- package/dist/runtime/index.d.ts +17 -367
- package/dist/runtime/loop.d.ts +58 -0
- package/dist/runtime/model-catalog.d.ts +103 -0
- package/dist/{model-CdCDfBA9.d.ts → runtime/model.d.ts} +25 -27
- package/dist/runtime/openai-stream.d.ts +126 -0
- package/dist/runtime/surface-profile.d.ts +115 -0
- package/dist/sandbox/binary-read.d.ts +63 -0
- package/dist/sandbox/diagnostics.d.ts +69 -0
- package/dist/sandbox/index.d.ts +103 -1085
- package/dist/sandbox/model.d.ts +179 -0
- package/dist/sandbox/outcome.d.ts +10 -0
- package/dist/sandbox/prewarm-claim-d1.d.ts +80 -0
- package/dist/sandbox/prewarm.d.ts +193 -0
- package/dist/sandbox/recovery.d.ts +216 -0
- package/dist/sandbox/terminal-connection.d.ts +145 -0
- package/dist/sandbox/workspace-sandbox-manager.d.ts +44 -0
- package/dist/sequences/apply.d.ts +54 -0
- package/dist/sequences/captions.d.ts +91 -0
- package/dist/sequences/drizzle-store.d.ts +36 -0
- package/dist/sequences/drizzle.d.ts +7 -1252
- package/dist/sequences/exports.d.ts +138 -0
- package/dist/sequences/index.d.ts +19 -340
- package/dist/sequences/mcp-entry.d.ts +15 -0
- package/dist/sequences/mcp-handler.d.ts +39 -0
- package/dist/sequences/mcp-tools.d.ts +47 -0
- package/dist/{store-B7LLlk9p.d.ts → sequences/model.d.ts} +26 -110
- package/dist/sequences/operations.d.ts +126 -0
- package/dist/sequences/schema.d.ts +1231 -0
- package/dist/sequences/store.d.ts +81 -0
- package/dist/sequences/validate.d.ts +98 -0
- package/dist/sequences-react/components/BrandMark.d.ts +10 -0
- package/dist/sequences-react/components/PreviewCanvas.d.ts +26 -0
- package/dist/sequences-react/components/SnapIndicatorLine.d.ts +11 -0
- package/dist/sequences-react/components/TimelineClipChip.d.ts +80 -0
- package/dist/sequences-react/components/TimelineEditor.d.ts +44 -0
- package/dist/sequences-react/components/TimelineEmptyState.d.ts +21 -0
- package/dist/sequences-react/components/TimelineGhostLanes.d.ts +14 -0
- package/dist/sequences-react/components/TimelinePlayhead.d.ts +11 -0
- package/dist/sequences-react/components/TimelineRuler.d.ts +16 -0
- package/dist/sequences-react/components/TimelineSmallScreenGate.d.ts +12 -0
- package/dist/sequences-react/components/TimelineTrackRow.d.ts +51 -0
- package/dist/sequences-react/components/ZoomControl.d.ts +15 -0
- package/dist/sequences-react/components/composite-command.d.ts +8 -0
- package/dist/sequences-react/components/glyphs.d.ts +26 -0
- package/dist/sequences-react/components/index.d.ts +31 -0
- package/dist/sequences-react/components/interaction-math.d.ts +103 -0
- package/dist/sequences-react/contracts.d.ts +187 -0
- package/dist/sequences-react/engine/command-stack.d.ts +18 -0
- package/dist/sequences-react/engine/commands.d.ts +146 -0
- package/dist/sequences-react/engine/playback.d.ts +18 -0
- package/dist/sequences-react/engine/snap.d.ts +29 -0
- package/dist/sequences-react/engine/zoom.d.ts +29 -0
- package/dist/sequences-react/index.d.ts +20 -880
- package/dist/sequences-react/lazy.d.ts +8 -0
- package/dist/sequences-react/media/frame-provider.d.ts +70 -0
- package/dist/sequences-react/media/transcription.d.ts +33 -0
- package/dist/sequences-react/media/waveform.d.ts +34 -0
- package/dist/session-shell/index.d.ts +31 -204
- package/dist/session-shell/nav-guard.d.ts +170 -0
- package/dist/session-shell/path.d.ts +19 -0
- package/dist/signoff/cli.d.ts +4 -7
- package/dist/signoff/config.d.ts +12 -0
- package/dist/signoff/exec.d.ts +44 -0
- package/dist/signoff/index.d.ts +56 -14
- package/dist/signoff/invoked-as-script.d.ts +25 -0
- package/dist/signoff/node-version.d.ts +50 -0
- package/dist/signoff/proof-attach.d.ts +88 -0
- package/dist/signoff/proof-cli.d.ts +1 -0
- package/dist/signoff/proof-fixture.d.ts +13 -0
- package/dist/signoff/proof-from-report.d.ts +22 -0
- package/dist/signoff/proof-git.d.ts +57 -0
- package/dist/signoff/proof-record.d.ts +202 -0
- package/dist/signoff/proof-verify.d.ts +103 -0
- package/dist/signoff/proof.d.ts +35 -310
- package/dist/signoff/report.d.ts +7 -0
- package/dist/{run-D80hoLKh.d.ts → signoff/run.d.ts} +3 -6
- package/dist/signoff/schedule.d.ts +55 -0
- package/dist/signoff/seeds.d.ts +50 -0
- package/dist/signoff/store.d.ts +22 -0
- package/dist/{types-Bd6uW9vQ.d.ts → signoff/types.d.ts} +15 -17
- package/dist/signoff/workflow-pin.d.ts +56 -0
- package/dist/signoff/workspace.d.ts +40 -0
- package/dist/skills/index.d.ts +28 -32
- package/dist/skills-placement/index.d.ts +7 -11
- package/dist/spend/budget.d.ts +123 -0
- package/dist/spend/ceiling.d.ts +51 -0
- package/dist/spend/cli-args.d.ts +20 -0
- package/dist/spend/cli.d.ts +1 -0
- package/dist/spend/fixtures/incident-parked-time.d.ts +55 -0
- package/dist/spend/index.d.ts +38 -1144
- package/dist/spend/liveness.d.ts +131 -0
- package/dist/spend/ownership.d.ts +87 -0
- package/dist/spend/reconcile.d.ts +109 -0
- package/dist/spend/reference.d.ts +42 -0
- package/dist/spend/report.d.ts +12 -0
- package/dist/spend/store.d.ts +123 -0
- package/dist/spend/types.d.ts +466 -0
- package/dist/store/index.d.ts +10 -12
- package/dist/stories/app-shell/fixtures.d.ts +43 -0
- package/dist/stories/app-shell/shell.d.ts +81 -0
- package/dist/stories/assistant/fixtures.d.ts +73 -0
- package/dist/stories/chat/fixtures.d.ts +70 -0
- package/dist/stories/chat/markdown.d.ts +11 -0
- package/dist/stories/chat/run-drill-in.d.ts +19 -0
- package/dist/stories/chat-controls/fixtures.d.ts +116 -0
- package/dist/stories/design-canvas/fixtures.d.ts +57 -0
- package/dist/stories/fixtures/canvas.d.ts +10 -0
- package/dist/stories/fixtures/catalog.d.ts +7 -0
- package/dist/stories/fixtures/chat.d.ts +39 -0
- package/dist/stories/fixtures/index.d.ts +4 -0
- package/dist/stories/fixtures/sequences.d.ts +17 -0
- package/dist/stories/panels/fixtures.d.ts +63 -0
- package/dist/stories/sequences/fixtures.d.ts +30 -0
- package/dist/stories/studio/fixtures.d.ts +22 -0
- package/dist/stream/index.d.ts +10 -56
- package/dist/{stream-normalizer-DKRxyVlZ.d.ts → stream/stream-normalizer.d.ts} +23 -26
- package/dist/{turn-buffer-COMQUwO2.d.ts → stream/turn-buffer.d.ts} +21 -23
- package/dist/stream/turn-identity.d.ts +49 -0
- package/dist/studio/generation.d.ts +179 -0
- package/dist/studio/index.d.ts +12 -181
- package/dist/studio-react/avatar-composer.d.ts +8 -0
- package/dist/studio-react/composer-hero.d.ts +12 -0
- package/dist/studio-react/composer-shell.d.ts +18 -0
- package/dist/studio-react/generation-card.d.ts +9 -0
- package/dist/studio-react/generation-detail-modal.d.ts +11 -0
- package/dist/studio-react/generation-detail.d.ts +6 -0
- package/dist/studio-react/generation-grid.d.ts +15 -0
- package/dist/studio-react/image-composer.d.ts +8 -0
- package/dist/studio-react/index.d.ts +32 -245
- package/dist/studio-react/library-drawer.d.ts +12 -0
- package/dist/studio-react/library-panel.d.ts +15 -0
- package/dist/studio-react/publish-package-composer.d.ts +18 -0
- package/dist/studio-react/result-canvas.d.ts +6 -0
- package/dist/studio-react/speech-composer.d.ts +4 -0
- package/dist/studio-react/studio-header.d.ts +5 -0
- package/dist/studio-react/studio-sheet.d.ts +12 -0
- package/dist/studio-react/studio-workspace.d.ts +23 -0
- package/dist/studio-react/transcription-composer.d.ts +12 -0
- package/dist/studio-react/type-config.d.ts +11 -0
- package/dist/studio-react/use-studio-generations.d.ts +20 -0
- package/dist/studio-react/video-composer.d.ts +10 -0
- package/dist/tangle/index.d.ts +7 -9
- package/dist/teams/drizzle/access.d.ts +82 -0
- package/dist/{invitations-schema-_fI7HkJP.d.ts → teams/drizzle/invitations-schema.d.ts} +39 -27
- package/dist/teams/drizzle/personal-organization.d.ts +41 -0
- package/dist/{access-490O6aOU.d.ts → teams/drizzle/schema.d.ts} +57 -122
- package/dist/teams/drizzle.d.ts +12 -44
- package/dist/teams/index.d.ts +20 -44
- package/dist/teams/invitations-api.d.ts +17 -21
- package/dist/{invitations-DoYMvXea.d.ts → teams/invitations.d.ts} +14 -18
- package/dist/teams/invite.d.ts +42 -0
- package/dist/teams/members-api.d.ts +12 -16
- package/dist/teams/resend.d.ts +3 -13
- package/dist/{roles-B4nU3jDi.d.ts → teams/roles.d.ts} +18 -20
- package/dist/teams-react/components/BrandMark.d.ts +10 -0
- package/dist/teams-react/components/InvitationsPanel.d.ts +13 -0
- package/dist/teams-react/components/InviteAcceptPage.d.ts +10 -0
- package/dist/teams-react/components/MembersPanel.d.ts +14 -0
- package/dist/teams-react/components/RoleSelect.d.ts +17 -0
- package/dist/teams-react/components/index.d.ts +3 -0
- package/dist/teams-react/contracts.d.ts +134 -0
- package/dist/teams-react/index.d.ts +12 -143
- package/dist/teams-react/lazy.d.ts +11 -11
- package/dist/test-setup.d.ts +1 -0
- package/dist/theme/index.d.ts +6 -104
- package/dist/theme/tailwind-preset.d.ts +1 -2
- package/dist/theme/theme.d.ts +106 -0
- package/dist/theme-contract/cli.d.ts +21 -0
- package/dist/theme-contract/index.d.ts +4 -6
- package/dist/{auth-BYtiazA4.d.ts → tools/auth.d.ts} +8 -11
- package/dist/tools/capability.d.ts +54 -0
- package/dist/tools/dispatch.d.ts +37 -0
- package/dist/tools/errors.d.ts +8 -0
- package/dist/tools/gating.d.ts +62 -0
- package/dist/tools/http.d.ts +27 -0
- package/dist/tools/index.d.ts +12 -217
- package/dist/{mcp-rpc-DYwPlYbZ.d.ts → tools/mcp-rpc.d.ts} +7 -9
- package/dist/{mcp-xxoZZfor.d.ts → tools/mcp.d.ts} +14 -16
- package/dist/tools/openai.d.ts +28 -0
- package/dist/tools/registry.d.ts +39 -0
- package/dist/tools/runtime.d.ts +22 -0
- package/dist/{types-B25Mib1r.d.ts → tools/types.d.ts} +15 -83
- package/dist/{flow-types-CJxEmaRy.d.ts → trace/flow-types.d.ts} +2 -4
- package/dist/trace/index.d.ts +11 -148
- package/dist/trace/mission-flow.d.ts +82 -0
- package/dist/trace/mission-trace.d.ts +52 -0
- package/dist/turn-health/classify.d.ts +207 -0
- package/dist/turn-health/index.d.ts +29 -637
- package/dist/turn-health/lifecycle.d.ts +75 -0
- package/dist/turn-health/sink.d.ts +122 -0
- package/dist/turn-health/sweep.d.ts +245 -0
- package/dist/turn-stream/adapters.d.ts +257 -0
- package/dist/turn-stream/core.d.ts +293 -0
- package/dist/turn-stream/do.d.ts +144 -0
- package/dist/turn-stream/index.d.ts +62 -738
- package/dist/turn-stream/memory.d.ts +41 -0
- package/dist/vault/ConfirmDialog.d.ts +22 -0
- package/dist/vault/VaultPane.d.ts +15 -0
- package/dist/{VaultPane-BDP6SB_K.d.ts → vault/contracts.d.ts} +15 -22
- package/dist/vault/index.d.ts +15 -22
- package/dist/vault/lazy.d.ts +9 -7
- package/dist/vault/server.d.ts +8 -10
- package/dist/web/free-route-limit.d.ts +187 -0
- package/dist/web/index.d.ts +15 -207
- package/dist/{rate-limit-BOVmJRXZ.d.ts → web/rate-limit.d.ts} +3 -5
- package/dist/web-react/agent-session-controls.d.ts +105 -0
- package/dist/web-react/async/async-view.d.ts +69 -0
- package/dist/web-react/async/index.d.ts +13 -305
- package/dist/web-react/async/state.d.ts +107 -0
- package/dist/web-react/async/use-async-resource.d.ts +41 -0
- package/dist/web-react/async/use-confirmed-mutation.d.ts +90 -0
- package/dist/web-react/brand-mark.d.ts +11 -0
- package/dist/web-react/chat-attachments.d.ts +21 -0
- package/dist/web-react/chat-composer.d.ts +174 -0
- package/dist/web-react/chat-interactions.d.ts +1 -0
- package/dist/web-react/chat-mentions.d.ts +48 -0
- package/dist/web-react/chat-stream.d.ts +106 -0
- package/dist/web-react/class-names.d.ts +10 -0
- package/dist/web-react/controls.d.ts +265 -0
- package/dist/web-react/durable-chat-cards.d.ts +40 -0
- package/dist/web-react/durable-interaction-submit.d.ts +22 -0
- package/dist/web-react/durable-plan-card.d.ts +13 -0
- package/dist/web-react/durable-plan-flow.d.ts +77 -0
- package/dist/web-react/harness-glyphs.d.ts +28 -0
- package/dist/web-react/index.d.ts +80 -2347
- package/dist/web-react/inert.d.ts +39 -0
- package/dist/web-react/insight-card.d.ts +203 -0
- package/dist/web-react/interaction-card-support.d.ts +115 -0
- package/dist/web-react/interaction-plan-card.d.ts +39 -0
- package/dist/web-react/interaction-question-card.d.ts +100 -0
- package/dist/web-react/message-attachments.d.ts +56 -0
- package/dist/web-react/mission-activity.d.ts +96 -0
- package/dist/web-react/motion.d.ts +43 -0
- package/dist/web-react/provenance-model.d.ts +195 -0
- package/dist/web-react/provenance.d.ts +82 -0
- package/dist/web-react/provider-logo.d.ts +14 -0
- package/dist/web-react/record-grid-model.d.ts +257 -0
- package/dist/web-react/record-grid.d.ts +108 -0
- package/dist/web-react/sandbox-terminal.d.ts +90 -0
- package/dist/web-react/seat-paywall.d.ts +47 -0
- package/dist/web-react/session-history.d.ts +196 -0
- package/dist/web-react/smooth-text.d.ts +29 -0
- package/dist/web-react/sparkline.d.ts +150 -0
- package/dist/web-react/terminal.d.ts +1 -92
- package/dist/web-react/use-chat-interactions.d.ts +78 -0
- package/dist/web-react/use-composer-attachments.d.ts +111 -0
- package/dist/web-react/use-file-mentions.d.ts +94 -0
- package/dist/web-react/work-product.d.ts +105 -0
- package/dist/work-product/claim-support.d.ts +288 -0
- package/dist/work-product/index.d.ts +16 -849
- package/dist/work-product/provenance.d.ts +61 -0
- package/dist/{queue-VTBA5ONX.d.ts → work-product/queue.d.ts} +10 -12
- package/dist/work-product/quote.d.ts +139 -0
- package/dist/work-product/route.d.ts +88 -0
- package/dist/work-product/service.d.ts +123 -0
- package/dist/work-product/tools.d.ts +144 -0
- package/dist/{types-CCeYywdS.d.ts → work-product/types.d.ts} +29 -31
- package/dist/work-product-react/index.d.ts +19 -8
- package/dist/workspace-react/index.d.ts +8 -11
- package/package.json +4 -3
- package/dist/agent-session-controls-CmlXwp_H.d.ts +0 -384
- package/dist/apply-6wlMOLf8.d.ts +0 -280
- package/dist/attachment-validation-BfJDBU1g.d.ts +0 -261
- package/dist/budget-BOucfcb_.d.ts +0 -142
- package/dist/values-C7RidJuI.d.ts +0 -156
package/dist/forms/index.d.ts
CHANGED
|
@@ -1,333 +1,59 @@
|
|
|
1
|
-
import { PDFForm } from 'pdf-lib';
|
|
2
|
-
|
|
3
1
|
/**
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
*
|
|
37
|
-
*
|
|
38
|
-
*
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
*
|
|
45
|
-
*
|
|
46
|
-
*
|
|
47
|
-
*
|
|
48
|
-
*
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
*
|
|
54
|
-
*
|
|
55
|
-
*
|
|
56
|
-
*
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
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>;
|