@tangle-network/agent-app 0.45.54 → 0.45.55
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/alerting/index.d.ts +5 -175
- package/dist/alerting/slack.d.ts +176 -0
- package/dist/app-auth/index.d.ts +14 -17
- package/dist/assets/index.d.ts +2 -504
- package/dist/assets/schema.d.ts +264 -0
- package/dist/assets/types.d.ts +237 -0
- package/dist/assistant/AssistantDock.d.ts +56 -0
- package/dist/assistant/AssistantHistory.d.ts +41 -0
- package/dist/assistant/AssistantPanel.d.ts +84 -0
- package/dist/assistant/ProposalCard.d.ts +41 -0
- package/dist/assistant/ResizeHandle.d.ts +19 -0
- package/dist/assistant/client-context.d.ts +20 -0
- package/dist/assistant/client.d.ts +117 -0
- package/dist/assistant/index.d.ts +19 -848
- package/dist/assistant/launcher.d.ts +23 -0
- package/dist/assistant/persistence.d.ts +26 -0
- package/dist/assistant/presentation.d.ts +99 -0
- package/dist/assistant/provider-label.d.ts +7 -0
- package/dist/assistant/reducer.d.ts +130 -0
- package/dist/assistant/sse.d.ts +24 -0
- package/dist/assistant/time-ago.d.ts +6 -0
- package/dist/assistant/transcript.d.ts +97 -0
- package/dist/assistant/types.d.ts +291 -0
- package/dist/assistant/use-stick-to-bottom.d.ts +28 -0
- package/dist/assistant/useAssistantChat.d.ts +63 -0
- package/dist/assistant/useAssistantModels.d.ts +22 -0
- package/dist/assistant/useAssistantThreads.d.ts +47 -0
- package/dist/assistant/usePanelPrefs.d.ts +55 -0
- package/dist/billing/index.d.ts +19 -21
- package/dist/brand/index.d.ts +16 -10
- package/dist/brand-extraction/extract.d.ts +34 -0
- package/dist/brand-extraction/index.d.ts +12 -214
- package/dist/brand-extraction/map.d.ts +58 -0
- package/dist/brand-extraction/types.d.ts +119 -0
- package/dist/catalog/index.d.ts +11 -101
- package/dist/chat-react/composer-mode-controls.d.ts +14 -0
- package/dist/chat-react/entry-composer.d.ts +92 -0
- package/dist/chat-react/index.d.ts +22 -118
- package/dist/chat-react/types.d.ts +11 -0
- package/dist/chat-routes/attachment-store.d.ts +84 -0
- package/dist/chat-routes/attachment-upload.d.ts +84 -0
- package/dist/chat-routes/attachment-validation.d.ts +95 -0
- package/dist/chat-routes/binary-sniff.d.ts +45 -0
- package/dist/chat-routes/completed-sandbox-turn.d.ts +25 -0
- package/dist/chat-routes/detached-turn.d.ts +197 -0
- package/dist/chat-routes/dispatch-parts.d.ts +101 -0
- package/dist/chat-routes/draft-persistence.d.ts +189 -0
- package/dist/chat-routes/durable-projection.d.ts +18 -0
- package/dist/chat-routes/file-index.d.ts +115 -0
- package/dist/chat-routes/index.d.ts +25 -1840
- package/dist/chat-routes/model-failover-stream.d.ts +206 -0
- package/dist/chat-routes/promote-file-part.d.ts +84 -0
- package/dist/chat-routes/resolve-attachments.d.ts +72 -0
- package/dist/chat-routes/sandbox-producer.d.ts +146 -0
- package/dist/chat-routes/sandbox-turn-usage.d.ts +4 -0
- package/dist/{stale-turn-lock-DucQzvXu.d.ts → chat-routes/stale-turn-lock.d.ts} +7 -9
- package/dist/chat-routes/turn-routes.d.ts +540 -0
- package/dist/chat-routes/upload.d.ts +84 -0
- package/dist/{wire-DOZ-O6hD.d.ts → chat-routes/wire.d.ts} +41 -44
- package/dist/chat-store/core.d.ts +19 -0
- package/dist/chat-store/index.d.ts +22 -322
- package/dist/{parts-BqIHMdyu.d.ts → chat-store/parts.d.ts} +49 -47
- package/dist/chat-store/schema.d.ts +157 -0
- package/dist/chat-store/store.d.ts +177 -0
- package/dist/config/index.d.ts +13 -18
- package/dist/crypto/index.d.ts +10 -12
- package/dist/crypto/web-token.d.ts +22 -0
- package/dist/design-canvas/apply.d.ts +70 -0
- package/dist/design-canvas/drizzle-store.d.ts +29 -0
- package/dist/design-canvas/drizzle.d.ts +7 -575
- package/dist/{export-presets-mgVulRaV.d.ts → design-canvas/export-presets.d.ts} +18 -22
- package/dist/design-canvas/index.d.ts +22 -268
- package/dist/design-canvas/mcp-entry.d.ts +15 -0
- package/dist/design-canvas/mcp-handler.d.ts +34 -0
- package/dist/design-canvas/mcp-tools.d.ts +30 -0
- package/dist/{model-DnfO_PdJ.d.ts → design-canvas/model.d.ts} +33 -35
- package/dist/{operations-ByJ6yXOW.d.ts → design-canvas/operations.d.ts} +21 -25
- package/dist/design-canvas/schema.d.ts +558 -0
- package/dist/{store-CqfDtnPQ.d.ts → design-canvas/store.d.ts} +8 -12
- package/dist/design-canvas/templates.d.ts +72 -0
- package/dist/design-canvas/validate.d.ts +32 -0
- package/dist/design-canvas-react/components/BleedTrimOverlay.d.ts +22 -0
- package/dist/design-canvas-react/components/BrandKnot.d.ts +11 -0
- package/dist/design-canvas-react/components/CanvasEmptyState.d.ts +32 -0
- package/dist/design-canvas-react/components/CanvasInsertPanel.d.ts +53 -0
- package/dist/{lazy-DrkVyDpe.d.ts → design-canvas-react/components/DesignCanvas.d.ts} +27 -20
- package/dist/design-canvas-react/components/DesignCanvasEditor.d.ts +23 -0
- package/dist/design-canvas-react/components/ElementNode.d.ts +51 -0
- package/dist/design-canvas-react/components/ExportControl.d.ts +21 -0
- package/dist/design-canvas-react/components/GridLayer.d.ts +47 -0
- package/dist/design-canvas-react/components/InlineTextEditor.d.ts +25 -0
- package/dist/design-canvas-react/components/LayersPanel.d.ts +20 -0
- package/dist/design-canvas-react/components/PagesStrip.d.ts +34 -0
- package/dist/design-canvas-react/components/Rulers.d.ts +31 -0
- package/dist/design-canvas-react/components/SelectionLayer.d.ts +51 -0
- package/dist/design-canvas-react/components/SnapGuidesOverlay.d.ts +25 -0
- package/dist/design-canvas-react/components/Toolbar.d.ts +64 -0
- package/dist/design-canvas-react/components/Workspace.d.ts +92 -0
- package/dist/design-canvas-react/components/ZoomControls.d.ts +14 -0
- package/dist/design-canvas-react/components/glyphs.d.ts +46 -0
- package/dist/design-canvas-react/components/icon-button.d.ts +22 -0
- package/dist/design-canvas-react/components/index.d.ts +27 -0
- package/dist/design-canvas-react/components/layer-tree.d.ts +34 -0
- package/dist/design-canvas-react/components/ruler-math.d.ts +78 -0
- package/dist/design-canvas-react/components/transform-math.d.ts +168 -0
- package/dist/{command-stack-TNPWJCzW.d.ts → design-canvas-react/contracts.d.ts} +16 -63
- package/dist/design-canvas-react/engine/command-stack.d.ts +43 -0
- package/dist/design-canvas-react/engine/commands.d.ts +154 -0
- package/dist/design-canvas-react/engine/selection.d.ts +48 -0
- package/dist/design-canvas-react/engine/snap.d.ts +24 -0
- package/dist/design-canvas-react/engine/zoom-pan.d.ts +18 -0
- package/dist/design-canvas-react/engine.d.ts +21 -399
- package/dist/design-canvas-react/export-math.d.ts +104 -0
- package/dist/design-canvas-react/export.d.ts +89 -0
- package/dist/design-canvas-react/index.d.ts +16 -586
- package/dist/design-canvas-react/insert-builders.d.ts +61 -0
- package/dist/design-canvas-react/lazy.d.ts +21 -6
- package/dist/documents/docx.d.ts +50 -0
- package/dist/documents/extract.d.ts +87 -0
- package/dist/documents/index.d.ts +26 -232
- package/dist/documents/media-type.d.ts +33 -0
- package/dist/documents/pdf-inspector.d.ts +5 -9
- package/dist/{types-DrBidf3O.d.ts → documents/types.d.ts} +13 -15
- package/dist/documents/zip.d.ts +56 -0
- package/dist/eval/calibration.d.ts +106 -0
- package/dist/eval/index.d.ts +8 -116
- package/dist/eval-campaign/index.d.ts +11 -12
- package/dist/{trust-gate-Dcm5xSva.d.ts → eval-campaign/trust-gate.d.ts} +5 -9
- package/dist/forms/blank.d.ts +48 -0
- package/dist/forms/fill.d.ts +105 -0
- package/dist/forms/index.d.ts +58 -332
- package/dist/forms/registry.d.ts +115 -0
- package/dist/forms/verify.d.ts +58 -0
- package/dist/harness/index.d.ts +21 -19
- package/dist/intakes/api.d.ts +5 -11
- package/dist/{completion-CvcNUz07.d.ts → intakes/completion.d.ts} +7 -11
- package/dist/intakes/context-sufficiency.d.ts +113 -0
- package/dist/intakes/drizzle/schema.d.ts +338 -0
- package/dist/intakes/drizzle/store.d.ts +75 -0
- package/dist/intakes/drizzle.d.ts +12 -391
- package/dist/intakes/index.d.ts +23 -113
- package/dist/{model-C8U0HZxL.d.ts → intakes/model.d.ts} +15 -17
- package/dist/intakes-react/components/BrandMark.d.ts +10 -0
- package/dist/intakes-react/components/IntakeInterview.d.ts +15 -0
- package/dist/intakes-react/components/index.d.ts +1 -0
- package/dist/intakes-react/contracts.d.ts +42 -0
- package/dist/intakes-react/index.d.ts +12 -47
- package/dist/intakes-react/lazy.d.ts +9 -8
- package/dist/integrations/index.d.ts +10 -12
- package/dist/{contract-OxG_jVMx.d.ts → interactions/contract.d.ts} +40 -42
- package/dist/interactions/index.d.ts +16 -256
- package/dist/interactions/route.d.ts +151 -0
- package/dist/interactions/sidecar.d.ts +100 -0
- package/dist/knowledge/index.d.ts +7 -11
- package/dist/knowledge-loop/index.d.ts +13 -20
- package/dist/legibility/checks/empty-state.d.ts +59 -0
- package/dist/legibility/checks/reachability.d.ts +103 -0
- package/dist/legibility/checks/silent-failure.d.ts +57 -0
- package/dist/legibility/checks/success.d.ts +38 -0
- package/dist/legibility/checks/vocabulary.d.ts +65 -0
- package/dist/legibility/cli-args.d.ts +30 -0
- package/dist/legibility/cli.d.ts +25 -0
- package/dist/legibility/index.d.ts +10 -530
- package/dist/legibility/report.d.ts +22 -0
- package/dist/legibility/scan.d.ts +29 -0
- package/dist/legibility/source.d.ts +132 -0
- package/dist/legibility/suppress.d.ts +36 -0
- package/dist/legibility/types.d.ts +168 -0
- package/dist/legibility/walk-sources.d.ts +21 -0
- package/dist/{agent-activity-C8ZG0F0M.d.ts → missions/agent-activity.d.ts} +3 -5
- package/dist/missions/engine.d.ts +251 -0
- package/dist/missions/events.d.ts +195 -0
- package/dist/missions/index.d.ts +12 -765
- package/dist/missions/plan-parse.d.ts +50 -0
- package/dist/missions/service.d.ts +265 -0
- package/dist/{failover-D-3UXXTb.d.ts → model-resolution/failover.d.ts} +10 -12
- package/dist/model-resolution/index.d.ts +15 -18
- package/dist/object-store/index.d.ts +15 -17
- package/dist/openui/action.d.ts +54 -0
- package/dist/openui/authoring.d.ts +25 -0
- package/dist/openui/index.d.ts +24 -206
- package/dist/openui/route.d.ts +124 -0
- package/dist/openui/segments.d.ts +71 -0
- package/dist/openui/values.d.ts +82 -0
- package/dist/openui-react/index.d.ts +9 -13
- package/dist/peer-floors/check.d.ts +9 -190
- package/dist/peer-floors/cli.d.ts +2 -3
- package/dist/peer-floors/dependency-source.d.ts +178 -0
- package/dist/plans/index.d.ts +13 -14
- package/dist/{billing-BuNlaKlE.d.ts → platform/billing.d.ts} +28 -32
- package/dist/platform/guards.d.ts +79 -0
- package/dist/platform/hub.d.ts +107 -0
- package/dist/platform/index.d.ts +7 -112
- package/dist/{sso-Cm00S61u.d.ts → platform/sso.d.ts} +15 -97
- package/dist/preflight/cli.d.ts +3 -6
- package/dist/preflight/index.d.ts +16 -18
- package/dist/preset-cloudflare/headers.d.ts +12 -0
- package/dist/preset-cloudflare/index.d.ts +22 -74
- package/dist/preset-cloudflare/workflow-instance.d.ts +35 -0
- package/dist/profile/budget.d.ts +72 -0
- package/dist/profile/fingerprint.d.ts +65 -0
- package/dist/profile/index.d.ts +27 -19
- package/dist/prompt/index.d.ts +3 -5
- package/dist/record/drizzle/schema.d.ts +488 -0
- package/dist/record/drizzle/store.d.ts +224 -0
- package/dist/record/drizzle.d.ts +10 -679
- package/dist/record/fold.d.ts +99 -0
- package/dist/record/index.d.ts +13 -13
- package/dist/{fold-DACU7gtf.d.ts → record/model.d.ts} +22 -124
- package/dist/record/ulid.d.ts +12 -0
- package/dist/redact/index.d.ts +14 -16
- package/dist/run/index.d.ts +11 -16
- package/dist/runtime/agent.d.ts +23 -0
- package/dist/runtime/certified-delivery.d.ts +57 -0
- package/dist/runtime/index.d.ts +17 -367
- package/dist/runtime/loop.d.ts +58 -0
- package/dist/runtime/model-catalog.d.ts +103 -0
- package/dist/{model-CdCDfBA9.d.ts → runtime/model.d.ts} +25 -27
- package/dist/runtime/openai-stream.d.ts +126 -0
- package/dist/runtime/surface-profile.d.ts +115 -0
- package/dist/sandbox/binary-read.d.ts +63 -0
- package/dist/sandbox/diagnostics.d.ts +69 -0
- package/dist/sandbox/index.d.ts +103 -1085
- package/dist/sandbox/model.d.ts +179 -0
- package/dist/sandbox/outcome.d.ts +10 -0
- package/dist/sandbox/prewarm-claim-d1.d.ts +80 -0
- package/dist/sandbox/prewarm.d.ts +193 -0
- package/dist/sandbox/recovery.d.ts +216 -0
- package/dist/sandbox/terminal-connection.d.ts +145 -0
- package/dist/sandbox/workspace-sandbox-manager.d.ts +44 -0
- package/dist/sequences/apply.d.ts +54 -0
- package/dist/sequences/captions.d.ts +91 -0
- package/dist/sequences/drizzle-store.d.ts +36 -0
- package/dist/sequences/drizzle.d.ts +7 -1252
- package/dist/sequences/exports.d.ts +138 -0
- package/dist/sequences/index.d.ts +19 -340
- package/dist/sequences/mcp-entry.d.ts +15 -0
- package/dist/sequences/mcp-handler.d.ts +39 -0
- package/dist/sequences/mcp-tools.d.ts +47 -0
- package/dist/{store-B7LLlk9p.d.ts → sequences/model.d.ts} +26 -110
- package/dist/sequences/operations.d.ts +126 -0
- package/dist/sequences/schema.d.ts +1231 -0
- package/dist/sequences/store.d.ts +81 -0
- package/dist/sequences/validate.d.ts +98 -0
- package/dist/sequences-react/components/BrandMark.d.ts +10 -0
- package/dist/sequences-react/components/PreviewCanvas.d.ts +26 -0
- package/dist/sequences-react/components/SnapIndicatorLine.d.ts +11 -0
- package/dist/sequences-react/components/TimelineClipChip.d.ts +80 -0
- package/dist/sequences-react/components/TimelineEditor.d.ts +44 -0
- package/dist/sequences-react/components/TimelineEmptyState.d.ts +21 -0
- package/dist/sequences-react/components/TimelineGhostLanes.d.ts +14 -0
- package/dist/sequences-react/components/TimelinePlayhead.d.ts +11 -0
- package/dist/sequences-react/components/TimelineRuler.d.ts +16 -0
- package/dist/sequences-react/components/TimelineSmallScreenGate.d.ts +12 -0
- package/dist/sequences-react/components/TimelineTrackRow.d.ts +51 -0
- package/dist/sequences-react/components/ZoomControl.d.ts +15 -0
- package/dist/sequences-react/components/composite-command.d.ts +8 -0
- package/dist/sequences-react/components/glyphs.d.ts +26 -0
- package/dist/sequences-react/components/index.d.ts +31 -0
- package/dist/sequences-react/components/interaction-math.d.ts +103 -0
- package/dist/sequences-react/contracts.d.ts +187 -0
- package/dist/sequences-react/engine/command-stack.d.ts +18 -0
- package/dist/sequences-react/engine/commands.d.ts +146 -0
- package/dist/sequences-react/engine/playback.d.ts +18 -0
- package/dist/sequences-react/engine/snap.d.ts +29 -0
- package/dist/sequences-react/engine/zoom.d.ts +29 -0
- package/dist/sequences-react/index.d.ts +20 -880
- package/dist/sequences-react/lazy.d.ts +8 -0
- package/dist/sequences-react/media/frame-provider.d.ts +70 -0
- package/dist/sequences-react/media/transcription.d.ts +33 -0
- package/dist/sequences-react/media/waveform.d.ts +34 -0
- package/dist/session-shell/index.d.ts +31 -204
- package/dist/session-shell/nav-guard.d.ts +170 -0
- package/dist/session-shell/path.d.ts +19 -0
- package/dist/signoff/cli.d.ts +4 -7
- package/dist/signoff/config.d.ts +12 -0
- package/dist/signoff/exec.d.ts +44 -0
- package/dist/signoff/index.d.ts +56 -14
- package/dist/signoff/invoked-as-script.d.ts +25 -0
- package/dist/signoff/node-version.d.ts +50 -0
- package/dist/signoff/proof-attach.d.ts +88 -0
- package/dist/signoff/proof-cli.d.ts +1 -0
- package/dist/signoff/proof-fixture.d.ts +13 -0
- package/dist/signoff/proof-from-report.d.ts +22 -0
- package/dist/signoff/proof-git.d.ts +57 -0
- package/dist/signoff/proof-record.d.ts +202 -0
- package/dist/signoff/proof-verify.d.ts +103 -0
- package/dist/signoff/proof.d.ts +35 -310
- package/dist/signoff/report.d.ts +7 -0
- package/dist/{run-D80hoLKh.d.ts → signoff/run.d.ts} +3 -6
- package/dist/signoff/schedule.d.ts +55 -0
- package/dist/signoff/seeds.d.ts +50 -0
- package/dist/signoff/store.d.ts +22 -0
- package/dist/{types-Bd6uW9vQ.d.ts → signoff/types.d.ts} +15 -17
- package/dist/signoff/workflow-pin.d.ts +56 -0
- package/dist/signoff/workspace.d.ts +40 -0
- package/dist/skills/index.d.ts +28 -32
- package/dist/skills-placement/index.d.ts +7 -11
- package/dist/spend/budget.d.ts +123 -0
- package/dist/spend/ceiling.d.ts +51 -0
- package/dist/spend/cli-args.d.ts +20 -0
- package/dist/spend/cli.d.ts +1 -0
- package/dist/spend/fixtures/incident-parked-time.d.ts +55 -0
- package/dist/spend/index.d.ts +38 -1144
- package/dist/spend/liveness.d.ts +131 -0
- package/dist/spend/ownership.d.ts +87 -0
- package/dist/spend/reconcile.d.ts +109 -0
- package/dist/spend/reference.d.ts +42 -0
- package/dist/spend/report.d.ts +12 -0
- package/dist/spend/store.d.ts +123 -0
- package/dist/spend/types.d.ts +466 -0
- package/dist/store/index.d.ts +10 -12
- package/dist/stories/app-shell/fixtures.d.ts +43 -0
- package/dist/stories/app-shell/shell.d.ts +81 -0
- package/dist/stories/assistant/fixtures.d.ts +73 -0
- package/dist/stories/chat/fixtures.d.ts +70 -0
- package/dist/stories/chat/markdown.d.ts +11 -0
- package/dist/stories/chat/run-drill-in.d.ts +19 -0
- package/dist/stories/chat-controls/fixtures.d.ts +116 -0
- package/dist/stories/design-canvas/fixtures.d.ts +57 -0
- package/dist/stories/fixtures/canvas.d.ts +10 -0
- package/dist/stories/fixtures/catalog.d.ts +7 -0
- package/dist/stories/fixtures/chat.d.ts +39 -0
- package/dist/stories/fixtures/index.d.ts +4 -0
- package/dist/stories/fixtures/sequences.d.ts +17 -0
- package/dist/stories/panels/fixtures.d.ts +63 -0
- package/dist/stories/sequences/fixtures.d.ts +30 -0
- package/dist/stories/studio/fixtures.d.ts +22 -0
- package/dist/stream/index.d.ts +10 -56
- package/dist/{stream-normalizer-DKRxyVlZ.d.ts → stream/stream-normalizer.d.ts} +23 -26
- package/dist/{turn-buffer-COMQUwO2.d.ts → stream/turn-buffer.d.ts} +21 -23
- package/dist/stream/turn-identity.d.ts +49 -0
- package/dist/studio/generation.d.ts +179 -0
- package/dist/studio/index.d.ts +12 -181
- package/dist/studio-react/avatar-composer.d.ts +8 -0
- package/dist/studio-react/composer-hero.d.ts +12 -0
- package/dist/studio-react/composer-shell.d.ts +18 -0
- package/dist/studio-react/generation-card.d.ts +9 -0
- package/dist/studio-react/generation-detail-modal.d.ts +11 -0
- package/dist/studio-react/generation-detail.d.ts +6 -0
- package/dist/studio-react/generation-grid.d.ts +15 -0
- package/dist/studio-react/image-composer.d.ts +8 -0
- package/dist/studio-react/index.d.ts +32 -245
- package/dist/studio-react/library-drawer.d.ts +12 -0
- package/dist/studio-react/library-panel.d.ts +15 -0
- package/dist/studio-react/publish-package-composer.d.ts +18 -0
- package/dist/studio-react/result-canvas.d.ts +6 -0
- package/dist/studio-react/speech-composer.d.ts +4 -0
- package/dist/studio-react/studio-header.d.ts +5 -0
- package/dist/studio-react/studio-sheet.d.ts +12 -0
- package/dist/studio-react/studio-workspace.d.ts +23 -0
- package/dist/studio-react/transcription-composer.d.ts +12 -0
- package/dist/studio-react/type-config.d.ts +11 -0
- package/dist/studio-react/use-studio-generations.d.ts +20 -0
- package/dist/studio-react/video-composer.d.ts +10 -0
- package/dist/tangle/index.d.ts +7 -9
- package/dist/teams/drizzle/access.d.ts +82 -0
- package/dist/{invitations-schema-_fI7HkJP.d.ts → teams/drizzle/invitations-schema.d.ts} +39 -27
- package/dist/teams/drizzle/personal-organization.d.ts +41 -0
- package/dist/{access-490O6aOU.d.ts → teams/drizzle/schema.d.ts} +57 -122
- package/dist/teams/drizzle.d.ts +12 -44
- package/dist/teams/index.d.ts +20 -44
- package/dist/teams/invitations-api.d.ts +17 -21
- package/dist/{invitations-DoYMvXea.d.ts → teams/invitations.d.ts} +14 -18
- package/dist/teams/invite.d.ts +42 -0
- package/dist/teams/members-api.d.ts +12 -16
- package/dist/teams/resend.d.ts +3 -13
- package/dist/{roles-B4nU3jDi.d.ts → teams/roles.d.ts} +18 -20
- package/dist/teams-react/components/BrandMark.d.ts +10 -0
- package/dist/teams-react/components/InvitationsPanel.d.ts +13 -0
- package/dist/teams-react/components/InviteAcceptPage.d.ts +10 -0
- package/dist/teams-react/components/MembersPanel.d.ts +14 -0
- package/dist/teams-react/components/RoleSelect.d.ts +17 -0
- package/dist/teams-react/components/index.d.ts +3 -0
- package/dist/teams-react/contracts.d.ts +134 -0
- package/dist/teams-react/index.d.ts +12 -143
- package/dist/teams-react/lazy.d.ts +11 -11
- package/dist/test-setup.d.ts +1 -0
- package/dist/theme/index.d.ts +6 -104
- package/dist/theme/tailwind-preset.d.ts +1 -2
- package/dist/theme/theme.d.ts +106 -0
- package/dist/theme-contract/cli.d.ts +21 -0
- package/dist/theme-contract/index.d.ts +4 -6
- package/dist/{auth-BYtiazA4.d.ts → tools/auth.d.ts} +8 -11
- package/dist/tools/capability.d.ts +54 -0
- package/dist/tools/dispatch.d.ts +37 -0
- package/dist/tools/errors.d.ts +8 -0
- package/dist/tools/gating.d.ts +62 -0
- package/dist/tools/http.d.ts +27 -0
- package/dist/tools/index.d.ts +12 -217
- package/dist/{mcp-rpc-DYwPlYbZ.d.ts → tools/mcp-rpc.d.ts} +7 -9
- package/dist/{mcp-xxoZZfor.d.ts → tools/mcp.d.ts} +14 -16
- package/dist/tools/openai.d.ts +28 -0
- package/dist/tools/registry.d.ts +39 -0
- package/dist/tools/runtime.d.ts +22 -0
- package/dist/{types-B25Mib1r.d.ts → tools/types.d.ts} +15 -83
- package/dist/{flow-types-CJxEmaRy.d.ts → trace/flow-types.d.ts} +2 -4
- package/dist/trace/index.d.ts +11 -148
- package/dist/trace/mission-flow.d.ts +82 -0
- package/dist/trace/mission-trace.d.ts +52 -0
- package/dist/turn-health/classify.d.ts +207 -0
- package/dist/turn-health/index.d.ts +29 -637
- package/dist/turn-health/lifecycle.d.ts +75 -0
- package/dist/turn-health/sink.d.ts +122 -0
- package/dist/turn-health/sweep.d.ts +245 -0
- package/dist/turn-stream/adapters.d.ts +257 -0
- package/dist/turn-stream/core.d.ts +293 -0
- package/dist/turn-stream/do.d.ts +144 -0
- package/dist/turn-stream/index.d.ts +62 -738
- package/dist/turn-stream/memory.d.ts +41 -0
- package/dist/vault/ConfirmDialog.d.ts +22 -0
- package/dist/vault/VaultPane.d.ts +15 -0
- package/dist/{VaultPane-BDP6SB_K.d.ts → vault/contracts.d.ts} +15 -22
- package/dist/vault/index.d.ts +15 -22
- package/dist/vault/lazy.d.ts +9 -7
- package/dist/vault/server.d.ts +8 -10
- package/dist/web/free-route-limit.d.ts +187 -0
- package/dist/web/index.d.ts +15 -207
- package/dist/{rate-limit-BOVmJRXZ.d.ts → web/rate-limit.d.ts} +3 -5
- package/dist/web-react/agent-session-controls.d.ts +105 -0
- package/dist/web-react/async/async-view.d.ts +69 -0
- package/dist/web-react/async/index.d.ts +13 -305
- package/dist/web-react/async/state.d.ts +107 -0
- package/dist/web-react/async/use-async-resource.d.ts +41 -0
- package/dist/web-react/async/use-confirmed-mutation.d.ts +90 -0
- package/dist/web-react/brand-mark.d.ts +11 -0
- package/dist/web-react/chat-attachments.d.ts +21 -0
- package/dist/web-react/chat-composer.d.ts +174 -0
- package/dist/web-react/chat-interactions.d.ts +1 -0
- package/dist/web-react/chat-mentions.d.ts +48 -0
- package/dist/web-react/chat-stream.d.ts +106 -0
- package/dist/web-react/class-names.d.ts +10 -0
- package/dist/web-react/controls.d.ts +265 -0
- package/dist/web-react/durable-chat-cards.d.ts +40 -0
- package/dist/web-react/durable-interaction-submit.d.ts +22 -0
- package/dist/web-react/durable-plan-card.d.ts +13 -0
- package/dist/web-react/durable-plan-flow.d.ts +77 -0
- package/dist/web-react/harness-glyphs.d.ts +28 -0
- package/dist/web-react/index.d.ts +80 -2347
- package/dist/web-react/inert.d.ts +39 -0
- package/dist/web-react/insight-card.d.ts +203 -0
- package/dist/web-react/interaction-card-support.d.ts +115 -0
- package/dist/web-react/interaction-plan-card.d.ts +39 -0
- package/dist/web-react/interaction-question-card.d.ts +100 -0
- package/dist/web-react/message-attachments.d.ts +56 -0
- package/dist/web-react/mission-activity.d.ts +96 -0
- package/dist/web-react/motion.d.ts +43 -0
- package/dist/web-react/provenance-model.d.ts +195 -0
- package/dist/web-react/provenance.d.ts +82 -0
- package/dist/web-react/provider-logo.d.ts +14 -0
- package/dist/web-react/record-grid-model.d.ts +257 -0
- package/dist/web-react/record-grid.d.ts +108 -0
- package/dist/web-react/sandbox-terminal.d.ts +90 -0
- package/dist/web-react/seat-paywall.d.ts +47 -0
- package/dist/web-react/session-history.d.ts +196 -0
- package/dist/web-react/smooth-text.d.ts +29 -0
- package/dist/web-react/sparkline.d.ts +150 -0
- package/dist/web-react/terminal.d.ts +1 -92
- package/dist/web-react/use-chat-interactions.d.ts +78 -0
- package/dist/web-react/use-composer-attachments.d.ts +111 -0
- package/dist/web-react/use-file-mentions.d.ts +94 -0
- package/dist/web-react/work-product.d.ts +105 -0
- package/dist/work-product/claim-support.d.ts +288 -0
- package/dist/work-product/index.d.ts +16 -849
- package/dist/work-product/provenance.d.ts +61 -0
- package/dist/{queue-VTBA5ONX.d.ts → work-product/queue.d.ts} +10 -12
- package/dist/work-product/quote.d.ts +139 -0
- package/dist/work-product/route.d.ts +88 -0
- package/dist/work-product/service.d.ts +123 -0
- package/dist/work-product/tools.d.ts +144 -0
- package/dist/{types-CCeYywdS.d.ts → work-product/types.d.ts} +29 -31
- package/dist/work-product-react/index.d.ts +19 -8
- package/dist/workspace-react/index.d.ts +8 -11
- package/package.json +4 -3
- package/dist/agent-session-controls-CmlXwp_H.d.ts +0 -384
- package/dist/apply-6wlMOLf8.d.ts +0 -280
- package/dist/attachment-validation-BfJDBU1g.d.ts +0 -261
- package/dist/budget-BOucfcb_.d.ts +0 -142
- package/dist/values-C7RidJuI.d.ts +0 -156
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `RecordGrid` — the editable record table four verticals each hand-rolled: a
|
|
3
|
+
* cap table, two relationship record pages, a content board, and an entities
|
|
4
|
+
* panel. Every copy re-derived the same mechanism and each one lost a
|
|
5
|
+
* different part of it.
|
|
6
|
+
*
|
|
7
|
+
* What this owns:
|
|
8
|
+
*
|
|
9
|
+
* - **Typed columns with correctable errors.** A cell is text / number /
|
|
10
|
+
* currency / date / select / boolean (`./record-grid-model`), so a rejected
|
|
11
|
+
* edit explains itself next to the control instead of storing a coerced
|
|
12
|
+
* value.
|
|
13
|
+
* - **Optimistic write with a real rollback.** The edit lands instantly, the
|
|
14
|
+
* caller's writer returns a typed outcome, and a failure puts the previous
|
|
15
|
+
* value back AND says why. A grid that keeps a value the server refused is
|
|
16
|
+
* the defect this replaces.
|
|
17
|
+
* - **Provenance per cell.** An optional quote + link + basis, so a
|
|
18
|
+
* record-backed grid shows where a value came from without the product
|
|
19
|
+
* building a second surface for it.
|
|
20
|
+
* - **Three distinct data states, on `web-react/async`'s own contract.**
|
|
21
|
+
* `state: AsyncResourceState<Row[]>` and `empty: AsyncEmptySpec` are the
|
|
22
|
+
* same types every other screen fetches through — loading, error-with-
|
|
23
|
+
* retry and empty are different renders, a failed fetch never looks like
|
|
24
|
+
* "no data yet", and the empty state carries the CALLER's next action.
|
|
25
|
+
* The optimistic overlay is layered on top of whichever `ready`/`empty`
|
|
26
|
+
* value the caller last supplied, so a row created while the caller's own
|
|
27
|
+
* status is still `empty` renders immediately rather than waiting for a
|
|
28
|
+
* refetch.
|
|
29
|
+
* - **Keyboard-navigable, labelled controls.** Arrow keys move between cells,
|
|
30
|
+
* Enter edits, Escape cancels, and no destructive control is an unlabelled
|
|
31
|
+
* icon.
|
|
32
|
+
*
|
|
33
|
+
* Presentation is Tailwind against the shared design tokens, with no icon
|
|
34
|
+
* library and no sandbox-ui — the same contract as the rest of `/web-react`.
|
|
35
|
+
*/
|
|
36
|
+
import { type ReactNode } from 'react';
|
|
37
|
+
import { type AsyncEmptySpec, type AsyncResourceState } from './async';
|
|
38
|
+
import { type RecordGridColumn, type RecordGridRow, type RecordGridValue } from './record-grid-model';
|
|
39
|
+
export * from './record-grid-model';
|
|
40
|
+
/** One committed cell edit, handed to `onUpdate`. */
|
|
41
|
+
export interface RecordGridCellChange {
|
|
42
|
+
/** The row as it was BEFORE the edit — what rollback restores. */
|
|
43
|
+
row: RecordGridRow;
|
|
44
|
+
columnId: string;
|
|
45
|
+
value: RecordGridValue;
|
|
46
|
+
/** The full value bag after the edit: what a whole-row write would send. */
|
|
47
|
+
values: Readonly<Record<string, RecordGridValue>>;
|
|
48
|
+
}
|
|
49
|
+
/** Outcome of an update or a delete. `value` optionally carries the server's
|
|
50
|
+
* canonical row, which replaces the optimistic one. */
|
|
51
|
+
export type RecordGridWriteOutcome = {
|
|
52
|
+
succeeded: true;
|
|
53
|
+
value?: RecordGridRow;
|
|
54
|
+
} | {
|
|
55
|
+
succeeded: false;
|
|
56
|
+
error: string;
|
|
57
|
+
};
|
|
58
|
+
/** Outcome of a create. The row is REQUIRED on success: a create that does not
|
|
59
|
+
* name the row it wrote leaves the grid unable to address it. */
|
|
60
|
+
export type RecordGridCreateOutcome = {
|
|
61
|
+
succeeded: true;
|
|
62
|
+
value: RecordGridRow;
|
|
63
|
+
} | {
|
|
64
|
+
succeeded: false;
|
|
65
|
+
error: string;
|
|
66
|
+
};
|
|
67
|
+
/** Properties for the editable, provenance-aware record grid. */
|
|
68
|
+
export interface RecordGridProps {
|
|
69
|
+
/** Column definitions, in render order. */
|
|
70
|
+
columns: readonly RecordGridColumn[];
|
|
71
|
+
/** Fetch state over the caller's rows — `web-react/async`'s
|
|
72
|
+
* `AsyncResourceState`, the same three-state contract every other screen
|
|
73
|
+
* in the shell fetches through. `ready`/`empty`'s value is the base rows;
|
|
74
|
+
* optimistic edits are layered over it and dropped as a later value
|
|
75
|
+
* catches up. `error` always carries `retry` — there is no way to render a
|
|
76
|
+
* failed fetch with no recovery action, by construction. */
|
|
77
|
+
state: AsyncResourceState<readonly RecordGridRow[]>;
|
|
78
|
+
/** Accessible name for the grid. Required — an unnamed grid is unusable with
|
|
79
|
+
* a screen reader. */
|
|
80
|
+
caption: string;
|
|
81
|
+
/** What the empty state says, and what it offers next — `web-react/async`'s
|
|
82
|
+
* `AsyncEmptySpec`, so an empty grid reads in the same words as an empty
|
|
83
|
+
* list or panel elsewhere in the product. */
|
|
84
|
+
empty: AsyncEmptySpec;
|
|
85
|
+
/** Persist one created row. Absent → no add affordance. */
|
|
86
|
+
onCreate?: (values: Readonly<Record<string, RecordGridValue>>) => Promise<RecordGridCreateOutcome>;
|
|
87
|
+
/** Persist one cell edit. Absent → every cell renders read-only. */
|
|
88
|
+
onUpdate?: (change: RecordGridCellChange) => Promise<RecordGridWriteOutcome>;
|
|
89
|
+
/** Delete one row. Absent → no delete affordance. */
|
|
90
|
+
onDelete?: (row: RecordGridRow) => Promise<RecordGridWriteOutcome>;
|
|
91
|
+
/** Starting values for the add form. */
|
|
92
|
+
newRowDefaults?: Readonly<Record<string, RecordGridValue>>;
|
|
93
|
+
/** Label of the add control and of the add form. Defaults to `Add row`. */
|
|
94
|
+
addLabel?: string;
|
|
95
|
+
/** BCP-47 locale for number, currency, and date display. */
|
|
96
|
+
locale?: string;
|
|
97
|
+
/** Rendered above the grid — filters, counts, a product action row. */
|
|
98
|
+
toolbar?: ReactNode;
|
|
99
|
+
/** Skeleton rows in the loading state. Defaults to 3. */
|
|
100
|
+
loadingRowCount?: number;
|
|
101
|
+
className?: string;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* The shared editable record table. A row is a flat value bag keyed by column
|
|
105
|
+
* id, so a record store's fold output maps straight on: one cell per entry,
|
|
106
|
+
* its quote and link in `sources`.
|
|
107
|
+
*/
|
|
108
|
+
export declare function RecordGrid({ columns, caption, state, empty, onCreate, onUpdate, onDelete, newRowDefaults, addLabel, locale, toolbar, loadingRowCount, className, }: RecordGridProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/** Define the connection details and status for a sandbox terminal session */
|
|
2
|
+
export interface SandboxTerminalConnection {
|
|
3
|
+
runtimeUrl: string | null;
|
|
4
|
+
sidecarUrl: string | null;
|
|
5
|
+
token: string | null;
|
|
6
|
+
expiresAt: string | null;
|
|
7
|
+
status: string;
|
|
8
|
+
error: string | null;
|
|
9
|
+
loading: boolean;
|
|
10
|
+
sandboxId?: string;
|
|
11
|
+
connectionId?: string;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Define the response structure for a sandbox terminal connection including URLs, token, status, and errors
|
|
15
|
+
*
|
|
16
|
+
* The browser-direct scoped-token route (`createSandboxTerminalConnectionRoute`,
|
|
17
|
+
* `src/sandbox/terminal-connection.ts`) returns `sidecarUrl`. The hook also
|
|
18
|
+
* exposes that URL through the historical `runtimeUrl` state field so existing
|
|
19
|
+
* terminal panels do not need transport-specific branching.
|
|
20
|
+
*
|
|
21
|
+
* `connectionId` is the id the route's minted token's `sid` is bound to
|
|
22
|
+
* (echoed back from the `connectionId` the hook sent) — pass it straight
|
|
23
|
+
* through as `TerminalView`'s `connectionId` prop, since any other value
|
|
24
|
+
* fails the WS upgrade on the current platform.
|
|
25
|
+
*/
|
|
26
|
+
export interface SandboxTerminalConnectionResponse {
|
|
27
|
+
runtimeUrl?: string;
|
|
28
|
+
sidecarUrl?: string;
|
|
29
|
+
token?: string;
|
|
30
|
+
expiresAt?: string;
|
|
31
|
+
status?: string;
|
|
32
|
+
error?: string;
|
|
33
|
+
sandboxId?: string;
|
|
34
|
+
connectionId?: string;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Define options for configuring a sandbox terminal connection including workspace ID and connection parameters
|
|
38
|
+
*
|
|
39
|
+
* `connectionId`, when set, is passed to
|
|
40
|
+
* `createSandboxTerminalConnectionRoute` as the `connectionId` query
|
|
41
|
+
* parameter — pass `tabTerminalConnectionId()` here so the route mints a
|
|
42
|
+
* token whose `sid` is bound to the same id `TerminalView` will dial. Give
|
|
43
|
+
* `TerminalView` the response's echoed `connectionId` (not this input
|
|
44
|
+
* value) alongside `sidecarUrl` as `apiUrl` and `token`, since a product's
|
|
45
|
+
* `resolveConnectionId` seam may rewrite it server-side.
|
|
46
|
+
*/
|
|
47
|
+
export interface UseSandboxTerminalConnectionOptions {
|
|
48
|
+
workspaceId: string;
|
|
49
|
+
connectionUrl?: string | ((workspaceId: string) => string);
|
|
50
|
+
connectionId?: string;
|
|
51
|
+
fetcher?: typeof fetch;
|
|
52
|
+
provisionPollIntervalMs?: number;
|
|
53
|
+
provisionPollTimeoutMs?: number;
|
|
54
|
+
tokenRefreshSkewMs?: number;
|
|
55
|
+
}
|
|
56
|
+
/** Resolve sandbox terminal connection status and provide a method to initiate the connection */
|
|
57
|
+
export interface UseSandboxTerminalConnectionResult extends SandboxTerminalConnection {
|
|
58
|
+
connect: () => Promise<void>;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Manage and maintain a sandbox terminal connection with automatic polling and token refresh handling
|
|
62
|
+
*
|
|
63
|
+
* `connectionUrl` is backed by the browser-direct scoped-token route
|
|
64
|
+
* (`createSandboxTerminalConnectionRoute`,
|
|
65
|
+
* `src/sandbox/terminal-connection.ts`). The route returns `sidecarUrl`; the
|
|
66
|
+
* hook normalizes it into both URL fields for compatibility with existing
|
|
67
|
+
* terminal panels.
|
|
68
|
+
*
|
|
69
|
+
* Pass `tabTerminalConnectionId()` as `opts.connectionId` — the hook forwards
|
|
70
|
+
* it as the `connectionId` query parameter the browser-direct route requires
|
|
71
|
+
* to mint a token whose `sid` is bound to that exact id (the orchestrator's
|
|
72
|
+
* terminal WS gate fails closed on any other value). Give `TerminalView` the
|
|
73
|
+
* RESULT's echoed `connectionId` (not the input value — a product's
|
|
74
|
+
* `resolveConnectionId` seam may rewrite it), the resolved `sidecarUrl`/
|
|
75
|
+
* `runtimeUrl` as `apiUrl`, and `token` as its token prop.
|
|
76
|
+
*/
|
|
77
|
+
export declare function useSandboxTerminalConnection(opts: UseSandboxTerminalConnectionOptions): UseSandboxTerminalConnectionResult;
|
|
78
|
+
/**
|
|
79
|
+
* Stable-per-tab, unique-per-client terminal connection id.
|
|
80
|
+
*
|
|
81
|
+
* Persists in `sessionStorage` so a reload in the same tab reuses the id (the
|
|
82
|
+
* sidecar restores the same PTY session via `TerminalView.connectionId`), while
|
|
83
|
+
* separate tabs/windows each get a distinct id. Pass the result as
|
|
84
|
+
* `TerminalView`'s `connectionId`. Without it (e.g. gtm-agent today) every tab
|
|
85
|
+
* shares one connection id and their reconnects evict each other.
|
|
86
|
+
*
|
|
87
|
+
* Falls back to an ephemeral id when `sessionStorage` is unavailable (SSR,
|
|
88
|
+
* privacy mode) — still unique per call, just not reload-stable.
|
|
89
|
+
*/
|
|
90
|
+
export declare function tabTerminalConnectionId(storageKey?: string): string;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `SeatPaywall` — the shared "unlock this product" screen every agent app
|
|
3
|
+
* shows when a user has no active seat and has spent past the free tier.
|
|
4
|
+
*
|
|
5
|
+
* Copy contract (design §6.8): the included monthly AI usage is framed as a
|
|
6
|
+
* BENEFIT the buyer receives — never the ratio, never the word "margin", never
|
|
7
|
+
* "we debit 50%". Surface the allowance, hide the economics.
|
|
8
|
+
*
|
|
9
|
+
* Styling contract matches the rest of `web-react`: Tailwind classes over the
|
|
10
|
+
* shared design tokens (`bg-card`, `border-border`, `text-muted-foreground`,
|
|
11
|
+
* `bg-primary`, …); glyphs are inline SVGs; no icon or UI library.
|
|
12
|
+
*/
|
|
13
|
+
import type { ReactNode } from 'react';
|
|
14
|
+
import type { ProductSeatOffer } from '../platform/billing';
|
|
15
|
+
export interface SeatPaywallProps {
|
|
16
|
+
/** Human product name shown in the headline, e.g. "Creative". */
|
|
17
|
+
product: string;
|
|
18
|
+
/** Fired when the user clicks the unlock CTA — route them to checkout. When
|
|
19
|
+
* it returns a promise the button shows a pending state and ignores repeat
|
|
20
|
+
* clicks until it settles (no double-charge on a slow checkout open). */
|
|
21
|
+
onCheckout: () => void | Promise<void>;
|
|
22
|
+
/** Monthly seat price in whole dollars. Default 100. */
|
|
23
|
+
priceUsd?: number;
|
|
24
|
+
/** Included monthly AI usage in whole dollars. Default 50. */
|
|
25
|
+
includedUsageUsd?: number;
|
|
26
|
+
/** Platform catalog terms. When present, these override the legacy dollar
|
|
27
|
+
* props and show any introductory period without product-local price copy. */
|
|
28
|
+
offer?: ProductSeatOffer;
|
|
29
|
+
/** Optional one-line value prop under the headline. */
|
|
30
|
+
tagline?: string;
|
|
31
|
+
/** CTA label. Default "Continue to checkout". */
|
|
32
|
+
ctaLabel?: string;
|
|
33
|
+
/** Value-prop bullets. Default = product/usage-derived only; pass your own to
|
|
34
|
+
* supply product-specific value props (the shell bakes no GTM copy). */
|
|
35
|
+
benefits?: ReactNode[];
|
|
36
|
+
/** Optional fine print under the CTA (e.g. "Cancel anytime."). Omitted by default. */
|
|
37
|
+
footnote?: ReactNode;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Centered card paywall. The price line reads
|
|
41
|
+
* "$100/mo · includes $50/mo of AI usage" so the included allowance anchors the
|
|
42
|
+
* value without ever exposing the ratio — and says it ONCE: the default
|
|
43
|
+
* benefits don't restate the usage line the subline already carries, and the
|
|
44
|
+
* CTA is the next step ("Continue to checkout"), not a third repeat of the
|
|
45
|
+
* eyebrow + headline's "Unlock {product}".
|
|
46
|
+
*/
|
|
47
|
+
export declare function SeatPaywall({ product, onCheckout, priceUsd, includedUsageUsd, offer, tagline, ctaLabel, benefits, footnote, }: SeatPaywallProps): ReactNode;
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The rendered half of the session shell: the history view behind the rail's
|
|
3
|
+
* session list, and the rename/delete dialogs both surfaces drive.
|
|
4
|
+
*
|
|
5
|
+
* Storage is a seam, not a dependency. Every product keeps sessions somewhere
|
|
6
|
+
* different (gtm threads, tax sessions, legal matters), so this takes a
|
|
7
|
+
* `fetchPage` data port and injected mutations — the same shape
|
|
8
|
+
* `AgentActivityPanel` (`fetchActivity`) and `ReviewQueuePanel` (`fetchQueue`)
|
|
9
|
+
* already use, rather than a fifth pattern.
|
|
10
|
+
*
|
|
11
|
+
* sandbox-ui free on purpose: `/web-react` must not force the optional peer, so
|
|
12
|
+
* these render on the shared design tokens like the rest of the subpath. The
|
|
13
|
+
* pure logic (nav items, routing, cookies, merging) lives in `/session-shell`,
|
|
14
|
+
* which a server loader can import without pulling React.
|
|
15
|
+
*/
|
|
16
|
+
import { type ReactNode, type RefObject } from 'react';
|
|
17
|
+
import { type SessionPage, type SessionRailAction, type SessionSort, type SessionSummary } from '../session-shell/index';
|
|
18
|
+
export interface UseInfiniteScrollOptions {
|
|
19
|
+
/** Only fire `onLoadMore` while true (a next page exists, none in flight). */
|
|
20
|
+
enabled: boolean;
|
|
21
|
+
/** Scroll container the sentinel lives in. Defaults to the viewport. */
|
|
22
|
+
root?: RefObject<HTMLElement | null>;
|
|
23
|
+
/** Prefetch distance before the sentinel is actually reached. */
|
|
24
|
+
rootMargin?: string;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Fires `onLoadMore` when a sentinel element scrolls into view. Returns a ref
|
|
28
|
+
* callback for that sentinel (typically the last element in a list).
|
|
29
|
+
*
|
|
30
|
+
* The observer is re-created whenever `enabled` flips, so a short first page
|
|
31
|
+
* that leaves the sentinel on-screen keeps loading: when a load finishes and
|
|
32
|
+
* `enabled` returns to true, the fresh observer re-reads the current
|
|
33
|
+
* intersection state and fires again until the sentinel is pushed off-screen.
|
|
34
|
+
*/
|
|
35
|
+
export declare function useInfiniteScroll(onLoadMore: () => void, { enabled, root, rootMargin }: UseInfiniteScrollOptions): (node: HTMLElement | null) => void;
|
|
36
|
+
export interface SessionPageQuery {
|
|
37
|
+
/** Trimmed search term; empty string means no filter. */
|
|
38
|
+
q: string;
|
|
39
|
+
sort: SessionSort;
|
|
40
|
+
/** `null` for the first page. */
|
|
41
|
+
cursor: string | null;
|
|
42
|
+
/** Aborted when the view changes or the component unmounts. */
|
|
43
|
+
signal: AbortSignal;
|
|
44
|
+
}
|
|
45
|
+
/** Data port — one page of sessions for the current view. */
|
|
46
|
+
export type FetchSessionPage = (query: SessionPageQuery) => Promise<SessionPage>;
|
|
47
|
+
export interface UseSessionHistoryOptions {
|
|
48
|
+
fetchPage: FetchSessionPage;
|
|
49
|
+
/** Trimmed search term driving the fetch. */
|
|
50
|
+
q: string;
|
|
51
|
+
sort: SessionSort;
|
|
52
|
+
/** SSR page 1 of the default view, so the first paint costs no request. */
|
|
53
|
+
initialPage: SessionPage;
|
|
54
|
+
/** The sort `initialPage` was rendered for. Default `'newest'`. */
|
|
55
|
+
defaultSort?: SessionSort;
|
|
56
|
+
}
|
|
57
|
+
export interface SessionHistoryState {
|
|
58
|
+
items: SessionSummary[];
|
|
59
|
+
hasMore: boolean;
|
|
60
|
+
isLoadingFirst: boolean;
|
|
61
|
+
isLoadingMore: boolean;
|
|
62
|
+
isError: boolean;
|
|
63
|
+
loadMore: () => void;
|
|
64
|
+
/** Re-run whichever load failed. */
|
|
65
|
+
retry: () => void;
|
|
66
|
+
/** Refetch page 1 — call after a client-side mutation (e.g. a delete). */
|
|
67
|
+
reload: () => void;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Infinite-scroll data source for the history view. Seeds from `initialPage`
|
|
71
|
+
* for the default view (no fetch) and otherwise fetches page 1 for the current
|
|
72
|
+
* search/sort; `loadMore` appends the next cursor page.
|
|
73
|
+
*
|
|
74
|
+
* Raw promises + `AbortController` rather than a router fetcher, so a filter
|
|
75
|
+
* change cancels in-flight requests, pages accumulate, and a late response from
|
|
76
|
+
* a superseded view is dropped by the monotonic `seq` guard.
|
|
77
|
+
*/
|
|
78
|
+
export declare function useSessionHistory({ fetchPage, q, sort, initialPage, defaultSort, }: UseSessionHistoryOptions): SessionHistoryState;
|
|
79
|
+
export interface SessionActionsOptions {
|
|
80
|
+
/** Persist a new title. Reject to surface the error in the dialog. */
|
|
81
|
+
renameSession: (sessionId: string, title: string) => Promise<void>;
|
|
82
|
+
deleteSession: (sessionId: string) => Promise<void>;
|
|
83
|
+
/** Called after a successful rename/delete — revalidate the rail here. */
|
|
84
|
+
onChanged?: () => void;
|
|
85
|
+
/** Called after deleting the session the user is currently viewing, so the
|
|
86
|
+
* product can navigate away from a route that no longer resolves. */
|
|
87
|
+
onDeletedCurrent?: () => void;
|
|
88
|
+
/** The open session, compared against the delete target. */
|
|
89
|
+
currentSessionId?: string | null;
|
|
90
|
+
/** Product toast/log seam. Errors also render inside the dialog. */
|
|
91
|
+
notify?: (level: 'success' | 'error', message: string) => void;
|
|
92
|
+
labels?: Partial<SessionActionLabels>;
|
|
93
|
+
}
|
|
94
|
+
export interface SessionActionLabels {
|
|
95
|
+
renameTitle: string;
|
|
96
|
+
renameField: string;
|
|
97
|
+
renameSubmit: string;
|
|
98
|
+
deleteTitle: string;
|
|
99
|
+
deleteBody: (title: string) => string;
|
|
100
|
+
deleteSubmit: string;
|
|
101
|
+
cancel: string;
|
|
102
|
+
renamed: string;
|
|
103
|
+
deleted: string;
|
|
104
|
+
renameFailed: string;
|
|
105
|
+
deleteFailed: string;
|
|
106
|
+
}
|
|
107
|
+
export interface SessionActions {
|
|
108
|
+
openRename: (session: SessionSummary) => void;
|
|
109
|
+
openDelete: (session: SessionSummary) => void;
|
|
110
|
+
/** Render once, anywhere that survives navigation (the layout). */
|
|
111
|
+
dialogs: ReactNode;
|
|
112
|
+
busy: boolean;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Rename + delete for one session, shared by the rail kebab and the history
|
|
116
|
+
* row menu so both drive the same dialogs and the same product mutations.
|
|
117
|
+
*
|
|
118
|
+
* Dialogs are owned here rather than returned as raw state: two surfaces
|
|
119
|
+
* needing the same confirm step is exactly how a product ends up with two
|
|
120
|
+
* subtly different delete confirmations.
|
|
121
|
+
*/
|
|
122
|
+
export declare function useSessionActions({ renameSession, deleteSession, onChanged, onDeletedCurrent, currentSessionId, notify, labels, }: SessionActionsOptions): SessionActions;
|
|
123
|
+
export interface SessionHistoryPanelProps {
|
|
124
|
+
history: SessionHistoryState;
|
|
125
|
+
/** Whether the workspace has any sessions at all — decided by the SSR page,
|
|
126
|
+
* independent of the active search, so filtering to zero shows "no matches"
|
|
127
|
+
* rather than the first-run empty state. */
|
|
128
|
+
hasAnySessions: boolean;
|
|
129
|
+
query: string;
|
|
130
|
+
onQueryChange: (value: string) => void;
|
|
131
|
+
sort: SessionSort;
|
|
132
|
+
onSortChange: (value: SessionSort) => void;
|
|
133
|
+
/** Product route for one session row. */
|
|
134
|
+
hrefForSession: (sessionId: string) => string;
|
|
135
|
+
/** Rendered as the row link. Defaults to an `<a>`; pass a router Link to keep
|
|
136
|
+
* client-side navigation. */
|
|
137
|
+
linkComponent?: LinkLikeComponent;
|
|
138
|
+
/** Ids currently mid-turn — renders the responding treatment. */
|
|
139
|
+
respondingSessionIds?: ReadonlySet<string>;
|
|
140
|
+
onRename?: (session: SessionSummary) => void;
|
|
141
|
+
onDelete?: (session: SessionSummary) => void;
|
|
142
|
+
/** Product-owned mutation for selected rows or a workspace-wide age range. */
|
|
143
|
+
onBulkAction?: (action: SessionBulkAction) => Promise<void>;
|
|
144
|
+
/** Menu wording, so this surface and the rail name the same act the same way
|
|
145
|
+
* — a product whose delete is really an archive says so in both places. */
|
|
146
|
+
renameLabel?: string;
|
|
147
|
+
deleteLabel?: string;
|
|
148
|
+
/**
|
|
149
|
+
* Row actions this shell has no opinion about — pin, categorise, share.
|
|
150
|
+
* Same seam and same ordering as the rail's `SessionRowActions.extraActions`:
|
|
151
|
+
* evaluated per session, placed between rename and delete. This menu is
|
|
152
|
+
* text-only, so `icon` is ignored here and honoured on the rail.
|
|
153
|
+
*/
|
|
154
|
+
extraActions?: (session: SessionSummary) => SessionRailAction[];
|
|
155
|
+
/** New-session destination for the header action. Omitted ⇒ no button. */
|
|
156
|
+
newSessionHref?: string;
|
|
157
|
+
title?: string;
|
|
158
|
+
untitledLabel?: string;
|
|
159
|
+
emptyTitle?: string;
|
|
160
|
+
emptyDescription?: string;
|
|
161
|
+
/** Absolute → relative timestamp. Defaults to a compact built-in. */
|
|
162
|
+
formatTimestamp?: (isoDate: string | null) => string;
|
|
163
|
+
/** Max width of the reading column. `'full'` opts out for a product whose
|
|
164
|
+
* surface really is a wide table. Default keeps title and timestamp inside
|
|
165
|
+
* one scannable line rather than at opposite edges of a 1440px viewport. */
|
|
166
|
+
contentWidth?: 'reading' | 'full';
|
|
167
|
+
className?: string;
|
|
168
|
+
}
|
|
169
|
+
export type SessionBulkAction = {
|
|
170
|
+
kind: 'selected';
|
|
171
|
+
ids: string[];
|
|
172
|
+
} | {
|
|
173
|
+
kind: 'older-than';
|
|
174
|
+
days: number;
|
|
175
|
+
} | {
|
|
176
|
+
kind: 'newer-than';
|
|
177
|
+
days: number;
|
|
178
|
+
};
|
|
179
|
+
export interface LinkLikeProps {
|
|
180
|
+
to: string;
|
|
181
|
+
className?: string;
|
|
182
|
+
children?: ReactNode;
|
|
183
|
+
}
|
|
184
|
+
export type LinkLikeComponent = (props: LinkLikeProps) => ReactNode;
|
|
185
|
+
/** Compact relative time. Overridable — a product with its own i18n passes
|
|
186
|
+
* `formatTimestamp` rather than this being the only option. */
|
|
187
|
+
export declare function formatSessionTimestamp(isoDate: string | null): string;
|
|
188
|
+
/**
|
|
189
|
+
* The full session history: search, sort, cursor-paged rows with per-row
|
|
190
|
+
* actions, and the states in between (first-run empty, loading, no matches,
|
|
191
|
+
* error + retry).
|
|
192
|
+
*
|
|
193
|
+
* This is the surface the rail's capped list overflows into — the reason the
|
|
194
|
+
* rail can stay short without hiding the user's work.
|
|
195
|
+
*/
|
|
196
|
+
export declare function SessionHistoryPanel({ history, hasAnySessions, query, onQueryChange, sort, onSortChange, hrefForSession, linkComponent: Link, respondingSessionIds, onRename, onDelete, onBulkAction, renameLabel, deleteLabel, extraActions, newSessionHref, title, untitledLabel, emptyTitle, emptyDescription, formatTimestamp, contentWidth, className, }: SessionHistoryPanelProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Smooth text reveal — turns chunky network deltas into a continuous
|
|
3
|
+
* typewriter paint. Streamed turns arrive in 100-500ms slabs (model burst,
|
|
4
|
+
* flush windows, replay polls); revealing characters at an adaptive rate
|
|
5
|
+
* makes the same bytes read as top-tier streaming. The rate scales with the
|
|
6
|
+
* backlog so the reveal never falls behind the stream — it crawls when caught
|
|
7
|
+
* up and sprints when a burst lands (e.g. a reasoning summary arriving all at
|
|
8
|
+
* once still *types out* instead of popping in).
|
|
9
|
+
*/
|
|
10
|
+
/** Define configuration options for controlling smooth text reveal animation rates */
|
|
11
|
+
export interface SmoothRevealOptions {
|
|
12
|
+
/** Baseline reveal rate when nearly caught up. Default 90 chars/s. */
|
|
13
|
+
baseCharsPerSecond?: number;
|
|
14
|
+
/** Extra chars/s per backlog character — the catch-up pressure. Default 5. */
|
|
15
|
+
catchUpPerChar?: number;
|
|
16
|
+
/** Hard ceiling so giant bursts still animate. Default 2400 chars/s. */
|
|
17
|
+
maxCharsPerSecond?: number;
|
|
18
|
+
}
|
|
19
|
+
/** Pure reveal step: how many characters should be visible after `dtMs`.
|
|
20
|
+
* Exposed for tests; the hook is a thin rAF wrapper around it. */
|
|
21
|
+
export declare function nextRevealCount(shown: number, targetLength: number, dtMs: number, opts?: SmoothRevealOptions): number;
|
|
22
|
+
/**
|
|
23
|
+
* Animate `target` text into view. While `enabled`, the returned string grows
|
|
24
|
+
* smoothly toward `target` (which may itself keep growing); when `enabled` is
|
|
25
|
+
* false the full text returns immediately (history, completed turns). A
|
|
26
|
+
* target that is not an extension of the revealed prefix (new message) resets
|
|
27
|
+
* the reveal.
|
|
28
|
+
*/
|
|
29
|
+
export declare function useSmoothText(target: string, enabled: boolean, opts?: SmoothRevealOptions): string;
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `Sparkline` — the series behind a number, as inline SVG.
|
|
3
|
+
*
|
|
4
|
+
* `/spend`, `/missions` and the eval lanes all produce a number for today, and
|
|
5
|
+
* every product renders it as text. Text cannot separate "$41, up from $38"
|
|
6
|
+
* from "$41, up from $4" — the same sentence, two different situations — so the
|
|
7
|
+
* reader opens a second surface to find out which one they are in. The series
|
|
8
|
+
* next to the number answers it in one glance.
|
|
9
|
+
*
|
|
10
|
+
* No chart dependency: this subpath is react + `@tangle-network/ui` only, and a
|
|
11
|
+
* polyline is not worth a bundle. What a chart library would give us here is
|
|
12
|
+
* axes, ticks and a tooltip, none of which belong on a 96×24 glyph.
|
|
13
|
+
*
|
|
14
|
+
* The three shapes a hand-rolled sparkline gets wrong, each handled here rather
|
|
15
|
+
* than left to the caller:
|
|
16
|
+
*
|
|
17
|
+
* - **no readings** renders an explicit empty label, never a line. A line
|
|
18
|
+
* along the baseline is a claim — "this metric sat at zero" — and a series
|
|
19
|
+
* nobody has measured yet did not sit anywhere.
|
|
20
|
+
* - **one reading** renders a point. A line needs two coordinates; drawing one
|
|
21
|
+
* from a single reading invents the segment before it.
|
|
22
|
+
* - **equal readings** render flat at MID height. The obvious normalisation
|
|
23
|
+
* divides by `max - min`, which is `0` for a perfectly stable metric, and
|
|
24
|
+
* the resulting `NaN` lands in the `points` attribute — SVG drops the whole
|
|
25
|
+
* polyline, so the metric that never moved is the one that disappears.
|
|
26
|
+
* - **a missing reading renders as a GAP, and the accessible name says so.**
|
|
27
|
+
* A `null` from a hole in a series and a `NaN` from a producer's unguarded
|
|
28
|
+
* division are not smaller series — they are readings nobody has. Deleting
|
|
29
|
+
* them closed the line straight across the hole and announced a count that
|
|
30
|
+
* was short by the number deleted: measured on `[1, NaN, 3]`, one continuous
|
|
31
|
+
* two-point line labelled "2 readings, rising from 1 to 3", with nothing
|
|
32
|
+
* anywhere saying a reading was unreadable. The card's figure slot already
|
|
33
|
+
* refuses to let a non-measurement look measured; the series one line below
|
|
34
|
+
* it holds the same rule. The x axis is the SAMPLE index, so the hole keeps
|
|
35
|
+
* its width, the line breaks at it, and the label carries "N not available".
|
|
36
|
+
*
|
|
37
|
+
* Accessibility: `role="img"` with an `aria-label` naming the metric, its range
|
|
38
|
+
* and its direction. A sparkline with no accessible name is decoration a screen
|
|
39
|
+
* reader cannot report, which would leave the shape — the entire reason the
|
|
40
|
+
* component exists — visible to exactly one kind of reader.
|
|
41
|
+
*
|
|
42
|
+
* Deliberately not animated. `docs/product-surfaces.md` Pattern 4 lists chart
|
|
43
|
+
* draw-on under what this package does not animate: the shape IS the answer,
|
|
44
|
+
* and easing it in taxes every read of a surface people sit in for hours. The
|
|
45
|
+
* card around it arrives (`.agent-arrive`); the line does not draw itself.
|
|
46
|
+
*/
|
|
47
|
+
import type { ReactElement } from 'react';
|
|
48
|
+
/** Where a series ended relative to where it started. */
|
|
49
|
+
export type SparklineDirection = 'rising' | 'falling' | 'flat';
|
|
50
|
+
export interface SparklinePoint {
|
|
51
|
+
readonly x: number;
|
|
52
|
+
readonly y: number;
|
|
53
|
+
}
|
|
54
|
+
export interface SparklineGeometry {
|
|
55
|
+
/** The finite readings, in order — what was actually plotted. */
|
|
56
|
+
readonly readings: readonly number[];
|
|
57
|
+
/** Every plotted point, in order. Positions are on the SAMPLE axis, so a
|
|
58
|
+
* missing reading leaves its width behind rather than closing up. */
|
|
59
|
+
readonly points: readonly SparklinePoint[];
|
|
60
|
+
/** The points split into runs of CONSECUTIVE samples. One run is one stroke:
|
|
61
|
+
* a line drawn across a missing reading states a movement nobody measured. */
|
|
62
|
+
readonly segments: readonly (readonly SparklinePoint[])[];
|
|
63
|
+
/** Samples that carried no usable reading — a `null`, a `NaN`, an infinity.
|
|
64
|
+
* Counted rather than discarded, because the accessible name has to state
|
|
65
|
+
* them: a shorter series announced as a complete one is the silent loss. */
|
|
66
|
+
readonly gaps: number;
|
|
67
|
+
readonly min: number;
|
|
68
|
+
readonly max: number;
|
|
69
|
+
readonly first: number;
|
|
70
|
+
readonly last: number;
|
|
71
|
+
readonly direction: SparklineDirection;
|
|
72
|
+
}
|
|
73
|
+
export interface SparklineGeometryOptions {
|
|
74
|
+
width?: number;
|
|
75
|
+
height?: number;
|
|
76
|
+
/** Keeps the stroke and the end dot inside the viewBox instead of clipping
|
|
77
|
+
* them at the extremes, where the interesting readings always are. */
|
|
78
|
+
inset?: number;
|
|
79
|
+
}
|
|
80
|
+
export declare const DEFAULT_SPARKLINE_WIDTH = 96;
|
|
81
|
+
export declare const DEFAULT_SPARKLINE_HEIGHT = 24;
|
|
82
|
+
/** Only a name, never a metric: it exists so the accessible label is never
|
|
83
|
+
* empty. Every caller in this package passes the metric's own title. */
|
|
84
|
+
export declare const DEFAULT_SPARKLINE_LABEL = "Trend";
|
|
85
|
+
export declare const DEFAULT_SPARKLINE_EMPTY_LABEL = "No history yet";
|
|
86
|
+
/** Nothing was measurable, which is not the same as nothing was measured yet —
|
|
87
|
+
* and "No history yet" over a series that arrived full of `NaN` reads as the
|
|
88
|
+
* metric being new when the producer is broken. */
|
|
89
|
+
export declare const DEFAULT_SPARKLINE_UNAVAILABLE_LABEL = "No readings available";
|
|
90
|
+
/** The package's default number rendering, pinned to `en-US` so a card and its
|
|
91
|
+
* series read the same on every host — a series formatted by the server's
|
|
92
|
+
* locale and a value formatted by the browser's is a defect nobody sees until
|
|
93
|
+
* the decimal separators disagree. */
|
|
94
|
+
export declare function formatSparklineValue(value: number): string;
|
|
95
|
+
/**
|
|
96
|
+
* The readings that can be plotted.
|
|
97
|
+
*
|
|
98
|
+
* A `null` from a gap in a series, or a `NaN` from a division a producer did
|
|
99
|
+
* not guard, is not plotted rather than coerced to `0`: plotting a missing
|
|
100
|
+
* reading at the baseline draws a cliff that never happened.
|
|
101
|
+
*
|
|
102
|
+
* This returns the readings ALONE, so it cannot tell a caller how many are
|
|
103
|
+
* missing. That is what {@link SparklineGeometry.gaps} is for, and what the
|
|
104
|
+
* accessible name reports — dropping a sample and then announcing the shorter
|
|
105
|
+
* count as the whole series is the defect, not the filter.
|
|
106
|
+
*/
|
|
107
|
+
export declare function sparklineReadings(values: readonly number[]): number[];
|
|
108
|
+
/**
|
|
109
|
+
* Plots the series into the viewBox.
|
|
110
|
+
*
|
|
111
|
+
* Pure and exported so the cases that produce a broken chart — nothing, one
|
|
112
|
+
* reading, a flat series, negatives — are unit-testable without a DOM.
|
|
113
|
+
*/
|
|
114
|
+
export declare function sparklineGeometry(values: readonly number[], { width, height, inset }?: SparklineGeometryOptions): SparklineGeometry;
|
|
115
|
+
/** `"2,14 48,3 94,21"` — the `points` attribute of the polyline. */
|
|
116
|
+
export declare function sparklinePointsAttribute(points: readonly SparklinePoint[]): string;
|
|
117
|
+
export interface SparklineLabelOptions {
|
|
118
|
+
label?: string;
|
|
119
|
+
format?: (value: number) => string;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* The accessible name: metric, how many readings, how many are missing, the
|
|
123
|
+
* range, and the direction.
|
|
124
|
+
*
|
|
125
|
+
* All of it is load-bearing. The range without the direction describes a shape
|
|
126
|
+
* that could have been walked in either order; the direction without the range
|
|
127
|
+
* says "rising" about a metric that moved by a rounding error; and the count
|
|
128
|
+
* without the gaps is the number of readings that SURVIVED announced as the
|
|
129
|
+
* number that were taken — the shape a reader cannot see is exactly the one
|
|
130
|
+
* this sentence exists to carry.
|
|
131
|
+
*/
|
|
132
|
+
export declare function sparklineLabel(values: readonly number[], { label, format }?: SparklineLabelOptions): string;
|
|
133
|
+
export interface SparklineProps {
|
|
134
|
+
values: readonly number[];
|
|
135
|
+
/** Names the metric in the accessible label. */
|
|
136
|
+
label?: string;
|
|
137
|
+
/** Renders a reading in that label; defaults to the package number format. */
|
|
138
|
+
format?: (value: number) => string;
|
|
139
|
+
width?: number;
|
|
140
|
+
height?: number;
|
|
141
|
+
/** Shown instead of a line when the metric has no history yet. */
|
|
142
|
+
emptyLabel?: string;
|
|
143
|
+
/** Shown instead of a line when every sample arrived unreadable — a different
|
|
144
|
+
* state from "no history yet", and one the reader has to be able to tell
|
|
145
|
+
* apart, because one is a new metric and the other is a broken producer. */
|
|
146
|
+
unavailableLabel?: string;
|
|
147
|
+
className?: string;
|
|
148
|
+
}
|
|
149
|
+
/** The series glyph. Strokes in `currentColor`, so tone is the caller's. */
|
|
150
|
+
export declare function Sparkline({ values, label, format, width, height, emptyLabel, unavailableLabel, className, }: SparklineProps): ReactElement;
|