@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,216 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What an app does after the platform hands back a sandbox it cannot use.
|
|
3
|
+
*
|
|
4
|
+
* `replaceUnbringableBox` (see `./index`) decides whether to abandon a dead box.
|
|
5
|
+
* This decides everything around that: which box key the next attempt uses,
|
|
6
|
+
* whether the old box's snapshot is safe to restore from, whether an owner has
|
|
7
|
+
* to confirm the loss first, and what the person waiting is told. It is
|
|
8
|
+
* bookkeeping, not I/O — the app supplies storage through
|
|
9
|
+
* {@link WorkspaceSandboxRecoveryStore}.
|
|
10
|
+
*
|
|
11
|
+
* ── Why the tables ──────────────────────────────────────────────────────────
|
|
12
|
+
* Every fact about an action or a code lives in ACTIONS/CODES below, and the
|
|
13
|
+
* types are DERIVED from those tables. That is deliberate, and it is the whole
|
|
14
|
+
* reliability argument for this module.
|
|
15
|
+
*
|
|
16
|
+
* The hand-maintained alternative — a union type plus a separate `x === 'a' ||
|
|
17
|
+
* x === 'b' || …` list per question — silently drops anything not on the list.
|
|
18
|
+
* A recovery recorded under an unlisted action is written to storage, read
|
|
19
|
+
* back, discarded as malformed, and the workspace re-provisions the box it just
|
|
20
|
+
* abandoned. Nothing throws. The fix looks correct, ships, and does nothing.
|
|
21
|
+
* That failure was hit twice inside one change before this module existed.
|
|
22
|
+
*
|
|
23
|
+
* With the tables, adding an action or code is a compile error until every
|
|
24
|
+
* question about it is answered. There is no list to forget.
|
|
25
|
+
*/
|
|
26
|
+
/** The box exists and still holds unsnapshotted state, so discarding it is an
|
|
27
|
+
* owner's decision, not the runtime's. */
|
|
28
|
+
export declare const EGRESS_PROXY_RECOVERY_REQUIRED = "EGRESS_PROXY_RECOVERY_REQUIRED";
|
|
29
|
+
export declare const EGRESS_PROXY_RECOVERY_PHASE = "egress_proxy_recovery";
|
|
30
|
+
/** The platform no longer has the box. Nothing to confirm, delete, or restore. */
|
|
31
|
+
export declare const WORKSPACE_SANDBOX_MISSING = "WORKSPACE_SANDBOX_MISSING";
|
|
32
|
+
/** The box exists but its host has no free slot, so it can never be resumed
|
|
33
|
+
* where it is. A replacement can be placed on a host with room. */
|
|
34
|
+
export declare const WORKSPACE_SANDBOX_HOST_EXHAUSTED = "WORKSPACE_SANDBOX_HOST_EXHAUSTED";
|
|
35
|
+
/** The platform ran its own recovery, failed, and asked for a replacement.
|
|
36
|
+
* Covers every way a box ends up unbringable with no more specific cause. */
|
|
37
|
+
export declare const WORKSPACE_SANDBOX_UNRECOVERABLE = "WORKSPACE_SANDBOX_UNRECOVERABLE";
|
|
38
|
+
export declare const WORKSPACE_SANDBOX_SNAPSHOT_MAX_AGE_MS: number;
|
|
39
|
+
/**
|
|
40
|
+
* Every recovery cause, and the one thing the runtime must know about each:
|
|
41
|
+
* whether the box it names can still be read from.
|
|
42
|
+
*
|
|
43
|
+
* `snapshotUsable: false` is not a preference. A snapshot is addressed by the
|
|
44
|
+
* sandbox it was taken from, so when that sandbox cannot be started the restore
|
|
45
|
+
* fails exactly the way the resume did — and an app that tried it would turn a
|
|
46
|
+
* recoverable workspace into a stuck one.
|
|
47
|
+
*/
|
|
48
|
+
declare const CODES: {
|
|
49
|
+
readonly EGRESS_PROXY_RECOVERY_REQUIRED: {
|
|
50
|
+
readonly snapshotUsable: true;
|
|
51
|
+
};
|
|
52
|
+
readonly WORKSPACE_SANDBOX_MISSING: {
|
|
53
|
+
readonly snapshotUsable: false;
|
|
54
|
+
};
|
|
55
|
+
readonly WORKSPACE_SANDBOX_HOST_EXHAUSTED: {
|
|
56
|
+
readonly snapshotUsable: false;
|
|
57
|
+
};
|
|
58
|
+
readonly WORKSPACE_SANDBOX_UNRECOVERABLE: {
|
|
59
|
+
readonly snapshotUsable: false;
|
|
60
|
+
};
|
|
61
|
+
};
|
|
62
|
+
export type WorkspaceSandboxRecoveryCode = keyof typeof CODES;
|
|
63
|
+
/**
|
|
64
|
+
* Every recovery action, and whether it means a replacement box has been
|
|
65
|
+
* CHOSEN — the single question that decides which box key the next provisioning
|
|
66
|
+
* attempt uses.
|
|
67
|
+
*
|
|
68
|
+
* `replacementChosen: false` covers the states where a key may be recorded but
|
|
69
|
+
* must not be used yet: an owner has been asked and has not answered, or has
|
|
70
|
+
* answered no. Handing back a key in those states replaces a box the owner
|
|
71
|
+
* declined to lose.
|
|
72
|
+
*/
|
|
73
|
+
declare const ACTIONS: {
|
|
74
|
+
readonly confirmation_required: {
|
|
75
|
+
readonly replacementChosen: false;
|
|
76
|
+
};
|
|
77
|
+
readonly deletion_declined: {
|
|
78
|
+
readonly replacementChosen: false;
|
|
79
|
+
};
|
|
80
|
+
readonly replacement_authorized: {
|
|
81
|
+
readonly replacementChosen: false;
|
|
82
|
+
};
|
|
83
|
+
readonly snapshot_replacement_authorized: {
|
|
84
|
+
readonly replacementChosen: false;
|
|
85
|
+
};
|
|
86
|
+
readonly replacement_started: {
|
|
87
|
+
readonly replacementChosen: true;
|
|
88
|
+
};
|
|
89
|
+
readonly replacement_completed: {
|
|
90
|
+
readonly replacementChosen: true;
|
|
91
|
+
};
|
|
92
|
+
readonly snapshot_replacement_started: {
|
|
93
|
+
readonly replacementChosen: true;
|
|
94
|
+
};
|
|
95
|
+
readonly snapshot_restore_failed: {
|
|
96
|
+
readonly replacementChosen: true;
|
|
97
|
+
};
|
|
98
|
+
readonly snapshot_replacement_completed: {
|
|
99
|
+
readonly replacementChosen: true;
|
|
100
|
+
};
|
|
101
|
+
readonly missing_replacement_started: {
|
|
102
|
+
readonly replacementChosen: true;
|
|
103
|
+
};
|
|
104
|
+
readonly missing_replacement_completed: {
|
|
105
|
+
readonly replacementChosen: true;
|
|
106
|
+
};
|
|
107
|
+
readonly unrecoverable_replacement_started: {
|
|
108
|
+
readonly replacementChosen: true;
|
|
109
|
+
};
|
|
110
|
+
readonly unrecoverable_replacement_completed: {
|
|
111
|
+
readonly replacementChosen: true;
|
|
112
|
+
};
|
|
113
|
+
};
|
|
114
|
+
export type WorkspaceSandboxRecoveryAction = keyof typeof ACTIONS;
|
|
115
|
+
export type WorkspaceSandboxSnapshotAvailability = 'available' | 'missing' | 'stale';
|
|
116
|
+
export type WorkspaceSandboxSnapshotFreshness = 'fresh' | 'stale' | 'unknown';
|
|
117
|
+
/** A snapshot the app took of a box, addressed by the box it came from. */
|
|
118
|
+
export interface WorkspaceSandboxSnapshot {
|
|
119
|
+
fromSandboxId: string;
|
|
120
|
+
createdAt: string;
|
|
121
|
+
[key: string]: unknown;
|
|
122
|
+
}
|
|
123
|
+
export interface WorkspaceSandboxSnapshotAssessment {
|
|
124
|
+
availability: WorkspaceSandboxSnapshotAvailability;
|
|
125
|
+
freshness: WorkspaceSandboxSnapshotFreshness;
|
|
126
|
+
snapshot?: WorkspaceSandboxSnapshot;
|
|
127
|
+
}
|
|
128
|
+
export interface WorkspaceSandboxRecoveryState {
|
|
129
|
+
code: WorkspaceSandboxRecoveryCode;
|
|
130
|
+
sandboxId: string;
|
|
131
|
+
detectedAt: string;
|
|
132
|
+
snapshot: WorkspaceSandboxSnapshotAssessment;
|
|
133
|
+
action: WorkspaceSandboxRecoveryAction;
|
|
134
|
+
replacementBoxKey?: string;
|
|
135
|
+
replacementSandboxId?: string;
|
|
136
|
+
confirmedAt?: string;
|
|
137
|
+
}
|
|
138
|
+
export type WorkspaceSandboxRecoveryDecision = 'replace' | 'decline';
|
|
139
|
+
/** Raised when chat cannot continue until an owner decides about the box. */
|
|
140
|
+
export declare class WorkspaceSandboxRecoveryRequiredError extends Error {
|
|
141
|
+
readonly code = "EGRESS_PROXY_RECOVERY_REQUIRED";
|
|
142
|
+
readonly status = 409;
|
|
143
|
+
readonly phase = "egress_proxy_recovery";
|
|
144
|
+
readonly recovery: WorkspaceSandboxRecoveryState;
|
|
145
|
+
constructor(recovery: WorkspaceSandboxRecoveryState, cause: Error);
|
|
146
|
+
}
|
|
147
|
+
export declare function isEgressProxyRecoveryRequiredError(error: unknown): boolean;
|
|
148
|
+
export declare function isWorkspaceSandboxSnapshotRestoreError(error: unknown): boolean;
|
|
149
|
+
/**
|
|
150
|
+
* Judge a snapshot against the box being replaced.
|
|
151
|
+
*
|
|
152
|
+
* Fresh means BOTH that it came from this exact sandbox and that it is inside
|
|
153
|
+
* the age bound — a snapshot from a different box restores someone else's
|
|
154
|
+
* filesystem, which is worse than starting empty.
|
|
155
|
+
*/
|
|
156
|
+
export declare function assessWorkspaceSandboxSnapshot(snapshot: WorkspaceSandboxSnapshot | undefined, sandboxId: string, now?: number): WorkspaceSandboxSnapshotAssessment;
|
|
157
|
+
export declare function isWorkspaceSandboxRecoveryAction(value: unknown): value is WorkspaceSandboxRecoveryAction;
|
|
158
|
+
export declare function isWorkspaceSandboxRecoveryCode(value: unknown): value is WorkspaceSandboxRecoveryCode;
|
|
159
|
+
export declare function isWorkspaceSandboxRecoveryState(value: unknown): value is WorkspaceSandboxRecoveryState;
|
|
160
|
+
export declare function workspaceSandboxRecoveryFromError(error: unknown): WorkspaceSandboxRecoveryState | undefined;
|
|
161
|
+
/** What to tell the person waiting. Never names the product, so an app can
|
|
162
|
+
* surface it verbatim. */
|
|
163
|
+
export declare function workspaceSandboxRecoveryMessage(recovery: WorkspaceSandboxRecoveryState): string;
|
|
164
|
+
export declare function workspaceSandboxRecoveryRecommendedActions(recovery: WorkspaceSandboxRecoveryState): string[];
|
|
165
|
+
/** Flat key/value shape for a log line — no nesting, no secrets. */
|
|
166
|
+
export declare function workspaceSandboxRecoveryDiagnostic(recovery: WorkspaceSandboxRecoveryState): Record<string, string | undefined>;
|
|
167
|
+
/**
|
|
168
|
+
* The box key the next provisioning attempt should use, or undefined to keep
|
|
169
|
+
* using the workspace's own key.
|
|
170
|
+
*
|
|
171
|
+
* Reads {@link ACTIONS} rather than a hand-kept list, because the failure mode
|
|
172
|
+
* of a hand-kept list here is invisible: the key is recorded, silently ignored,
|
|
173
|
+
* and provisioning goes back to the box the app just decided to abandon.
|
|
174
|
+
*/
|
|
175
|
+
export declare function preferredWorkspaceSandboxRecoveryBoxKey(recovery: WorkspaceSandboxRecoveryState | undefined): string | undefined;
|
|
176
|
+
/** Whether the replacement should be restored from the old box's snapshot. */
|
|
177
|
+
export declare function shouldRestoreWorkspaceSandboxRecovery(recovery: WorkspaceSandboxRecoveryState | undefined): boolean;
|
|
178
|
+
/**
|
|
179
|
+
* Where an app keeps recovery state. One row per workspace, last write wins —
|
|
180
|
+
* a recovery is a current situation, not a history.
|
|
181
|
+
*/
|
|
182
|
+
export interface WorkspaceSandboxRecoveryStore {
|
|
183
|
+
read: (workspaceId: string) => Promise<WorkspaceSandboxRecoveryState | undefined>;
|
|
184
|
+
write: (workspaceId: string, recovery: WorkspaceSandboxRecoveryState) => Promise<void>;
|
|
185
|
+
}
|
|
186
|
+
export interface WorkspaceSandboxRecoveryManager {
|
|
187
|
+
read: (workspaceId: string) => Promise<WorkspaceSandboxRecoveryState | undefined>;
|
|
188
|
+
record: (workspaceId: string, recovery: WorkspaceSandboxRecoveryState) => Promise<void>;
|
|
189
|
+
/** Record an owner's decision. Returns undefined when the stored recovery does
|
|
190
|
+
* not name this sandbox — a decision about a box that has already been
|
|
191
|
+
* replaced must not resurrect it. */
|
|
192
|
+
decide: (args: {
|
|
193
|
+
workspaceId: string;
|
|
194
|
+
sandboxId: string;
|
|
195
|
+
decision: WorkspaceSandboxRecoveryDecision;
|
|
196
|
+
replacementBoxKey?: string;
|
|
197
|
+
}) => Promise<WorkspaceSandboxRecoveryState | undefined>;
|
|
198
|
+
/** Mark a replacement finished and name the box that took over. */
|
|
199
|
+
complete: (args: {
|
|
200
|
+
workspaceId: string;
|
|
201
|
+
replacementSandboxId: string;
|
|
202
|
+
}) => Promise<WorkspaceSandboxRecoveryState | undefined>;
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Bind the recovery bookkeeping to an app's storage.
|
|
206
|
+
*
|
|
207
|
+
* The app owns persistence — a D1 column, a KV key, a Postgres row — and
|
|
208
|
+
* nothing else. Every rule about which action means what stays here, so it
|
|
209
|
+
* cannot drift between apps.
|
|
210
|
+
*/
|
|
211
|
+
export declare function createWorkspaceSandboxRecoveryManager(store: WorkspaceSandboxRecoveryStore): WorkspaceSandboxRecoveryManager;
|
|
212
|
+
/** Every declared action, for exhaustiveness tests in apps and here. */
|
|
213
|
+
export declare const WORKSPACE_SANDBOX_RECOVERY_ACTIONS: readonly WorkspaceSandboxRecoveryAction[];
|
|
214
|
+
/** Every declared cause. */
|
|
215
|
+
export declare const WORKSPACE_SANDBOX_RECOVERY_CODES: readonly WorkspaceSandboxRecoveryCode[];
|
|
216
|
+
export {};
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Browser-direct scoped-token terminal connection route (#341/#349).
|
|
3
|
+
*
|
|
4
|
+
* Epic #343 / decision #341: the fleet's terminal transport is browser-direct
|
|
5
|
+
* — the product's server authenticates the request and provisions/resolves
|
|
6
|
+
* the sandbox exactly once, mints a short-lived SDK scoped token
|
|
7
|
+
* (`box.mintScopedToken`), and hands the browser just enough to connect
|
|
8
|
+
* `TerminalView` straight to the sidecar. No worker relays terminal bytes.
|
|
9
|
+
* The deprecated same-origin relay was removed in #350 after the fleet
|
|
10
|
+
* migrated, leaving this as the package's only terminal transport.
|
|
11
|
+
*
|
|
12
|
+
* VERIFIED PLATFORM CONTRACT (`@tangle-network/sandbox` 0.15.2 + the
|
|
13
|
+
* orchestrator/sidecar enforcement source, verified 2026-07-30):
|
|
14
|
+
*
|
|
15
|
+
* 1. Only a `scope: 'session-runtime'` token carries the `terminal`
|
|
16
|
+
* capability (`cap: ["read", "workspace", "terminal"]`). `'project'` and
|
|
17
|
+
* `'session'` mint SessionGateway READ tokens (HS256, `typ: "read"`, no
|
|
18
|
+
* `cap` claim at all — a different token family the sidecar rejects
|
|
19
|
+
* outright); `'read-only'` carries `cap: ["read"]` only. **No scope other
|
|
20
|
+
* than `'session-runtime'` can ever open a terminal**, which is why this
|
|
21
|
+
* route no longer takes `scope` as a parameter — it is pinned.
|
|
22
|
+
* 2. The orchestrator's terminal WS gate fails closed unless the token's
|
|
23
|
+
* `sid` claim EQUALS the `<connectionId>` path segment of
|
|
24
|
+
* `/terminals/<connectionId>/ws`
|
|
25
|
+
* (`verifyScopedSidecarCapability(sidecar, token, "terminal", connectionId)`).
|
|
26
|
+
* So `mintScopedToken({ scope: 'session-runtime', sessionId })` MUST be
|
|
27
|
+
* called with `sessionId === connectionId` — the exact id `TerminalView`
|
|
28
|
+
* will dial. That is why this route threads a `connectionId` end to end
|
|
29
|
+
* instead of deriving its own session id.
|
|
30
|
+
* 3. The browser-safe terminal base is the mint result's `sidecarProxyUrl`
|
|
31
|
+
* (`/v1/sidecar-proxy/{id}` on the Sandbox API) — **not**
|
|
32
|
+
* `box.connection.runtimeUrl`. The SDK's own `_attachTerminal` is the
|
|
33
|
+
* reference implementation:
|
|
34
|
+
* `mintScopedToken({ scope: 'session-runtime', sessionId: connectionId })`
|
|
35
|
+
* then dial `${scoped.sidecarProxyUrl}/terminals/${connectionId}/ws`.
|
|
36
|
+
* Pointing `TerminalView` at `runtimeUrl` fails auth regardless of scope —
|
|
37
|
+
* only the sidecar-proxy hop decodes the browser's
|
|
38
|
+
* `bearer.<base64url>` WS subprotocol.
|
|
39
|
+
*
|
|
40
|
+
* HISTORICAL NOTE: an earlier shape of this route (and legal-agent's
|
|
41
|
+
* production route it was modeled on, `scope: 'project'` +
|
|
42
|
+
* `connection.runtimeUrl`) predates the platform's terminal-auth hardening —
|
|
43
|
+
* the terminal capability gate (2026-06-19), the scoped-token terminal WS
|
|
44
|
+
* path (2026-07-15), and the `sid`-binding fail-closed check
|
|
45
|
+
* (2026-07-17/18). That shape does not authenticate on the current platform
|
|
46
|
+
* and is not a valid spec for the token path anymore.
|
|
47
|
+
*
|
|
48
|
+
* SECURITY POSTURE: unlike the read-only session-gateway streaming token
|
|
49
|
+
* (`box.mintScopedToken({scope:'session'})` paired with
|
|
50
|
+
* `SessionGatewayClient`), the token this route mints grants **command
|
|
51
|
+
* execution** in the sandbox once handed to `TerminalView`. Its safety rests
|
|
52
|
+
* on a **short TTL** (default 15 minutes, the SDK's own max — still a caller
|
|
53
|
+
* parameter) and, structurally, the narrowest scope the platform offers: one
|
|
54
|
+
* box (`ensureSandbox` resolved it for THIS user), one terminal connection
|
|
55
|
+
* (`session-runtime` bound to a single `sid`). Widening the TTL default
|
|
56
|
+
* without an explicit reason is a security regression, not a convenience.
|
|
57
|
+
*
|
|
58
|
+
* Wire contract: the browser passes the response's `sidecarUrl` as
|
|
59
|
+
* `TerminalView`'s `apiUrl` prop, `token` as its token prop, and the
|
|
60
|
+
* response's echoed `connectionId` as `TerminalView`'s `connectionId` prop —
|
|
61
|
+
* the token's `sid` is bound to exactly that id, so any other value fails the
|
|
62
|
+
* WS upgrade. sandbox-ui sends the token as a `bearer.<base64url>` WebSocket
|
|
63
|
+
* subprotocol (browsers cannot set `Authorization` on a WS handshake).
|
|
64
|
+
* `useSandboxTerminalConnection` (`../web-react/sandbox-terminal`) carries
|
|
65
|
+
* `connectionId` through automatically.
|
|
66
|
+
*/
|
|
67
|
+
/** The structural surface this route needs from an SDK sandbox box — no `@tangle-network/sandbox` class import (invariant 3). */
|
|
68
|
+
export interface TerminalConnectionBoxLike {
|
|
69
|
+
id: string;
|
|
70
|
+
status?: string;
|
|
71
|
+
connection?: {
|
|
72
|
+
runtimeUrl?: string;
|
|
73
|
+
};
|
|
74
|
+
mintScopedToken(opts: {
|
|
75
|
+
scope: string;
|
|
76
|
+
sessionId?: string;
|
|
77
|
+
ttlMinutes?: number;
|
|
78
|
+
}): Promise<{
|
|
79
|
+
token: string;
|
|
80
|
+
expiresAt: Date;
|
|
81
|
+
sidecarProxyUrl: string;
|
|
82
|
+
}>;
|
|
83
|
+
}
|
|
84
|
+
/** Configuration for {@link createSandboxTerminalConnectionRoute}. */
|
|
85
|
+
export interface SandboxTerminalConnectionRouteOptions<TBox extends TerminalConnectionBoxLike, TUser> {
|
|
86
|
+
/**
|
|
87
|
+
* Authenticate the incoming request. Return the authenticated user, or a
|
|
88
|
+
* `Response` to short-circuit the route (e.g. a 401) — that Response is
|
|
89
|
+
* returned to the caller verbatim.
|
|
90
|
+
*/
|
|
91
|
+
requireUser(request: Request): Promise<TUser | Response>;
|
|
92
|
+
/**
|
|
93
|
+
* Resolve (provisioning if needed) the sandbox this user's terminal should
|
|
94
|
+
* connect to. Domain-specific provisioning (workspace- vs user-scoped,
|
|
95
|
+
* naming, reuse) stays entirely in the product's implementation of this
|
|
96
|
+
* seam — the route only reacts to success/failure.
|
|
97
|
+
*/
|
|
98
|
+
ensureSandbox(user: TUser, request: Request): Promise<TBox>;
|
|
99
|
+
/** `box.mintScopedToken` TTL in minutes. Default `15` (the SDK's own max). */
|
|
100
|
+
ttlMinutes?: number;
|
|
101
|
+
/**
|
|
102
|
+
* Resolve the terminal connection id the minted token's `sid` is bound to
|
|
103
|
+
* — this MUST be the same id `TerminalView` dials
|
|
104
|
+
* (`tabTerminalConnectionId()`), because the orchestrator's terminal WS
|
|
105
|
+
* gate fails closed unless `sid === <connectionId>` in
|
|
106
|
+
* `/terminals/<connectionId>/ws`.
|
|
107
|
+
*
|
|
108
|
+
* `requested` is `new URL(request.url).searchParams.get('connectionId')`.
|
|
109
|
+
* The default resolver returns `requested` unchanged. A product may
|
|
110
|
+
* validate/namespace the id here (e.g. a per-user prefix in a shared box)
|
|
111
|
+
* — if it rewrites the id, the client MUST use the response's echoed
|
|
112
|
+
* `connectionId`, since the sid binding makes any other id fail the WS
|
|
113
|
+
* upgrade.
|
|
114
|
+
*
|
|
115
|
+
* A resolved falsy/empty value fails the request with a 400 before any
|
|
116
|
+
* sandbox work happens.
|
|
117
|
+
*/
|
|
118
|
+
resolveConnectionId?: (ctx: {
|
|
119
|
+
request: Request;
|
|
120
|
+
user: TUser;
|
|
121
|
+
box: TBox;
|
|
122
|
+
requested: string | null;
|
|
123
|
+
}) => string | null | undefined | Promise<string | null | undefined>;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Build the browser-direct terminal connection route: `GET` handler that
|
|
127
|
+
* authenticates, resolves the sandbox, mints a scoped token pinned to
|
|
128
|
+
* `scope: 'session-runtime'` (the ONLY scope the platform grants the
|
|
129
|
+
* `terminal` capability to), and returns exactly what the browser needs to
|
|
130
|
+
* connect `TerminalView` directly to the sidecar — no worker in the data
|
|
131
|
+
* path once the terminal is open.
|
|
132
|
+
*
|
|
133
|
+
* Response shapes:
|
|
134
|
+
* - `requireUser` returns a `Response` → that `Response`, verbatim.
|
|
135
|
+
* - `ensureSandbox` throws → `500 {error}` (the thrown message surfaced).
|
|
136
|
+
* - `box.connection?.runtimeUrl` missing → `503 {error, status: box.status}`
|
|
137
|
+
* — this is a READINESS gate only; the URL returned to the client on
|
|
138
|
+
* success is always the mint's `sidecarProxyUrl`, never `runtimeUrl`.
|
|
139
|
+
* - resolved connection id is falsy/empty → `400 {error}`.
|
|
140
|
+
* - `box.mintScopedToken` rejects → `503 {error}`.
|
|
141
|
+
* - success → `200 {sidecarUrl, token, expiresAt, status, sandboxId, connectionId}`.
|
|
142
|
+
* `connectionId` is the id the token's `sid` is bound to — the client MUST
|
|
143
|
+
* hand this (not its own) to `TerminalView`.
|
|
144
|
+
*/
|
|
145
|
+
export declare function createSandboxTerminalConnectionRoute<TBox extends TerminalConnectionBoxLike, TUser>(opts: SandboxTerminalConnectionRouteOptions<TBox, TUser>): (request: Request) => Promise<Response>;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/** Define the shape of a workspace sandbox instance including its connection details and status. */
|
|
2
|
+
export interface WorkspaceSandboxInstanceLike {
|
|
3
|
+
id: string;
|
|
4
|
+
name?: string;
|
|
5
|
+
status?: string;
|
|
6
|
+
connection?: {
|
|
7
|
+
runtimeUrl?: string;
|
|
8
|
+
sidecarUrl?: string;
|
|
9
|
+
authToken?: string;
|
|
10
|
+
sidecarToken?: string;
|
|
11
|
+
authTokenExpiresAt?: string;
|
|
12
|
+
} | null;
|
|
13
|
+
}
|
|
14
|
+
/** Define the context containing workspace and user identifiers for sandbox environment operations. */
|
|
15
|
+
export interface WorkspaceSandboxEnsureContext {
|
|
16
|
+
workspaceId: string;
|
|
17
|
+
userId: string;
|
|
18
|
+
}
|
|
19
|
+
/** Define configuration options for managing workspace sandboxes. */
|
|
20
|
+
export interface WorkspaceSandboxManagerOptions<TClient, TBox extends WorkspaceSandboxInstanceLike, TEnsureOptions = void> {
|
|
21
|
+
getClient: (ctx: WorkspaceSandboxEnsureContext) => Promise<TClient> | TClient;
|
|
22
|
+
nameForWorkspace: (workspaceId: string, ctx: WorkspaceSandboxEnsureContext) => string;
|
|
23
|
+
listSandboxes: (client: TClient, ctx: WorkspaceSandboxEnsureContext) => Promise<TBox[]>;
|
|
24
|
+
createSandbox: (args: {
|
|
25
|
+
client: TClient;
|
|
26
|
+
ctx: WorkspaceSandboxEnsureContext;
|
|
27
|
+
name: string;
|
|
28
|
+
options: TEnsureOptions;
|
|
29
|
+
listError?: unknown;
|
|
30
|
+
}) => Promise<TBox>;
|
|
31
|
+
waitForRunning?: (box: TBox, ctx: WorkspaceSandboxEnsureContext) => Promise<void>;
|
|
32
|
+
prepareExisting?: (box: TBox, ctx: WorkspaceSandboxEnsureContext, options: TEnsureOptions) => Promise<TBox | void>;
|
|
33
|
+
prepareCreated?: (box: TBox, ctx: WorkspaceSandboxEnsureContext, options: TEnsureOptions) => Promise<TBox | void>;
|
|
34
|
+
onListError?: (error: unknown, ctx: WorkspaceSandboxEnsureContext) => void;
|
|
35
|
+
}
|
|
36
|
+
/** Manage workspace sandboxes by ensuring their creation and retrieval for specified users. */
|
|
37
|
+
export interface WorkspaceSandboxManager<TBox extends WorkspaceSandboxInstanceLike, TEnsureOptions = void> {
|
|
38
|
+
ensureWorkspaceSandbox: (workspaceId: string, userId: string, options?: TEnsureOptions) => Promise<TBox>;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Create a generic name-keyed sandbox lifecycle manager for products that
|
|
42
|
+
* drive their own SDK or box types.
|
|
43
|
+
*/
|
|
44
|
+
export declare function createWorkspaceSandboxManager<TClient, TBox extends WorkspaceSandboxInstanceLike, TEnsureOptions = void>(opts: WorkspaceSandboxManagerOptions<TClient, TBox, TEnsureOptions>): WorkspaceSandboxManager<TBox, TEnsureOptions>;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Maps one validated `SequenceOperation` to `SequenceStore` calls and reports
|
|
3
|
+
* what changed. Each call re-validates its single operation against the
|
|
4
|
+
* provided timeline — a dispatcher that skips batch validation still cannot
|
|
5
|
+
* reach the store with an invalid write. The timeline must be the CURRENT
|
|
6
|
+
* state: dispatchers applying a batch refresh it between operations so later
|
|
7
|
+
* operations can reference entities earlier ones created.
|
|
8
|
+
*
|
|
9
|
+
* Split assumes source frames advance 1:1 with sequence frames (the model
|
|
10
|
+
* addresses source in/out points at sequence fps); time-remapped clips are
|
|
11
|
+
* outside this operation vocabulary.
|
|
12
|
+
*/
|
|
13
|
+
import type { SequenceClip, SequenceExportRecord, SequenceMeta, SequenceTimeline, SequenceTrack } from './model';
|
|
14
|
+
import type { SequenceOperation } from './operations';
|
|
15
|
+
import type { SequenceStore } from './store';
|
|
16
|
+
import type { SequenceOperationContext } from './validate';
|
|
17
|
+
/**
|
|
18
|
+
* The entity an operation changed, for the MCP layer to serialize back to the
|
|
19
|
+
* agent. Conventions for multi-entity operations:
|
|
20
|
+
* - `split_clip` returns the newly created second half (the first half is the
|
|
21
|
+
* original clip id with a shortened duration).
|
|
22
|
+
* - `delete_clip` returns the pre-delete clip snapshot.
|
|
23
|
+
*/
|
|
24
|
+
export type SequenceApplyResult = {
|
|
25
|
+
kind: 'clip';
|
|
26
|
+
clip: SequenceClip;
|
|
27
|
+
} | {
|
|
28
|
+
kind: 'track';
|
|
29
|
+
track: SequenceTrack;
|
|
30
|
+
} | {
|
|
31
|
+
kind: 'export';
|
|
32
|
+
record: SequenceExportRecord;
|
|
33
|
+
} | {
|
|
34
|
+
kind: 'sequence';
|
|
35
|
+
sequence: SequenceMeta;
|
|
36
|
+
};
|
|
37
|
+
/**
|
|
38
|
+
* The batch path every dispatcher (the MCP tools, a product's editor
|
|
39
|
+
* persistence route) funnels through: fetch the timeline, validate the WHOLE
|
|
40
|
+
* batch against pre-state, then apply in order with a timeline refresh between
|
|
41
|
+
* operations — later operations must see earlier writes (the static-validation
|
|
42
|
+
* boundary in ./validate).
|
|
43
|
+
*
|
|
44
|
+
* Atomicity contract: validation throws (before the first store write) leave
|
|
45
|
+
* the sequence untouched. Store-layer throws after at least one successful
|
|
46
|
+
* write leave a prefix-committed state — operations 1..N-1 are persisted,
|
|
47
|
+
* operations N..end are not. The store is non-transactional (SQLite D1);
|
|
48
|
+
* callers that receive a partial-commit throw must treat the result as partial
|
|
49
|
+
* success, not a full rollback. Decision-log rows are the caller's job: the
|
|
50
|
+
* MCP layer records `agent_edit`, an editor route records `human_edit`.
|
|
51
|
+
*/
|
|
52
|
+
export declare function applySequenceOperations(store: SequenceStore, operations: SequenceOperation[], ctx: SequenceOperationContext): Promise<SequenceApplyResult[]>;
|
|
53
|
+
/** Apply a sequence operation to update the store and timeline asynchronously */
|
|
54
|
+
export declare function applySequenceOperation(store: SequenceStore, timeline: SequenceTimeline, op: SequenceOperation, ctx: SequenceOperationContext): Promise<SequenceApplyResult>;
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Caption planning — pure, server-safe helpers that turn transcripts into
|
|
3
|
+
* frame-typed caption chunks and answer "are captions complete?" per language.
|
|
4
|
+
* No store access, no React, no provider coupling: products feed transcript
|
|
5
|
+
* segments in (from any transcription provider) and get chunk bounds out,
|
|
6
|
+
* ready to become `add_caption` operations.
|
|
7
|
+
*
|
|
8
|
+
* All outputs are integer frames at the sequence fps. Seconds appear only on
|
|
9
|
+
* the transcript-segment inputs, because that is what transcription providers
|
|
10
|
+
* emit; the conversion happens exactly once, here.
|
|
11
|
+
*/
|
|
12
|
+
import { type SequenceTimeline, type TimelineInterval } from './model';
|
|
13
|
+
/** Server twin of `TranscriptionSegment` (../sequences-react/contracts) —
|
|
14
|
+
* structurally identical so react-side transcription output feeds
|
|
15
|
+
* `buildCaptionChunks` without mapping. Keep the shapes in lockstep. */
|
|
16
|
+
export interface TranscriptSegment {
|
|
17
|
+
text: string;
|
|
18
|
+
startSeconds: number;
|
|
19
|
+
endSeconds: number;
|
|
20
|
+
}
|
|
21
|
+
/** One caption clip's worth of text with its timeline bounds. */
|
|
22
|
+
export interface CaptionChunk {
|
|
23
|
+
text: string;
|
|
24
|
+
startFrame: number;
|
|
25
|
+
durationFrames: number;
|
|
26
|
+
}
|
|
27
|
+
/** Define options to configure caption chunk size, duration, and frame rate constraints */
|
|
28
|
+
export interface BuildCaptionChunksOptions {
|
|
29
|
+
/** Upper bound on words per caption; segments split on word boundaries. */
|
|
30
|
+
maxWordsPerChunk?: number;
|
|
31
|
+
/** Readability floor — chunks shorter than this are extended, never
|
|
32
|
+
* overlapped: the following chunk's start is pushed forward instead. */
|
|
33
|
+
minDurationSeconds?: number;
|
|
34
|
+
fps: number;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Split transcript segments into caption chunks. Within each segment, time is
|
|
38
|
+
* apportioned to chunks by word count (a constant words-per-second estimate).
|
|
39
|
+
* Guarantees, across the WHOLE output regardless of segment boundaries:
|
|
40
|
+
*
|
|
41
|
+
* - starts are strictly increasing and chunks never overlap
|
|
42
|
+
* - every chunk lasts at least the min-duration clamp (and at least
|
|
43
|
+
* `MIN_SEQUENCE_CLIP_FRAMES`)
|
|
44
|
+
* - a chunk may extend past its segment's end by at most the clamp — the cost
|
|
45
|
+
* of the readability floor on short tails
|
|
46
|
+
*
|
|
47
|
+
* Whitespace-only segments produce no chunks. Segments may arrive unsorted
|
|
48
|
+
* (providers emit per-channel batches); they are ordered by start before
|
|
49
|
+
* chunking so the no-overlap guarantee holds.
|
|
50
|
+
*/
|
|
51
|
+
export declare function buildCaptionChunks(segments: TranscriptSegment[], opts: BuildCaptionChunksOptions): CaptionChunk[];
|
|
52
|
+
/**
|
|
53
|
+
* Normalize a BCP-47 tag to conventional casing: primary subtag lowercase,
|
|
54
|
+
* 4-letter script subtags Title Case, 2-letter region subtags UPPER, all other
|
|
55
|
+
* subtags lowercase. Throws on empty or structurally invalid tags.
|
|
56
|
+
*/
|
|
57
|
+
export declare function normalizeLanguageTag(tag: string): string;
|
|
58
|
+
/** Define options to specify target languages and an optional source language for fan-out operations */
|
|
59
|
+
export interface LanguageFanoutOptions {
|
|
60
|
+
languages: string[];
|
|
61
|
+
/** Excluded from the plan (exact normalized match only — 'en' does not
|
|
62
|
+
* exclude 'en-US'; a regional variant of the source is still a valid
|
|
63
|
+
* fan-out target). */
|
|
64
|
+
sourceLanguage?: string;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Plan which caption languages to generate: normalized, deduped (first
|
|
68
|
+
* occurrence wins), source excluded. Throws on an empty request or any
|
|
69
|
+
* invalid tag — a malformed fan-out request must fail before any generation
|
|
70
|
+
* is queued. Returns [] when every requested language IS the source; the
|
|
71
|
+
* caller reports "nothing to fan out" rather than erroring.
|
|
72
|
+
*/
|
|
73
|
+
export declare function planLanguageFanout(opts: LanguageFanoutOptions): string[];
|
|
74
|
+
/** Coverage for one caption language across the sequence. `language` is the
|
|
75
|
+
* clip's stored tag verbatim (no normalization — coverage reports what is
|
|
76
|
+
* actually on the timeline); null groups caption clips with no tag. */
|
|
77
|
+
export interface CaptionCoverageEntry {
|
|
78
|
+
language: string | null;
|
|
79
|
+
coveredFrames: number;
|
|
80
|
+
totalFrames: number;
|
|
81
|
+
/** Uncovered intervals, ascending; endFrame exclusive. */
|
|
82
|
+
gaps: TimelineInterval[];
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Per-language caption coverage over [0, durationFrames). A frame counts as
|
|
86
|
+
* covered when an enabled, non-empty-text clip on a caption-kind track spans
|
|
87
|
+
* it. Overlapping clips merge (no double counting). Returns one entry per
|
|
88
|
+
* distinct language, null first then lexicographic; [] when the timeline has
|
|
89
|
+
* no caption clips at all.
|
|
90
|
+
*/
|
|
91
|
+
export declare function captionCoverage(timeline: SequenceTimeline): CaptionCoverageEntry[];
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Drizzle-backed `SequenceStore` over the tables from `createSequenceTables`.
|
|
3
|
+
* Works against any SQLite drizzle driver (better-sqlite3, D1, libsql) — the
|
|
4
|
+
* builders are awaited, never `.run()`/`.all()`, so sync and async drivers
|
|
5
|
+
* behave identically.
|
|
6
|
+
*
|
|
7
|
+
* Defense in depth: RBAC runs before the store is constructed, but every
|
|
8
|
+
* query still pins `workspaceId` AND `sequenceId` from the scope in its WHERE
|
|
9
|
+
* clause, so a leaked or attacker-supplied row id from another workspace can
|
|
10
|
+
* never read or write across the boundary — it surfaces as "not found".
|
|
11
|
+
*
|
|
12
|
+
* Store-level invariants (everything richer lives in the operation
|
|
13
|
+
* validator): frame fields must be non-negative integers, clip durations at
|
|
14
|
+
* least `MIN_SEQUENCE_CLIP_FRAMES`, and the sequence duration can never
|
|
15
|
+
* shrink below the last clip end. Every mutation bumps `sequence.updatedAt`
|
|
16
|
+
* so workspace recency sorts stay truthful.
|
|
17
|
+
*/
|
|
18
|
+
import type { BaseSQLiteDatabase } from 'drizzle-orm/sqlite-core';
|
|
19
|
+
import { type SequenceClipMedia } from './model';
|
|
20
|
+
import type { SequenceStore, SequenceStoreScope } from './store';
|
|
21
|
+
import type { SequenceClipRow, SequenceTables } from './schema';
|
|
22
|
+
/** Any SQLite drizzle database — `any` erases the driver-specific run-result
|
|
23
|
+
* and schema generics so better-sqlite3, D1, and libsql handles all fit. */
|
|
24
|
+
export type SequenceDatabase = BaseSQLiteDatabase<'sync' | 'async', any, any>;
|
|
25
|
+
/** Resolves product-specific media (generation rows, asset rows) for a batch
|
|
26
|
+
* of clip rows. Keyed by clip id; clips absent from the map carry no media. */
|
|
27
|
+
export type SequenceMediaResolver = (clipRows: SequenceClipRow[]) => Promise<Map<string, SequenceClipMedia>>;
|
|
28
|
+
/** Define options for creating a Drizzle sequence store including database, tables, scope, and media resolver */
|
|
29
|
+
export interface CreateDrizzleSequenceStoreOptions {
|
|
30
|
+
db: SequenceDatabase;
|
|
31
|
+
tables: SequenceTables;
|
|
32
|
+
scope: SequenceStoreScope;
|
|
33
|
+
resolveMedia?: SequenceMediaResolver;
|
|
34
|
+
}
|
|
35
|
+
/** Create a sequence store scoped to a specific sequence and workspace with database access and media resolution */
|
|
36
|
+
export declare function createDrizzleSequenceStore(options: CreateDrizzleSequenceStoreOptions): SequenceStore;
|