@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.
- 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 +5 -4
- 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
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* In-process turn-stream harness: a fake namespace that routes `idFromName`
|
|
3
|
+
* to REAL {@link TurnStreamDO} instances over an in-memory storage/socket
|
|
4
|
+
* state. The adapters and the DO run their production code paths — only the
|
|
5
|
+
* Cloudflare runtime (isolation, hibernation, real sockets) is simulated.
|
|
6
|
+
*
|
|
7
|
+
* For vitest composition tests and keyless local dev (the same role
|
|
8
|
+
* `createMemoryTurnEventStore` plays for the D1 store). Not for production:
|
|
9
|
+
* state is per-process and evaporates on restart.
|
|
10
|
+
*/
|
|
11
|
+
import { TurnStreamDO, type TurnStreamDOOptions, type TurnStreamDOState, type TurnStreamSocket } from './do';
|
|
12
|
+
import type { TurnStreamNamespaceLike } from './adapters';
|
|
13
|
+
/** A test-side viewer socket: records frames sent by the DO and lets the
|
|
14
|
+
* test drive the `sync` handshake. */
|
|
15
|
+
export interface MemoryTurnStreamSocket extends TurnStreamSocket {
|
|
16
|
+
readonly frames: string[];
|
|
17
|
+
readonly closed: boolean;
|
|
18
|
+
}
|
|
19
|
+
/** Define an in-memory channel for streaming turn-based data with viewer socket connection support */
|
|
20
|
+
export interface MemoryTurnStreamChannel {
|
|
21
|
+
/** Attach a viewer socket to this channel (bypasses the HTTP 101 — the
|
|
22
|
+
* upgrade handshake is Cloudflare-runtime-only) and run its `sync`. */
|
|
23
|
+
connect(input: {
|
|
24
|
+
sessionId: string;
|
|
25
|
+
scope: 'thread' | 'workspace';
|
|
26
|
+
afterSeq?: number;
|
|
27
|
+
}): Promise<MemoryTurnStreamSocket>;
|
|
28
|
+
readonly instance: TurnStreamDO;
|
|
29
|
+
}
|
|
30
|
+
/** Provide an interface to manage channels and namespaces for memory-based turn stream testing */
|
|
31
|
+
export interface MemoryTurnStreamHarness {
|
|
32
|
+
namespace: TurnStreamNamespaceLike;
|
|
33
|
+
/** The channel (creating its DO instance if needed) for a channel key —
|
|
34
|
+
* e.g. `threadChannelKey(ws, thread)` — to connect test viewers. */
|
|
35
|
+
channel(name: string): MemoryTurnStreamChannel;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Build the harness. `createInstance` lets a product test run its own
|
|
39
|
+
* `TurnStreamDO` subclass through the same wiring.
|
|
40
|
+
*/
|
|
41
|
+
export declare function createMemoryTurnStreamHarness(createInstance?: (state: TurnStreamDOState) => TurnStreamDO, _options?: TurnStreamDOOptions): MemoryTurnStreamHarness;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Self-contained confirm dialog — no dialog library. A focus-trapped modal with
|
|
3
|
+
* Esc-to-cancel and Enter-to-confirm, used for create / delete / discard-unsaved
|
|
4
|
+
* flows so the pane carries zero UI-kit dependency.
|
|
5
|
+
*/
|
|
6
|
+
import { type ReactNode } from 'react';
|
|
7
|
+
export interface ConfirmDialogProps {
|
|
8
|
+
open: boolean;
|
|
9
|
+
title: string;
|
|
10
|
+
description?: ReactNode;
|
|
11
|
+
confirmLabel?: string;
|
|
12
|
+
cancelLabel?: string;
|
|
13
|
+
/** Styles the confirm button as a destructive action. */
|
|
14
|
+
destructive?: boolean;
|
|
15
|
+
/** Disables the confirm button (e.g. while the action is in flight). */
|
|
16
|
+
confirmDisabled?: boolean;
|
|
17
|
+
onConfirm: () => void;
|
|
18
|
+
onCancel: () => void;
|
|
19
|
+
/** Optional body (e.g. an input field for the create flow). */
|
|
20
|
+
children?: ReactNode;
|
|
21
|
+
}
|
|
22
|
+
export declare function ConfirmDialog({ open, title, description, confirmLabel, cancelLabel, destructive, confirmDisabled, onConfirm, onCancel, children, }: ConfirmDialogProps): import("react").JSX.Element | null;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The shared 3-pane vault: tree | artifact viewer | optional agent dock. This is
|
|
3
|
+
* pure shell MECHANISM — selection, the dirty-guard + pending-nav state machine,
|
|
4
|
+
* rich/source editor modes, create/delete/refresh, skeletons, an error boundary,
|
|
5
|
+
* and an empty state. It renders NO file tree and NO artifact viewer of its own:
|
|
6
|
+
* those arrive through the `renderTree` / `renderArtifact` / `renderDock` seams,
|
|
7
|
+
* so a product wires sandbox-ui's RichFileTree + FileArtifactPane in ~10 lines.
|
|
8
|
+
*
|
|
9
|
+
* Data flows exclusively through `port` (a `VaultDataPort`). The pane never
|
|
10
|
+
* imports a fetch client, a router, a toast system, or a markdown library — the
|
|
11
|
+
* optional `codec` seam supplies rich/source parsing (identity passthrough by
|
|
12
|
+
* default). Chrome uses the shared theme tokens (bg-card, border-border, …).
|
|
13
|
+
*/
|
|
14
|
+
import type { VaultPaneProps } from './contracts';
|
|
15
|
+
export declare function VaultPane(props: VaultPaneProps): import("react").JSX.Element;
|
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
import * as react from 'react';
|
|
2
|
-
import { ReactNode } from 'react';
|
|
3
|
-
|
|
4
1
|
/**
|
|
5
2
|
* Seams between the shared VaultPane and the host product. Everything here is
|
|
6
3
|
* interface-only: the pane never imports a file tree, an artifact viewer, a
|
|
@@ -14,13 +11,13 @@ import { ReactNode } from 'react';
|
|
|
14
11
|
* The only import is React's `ReactNode` type — pure type, no runtime, so this
|
|
15
12
|
* file stays server-safe and the contracts are usable without React mounted.
|
|
16
13
|
*/
|
|
17
|
-
|
|
14
|
+
import type { ReactNode } from 'react';
|
|
18
15
|
/**
|
|
19
16
|
* One node in the vault tree. Field-for-field identical to sandbox-ui's
|
|
20
17
|
* `FileNode`, so a `VaultTreeNode[]` IS a `FileNode[]` — the product hands
|
|
21
18
|
* sandbox-ui's `RichFileTree` the `root` from `renderTree` with no conversion.
|
|
22
19
|
*/
|
|
23
|
-
interface VaultTreeNode {
|
|
20
|
+
export interface VaultTreeNode {
|
|
24
21
|
name: string;
|
|
25
22
|
path: string;
|
|
26
23
|
type: 'file' | 'directory';
|
|
@@ -29,7 +26,7 @@ interface VaultTreeNode {
|
|
|
29
26
|
mimeType?: string;
|
|
30
27
|
}
|
|
31
28
|
/** A loaded vault file: its text content plus optional preview hints. */
|
|
32
|
-
interface VaultFile {
|
|
29
|
+
export interface VaultFile {
|
|
33
30
|
path: string;
|
|
34
31
|
content: string;
|
|
35
32
|
mimeType?: string;
|
|
@@ -44,7 +41,7 @@ interface VaultFile {
|
|
|
44
41
|
* over fetch, a sandbox session, a worker RPC, whatever the product uses. The
|
|
45
42
|
* pane calls these; it never knows the transport.
|
|
46
43
|
*/
|
|
47
|
-
interface VaultDataPort {
|
|
44
|
+
export interface VaultDataPort {
|
|
48
45
|
/** List the full vault tree. The returned nodes feed `renderTree` directly. */
|
|
49
46
|
listTree(): Promise<VaultTreeNode[]>;
|
|
50
47
|
/** Read a single file by path. */
|
|
@@ -58,14 +55,14 @@ interface VaultDataPort {
|
|
|
58
55
|
deleteFile(path: string): Promise<void>;
|
|
59
56
|
}
|
|
60
57
|
/** The Vault operation that failed at the product-owned data-port seam. */
|
|
61
|
-
type VaultOperation = 'list' | 'read' | 'save' | 'create' | 'delete';
|
|
58
|
+
export type VaultOperation = 'list' | 'read' | 'save' | 'create' | 'delete';
|
|
62
59
|
/** Whether the operation itself failed or a mutation succeeded but its
|
|
63
60
|
* follow-up tree refresh did not. */
|
|
64
|
-
type VaultOperationPhase = 'operation' | 'post-mutation-refresh';
|
|
61
|
+
export type VaultOperationPhase = 'operation' | 'post-mutation-refresh';
|
|
65
62
|
/** Structured failure reported to an optional host observer. VaultPane always
|
|
66
63
|
* renders its own recovery UI; this payload is for telemetry or additional
|
|
67
64
|
* product presentation and never controls the pane's state machine. */
|
|
68
|
-
interface VaultOperationFailure {
|
|
65
|
+
export interface VaultOperationFailure {
|
|
69
66
|
operation: VaultOperation;
|
|
70
67
|
phase: VaultOperationPhase;
|
|
71
68
|
path?: string;
|
|
@@ -78,7 +75,7 @@ interface VaultOperationFailure {
|
|
|
78
75
|
* dirtiness, so any structure (frontmatter + body, AST, etc.) works as long as
|
|
79
76
|
* `parse` and `serialize` are inverses for unchanged content.
|
|
80
77
|
*/
|
|
81
|
-
type VaultRichParts = unknown;
|
|
78
|
+
export type VaultRichParts = unknown;
|
|
82
79
|
/**
|
|
83
80
|
* Optional rich/source codec. When supplied, the pane's rich mode edits
|
|
84
81
|
* `parse(raw)` and the source mode edits `raw`; switching modes recomputes
|
|
@@ -91,18 +88,18 @@ type VaultRichParts = unknown;
|
|
|
91
88
|
* uses that round-trip to detect edits, so a non-inverse opens files false-dirty
|
|
92
89
|
* and a save corrupts them.
|
|
93
90
|
*/
|
|
94
|
-
interface VaultMarkdownCodec {
|
|
91
|
+
export interface VaultMarkdownCodec {
|
|
95
92
|
parse(raw: string): VaultRichParts;
|
|
96
93
|
serialize(parts: VaultRichParts): string;
|
|
97
94
|
}
|
|
98
95
|
/** Props the pane passes to the product's tree renderer (e.g. RichFileTree). */
|
|
99
|
-
interface VaultTreeRenderProps {
|
|
96
|
+
export interface VaultTreeRenderProps {
|
|
100
97
|
root: VaultTreeNode;
|
|
101
98
|
selectedPath?: string;
|
|
102
99
|
onSelect: (path: string) => void;
|
|
103
100
|
}
|
|
104
101
|
/** Props the pane passes to the product's artifact renderer (e.g. FileArtifactPane). */
|
|
105
|
-
interface VaultArtifactRenderProps {
|
|
102
|
+
export interface VaultArtifactRenderProps {
|
|
106
103
|
file: VaultFile | null;
|
|
107
104
|
loading: boolean;
|
|
108
105
|
/** Current editor mode. In 'rich' mode the product MAY host a WYSIWYG editor
|
|
@@ -121,13 +118,13 @@ interface VaultArtifactRenderProps {
|
|
|
121
118
|
onSave: () => void;
|
|
122
119
|
}
|
|
123
120
|
/** Props the pane passes to the product's optional dock renderer (e.g. an agent dock). */
|
|
124
|
-
interface VaultDockRenderProps {
|
|
121
|
+
export interface VaultDockRenderProps {
|
|
125
122
|
file: VaultFile | null;
|
|
126
123
|
open: boolean;
|
|
127
124
|
onClose: () => void;
|
|
128
125
|
}
|
|
129
126
|
/** Configures the dock toggle VaultPane renders above the artifact pane. */
|
|
130
|
-
interface VaultDockToggle {
|
|
127
|
+
export interface VaultDockToggle {
|
|
131
128
|
/** Button + aria label (e.g. 'Discuss', 'Review'). */
|
|
132
129
|
label: string;
|
|
133
130
|
/** Tooltip when enabled. Defaults to `label`. */
|
|
@@ -137,9 +134,9 @@ interface VaultDockToggle {
|
|
|
137
134
|
disabledWhenDirty?: boolean;
|
|
138
135
|
}
|
|
139
136
|
/** The two editor surfaces the pane switches between for editable text files. */
|
|
140
|
-
type VaultEditorMode = 'rich' | 'source';
|
|
137
|
+
export type VaultEditorMode = 'rich' | 'source';
|
|
141
138
|
/** Define the properties and render methods for the vault pane UI components */
|
|
142
|
-
interface VaultPaneProps {
|
|
139
|
+
export interface VaultPaneProps {
|
|
143
140
|
/** Product-owned data access. */
|
|
144
141
|
port: VaultDataPort;
|
|
145
142
|
/** Renders the left tree pane. The product passes sandbox-ui's RichFileTree. */
|
|
@@ -186,7 +183,3 @@ interface VaultPaneProps {
|
|
|
186
183
|
codec?: VaultMarkdownCodec;
|
|
187
184
|
className?: string;
|
|
188
185
|
}
|
|
189
|
-
|
|
190
|
-
declare function VaultPane(props: VaultPaneProps): react.JSX.Element;
|
|
191
|
-
|
|
192
|
-
export { type VaultArtifactRenderProps as V, type VaultDataPort as a, type VaultDockRenderProps as b, type VaultDockToggle as c, type VaultEditorMode as d, type VaultFile as e, type VaultMarkdownCodec as f, type VaultOperation as g, type VaultOperationFailure as h, type VaultOperationPhase as i, VaultPane as j, type VaultPaneProps as k, type VaultRichParts as l, type VaultTreeNode as m, type VaultTreeRenderProps as n };
|
package/dist/vault/index.d.ts
CHANGED
|
@@ -1,22 +1,15 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
onCancel: () => void;
|
|
17
|
-
/** Optional body (e.g. an input field for the create flow). */
|
|
18
|
-
children?: ReactNode;
|
|
19
|
-
}
|
|
20
|
-
declare function ConfirmDialog({ open, title, description, confirmLabel, cancelLabel, destructive, confirmDisabled, onConfirm, onCancel, children, }: ConfirmDialogProps): react.JSX.Element | null;
|
|
21
|
-
|
|
22
|
-
export { ConfirmDialog, type ConfirmDialogProps };
|
|
1
|
+
/**
|
|
2
|
+
* `@tangle-network/agent-app/vault` — the shared 3-pane VaultPane (tree |
|
|
3
|
+
* artifact viewer | optional agent dock) every Tangle agent product otherwise
|
|
4
|
+
* hand-rolls. Pure shell mechanism: selection, the dirty-guard state machine,
|
|
5
|
+
* rich/source editor modes, create/delete, skeletons, and an error boundary.
|
|
6
|
+
* The product supplies the data (`VaultDataPort`) and the renderers; the pane
|
|
7
|
+
* imports no file tree, no artifact viewer, and no dialog library.
|
|
8
|
+
*
|
|
9
|
+
* Never re-exported from the package root barrel — `react` is an optional peer
|
|
10
|
+
* and DOM access begins only inside component render. A `React.lazy` code-split
|
|
11
|
+
* entry lives at `./vault/lazy`.
|
|
12
|
+
*/
|
|
13
|
+
export * from './contracts';
|
|
14
|
+
export { VaultPane } from './VaultPane';
|
|
15
|
+
export { ConfirmDialog, type ConfirmDialogProps } from './ConfirmDialog';
|
package/dist/vault/lazy.d.ts
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Code-split entry for the vault surface. Products that don't need the vault on
|
|
3
|
+
* initial load import `VaultPaneLazy` (a `React.lazy` handle) instead of the
|
|
4
|
+
* component directly, so the pane chunk loads on first render. Mount inside a
|
|
5
|
+
* `<Suspense>` boundary; the product provides the fallback.
|
|
6
|
+
*/
|
|
7
|
+
import type { VaultPaneProps } from './contracts';
|
|
8
|
+
export type { VaultPaneProps };
|
|
5
9
|
/** Resolve VaultPane component lazily to optimize loading and improve performance */
|
|
6
|
-
declare const VaultPaneLazy: react.LazyExoticComponent<typeof VaultPane>;
|
|
7
|
-
|
|
8
|
-
export { VaultPaneLazy };
|
|
10
|
+
export declare const VaultPaneLazy: import("react").LazyExoticComponent<typeof import("./VaultPane").VaultPane>;
|
package/dist/vault/server.d.ts
CHANGED
|
@@ -29,11 +29,11 @@
|
|
|
29
29
|
* live baseline (both this and `VAULT_DELETION_REFUSAL_MIN_LIVE_FILES` must
|
|
30
30
|
* hold — a tiny vault can lose all its files without tripping this ratio
|
|
31
31
|
* gate; `refusesAllFiles` catches that case separately). */
|
|
32
|
-
declare const VAULT_DELETION_REFUSAL_RATIO = 0.75;
|
|
32
|
+
export declare const VAULT_DELETION_REFUSAL_RATIO = 0.75;
|
|
33
33
|
/** The blast-radius ratio gate only engages once the live baseline is at
|
|
34
34
|
* least this large, so a 2-file vault losing 1 file (50%) is not refused on
|
|
35
35
|
* ratio alone. */
|
|
36
|
-
declare const VAULT_DELETION_REFUSAL_MIN_LIVE_FILES = 10;
|
|
36
|
+
export declare const VAULT_DELETION_REFUSAL_MIN_LIVE_FILES = 10;
|
|
37
37
|
/** Overrides for `assessVaultDeletionBatch`'s two thresholds. Both default to
|
|
38
38
|
* the exported constants above. Values are validated fail-loud:
|
|
39
39
|
* `refusalRatio` must be finite and in (0, 1] — `NaN` (a config parse
|
|
@@ -41,11 +41,11 @@ declare const VAULT_DELETION_REFUSAL_MIN_LIVE_FILES = 10;
|
|
|
41
41
|
* disable the guard, and `0` would refuse a zero-deletion batch; and
|
|
42
42
|
* `minLiveFiles` must be finite and >= 0. Invalid values throw `RangeError`
|
|
43
43
|
* instead of running with a guard that cannot fire (or cannot pass). */
|
|
44
|
-
interface VaultDeletionPolicy {
|
|
44
|
+
export interface VaultDeletionPolicy {
|
|
45
45
|
refusalRatio?: number;
|
|
46
46
|
minLiveFiles?: number;
|
|
47
47
|
}
|
|
48
|
-
interface VaultDeletionAssessment {
|
|
48
|
+
export interface VaultDeletionAssessment {
|
|
49
49
|
/** True when no refusal reason fired. */
|
|
50
50
|
allowed: boolean;
|
|
51
51
|
/** Precedence when multiple reasons would fire: `empty-manifest` beats
|
|
@@ -74,7 +74,7 @@ interface VaultDeletionAssessment {
|
|
|
74
74
|
* diagnostic that matters to a caller is "the scan was empty", not merely
|
|
75
75
|
* "everything would go".
|
|
76
76
|
*/
|
|
77
|
-
declare function assessVaultDeletionBatch(input: {
|
|
77
|
+
export declare function assessVaultDeletionBatch(input: {
|
|
78
78
|
/** LIVE (non-tombstoned) baseline path set — the caller pre-filters, as gtm does. */
|
|
79
79
|
baselinePaths: readonly string[];
|
|
80
80
|
/** Paths a reconciliation pass proposes to delete; intersected with `baselinePaths` internally. */
|
|
@@ -85,7 +85,7 @@ declare function assessVaultDeletionBatch(input: {
|
|
|
85
85
|
/** The subset of a sandbox's filesystem-incarnation identity this module
|
|
86
86
|
* needs. A product's real incarnation type is structurally compatible —
|
|
87
87
|
* no import required. */
|
|
88
|
-
interface FilesystemIncarnationLike {
|
|
88
|
+
export interface FilesystemIncarnationLike {
|
|
89
89
|
filesystemIncarnationId?: string;
|
|
90
90
|
filesystemIncarnationProvenance?: 'fresh' | 'restored' | 'unknown';
|
|
91
91
|
filesystemIncarnationReadiness?: 'transitioning' | 'ready';
|
|
@@ -96,7 +96,7 @@ interface FilesystemIncarnationLike {
|
|
|
96
96
|
* caller's `switch` gets compile-time coverage instead of a stringly-typed
|
|
97
97
|
* status it can forget to branch on.
|
|
98
98
|
*/
|
|
99
|
-
type IncarnationComparison = {
|
|
99
|
+
export type IncarnationComparison = {
|
|
100
100
|
verdict: 'match';
|
|
101
101
|
} | {
|
|
102
102
|
verdict: 'mismatch';
|
|
@@ -125,6 +125,4 @@ type IncarnationComparison = {
|
|
|
125
125
|
* 4. `mismatch` — the baseline id and current id disagree.
|
|
126
126
|
* 5. `match` — same incarnation.
|
|
127
127
|
*/
|
|
128
|
-
declare function compareIncarnationBaseline(baselineId: string | undefined, current: FilesystemIncarnationLike): IncarnationComparison;
|
|
129
|
-
|
|
130
|
-
export { type FilesystemIncarnationLike, type IncarnationComparison, VAULT_DELETION_REFUSAL_MIN_LIVE_FILES, VAULT_DELETION_REFUSAL_RATIO, type VaultDeletionAssessment, type VaultDeletionPolicy, assessVaultDeletionBatch, compareIncarnationBaseline };
|
|
128
|
+
export declare function compareIncarnationBaseline(baselineId: string | undefined, current: FilesystemIncarnationLike): IncarnationComparison;
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rate-limit policy for FREE routes: authenticated, unmetered, compute-bearing
|
|
3
|
+
* endpoints.
|
|
4
|
+
*
|
|
5
|
+
* Billing meters the chat turn. Everything deterministic a product adds beside
|
|
6
|
+
* it — a planning recompute fired on every slider drag, a redline diff, a
|
|
7
|
+
* deadline computation — runs unmetered, so nothing bounds how much worker CPU
|
|
8
|
+
* one authenticated caller can spend. `checkRateLimit` is the primitive; this
|
|
9
|
+
* is the policy around it, so a route declares a cost class instead of each one
|
|
10
|
+
* inventing a key format, a budget, and a denial response.
|
|
11
|
+
*
|
|
12
|
+
* Three rules this enforces that a hand-rolled call site usually does not:
|
|
13
|
+
*
|
|
14
|
+
* 1. **Identity is required.** A missing subject is denied, never pooled into a
|
|
15
|
+
* shared bucket and never quietly keyed by IP — a shared bucket makes one
|
|
16
|
+
* heavy user throttle everyone, and an IP key makes one NAT do the same.
|
|
17
|
+
* 2. **A limiter that throws denies.** KV `get`/`put` failures are transport
|
|
18
|
+
* failures; treating them as "allowed" converts a KV outage into an
|
|
19
|
+
* unbounded-compute hole, which is exactly when the limiter matters most.
|
|
20
|
+
* 3. **The denial is a typed, correctable outcome** — reason, HTTP status and
|
|
21
|
+
* `Retry-After` — so the caller answers the client rather than failing
|
|
22
|
+
* opaquely or, worse, continuing.
|
|
23
|
+
*
|
|
24
|
+
* ```ts
|
|
25
|
+
* export const action = withFreeRouteLimit(
|
|
26
|
+
* {
|
|
27
|
+
* route: 'tax.plan.recompute',
|
|
28
|
+
* costClass: 'interactive',
|
|
29
|
+
* kv: ({ context }) => context.cloudflare.env.RATE_LIMIT_KV,
|
|
30
|
+
* identify: async ({ request }) => {
|
|
31
|
+
* const session = await requireSession(request)
|
|
32
|
+
* return { subject: session.userId, workspace: session.workspaceId }
|
|
33
|
+
* },
|
|
34
|
+
* },
|
|
35
|
+
* async ({ request }) => Response.json(recompute(await request.json())),
|
|
36
|
+
* )
|
|
37
|
+
* ```
|
|
38
|
+
*/
|
|
39
|
+
import { type KvLike } from './rate-limit';
|
|
40
|
+
/** Requests allowed per identity inside a sliding window. */
|
|
41
|
+
export interface RateLimitBudget {
|
|
42
|
+
limit: number;
|
|
43
|
+
windowSeconds: number;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* How expensive one call is, which is what picks the default budget.
|
|
47
|
+
*
|
|
48
|
+
* - `interactive` — a control the user drags or types into, recomputed per
|
|
49
|
+
* tick. Sized for sustained two-per-second interaction, so a real slider
|
|
50
|
+
* never trips it and a script still stops.
|
|
51
|
+
* - `compute` — a derivation the user triggers deliberately (recalculate a
|
|
52
|
+
* plan, diff a document, compute a deadline set). The default.
|
|
53
|
+
* - `heavy` — whole-document or whole-matter work measured in seconds of CPU.
|
|
54
|
+
*/
|
|
55
|
+
export type FreeRouteClass = 'interactive' | 'compute' | 'heavy';
|
|
56
|
+
/** Default budget per cost class. A product overrides with an explicit
|
|
57
|
+
* `budget` when it has measured its own route. */
|
|
58
|
+
export declare const FREE_ROUTE_BUDGETS: Readonly<Record<FreeRouteClass, RateLimitBudget>>;
|
|
59
|
+
/** A workspace's shared ceiling defaults to this many times one member's, so a
|
|
60
|
+
* multi-seat tenant is bounded without a single active member tripping it. */
|
|
61
|
+
export declare const WORKSPACE_BUDGET_MULTIPLIER = 5;
|
|
62
|
+
/** Why a call was refused. Every value is a REFUSAL — there is no reason code
|
|
63
|
+
* that lets the handler run. */
|
|
64
|
+
export type FreeRouteDenialReason =
|
|
65
|
+
/** No authenticated subject. Not correctable by waiting. */
|
|
66
|
+
'unidentified'
|
|
67
|
+
/** The window is full for this subject or workspace. */
|
|
68
|
+
| 'rate-limited'
|
|
69
|
+
/** The limiter itself failed (KV read/write threw). Denied, not passed. */
|
|
70
|
+
| 'limiter-unavailable';
|
|
71
|
+
/** Which window refused the call. `null` when no window was consulted. */
|
|
72
|
+
export type FreeRouteDimension = 'subject' | 'workspace' | null;
|
|
73
|
+
/**
|
|
74
|
+
* A correctable refusal: the caller maps `status` + `retryAfterSeconds` onto a
|
|
75
|
+
* response (see {@link freeRouteLimitResponse}) so the client learns what to do
|
|
76
|
+
* next. Carrying the limiter's own failure in `cause` keeps a KV outage
|
|
77
|
+
* diagnosable instead of collapsing into a generic 429.
|
|
78
|
+
*/
|
|
79
|
+
export declare class FreeRouteLimitError extends Error {
|
|
80
|
+
readonly reason: FreeRouteDenialReason;
|
|
81
|
+
readonly status: 401 | 429 | 503;
|
|
82
|
+
readonly retryAfterSeconds: number;
|
|
83
|
+
readonly dimension: FreeRouteDimension;
|
|
84
|
+
readonly route: string;
|
|
85
|
+
constructor(init: {
|
|
86
|
+
reason: FreeRouteDenialReason;
|
|
87
|
+
status: 401 | 429 | 503;
|
|
88
|
+
retryAfterSeconds: number;
|
|
89
|
+
dimension: FreeRouteDimension;
|
|
90
|
+
route: string;
|
|
91
|
+
message: string;
|
|
92
|
+
cause?: unknown;
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
/** What remains of the binding window after an allowed call. */
|
|
96
|
+
export interface FreeRouteAllowance {
|
|
97
|
+
/** Remaining calls in whichever window is tightest. */
|
|
98
|
+
remaining: number;
|
|
99
|
+
/** Unix seconds at which that window resets. */
|
|
100
|
+
resetAt: number;
|
|
101
|
+
/** The budget that window enforces. */
|
|
102
|
+
budget: RateLimitBudget;
|
|
103
|
+
/** Which window is tightest — `subject` unless a workspace ceiling binds. */
|
|
104
|
+
dimension: Exclude<FreeRouteDimension, null>;
|
|
105
|
+
}
|
|
106
|
+
/** Typed outcome at the route boundary: an allowance, or a refusal that says
|
|
107
|
+
* how to correct it. There is no third state and no silent pass. */
|
|
108
|
+
export type FreeRouteLimitOutcome = {
|
|
109
|
+
succeeded: true;
|
|
110
|
+
value: FreeRouteAllowance;
|
|
111
|
+
} | {
|
|
112
|
+
succeeded: false;
|
|
113
|
+
error: FreeRouteLimitError;
|
|
114
|
+
};
|
|
115
|
+
export interface FreeRouteLimitInput {
|
|
116
|
+
kv: KvLike;
|
|
117
|
+
/** Stable route name. Part of the key, so two routes never share a window. */
|
|
118
|
+
route: string;
|
|
119
|
+
/** The authenticated subject (user id). Absent or blank ⇒ denied. */
|
|
120
|
+
subject: string | null | undefined;
|
|
121
|
+
/** Tenant the call belongs to. When present, a second, wider window bounds
|
|
122
|
+
* the workspace as a whole. */
|
|
123
|
+
workspace?: string | null;
|
|
124
|
+
/** Cost class picking the default budget. Ignored when `budget` is given.
|
|
125
|
+
* Default `'compute'`. */
|
|
126
|
+
costClass?: FreeRouteClass;
|
|
127
|
+
budget?: RateLimitBudget;
|
|
128
|
+
/** Workspace ceiling. Defaults to the subject budget's limit multiplied by
|
|
129
|
+
* {@link WORKSPACE_BUDGET_MULTIPLIER} over the same window. */
|
|
130
|
+
workspaceBudget?: RateLimitBudget;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Decide whether one authenticated, unmetered call may run.
|
|
134
|
+
*
|
|
135
|
+
* Checks the subject's window first, then the workspace ceiling when a
|
|
136
|
+
* workspace is supplied; the tighter of the two is what the allowance reports.
|
|
137
|
+
* Every failure path returns a refusal — none returns an allowance.
|
|
138
|
+
*/
|
|
139
|
+
export declare function checkFreeRouteLimit(input: FreeRouteLimitInput): Promise<FreeRouteLimitOutcome>;
|
|
140
|
+
export interface FreeRouteLimitResponseOptions {
|
|
141
|
+
/** Extra response headers (a product's security headers, CORS). */
|
|
142
|
+
headers?: Record<string, string>;
|
|
143
|
+
/** Client-facing message. Defaults to the error's own message. */
|
|
144
|
+
message?: string;
|
|
145
|
+
}
|
|
146
|
+
/** The refusal as an HTTP response: the error's status, a JSON body carrying
|
|
147
|
+
* the machine-readable `reason`, and `Retry-After` when waiting can fix it. */
|
|
148
|
+
export declare function freeRouteLimitResponse(error: FreeRouteLimitError, options?: FreeRouteLimitResponseOptions): Response;
|
|
149
|
+
/** The authenticated caller behind one request. */
|
|
150
|
+
export interface FreeRouteIdentity {
|
|
151
|
+
subject: string;
|
|
152
|
+
workspace?: string | null;
|
|
153
|
+
}
|
|
154
|
+
export interface WithFreeRouteLimitOptions<TArgs> {
|
|
155
|
+
/** Stable route name; part of the key. */
|
|
156
|
+
route: string;
|
|
157
|
+
costClass?: FreeRouteClass;
|
|
158
|
+
budget?: RateLimitBudget;
|
|
159
|
+
workspaceBudget?: RateLimitBudget;
|
|
160
|
+
/** The KV binding for this request. */
|
|
161
|
+
kv: (args: TArgs) => KvLike;
|
|
162
|
+
/**
|
|
163
|
+
* Resolve the authenticated caller. Return `null` for an unauthenticated
|
|
164
|
+
* request — the wrapper then refuses with 401 and the handler never runs.
|
|
165
|
+
*
|
|
166
|
+
* A THROW here propagates: an auth lookup that failed is not the same as an
|
|
167
|
+
* absent session, and the wrapper will not invent a status for it. The
|
|
168
|
+
* handler still does not run, so the failure stays closed.
|
|
169
|
+
*/
|
|
170
|
+
identify: (args: TArgs) => Promise<FreeRouteIdentity | null> | FreeRouteIdentity | null;
|
|
171
|
+
/** Build the refusal response. Defaults to {@link freeRouteLimitResponse}. */
|
|
172
|
+
onDenied?: (error: FreeRouteLimitError, args: TArgs) => Response | Promise<Response>;
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Wrap an authenticated, unmetered, compute-bearing route handler in its
|
|
176
|
+
* budget. The limit is applied BEFORE the handler is entered — including
|
|
177
|
+
* before the request body is read — so a refused call costs a KV read, not the
|
|
178
|
+
* compute the route exists to do.
|
|
179
|
+
*
|
|
180
|
+
* The handler's own response is returned untouched: this never rewrites status,
|
|
181
|
+
* body or headers on the success path, so it cannot break a streaming or
|
|
182
|
+
* pre-built response.
|
|
183
|
+
*
|
|
184
|
+
* `TArgs` is the router's handler-argument object (react-router's
|
|
185
|
+
* `ActionFunctionArgs`, or any single-object shape a product uses).
|
|
186
|
+
*/
|
|
187
|
+
export declare function withFreeRouteLimit<TArgs>(options: WithFreeRouteLimitOptions<TArgs>, handler: (args: TArgs) => Response | Promise<Response>): (args: TArgs) => Promise<Response>;
|