@tangle-network/agent-app 0.45.54 → 0.45.56
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/index.js +3 -3
- 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/index.js +2 -2
- 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 +89 -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/index.js +6 -2
- package/dist/chat-routes/index.js.map +1 -1
- 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/{chunk-PVP57G3S.js → chunk-2IFGVBNI.js} +2 -2
- package/dist/{chunk-MQO5ML66.js → chunk-KJ2Q27U7.js} +2 -2
- package/dist/{chunk-CCVG2TL6.js → chunk-YNMPMW3G.js} +64 -2
- package/dist/chunk-YNMPMW3G.js.map +1 -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/index.js +3 -3
- package/dist/web-react/inert.d.ts +39 -0
- package/dist/web-react/insight-card.d.ts +203 -0
- package/dist/web-react/interaction-card-support.d.ts +115 -0
- package/dist/web-react/interaction-plan-card.d.ts +39 -0
- package/dist/web-react/interaction-question-card.d.ts +100 -0
- package/dist/web-react/message-attachments.d.ts +56 -0
- package/dist/web-react/mission-activity.d.ts +96 -0
- package/dist/web-react/motion.d.ts +43 -0
- package/dist/web-react/provenance-model.d.ts +195 -0
- package/dist/web-react/provenance.d.ts +82 -0
- package/dist/web-react/provider-logo.d.ts +14 -0
- package/dist/web-react/record-grid-model.d.ts +257 -0
- package/dist/web-react/record-grid.d.ts +108 -0
- package/dist/web-react/sandbox-terminal.d.ts +90 -0
- package/dist/web-react/seat-paywall.d.ts +47 -0
- package/dist/web-react/session-history.d.ts +196 -0
- package/dist/web-react/smooth-text.d.ts +29 -0
- package/dist/web-react/sparkline.d.ts +150 -0
- package/dist/web-react/terminal.d.ts +1 -92
- package/dist/web-react/use-chat-interactions.d.ts +78 -0
- package/dist/web-react/use-composer-attachments.d.ts +111 -0
- package/dist/web-react/use-file-mentions.d.ts +94 -0
- package/dist/web-react/work-product.d.ts +105 -0
- package/dist/work-product/claim-support.d.ts +288 -0
- package/dist/work-product/index.d.ts +16 -849
- package/dist/work-product/provenance.d.ts +61 -0
- package/dist/{queue-VTBA5ONX.d.ts → work-product/queue.d.ts} +10 -12
- package/dist/work-product/quote.d.ts +139 -0
- package/dist/work-product/route.d.ts +88 -0
- package/dist/work-product/service.d.ts +123 -0
- package/dist/work-product/tools.d.ts +144 -0
- package/dist/{types-CCeYywdS.d.ts → work-product/types.d.ts} +29 -31
- package/dist/work-product-react/index.d.ts +19 -8
- package/dist/workspace-react/index.d.ts +8 -11
- package/package.json +4 -3
- package/dist/agent-session-controls-CmlXwp_H.d.ts +0 -384
- package/dist/apply-6wlMOLf8.d.ts +0 -280
- package/dist/attachment-validation-BfJDBU1g.d.ts +0 -261
- package/dist/budget-BOucfcb_.d.ts +0 -142
- package/dist/chunk-CCVG2TL6.js.map +0 -1
- package/dist/values-C7RidJuI.d.ts +0 -156
- /package/dist/{chunk-PVP57G3S.js.map → chunk-2IFGVBNI.js.map} +0 -0
- /package/dist/{chunk-MQO5ML66.js.map → chunk-KJ2Q27U7.js.map} +0 -0
|
@@ -0,0 +1,466 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The vocabulary of consumer-side spend verification.
|
|
3
|
+
*
|
|
4
|
+
* Kept in its own module with ZERO imports so a product can type its storage
|
|
5
|
+
* rows and its reconciliation config without pulling in `node:fs` through the
|
|
6
|
+
* CLI half.
|
|
7
|
+
*
|
|
8
|
+
* The model in one paragraph: the platform's ledger is authoritative about what
|
|
9
|
+
* was CHARGED. A product knows something the ledger does not — what it ASKED
|
|
10
|
+
* for. Recording that second view, and diffing it against the first, is what
|
|
11
|
+
* turns a platform billing defect from silent money into an alert. Nothing here
|
|
12
|
+
* lets a product self-certify a charge away; the output is a discrepancy a human
|
|
13
|
+
* disputes.
|
|
14
|
+
*/
|
|
15
|
+
/**
|
|
16
|
+
* One box, as the PRODUCT understands it. Folded, not an append-only log: a
|
|
17
|
+
* product runs one row per sandbox, and every field below is derived by a
|
|
18
|
+
* monotonic fold (see `foldSpendBoxRecord`) so two concurrent writers cannot
|
|
19
|
+
* produce a wrong answer, only a stale one.
|
|
20
|
+
*
|
|
21
|
+
* Timestamps are epoch ms throughout, matching the platform's own
|
|
22
|
+
* `sandbox_meta.last_started_at`.
|
|
23
|
+
*/
|
|
24
|
+
export interface SpendBoxRecord {
|
|
25
|
+
/** The platform's sandbox id — the join key to every settlement row. */
|
|
26
|
+
readonly sandboxId: string;
|
|
27
|
+
/** The product's own tenancy unit, which the platform does not model. */
|
|
28
|
+
readonly workspaceId: string;
|
|
29
|
+
/** First moment the product knew this box existed. */
|
|
30
|
+
readonly createdAt: number;
|
|
31
|
+
/**
|
|
32
|
+
* The idle timeout the product ASKED the platform for, seconds. This is the
|
|
33
|
+
* width of the grace window between the last thing the product saw and the
|
|
34
|
+
* moment the platform should have stopped billing.
|
|
35
|
+
*/
|
|
36
|
+
readonly idleTimeoutSeconds: number;
|
|
37
|
+
/**
|
|
38
|
+
* The maximum lifetime the product asked for, seconds, when it asked for one.
|
|
39
|
+
* This is the strongest bound a product holds: the platform destroys the box
|
|
40
|
+
* at `createdAt + maxLifetimeSeconds` regardless of what the product observed,
|
|
41
|
+
* so it caps the ceiling even when nothing else can (see `computeExpectedCeiling`).
|
|
42
|
+
*/
|
|
43
|
+
readonly maxLifetimeSeconds: number | null;
|
|
44
|
+
/** Latest moment the product OBSERVED the box doing work. */
|
|
45
|
+
readonly lastActivityAt: number;
|
|
46
|
+
/**
|
|
47
|
+
* Detached runs dispatched but never observed to finish, by run id.
|
|
48
|
+
*
|
|
49
|
+
* Non-empty means the product genuinely cannot bound this box from its own
|
|
50
|
+
* observations: it handed the platform work and disconnected. The ceiling
|
|
51
|
+
* degrades accordingly rather than pretending to a tightness it did not earn.
|
|
52
|
+
*/
|
|
53
|
+
readonly openDetachedRunIds: readonly string[];
|
|
54
|
+
/** When the product knows the box stopped. Cleared by later activity. */
|
|
55
|
+
readonly stoppedAt: number | null;
|
|
56
|
+
/** When the product knows the box was deleted. Set once — a deleted id never returns. */
|
|
57
|
+
readonly deletedAt: number | null;
|
|
58
|
+
/** Opaque product-column values, written verbatim and never read here. */
|
|
59
|
+
readonly extras?: Record<string, unknown>;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* A fold step. Every field states its own merge rule, so a SQL implementation
|
|
63
|
+
* can apply it in one statement and reach the same record an in-memory
|
|
64
|
+
* read-modify-write reaches.
|
|
65
|
+
*/
|
|
66
|
+
export interface SpendBoxPatch {
|
|
67
|
+
/** Advance `lastActivityAt` to the max of stored and this. Never moves backward. */
|
|
68
|
+
readonly observedActivityAt?: number;
|
|
69
|
+
/** Add a run id to `openDetachedRunIds` (set semantics — re-adding is a no-op). */
|
|
70
|
+
readonly openDetachedRunAdd?: string;
|
|
71
|
+
/** Remove a run id from `openDetachedRunIds`. Removing an absent id is a no-op. */
|
|
72
|
+
readonly openDetachedRunRemove?: string;
|
|
73
|
+
/**
|
|
74
|
+
* Latest-wins. Activity observed AFTER a recorded stop clears it: a box that
|
|
75
|
+
* worked after we thought it stopped is running again, and a stale stop would
|
|
76
|
+
* make the ceiling too tight.
|
|
77
|
+
*/
|
|
78
|
+
readonly stoppedAt?: number;
|
|
79
|
+
/** Set-once. A later delete observation does not move the first one. */
|
|
80
|
+
readonly deletedAt?: number;
|
|
81
|
+
}
|
|
82
|
+
/** Which fact bounds a box's billable time, weakest last. */
|
|
83
|
+
export type CeilingBasis =
|
|
84
|
+
/** The product observed deletion. Billing cannot run past a box that is gone. */
|
|
85
|
+
'deleted'
|
|
86
|
+
/** The product observed a stop. Billing should have closed there. */
|
|
87
|
+
| 'stopped'
|
|
88
|
+
/** No stop seen, but the platform destroys the box at its max lifetime. */
|
|
89
|
+
| 'max-lifetime'
|
|
90
|
+
/** No stop seen; the platform's idle timer is what should have closed billing. */
|
|
91
|
+
| 'idle-timeout'
|
|
92
|
+
/**
|
|
93
|
+
* An unfinished detached run and no max lifetime — the product cannot bound
|
|
94
|
+
* this box at all, so the ceiling degrades to the reconciliation instant.
|
|
95
|
+
* A finding on this basis is weak evidence and says so.
|
|
96
|
+
*/
|
|
97
|
+
| 'open-detached-run';
|
|
98
|
+
/** The upper bound on one box's billable duration, and what earned it. */
|
|
99
|
+
export interface ExpectedCeiling {
|
|
100
|
+
readonly sandboxId: string;
|
|
101
|
+
readonly basis: CeilingBasis;
|
|
102
|
+
/** The latest instant this box could still have been billable, epoch ms. */
|
|
103
|
+
readonly horizonAt: number;
|
|
104
|
+
/** `horizonAt - createdAt + toleranceMs`. The upper bound on billable ms. */
|
|
105
|
+
readonly ceilingMs: number;
|
|
106
|
+
readonly toleranceMs: number;
|
|
107
|
+
/**
|
|
108
|
+
* False when the basis is `open-detached-run` — the ceiling then rests on the
|
|
109
|
+
* reconciliation instant rather than on anything the product observed, so an
|
|
110
|
+
* overage means the platform billed outside the box's own lifetime, not merely
|
|
111
|
+
* longer than expected.
|
|
112
|
+
*/
|
|
113
|
+
readonly bounded: boolean;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* One settled ledger row, in the shape the platform's `credit_transactions`
|
|
117
|
+
* table stores it. The product supplies these through its own fetch (the
|
|
118
|
+
* platform's credit-history API, an export, a mirror) — this package never
|
|
119
|
+
* reaches for them, because the ledger is the counterparty's record and reading
|
|
120
|
+
* it is the product's authenticated business.
|
|
121
|
+
*
|
|
122
|
+
* The rows a product can fetch are scoped to the BILLING OWNER, not to the
|
|
123
|
+
* product: `product: 'sandbox'` is the platform's service taxonomy and every
|
|
124
|
+
* consumer app's compute wears it. So a wallet running two of our products
|
|
125
|
+
* returns both products' settlements, and telling them apart is
|
|
126
|
+
* {@link SpendOwnershipRule}'s job.
|
|
127
|
+
*/
|
|
128
|
+
export interface SettlementRow {
|
|
129
|
+
/** The ledger row id, for the dispute. */
|
|
130
|
+
readonly id: string;
|
|
131
|
+
/**
|
|
132
|
+
* `sandbox:<kind>:<sandboxId>:<intervalStartMs>` — the platform's idempotency
|
|
133
|
+
* key, and the only place the billed interval's START is recorded.
|
|
134
|
+
*/
|
|
135
|
+
readonly referenceId: string | null;
|
|
136
|
+
/**
|
|
137
|
+
* Signed nanodollars, exactly as the ledger stores it: negative is a charge,
|
|
138
|
+
* positive is a credit or refund.
|
|
139
|
+
*/
|
|
140
|
+
readonly amountNanoUsd: number;
|
|
141
|
+
/** `compute` | `refund` | `inference` | … */
|
|
142
|
+
readonly type: string;
|
|
143
|
+
/** `sandbox` | `router` | … */
|
|
144
|
+
readonly product: string | null;
|
|
145
|
+
/** `sandbox:<sandboxId>` — the platform's aggregation unit. */
|
|
146
|
+
readonly groupKey: string | null;
|
|
147
|
+
/** Settlement instant, epoch ms. The product normalizes the stored text. */
|
|
148
|
+
readonly createdAt: number;
|
|
149
|
+
readonly description: string | null;
|
|
150
|
+
/** Provider at-cost basis, unsigned nanodollars. Null when unattributed. */
|
|
151
|
+
readonly costBasisNanoUsd: number | null;
|
|
152
|
+
/**
|
|
153
|
+
* The billed duration, when the product's ledger view exposes it directly.
|
|
154
|
+
* Null is the common case: the platform does not store duration on the row.
|
|
155
|
+
*/
|
|
156
|
+
readonly billedMs: number | null;
|
|
157
|
+
/**
|
|
158
|
+
* The platform API key the charge was triggered by — `credit_transactions.key_id`,
|
|
159
|
+
* stamped from the box's own creation metadata at settlement time and exposed
|
|
160
|
+
* by `/v1/billing/transactions` (which also filters on it).
|
|
161
|
+
*
|
|
162
|
+
* This is the ONLY field on a settlement row that can be attributed back to a
|
|
163
|
+
* PRODUCT rather than to a wallet or to the platform's service taxonomy, which
|
|
164
|
+
* is why {@link SpendOwnershipRule}'s shipped constructor is built on it. The
|
|
165
|
+
* sandbox id cannot do the job: the platform mints it as `sandbox-<12 hex>`
|
|
166
|
+
* from a hash of (owner, idempotency key), so a product's own box naming never
|
|
167
|
+
* reaches the ledger row.
|
|
168
|
+
*
|
|
169
|
+
* Optional, and `null` is a real answer: the platform leaves it null on legacy
|
|
170
|
+
* rows and an export may not carry the column at all. A missing key is
|
|
171
|
+
* `undecidable`, never `foreign` — see {@link SpendOwnershipVerdict}.
|
|
172
|
+
*/
|
|
173
|
+
readonly keyId?: string | null;
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* What one settlement is attributable to, from inside ONE product.
|
|
177
|
+
*
|
|
178
|
+
* The distinction this type exists for: a sibling product's box and a charge
|
|
179
|
+
* that is not ours at all look identical from inside a single product, because
|
|
180
|
+
* both arrive as a settlement naming a sandbox this product's expectation ledger
|
|
181
|
+
* has never heard of. Dropping both loses the check's whole purpose; reporting
|
|
182
|
+
* both makes it noise. Only a platform-stamped attribution field separates them.
|
|
183
|
+
*/
|
|
184
|
+
export type SpendOwnershipVerdict =
|
|
185
|
+
/** Attributable to THIS product. An unrecorded one is a phantom-charge candidate. */
|
|
186
|
+
'mine'
|
|
187
|
+
/** Attributable to a DIFFERENT product on the same wallet. Reported, never a finding. */
|
|
188
|
+
| 'foreign'
|
|
189
|
+
/**
|
|
190
|
+
* The row carries nothing that decides it. Counted as `mine` — FAIL CLOSED.
|
|
191
|
+
* An unattributable charge on a shared wallet is precisely the shape of the
|
|
192
|
+
* thing this module exists to catch, so the ambiguous case costs a human five
|
|
193
|
+
* minutes rather than costing the product the detection.
|
|
194
|
+
*/
|
|
195
|
+
| 'undecidable';
|
|
196
|
+
/** One settlement, presented to an ownership rule. */
|
|
197
|
+
export interface SpendOwnershipCandidate {
|
|
198
|
+
readonly row: SettlementRow;
|
|
199
|
+
/** The sandbox the row is attributable to, or null for a row naming none. */
|
|
200
|
+
readonly sandboxId: string | null;
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* The product's declaration of which settlements are its own.
|
|
204
|
+
*
|
|
205
|
+
* The one hard constraint on `decide`: it must answer from PROPERTIES OF THE
|
|
206
|
+
* ROW. A rule that answers by looking the sandbox up in the product's own
|
|
207
|
+
* expectation ledger deletes `unknown-box` entirely — every unrecorded box would
|
|
208
|
+
* be `foreign` by construction, and "we were billed for a box we never asked
|
|
209
|
+
* for" would become unrepresentable. The ledger already decides recorded-ness;
|
|
210
|
+
* this decides ATTRIBUTION, and the two must stay independent.
|
|
211
|
+
*
|
|
212
|
+
* `decide` must not throw. If it does, the throw propagates and the whole pass
|
|
213
|
+
* fails — a reconciliation whose ownership rule is broken has no verdict worth
|
|
214
|
+
* printing, and swallowing it would turn a broken rule into a clean bill.
|
|
215
|
+
*/
|
|
216
|
+
export interface SpendOwnershipRule {
|
|
217
|
+
/** Named in the report and on every finding, so a reader knows what was excluded. */
|
|
218
|
+
readonly label: string;
|
|
219
|
+
decide(candidate: SpendOwnershipCandidate): SpendOwnershipVerdict;
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* What this pass scoped itself to — present on every report, including a clean
|
|
223
|
+
* one, because "nothing fired" and "nothing was looked at" are different
|
|
224
|
+
* answers and a report that cannot tell them apart is the failure this closes.
|
|
225
|
+
*/
|
|
226
|
+
export interface SpendOwnershipSummary {
|
|
227
|
+
/**
|
|
228
|
+
* False when the caller declared no rule. The pass then treats every box as
|
|
229
|
+
* its own — today's behaviour, which over-reports rather than under-reports —
|
|
230
|
+
* and every `unknown-box` finding says on its face that a sibling product's
|
|
231
|
+
* box is indistinguishable from a charge that is not ours.
|
|
232
|
+
*/
|
|
233
|
+
readonly declared: boolean;
|
|
234
|
+
/** The rule's label, or null when none was declared. */
|
|
235
|
+
readonly label: string | null;
|
|
236
|
+
/** Boxes this pass treated as this product's, and what they were charged. */
|
|
237
|
+
readonly ownedBoxes: number;
|
|
238
|
+
readonly ownedNanoUsd: number;
|
|
239
|
+
/**
|
|
240
|
+
* Of those, the boxes no rule could decide. Counted as owned (fail-closed) and
|
|
241
|
+
* reported separately so a product can see how much of its own verdict rests
|
|
242
|
+
* on rows that carried no attribution.
|
|
243
|
+
*/
|
|
244
|
+
readonly undecidableBoxes: number;
|
|
245
|
+
/** Boxes attributed to another product on the same wallet. Never findings. */
|
|
246
|
+
readonly foreignBoxes: number;
|
|
247
|
+
readonly foreignNanoUsd: number;
|
|
248
|
+
/**
|
|
249
|
+
* Their ids, in full — an exclusion a reader cannot audit is an exclusion
|
|
250
|
+
* they have to trust, and this module's whole posture is that nothing about
|
|
251
|
+
* money is taken on trust.
|
|
252
|
+
*/
|
|
253
|
+
readonly foreignSandboxIds: readonly string[];
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* The stretch of time a reconciliation pass covers — the same window the
|
|
257
|
+
* product's own ledger fetch was scoped to.
|
|
258
|
+
*
|
|
259
|
+
* Declared by the caller rather than derived from the rows, because deriving it
|
|
260
|
+
* from the rows is circular: a feed that returns nothing would produce a
|
|
261
|
+
* zero-width window that expects nothing and certifies itself.
|
|
262
|
+
*/
|
|
263
|
+
export interface SpendWindow {
|
|
264
|
+
/** Inclusive start, epoch ms. */
|
|
265
|
+
readonly startAt: number;
|
|
266
|
+
/** Inclusive end, epoch ms. */
|
|
267
|
+
readonly endAt: number;
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* One box's life, measured against a reconciliation window.
|
|
271
|
+
*
|
|
272
|
+
* The live interval is `[createdAt, horizon]`, where the horizon is the SAME one
|
|
273
|
+
* `computeExpectedCeiling` derives — so a box cannot count as live for the
|
|
274
|
+
* expectation check and dead for the ceiling check.
|
|
275
|
+
*/
|
|
276
|
+
export interface SpendBoxLiveness {
|
|
277
|
+
readonly sandboxId: string;
|
|
278
|
+
readonly workspaceId: string;
|
|
279
|
+
/** First instant the box could have been billable. */
|
|
280
|
+
readonly liveFrom: number;
|
|
281
|
+
/** Last instant it could have been, evaluated at the window's end. */
|
|
282
|
+
readonly liveUntil: number;
|
|
283
|
+
/** Which fact closed the interval — the ceiling's own vocabulary. */
|
|
284
|
+
readonly basis: CeilingBasis;
|
|
285
|
+
/** True when any of that life fell inside the window. */
|
|
286
|
+
readonly overlaps: boolean;
|
|
287
|
+
/** How much of it did, in ms. Zero for a box that did not overlap. */
|
|
288
|
+
readonly liveMsInWindow: number;
|
|
289
|
+
/**
|
|
290
|
+
* True when the overlap is long enough that a settlement should have landed.
|
|
291
|
+
* A box that came up moments before the window closed is live but not yet
|
|
292
|
+
* expected — settlement lags provisioning, and demanding a row inside that lag
|
|
293
|
+
* would report the platform's ordinary queue as a defect.
|
|
294
|
+
*/
|
|
295
|
+
readonly expectSettlement: boolean;
|
|
296
|
+
}
|
|
297
|
+
/**
|
|
298
|
+
* What this pass EXPECTED to be billed for — present on every report, including
|
|
299
|
+
* a clean one, for the same reason {@link SpendOwnershipSummary} is: "nothing
|
|
300
|
+
* fired" and "nothing was expected" and "nothing could be expected" are three
|
|
301
|
+
* different answers and a report that cannot tell them apart is the failure this
|
|
302
|
+
* closes.
|
|
303
|
+
*/
|
|
304
|
+
export interface SpendExpectationSummary {
|
|
305
|
+
/**
|
|
306
|
+
* False when the caller declared no window, or the store cannot list its
|
|
307
|
+
* boxes. The pass then cannot say what it expected — which is reported, never
|
|
308
|
+
* rounded down to a clean bill.
|
|
309
|
+
*/
|
|
310
|
+
readonly declared: boolean;
|
|
311
|
+
readonly window: SpendWindow | null;
|
|
312
|
+
/** Live ms inside the window before a settlement is expected of a box. */
|
|
313
|
+
readonly graceMs: number;
|
|
314
|
+
/** Boxes whose life overlapped the window at all. */
|
|
315
|
+
readonly liveBoxes: number;
|
|
316
|
+
/** Of those, the ones live long enough that a settlement should have landed. */
|
|
317
|
+
readonly expectedBoxes: number;
|
|
318
|
+
/** Of those, the ones at least one settlement this pass claimed did land against. */
|
|
319
|
+
readonly settledBoxes: number;
|
|
320
|
+
/**
|
|
321
|
+
* The expected boxes nothing settled against, in full — the exhibit list for
|
|
322
|
+
* "the check stopped checking", and an expectation a reader cannot audit is
|
|
323
|
+
* one they have to take on trust.
|
|
324
|
+
*/
|
|
325
|
+
readonly unsettledSandboxIds: readonly string[];
|
|
326
|
+
}
|
|
327
|
+
/**
|
|
328
|
+
* How much this pass is entitled to claim about the bill.
|
|
329
|
+
*
|
|
330
|
+
* `ok` is gated on this, which is what makes an examined-nobody pass
|
|
331
|
+
* structurally incapable of rendering as a clean bill.
|
|
332
|
+
*/
|
|
333
|
+
export type SpendCoverage =
|
|
334
|
+
/** The pass examined this product's settlements, or knows what it expected. */
|
|
335
|
+
'verified'
|
|
336
|
+
/**
|
|
337
|
+
* Expectation was declared and no box was live long enough to expect a bill.
|
|
338
|
+
* Zero settlements is the RIGHT answer — an idle product, not a defect, and
|
|
339
|
+
* the one case in which a pass that examined nobody is still clean.
|
|
340
|
+
*/
|
|
341
|
+
| 'nothing-expected'
|
|
342
|
+
/**
|
|
343
|
+
* The pass examined none of this product's settlements and cannot say what it
|
|
344
|
+
* expected. The CHECK is suspect, not the bill.
|
|
345
|
+
*/
|
|
346
|
+
| 'unverified';
|
|
347
|
+
/** The parts of a settlement reference id, once parsed. */
|
|
348
|
+
export interface SettlementReference {
|
|
349
|
+
/** `stop` | `compute` | `egress` | `gpu-lease` | anything the platform adds. */
|
|
350
|
+
readonly kind: string;
|
|
351
|
+
/** For compute kinds, the sandbox id. For `gpu-lease`, the lease id. */
|
|
352
|
+
readonly resourceId: string;
|
|
353
|
+
/** The interval's start, epoch ms. Null for kinds that carry no interval. */
|
|
354
|
+
readonly intervalStartMs: number | null;
|
|
355
|
+
}
|
|
356
|
+
/** How a settled duration was arrived at — every duration finding carries one. */
|
|
357
|
+
export type BilledDurationBasis =
|
|
358
|
+
/** The ledger row carried the duration. Exact. */
|
|
359
|
+
'reported'
|
|
360
|
+
/** `amount ÷ the product's stated hourly rate`. Exact when the rate is right. */
|
|
361
|
+
| 'rate'
|
|
362
|
+
/**
|
|
363
|
+
* `settledAt - intervalStart`. An UPPER bound, not the billed duration: a
|
|
364
|
+
* correct settlement posted late by the platform's durable settlement queue
|
|
365
|
+
* reads longer here than it billed. Findings on this basis say so.
|
|
366
|
+
*/
|
|
367
|
+
| 'reference-span'
|
|
368
|
+
/** No basis available — duration rules are skipped for this row. */
|
|
369
|
+
| 'unknown';
|
|
370
|
+
/** The checks this reconciler runs. Each is individually skippable, by name. */
|
|
371
|
+
export type SpendCheckId =
|
|
372
|
+
/** A settlement against a box the product has no record of ever asking for. */
|
|
373
|
+
'unknown-box'
|
|
374
|
+
/** A settled duration longer than the product's own upper bound allows. */
|
|
375
|
+
| 'over-ceiling'
|
|
376
|
+
/** A spend window far above the trailing median — the burst shape of a defect. */
|
|
377
|
+
| 'velocity'
|
|
378
|
+
/** The balance the product observes has gone below its floor. */
|
|
379
|
+
| 'negative-balance'
|
|
380
|
+
/**
|
|
381
|
+
* The product expected settlements and saw none — the only check whose
|
|
382
|
+
* subject is the CHECK rather than the bill.
|
|
383
|
+
*
|
|
384
|
+
* Every other rule is driven by a settlement row, so all of them go quiet
|
|
385
|
+
* together when the rows stop arriving: an empty ledger fetch, a stale
|
|
386
|
+
* ownership rule that excludes every box, an expectation ledger naming
|
|
387
|
+
* nobody. This is the rule that fires when the others cannot, and it reads as
|
|
388
|
+
* "do not trust this report" rather than "dispute this charge".
|
|
389
|
+
*/
|
|
390
|
+
| 'silent-ledger';
|
|
391
|
+
export declare const SPEND_CHECKS: readonly SpendCheckId[];
|
|
392
|
+
/**
|
|
393
|
+
* One discrepancy, with every number the rule compared.
|
|
394
|
+
*
|
|
395
|
+
* Nullable fields are per-check and deliberately present-but-null rather than
|
|
396
|
+
* absent: a reader scanning a JSON dump can tell "this rule does not measure
|
|
397
|
+
* that" from "that measurement is missing".
|
|
398
|
+
*/
|
|
399
|
+
export interface SpendFinding {
|
|
400
|
+
readonly check: SpendCheckId;
|
|
401
|
+
/** What is wrong, in one sentence, with the numbers in it. */
|
|
402
|
+
readonly message: string;
|
|
403
|
+
/** What to do about it. A finding without a remedy is a complaint. */
|
|
404
|
+
readonly remedy: string;
|
|
405
|
+
readonly sandboxId: string | null;
|
|
406
|
+
readonly workspaceId: string | null;
|
|
407
|
+
/** The ledger rows that evidence this finding — the dispute's exhibit list. */
|
|
408
|
+
readonly referenceIds: readonly string[];
|
|
409
|
+
/** Nanodollars this finding puts in question, unsigned. */
|
|
410
|
+
readonly settledNanoUsd: number;
|
|
411
|
+
/** `over-ceiling` — the duration actually settled, and how that was derived. */
|
|
412
|
+
readonly settledMs: number | null;
|
|
413
|
+
readonly durationBasis: BilledDurationBasis | null;
|
|
414
|
+
/** `over-ceiling` — the bound it broke, and what earned that bound. */
|
|
415
|
+
readonly ceilingMs: number | null;
|
|
416
|
+
readonly overageMs: number | null;
|
|
417
|
+
readonly ceilingBasis: CeilingBasis | null;
|
|
418
|
+
/** `velocity` — the window, its trailing median, and the ratio between them. */
|
|
419
|
+
readonly windowNanoUsd: number | null;
|
|
420
|
+
readonly trailingMedianNanoUsd: number | null;
|
|
421
|
+
readonly velocityRatio: number | null;
|
|
422
|
+
/** `velocity` and `silent-ledger` — the window the finding is about. */
|
|
423
|
+
readonly windowStartAt: number | null;
|
|
424
|
+
readonly windowEndAt: number | null;
|
|
425
|
+
/** `negative-balance` — the observed balance and the floor it broke. */
|
|
426
|
+
readonly balanceNanoUsd: number | null;
|
|
427
|
+
readonly balanceFloorNanoUsd: number | null;
|
|
428
|
+
/** `silent-ledger` — how many boxes were expected to settle, and how many did. */
|
|
429
|
+
readonly expectedBoxes: number | null;
|
|
430
|
+
readonly settledBoxes: number | null;
|
|
431
|
+
/** `silent-ledger`, per-box form — how long that box was live inside the window. */
|
|
432
|
+
readonly liveMsInWindow: number | null;
|
|
433
|
+
}
|
|
434
|
+
/** What one reconciliation pass concluded. */
|
|
435
|
+
export interface SpendReport {
|
|
436
|
+
/**
|
|
437
|
+
* True when nothing fired AND the pass earned the right to say so:
|
|
438
|
+
* `findings.length === 0 && coverage !== 'unverified'`.
|
|
439
|
+
*
|
|
440
|
+
* The second half is not decoration. Every rule but `silent-ledger` is driven
|
|
441
|
+
* by a settlement row, so a pass that read no rows — an empty ledger fetch, a
|
|
442
|
+
* stale ownership rule excluding every box, an expectation ledger naming
|
|
443
|
+
* nobody — fires nothing and used to report a clean bill. `coverage` is what
|
|
444
|
+
* makes that shape unrepresentable, and it holds even when a caller skips the
|
|
445
|
+
* `silent-ledger` check: the skip removes the finding, never the verdict.
|
|
446
|
+
*/
|
|
447
|
+
readonly ok: boolean;
|
|
448
|
+
/** How much this pass is entitled to claim. See {@link SpendCoverage}. */
|
|
449
|
+
readonly coverage: SpendCoverage;
|
|
450
|
+
readonly findings: readonly SpendFinding[];
|
|
451
|
+
readonly checksRun: readonly SpendCheckId[];
|
|
452
|
+
/** Rows the pass read, including the ones no rule looked at. */
|
|
453
|
+
readonly rowsExamined: number;
|
|
454
|
+
/** Distinct boxes those rows settled against. */
|
|
455
|
+
readonly boxesExamined: number;
|
|
456
|
+
/** Total charged across every examined row, unsigned nanodollars. */
|
|
457
|
+
readonly settledNanoUsd: number;
|
|
458
|
+
/** Total credited back across every examined row, unsigned nanodollars. */
|
|
459
|
+
readonly creditedNanoUsd: number;
|
|
460
|
+
/** What this pass claimed as its own, and what it excluded as another product's. */
|
|
461
|
+
readonly ownership: SpendOwnershipSummary;
|
|
462
|
+
/** What this pass expected to be billed for, and what did not arrive. */
|
|
463
|
+
readonly expectation: SpendExpectationSummary;
|
|
464
|
+
/** The instant the pass treated as "now". */
|
|
465
|
+
readonly asOf: number;
|
|
466
|
+
}
|
package/dist/store/index.d.ts
CHANGED
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
* free and driver-agnostic: this module knows nothing about D1, drizzle, or any
|
|
16
16
|
* schema — it only forwards property access to the injected instance.
|
|
17
17
|
*/
|
|
18
|
-
interface DatabaseProvider<DB> {
|
|
18
|
+
export interface DatabaseProvider<DB> {
|
|
19
19
|
/** The injected database, as a lazy proxy. Throws (with `notReadyMessage`)
|
|
20
20
|
* on any access before {@link setDatabase} is called. */
|
|
21
21
|
readonly db: DB;
|
|
@@ -27,27 +27,27 @@ interface DatabaseProvider<DB> {
|
|
|
27
27
|
reset(): void;
|
|
28
28
|
}
|
|
29
29
|
/** Define options for configuring database provider behavior including error messaging */
|
|
30
|
-
interface DatabaseProviderOptions {
|
|
30
|
+
export interface DatabaseProviderOptions {
|
|
31
31
|
/** Error thrown when `db` is accessed before injection. Keep the product's
|
|
32
32
|
* existing wording so callers see a familiar message. */
|
|
33
33
|
notReadyMessage?: string;
|
|
34
34
|
}
|
|
35
35
|
/** A database driver that can execute related SQLite statements as one batch.
|
|
36
36
|
* Cloudflare D1 and libsql expose this method; portable local drivers may not. */
|
|
37
|
-
interface SqliteBatchDatabase {
|
|
37
|
+
export interface SqliteBatchDatabase {
|
|
38
38
|
batch?: (statements: [unknown, ...unknown[]]) => Promise<unknown[]>;
|
|
39
39
|
}
|
|
40
40
|
/** Execute related SQLite statements in one transactional driver batch when
|
|
41
41
|
* supported, or sequentially in the same order for portable local drivers. */
|
|
42
|
-
declare function runSqliteStatements(db: SqliteBatchDatabase, statements: [unknown, ...unknown[]]): Promise<unknown[]>;
|
|
42
|
+
export declare function runSqliteStatements(db: SqliteBatchDatabase, statements: [unknown, ...unknown[]]): Promise<unknown[]>;
|
|
43
43
|
/**
|
|
44
44
|
* Create a swappable database provider. `DB` is the injected instance's type
|
|
45
45
|
* (e.g. a drizzle `Database`); the proxy is typed as `DB` so callers keep full
|
|
46
46
|
* typing and their existing query syntax.
|
|
47
47
|
*/
|
|
48
|
-
declare function createDatabaseProvider<DB extends object>(options?: DatabaseProviderOptions): DatabaseProvider<DB>;
|
|
48
|
+
export declare function createDatabaseProvider<DB extends object>(options?: DatabaseProviderOptions): DatabaseProvider<DB>;
|
|
49
49
|
/** Describe the result of listing keys with completion status and optional pagination cursor */
|
|
50
|
-
interface KVListResult {
|
|
50
|
+
export interface KVListResult {
|
|
51
51
|
keys: {
|
|
52
52
|
name: string;
|
|
53
53
|
}[];
|
|
@@ -55,18 +55,18 @@ interface KVListResult {
|
|
|
55
55
|
cursor?: string;
|
|
56
56
|
}
|
|
57
57
|
/** Define options for storing a key-value pair with expiration and metadata settings */
|
|
58
|
-
interface KVPutOptions {
|
|
58
|
+
export interface KVPutOptions {
|
|
59
59
|
expiration?: number;
|
|
60
60
|
expirationTtl?: number;
|
|
61
61
|
metadata?: unknown;
|
|
62
62
|
}
|
|
63
63
|
/** Resolve a key-value pair retrieval including its associated metadata and value */
|
|
64
|
-
interface KVGetWithMetadataResult {
|
|
64
|
+
export interface KVGetWithMetadataResult {
|
|
65
65
|
value: string | null;
|
|
66
66
|
metadata: unknown | null;
|
|
67
67
|
}
|
|
68
68
|
/** Define a key-value store interface for asynchronous data retrieval, storage, deletion, and listing */
|
|
69
|
-
interface KVStore {
|
|
69
|
+
export interface KVStore {
|
|
70
70
|
get(key: string): Promise<string | null>;
|
|
71
71
|
/** Read a value with its stored metadata (e.g. the vault's encrypted/hasPII flags). */
|
|
72
72
|
getWithMetadata(key: string): Promise<KVGetWithMetadataResult>;
|
|
@@ -83,6 +83,4 @@ interface KVStore {
|
|
|
83
83
|
* Backed by a Map; `list` returns all prefix-matched keys in one complete page
|
|
84
84
|
* (no real pagination needed in-process). Seed with `initial` entries if useful.
|
|
85
85
|
*/
|
|
86
|
-
declare function createInMemoryKV(initial?: Record<string, string>): KVStore;
|
|
87
|
-
|
|
88
|
-
export { type DatabaseProvider, type DatabaseProviderOptions, type KVGetWithMetadataResult, type KVListResult, type KVPutOptions, type KVStore, type SqliteBatchDatabase, createDatabaseProvider, createInMemoryKV, runSqliteStatements };
|
|
86
|
+
export declare function createInMemoryKV(initial?: Record<string, string>): KVStore;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* App-shell story fixtures. The chat content below mirrors the shared
|
|
3
|
+
* `../fixtures/chat.ts` thread (launch-poster scenario, same message ids); it
|
|
4
|
+
* is duplicated here so the app-shell area stays self-contained — the composed
|
|
5
|
+
* shell is the design-evaluation centerpiece and must keep rendering even when
|
|
6
|
+
* other areas' fixtures move. The sidebar session list and model catalog are
|
|
7
|
+
* shell-specific and live only here.
|
|
8
|
+
*
|
|
9
|
+
* Types come from the package source (`../../web-react`) — the same types the
|
|
10
|
+
* chat components consume — so a drift in `ChatUiMessage` fails typecheck here.
|
|
11
|
+
*/
|
|
12
|
+
import type { CatalogModel, ChatUiMessage } from '../../web-react';
|
|
13
|
+
import type { SessionStatus, ShellSessionSection } from './shell';
|
|
14
|
+
/** Assistant turn whose proposal is still awaiting human approval. */
|
|
15
|
+
export declare const proposalAwaitingApprovalMessage: ChatUiMessage;
|
|
16
|
+
/**
|
|
17
|
+
* A turn still streaming: partial answer text, a tool call in flight, and no
|
|
18
|
+
* completion metrics yet (no `completionTokens`/`durationMs` — producers only
|
|
19
|
+
* stamp those when the turn settles).
|
|
20
|
+
*/
|
|
21
|
+
export declare const streamingAssistantMessage: ChatUiMessage;
|
|
22
|
+
/**
|
|
23
|
+
* ~16 messages covering every rendered state: plain exchanges, reasoning,
|
|
24
|
+
* per-message metrics, interleaved `segments`, a proposal awaiting approval,
|
|
25
|
+
* an errored tool call, and a trailing in-flight turn. Long enough that the
|
|
26
|
+
* thread scrolls, so spacing/typography stories evaluate real rhythm.
|
|
27
|
+
*/
|
|
28
|
+
export declare const chatThread: ChatUiMessage[];
|
|
29
|
+
/**
|
|
30
|
+
* Minimal catalog. `anthropic/claude-opus-4` matches every `modelUsed` in the
|
|
31
|
+
* thread, so `formatModelCost` renders the per-message cost line; the second
|
|
32
|
+
* entry gives the composer's model chip somewhere to go.
|
|
33
|
+
*/
|
|
34
|
+
export declare const shellModels: CatalogModel[];
|
|
35
|
+
/**
|
|
36
|
+
* The session list a production agent shell shows: recency-grouped sections,
|
|
37
|
+
* one live turn elsewhere (`running`), and titles that read like real work.
|
|
38
|
+
* The active session (`launch-poster`) is the thread in `chatThread`.
|
|
39
|
+
*/
|
|
40
|
+
export declare const shellSections: ShellSessionSection[];
|
|
41
|
+
/** Return a copy of `sections` with one session's status changed (story args
|
|
42
|
+
* are frozen, so derive rather than mutate). */
|
|
43
|
+
export declare function withSessionStatus(sections: ShellSessionSection[], sessionId: string, status: SessionStatus): ShellSessionSection[];
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* App-shell composition pieces for the app-shell stories. The package ships NO
|
|
3
|
+
* generic app-shell component on purpose — a product composes its own shell
|
|
4
|
+
* from package primitives (`ChatMessages`, `ChatComposer`, `../../brand`) plus
|
|
5
|
+
* its own sidebar. These are the story-local building blocks for that
|
|
6
|
+
* composition: a session sidebar (recency sections, active item, status
|
|
7
|
+
* affordances, new-chat button), a thread header, and the `AppShell` layout
|
|
8
|
+
* that wires them together with a mobile drawer below `md`.
|
|
9
|
+
*
|
|
10
|
+
* Everything is Tailwind over the shared tokens (`bg-card`, `border-border`,
|
|
11
|
+
* `text-muted-foreground`, `bg-primary`, …) so the global theme toolbar
|
|
12
|
+
* restyles it, exactly like the `web-react` styling contract.
|
|
13
|
+
*/
|
|
14
|
+
import { type ReactNode } from 'react';
|
|
15
|
+
export type SessionStatus = 'idle' | 'running' | 'approval';
|
|
16
|
+
interface ShellSession {
|
|
17
|
+
id: string;
|
|
18
|
+
title: string;
|
|
19
|
+
/** `running` shows a spinner, `approval` an amber dot — the two states a
|
|
20
|
+
* background agent session can be in while you're looking at another one. */
|
|
21
|
+
status?: SessionStatus;
|
|
22
|
+
}
|
|
23
|
+
export interface ShellSessionSection {
|
|
24
|
+
id: string;
|
|
25
|
+
label: string;
|
|
26
|
+
sessions: ShellSession[];
|
|
27
|
+
}
|
|
28
|
+
interface ShellUser {
|
|
29
|
+
name: string;
|
|
30
|
+
email: string;
|
|
31
|
+
}
|
|
32
|
+
export interface AppSidebarProps {
|
|
33
|
+
sections: ShellSessionSection[];
|
|
34
|
+
activeId?: string | null;
|
|
35
|
+
/** Rail mode: icons only, 52px. */
|
|
36
|
+
collapsed?: boolean;
|
|
37
|
+
/** Row rhythm: `comfortable` is the default reading density, `compact` the
|
|
38
|
+
* power-user density for long histories. */
|
|
39
|
+
density?: 'comfortable' | 'compact';
|
|
40
|
+
pendingApprovals?: number;
|
|
41
|
+
user?: ShellUser | null;
|
|
42
|
+
onNewChat?: () => void;
|
|
43
|
+
onSelectSession?: (id: string) => void;
|
|
44
|
+
onToggleCollapse?: () => void;
|
|
45
|
+
onOpenApprovals?: () => void;
|
|
46
|
+
onOpenSettings?: () => void;
|
|
47
|
+
onOpenAccount?: () => void;
|
|
48
|
+
className?: string;
|
|
49
|
+
}
|
|
50
|
+
export declare function AppSidebar(props: AppSidebarProps): import("react").JSX.Element;
|
|
51
|
+
export interface AppShellProps {
|
|
52
|
+
sections: ShellSessionSection[];
|
|
53
|
+
activeSessionId?: string | null;
|
|
54
|
+
sidebarCollapsed?: boolean;
|
|
55
|
+
sidebarDensity?: 'comfortable' | 'compact';
|
|
56
|
+
pendingApprovals?: number;
|
|
57
|
+
user?: ShellUser | null;
|
|
58
|
+
headerTitle: string;
|
|
59
|
+
headerSubtitle?: string;
|
|
60
|
+
onNewChat?: () => void;
|
|
61
|
+
onSelectSession?: (id: string) => void;
|
|
62
|
+
onToggleCollapse?: () => void;
|
|
63
|
+
onOpenApprovals?: () => void;
|
|
64
|
+
onOpenSettings?: () => void;
|
|
65
|
+
onOpenAccount?: () => void;
|
|
66
|
+
onShare?: () => void;
|
|
67
|
+
onOpenThreadMenu?: () => void;
|
|
68
|
+
/** The thread — typically `<ChatMessages/>`. Rendered in the scroll area. */
|
|
69
|
+
children?: ReactNode;
|
|
70
|
+
/** Typically `<ChatComposer/>`; pinned to the bottom of the main column and
|
|
71
|
+
* aligned to the same `max-w-3xl` reading column `ChatMessages` uses. */
|
|
72
|
+
composer?: ReactNode;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* The production agent-app layout: sidebar (fixed on desktop, drawer below
|
|
76
|
+
* `md`), header row, scrolling thread, pinned composer. Presentational only —
|
|
77
|
+
* all behavior arrives via props, so stories drive it with fixtures and
|
|
78
|
+
* console.log callbacks.
|
|
79
|
+
*/
|
|
80
|
+
export declare function AppShell({ sections, activeSessionId, sidebarCollapsed, sidebarDensity, pendingApprovals, user, headerTitle, headerSubtitle, onNewChat, onSelectSession, onToggleCollapse, onOpenApprovals, onOpenSettings, onOpenAccount, onShare, onOpenThreadMenu, children, composer, }: AppShellProps): import("react").JSX.Element;
|
|
81
|
+
export {};
|