@tangle-network/agent-app 0.45.53 → 0.45.55
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/alerting/index.d.ts +5 -175
- package/dist/alerting/slack.d.ts +176 -0
- package/dist/app-auth/index.d.ts +14 -17
- package/dist/assets/index.d.ts +2 -504
- package/dist/assets/schema.d.ts +264 -0
- package/dist/assets/types.d.ts +237 -0
- package/dist/assistant/AssistantDock.d.ts +56 -0
- package/dist/assistant/AssistantHistory.d.ts +41 -0
- package/dist/assistant/AssistantPanel.d.ts +84 -0
- package/dist/assistant/ProposalCard.d.ts +41 -0
- package/dist/assistant/ResizeHandle.d.ts +19 -0
- package/dist/assistant/client-context.d.ts +20 -0
- package/dist/assistant/client.d.ts +117 -0
- package/dist/assistant/index.d.ts +19 -848
- package/dist/assistant/launcher.d.ts +23 -0
- package/dist/assistant/persistence.d.ts +26 -0
- package/dist/assistant/presentation.d.ts +99 -0
- package/dist/assistant/provider-label.d.ts +7 -0
- package/dist/assistant/reducer.d.ts +130 -0
- package/dist/assistant/sse.d.ts +24 -0
- package/dist/assistant/time-ago.d.ts +6 -0
- package/dist/assistant/transcript.d.ts +97 -0
- package/dist/assistant/types.d.ts +291 -0
- package/dist/assistant/use-stick-to-bottom.d.ts +28 -0
- package/dist/assistant/useAssistantChat.d.ts +63 -0
- package/dist/assistant/useAssistantModels.d.ts +22 -0
- package/dist/assistant/useAssistantThreads.d.ts +47 -0
- package/dist/assistant/usePanelPrefs.d.ts +55 -0
- package/dist/billing/index.d.ts +19 -21
- package/dist/brand/index.d.ts +16 -10
- package/dist/brand-extraction/extract.d.ts +34 -0
- package/dist/brand-extraction/index.d.ts +12 -214
- package/dist/brand-extraction/map.d.ts +58 -0
- package/dist/brand-extraction/types.d.ts +119 -0
- package/dist/catalog/index.d.ts +11 -101
- package/dist/chat-react/composer-mode-controls.d.ts +14 -0
- package/dist/chat-react/entry-composer.d.ts +92 -0
- package/dist/chat-react/index.d.ts +22 -118
- package/dist/chat-react/types.d.ts +11 -0
- package/dist/chat-routes/attachment-store.d.ts +84 -0
- package/dist/chat-routes/attachment-upload.d.ts +84 -0
- package/dist/chat-routes/attachment-validation.d.ts +95 -0
- package/dist/chat-routes/binary-sniff.d.ts +45 -0
- package/dist/chat-routes/completed-sandbox-turn.d.ts +25 -0
- package/dist/chat-routes/detached-turn.d.ts +197 -0
- package/dist/chat-routes/dispatch-parts.d.ts +101 -0
- package/dist/chat-routes/draft-persistence.d.ts +189 -0
- package/dist/chat-routes/durable-projection.d.ts +18 -0
- package/dist/chat-routes/file-index.d.ts +115 -0
- package/dist/chat-routes/index.d.ts +25 -1840
- package/dist/chat-routes/model-failover-stream.d.ts +206 -0
- package/dist/chat-routes/promote-file-part.d.ts +84 -0
- package/dist/chat-routes/resolve-attachments.d.ts +72 -0
- package/dist/chat-routes/sandbox-producer.d.ts +146 -0
- package/dist/chat-routes/sandbox-turn-usage.d.ts +4 -0
- package/dist/{stale-turn-lock-DucQzvXu.d.ts → chat-routes/stale-turn-lock.d.ts} +7 -9
- package/dist/chat-routes/turn-routes.d.ts +540 -0
- package/dist/chat-routes/upload.d.ts +84 -0
- package/dist/{wire-DOZ-O6hD.d.ts → chat-routes/wire.d.ts} +41 -44
- package/dist/chat-store/core.d.ts +19 -0
- package/dist/chat-store/index.d.ts +22 -322
- package/dist/{parts-BqIHMdyu.d.ts → chat-store/parts.d.ts} +49 -47
- package/dist/chat-store/schema.d.ts +157 -0
- package/dist/chat-store/store.d.ts +177 -0
- package/dist/config/index.d.ts +13 -18
- package/dist/crypto/index.d.ts +10 -12
- package/dist/crypto/web-token.d.ts +22 -0
- package/dist/design-canvas/apply.d.ts +70 -0
- package/dist/design-canvas/drizzle-store.d.ts +29 -0
- package/dist/design-canvas/drizzle.d.ts +7 -575
- package/dist/{export-presets-mgVulRaV.d.ts → design-canvas/export-presets.d.ts} +18 -22
- package/dist/design-canvas/index.d.ts +22 -268
- package/dist/design-canvas/mcp-entry.d.ts +15 -0
- package/dist/design-canvas/mcp-handler.d.ts +34 -0
- package/dist/design-canvas/mcp-tools.d.ts +30 -0
- package/dist/{model-DnfO_PdJ.d.ts → design-canvas/model.d.ts} +33 -35
- package/dist/{operations-ByJ6yXOW.d.ts → design-canvas/operations.d.ts} +21 -25
- package/dist/design-canvas/schema.d.ts +558 -0
- package/dist/{store-CqfDtnPQ.d.ts → design-canvas/store.d.ts} +8 -12
- package/dist/design-canvas/templates.d.ts +72 -0
- package/dist/design-canvas/validate.d.ts +32 -0
- package/dist/design-canvas-react/components/BleedTrimOverlay.d.ts +22 -0
- package/dist/design-canvas-react/components/BrandKnot.d.ts +11 -0
- package/dist/design-canvas-react/components/CanvasEmptyState.d.ts +32 -0
- package/dist/design-canvas-react/components/CanvasInsertPanel.d.ts +53 -0
- package/dist/{lazy-DrkVyDpe.d.ts → design-canvas-react/components/DesignCanvas.d.ts} +27 -20
- package/dist/design-canvas-react/components/DesignCanvasEditor.d.ts +23 -0
- package/dist/design-canvas-react/components/ElementNode.d.ts +51 -0
- package/dist/design-canvas-react/components/ExportControl.d.ts +21 -0
- package/dist/design-canvas-react/components/GridLayer.d.ts +47 -0
- package/dist/design-canvas-react/components/InlineTextEditor.d.ts +25 -0
- package/dist/design-canvas-react/components/LayersPanel.d.ts +20 -0
- package/dist/design-canvas-react/components/PagesStrip.d.ts +34 -0
- package/dist/design-canvas-react/components/Rulers.d.ts +31 -0
- package/dist/design-canvas-react/components/SelectionLayer.d.ts +51 -0
- package/dist/design-canvas-react/components/SnapGuidesOverlay.d.ts +25 -0
- package/dist/design-canvas-react/components/Toolbar.d.ts +64 -0
- package/dist/design-canvas-react/components/Workspace.d.ts +92 -0
- package/dist/design-canvas-react/components/ZoomControls.d.ts +14 -0
- package/dist/design-canvas-react/components/glyphs.d.ts +46 -0
- package/dist/design-canvas-react/components/icon-button.d.ts +22 -0
- package/dist/design-canvas-react/components/index.d.ts +27 -0
- package/dist/design-canvas-react/components/layer-tree.d.ts +34 -0
- package/dist/design-canvas-react/components/ruler-math.d.ts +78 -0
- package/dist/design-canvas-react/components/transform-math.d.ts +168 -0
- package/dist/{command-stack-TNPWJCzW.d.ts → design-canvas-react/contracts.d.ts} +16 -63
- package/dist/design-canvas-react/engine/command-stack.d.ts +43 -0
- package/dist/design-canvas-react/engine/commands.d.ts +154 -0
- package/dist/design-canvas-react/engine/selection.d.ts +48 -0
- package/dist/design-canvas-react/engine/snap.d.ts +24 -0
- package/dist/design-canvas-react/engine/zoom-pan.d.ts +18 -0
- package/dist/design-canvas-react/engine.d.ts +21 -399
- package/dist/design-canvas-react/export-math.d.ts +104 -0
- package/dist/design-canvas-react/export.d.ts +89 -0
- package/dist/design-canvas-react/index.d.ts +16 -586
- package/dist/design-canvas-react/insert-builders.d.ts +61 -0
- package/dist/design-canvas-react/lazy.d.ts +21 -6
- package/dist/documents/docx.d.ts +50 -0
- package/dist/documents/extract.d.ts +87 -0
- package/dist/documents/index.d.ts +26 -232
- package/dist/documents/media-type.d.ts +33 -0
- package/dist/documents/pdf-inspector.d.ts +5 -9
- package/dist/{types-DrBidf3O.d.ts → documents/types.d.ts} +13 -15
- package/dist/documents/zip.d.ts +56 -0
- package/dist/eval/calibration.d.ts +106 -0
- package/dist/eval/index.d.ts +8 -116
- package/dist/eval-campaign/index.d.ts +11 -12
- package/dist/{trust-gate-Dcm5xSva.d.ts → eval-campaign/trust-gate.d.ts} +5 -9
- package/dist/forms/blank.d.ts +48 -0
- package/dist/forms/fill.d.ts +105 -0
- package/dist/forms/index.d.ts +58 -332
- package/dist/forms/registry.d.ts +115 -0
- package/dist/forms/verify.d.ts +58 -0
- package/dist/harness/index.d.ts +21 -19
- package/dist/intakes/api.d.ts +5 -11
- package/dist/{completion-CvcNUz07.d.ts → intakes/completion.d.ts} +7 -11
- package/dist/intakes/context-sufficiency.d.ts +113 -0
- package/dist/intakes/drizzle/schema.d.ts +338 -0
- package/dist/intakes/drizzle/store.d.ts +75 -0
- package/dist/intakes/drizzle.d.ts +12 -391
- package/dist/intakes/index.d.ts +23 -113
- package/dist/{model-C8U0HZxL.d.ts → intakes/model.d.ts} +15 -17
- package/dist/intakes-react/components/BrandMark.d.ts +10 -0
- package/dist/intakes-react/components/IntakeInterview.d.ts +15 -0
- package/dist/intakes-react/components/index.d.ts +1 -0
- package/dist/intakes-react/contracts.d.ts +42 -0
- package/dist/intakes-react/index.d.ts +12 -47
- package/dist/intakes-react/lazy.d.ts +9 -8
- package/dist/integrations/index.d.ts +10 -12
- package/dist/{contract-OxG_jVMx.d.ts → interactions/contract.d.ts} +40 -42
- package/dist/interactions/index.d.ts +16 -256
- package/dist/interactions/route.d.ts +151 -0
- package/dist/interactions/sidecar.d.ts +100 -0
- package/dist/knowledge/index.d.ts +7 -11
- package/dist/knowledge-loop/index.d.ts +13 -20
- package/dist/legibility/checks/empty-state.d.ts +59 -0
- package/dist/legibility/checks/reachability.d.ts +103 -0
- package/dist/legibility/checks/silent-failure.d.ts +57 -0
- package/dist/legibility/checks/success.d.ts +38 -0
- package/dist/legibility/checks/vocabulary.d.ts +65 -0
- package/dist/legibility/cli-args.d.ts +30 -0
- package/dist/legibility/cli.d.ts +25 -0
- package/dist/legibility/index.d.ts +10 -530
- package/dist/legibility/report.d.ts +22 -0
- package/dist/legibility/scan.d.ts +29 -0
- package/dist/legibility/source.d.ts +132 -0
- package/dist/legibility/suppress.d.ts +36 -0
- package/dist/legibility/types.d.ts +168 -0
- package/dist/legibility/walk-sources.d.ts +21 -0
- package/dist/{agent-activity-C8ZG0F0M.d.ts → missions/agent-activity.d.ts} +3 -5
- package/dist/missions/engine.d.ts +251 -0
- package/dist/missions/events.d.ts +195 -0
- package/dist/missions/index.d.ts +12 -765
- package/dist/missions/plan-parse.d.ts +50 -0
- package/dist/missions/service.d.ts +265 -0
- package/dist/{failover-D-3UXXTb.d.ts → model-resolution/failover.d.ts} +10 -12
- package/dist/model-resolution/index.d.ts +15 -18
- package/dist/object-store/index.d.ts +15 -17
- package/dist/openui/action.d.ts +54 -0
- package/dist/openui/authoring.d.ts +25 -0
- package/dist/openui/index.d.ts +24 -206
- package/dist/openui/route.d.ts +124 -0
- package/dist/openui/segments.d.ts +71 -0
- package/dist/openui/values.d.ts +82 -0
- package/dist/openui-react/index.d.ts +9 -13
- package/dist/peer-floors/check.d.ts +9 -190
- package/dist/peer-floors/cli.d.ts +2 -3
- package/dist/peer-floors/dependency-source.d.ts +178 -0
- package/dist/plans/index.d.ts +13 -14
- package/dist/{billing-BuNlaKlE.d.ts → platform/billing.d.ts} +28 -32
- package/dist/platform/guards.d.ts +79 -0
- package/dist/platform/hub.d.ts +107 -0
- package/dist/platform/index.d.ts +7 -112
- package/dist/{sso-Cm00S61u.d.ts → platform/sso.d.ts} +15 -97
- package/dist/preflight/cli.d.ts +3 -6
- package/dist/preflight/index.d.ts +16 -18
- package/dist/preset-cloudflare/headers.d.ts +12 -0
- package/dist/preset-cloudflare/index.d.ts +22 -74
- package/dist/preset-cloudflare/workflow-instance.d.ts +35 -0
- package/dist/profile/budget.d.ts +72 -0
- package/dist/profile/fingerprint.d.ts +65 -0
- package/dist/profile/index.d.ts +27 -19
- package/dist/prompt/index.d.ts +3 -5
- package/dist/record/drizzle/schema.d.ts +488 -0
- package/dist/record/drizzle/store.d.ts +224 -0
- package/dist/record/drizzle.d.ts +10 -679
- package/dist/record/fold.d.ts +99 -0
- package/dist/record/index.d.ts +13 -13
- package/dist/{fold-DACU7gtf.d.ts → record/model.d.ts} +22 -124
- package/dist/record/ulid.d.ts +12 -0
- package/dist/redact/index.d.ts +14 -16
- package/dist/run/index.d.ts +11 -16
- package/dist/runtime/agent.d.ts +23 -0
- package/dist/runtime/certified-delivery.d.ts +57 -0
- package/dist/runtime/index.d.ts +17 -367
- package/dist/runtime/loop.d.ts +58 -0
- package/dist/runtime/model-catalog.d.ts +103 -0
- package/dist/{model-CdCDfBA9.d.ts → runtime/model.d.ts} +25 -27
- package/dist/runtime/openai-stream.d.ts +126 -0
- package/dist/runtime/surface-profile.d.ts +115 -0
- package/dist/sandbox/binary-read.d.ts +63 -0
- package/dist/sandbox/diagnostics.d.ts +69 -0
- package/dist/sandbox/index.d.ts +103 -1085
- package/dist/sandbox/model.d.ts +179 -0
- package/dist/sandbox/outcome.d.ts +10 -0
- package/dist/sandbox/prewarm-claim-d1.d.ts +80 -0
- package/dist/sandbox/prewarm.d.ts +193 -0
- package/dist/sandbox/recovery.d.ts +216 -0
- package/dist/sandbox/terminal-connection.d.ts +145 -0
- package/dist/sandbox/workspace-sandbox-manager.d.ts +44 -0
- package/dist/sequences/apply.d.ts +54 -0
- package/dist/sequences/captions.d.ts +91 -0
- package/dist/sequences/drizzle-store.d.ts +36 -0
- package/dist/sequences/drizzle.d.ts +7 -1252
- package/dist/sequences/exports.d.ts +138 -0
- package/dist/sequences/index.d.ts +19 -340
- package/dist/sequences/mcp-entry.d.ts +15 -0
- package/dist/sequences/mcp-handler.d.ts +39 -0
- package/dist/sequences/mcp-tools.d.ts +47 -0
- package/dist/{store-B7LLlk9p.d.ts → sequences/model.d.ts} +26 -110
- package/dist/sequences/operations.d.ts +126 -0
- package/dist/sequences/schema.d.ts +1231 -0
- package/dist/sequences/store.d.ts +81 -0
- package/dist/sequences/validate.d.ts +98 -0
- package/dist/sequences-react/components/BrandMark.d.ts +10 -0
- package/dist/sequences-react/components/PreviewCanvas.d.ts +26 -0
- package/dist/sequences-react/components/SnapIndicatorLine.d.ts +11 -0
- package/dist/sequences-react/components/TimelineClipChip.d.ts +80 -0
- package/dist/sequences-react/components/TimelineEditor.d.ts +44 -0
- package/dist/sequences-react/components/TimelineEmptyState.d.ts +21 -0
- package/dist/sequences-react/components/TimelineGhostLanes.d.ts +14 -0
- package/dist/sequences-react/components/TimelinePlayhead.d.ts +11 -0
- package/dist/sequences-react/components/TimelineRuler.d.ts +16 -0
- package/dist/sequences-react/components/TimelineSmallScreenGate.d.ts +12 -0
- package/dist/sequences-react/components/TimelineTrackRow.d.ts +51 -0
- package/dist/sequences-react/components/ZoomControl.d.ts +15 -0
- package/dist/sequences-react/components/composite-command.d.ts +8 -0
- package/dist/sequences-react/components/glyphs.d.ts +26 -0
- package/dist/sequences-react/components/index.d.ts +31 -0
- package/dist/sequences-react/components/interaction-math.d.ts +103 -0
- package/dist/sequences-react/contracts.d.ts +187 -0
- package/dist/sequences-react/engine/command-stack.d.ts +18 -0
- package/dist/sequences-react/engine/commands.d.ts +146 -0
- package/dist/sequences-react/engine/playback.d.ts +18 -0
- package/dist/sequences-react/engine/snap.d.ts +29 -0
- package/dist/sequences-react/engine/zoom.d.ts +29 -0
- package/dist/sequences-react/index.d.ts +20 -880
- package/dist/sequences-react/lazy.d.ts +8 -0
- package/dist/sequences-react/media/frame-provider.d.ts +70 -0
- package/dist/sequences-react/media/transcription.d.ts +33 -0
- package/dist/sequences-react/media/waveform.d.ts +34 -0
- package/dist/session-shell/index.d.ts +31 -204
- package/dist/session-shell/nav-guard.d.ts +170 -0
- package/dist/session-shell/path.d.ts +19 -0
- package/dist/signoff/cli.d.ts +4 -7
- package/dist/signoff/config.d.ts +12 -0
- package/dist/signoff/exec.d.ts +44 -0
- package/dist/signoff/index.d.ts +56 -14
- package/dist/signoff/invoked-as-script.d.ts +25 -0
- package/dist/signoff/node-version.d.ts +50 -0
- package/dist/signoff/proof-attach.d.ts +88 -0
- package/dist/signoff/proof-cli.d.ts +1 -0
- package/dist/signoff/proof-fixture.d.ts +13 -0
- package/dist/signoff/proof-from-report.d.ts +22 -0
- package/dist/signoff/proof-git.d.ts +57 -0
- package/dist/signoff/proof-record.d.ts +202 -0
- package/dist/signoff/proof-verify.d.ts +103 -0
- package/dist/signoff/proof.d.ts +35 -310
- package/dist/signoff/report.d.ts +7 -0
- package/dist/{run-D80hoLKh.d.ts → signoff/run.d.ts} +3 -6
- package/dist/signoff/schedule.d.ts +55 -0
- package/dist/signoff/seeds.d.ts +50 -0
- package/dist/signoff/store.d.ts +22 -0
- package/dist/{types-Bd6uW9vQ.d.ts → signoff/types.d.ts} +15 -17
- package/dist/signoff/workflow-pin.d.ts +56 -0
- package/dist/signoff/workspace.d.ts +40 -0
- package/dist/skills/index.d.ts +28 -32
- package/dist/skills-placement/index.d.ts +7 -11
- package/dist/spend/budget.d.ts +123 -0
- package/dist/spend/ceiling.d.ts +51 -0
- package/dist/spend/cli-args.d.ts +20 -0
- package/dist/spend/cli.d.ts +1 -0
- package/dist/spend/fixtures/incident-parked-time.d.ts +55 -0
- package/dist/spend/index.d.ts +38 -1144
- package/dist/spend/liveness.d.ts +131 -0
- package/dist/spend/ownership.d.ts +87 -0
- package/dist/spend/reconcile.d.ts +109 -0
- package/dist/spend/reference.d.ts +42 -0
- package/dist/spend/report.d.ts +12 -0
- package/dist/spend/store.d.ts +123 -0
- package/dist/spend/types.d.ts +466 -0
- package/dist/store/index.d.ts +10 -12
- package/dist/stories/app-shell/fixtures.d.ts +43 -0
- package/dist/stories/app-shell/shell.d.ts +81 -0
- package/dist/stories/assistant/fixtures.d.ts +73 -0
- package/dist/stories/chat/fixtures.d.ts +70 -0
- package/dist/stories/chat/markdown.d.ts +11 -0
- package/dist/stories/chat/run-drill-in.d.ts +19 -0
- package/dist/stories/chat-controls/fixtures.d.ts +116 -0
- package/dist/stories/design-canvas/fixtures.d.ts +57 -0
- package/dist/stories/fixtures/canvas.d.ts +10 -0
- package/dist/stories/fixtures/catalog.d.ts +7 -0
- package/dist/stories/fixtures/chat.d.ts +39 -0
- package/dist/stories/fixtures/index.d.ts +4 -0
- package/dist/stories/fixtures/sequences.d.ts +17 -0
- package/dist/stories/panels/fixtures.d.ts +63 -0
- package/dist/stories/sequences/fixtures.d.ts +30 -0
- package/dist/stories/studio/fixtures.d.ts +22 -0
- package/dist/stream/index.d.ts +10 -56
- package/dist/{stream-normalizer-DKRxyVlZ.d.ts → stream/stream-normalizer.d.ts} +23 -26
- package/dist/{turn-buffer-COMQUwO2.d.ts → stream/turn-buffer.d.ts} +21 -23
- package/dist/stream/turn-identity.d.ts +49 -0
- package/dist/studio/generation.d.ts +179 -0
- package/dist/studio/index.d.ts +12 -181
- package/dist/studio-react/avatar-composer.d.ts +8 -0
- package/dist/studio-react/composer-hero.d.ts +12 -0
- package/dist/studio-react/composer-shell.d.ts +18 -0
- package/dist/studio-react/generation-card.d.ts +9 -0
- package/dist/studio-react/generation-detail-modal.d.ts +11 -0
- package/dist/studio-react/generation-detail.d.ts +6 -0
- package/dist/studio-react/generation-grid.d.ts +15 -0
- package/dist/studio-react/image-composer.d.ts +8 -0
- package/dist/studio-react/index.d.ts +32 -245
- package/dist/studio-react/library-drawer.d.ts +12 -0
- package/dist/studio-react/library-panel.d.ts +15 -0
- package/dist/studio-react/publish-package-composer.d.ts +18 -0
- package/dist/studio-react/result-canvas.d.ts +6 -0
- package/dist/studio-react/speech-composer.d.ts +4 -0
- package/dist/studio-react/studio-header.d.ts +5 -0
- package/dist/studio-react/studio-sheet.d.ts +12 -0
- package/dist/studio-react/studio-workspace.d.ts +23 -0
- package/dist/studio-react/transcription-composer.d.ts +12 -0
- package/dist/studio-react/type-config.d.ts +11 -0
- package/dist/studio-react/use-studio-generations.d.ts +20 -0
- package/dist/studio-react/video-composer.d.ts +10 -0
- package/dist/tangle/index.d.ts +7 -9
- package/dist/teams/drizzle/access.d.ts +82 -0
- package/dist/{invitations-schema-_fI7HkJP.d.ts → teams/drizzle/invitations-schema.d.ts} +39 -27
- package/dist/teams/drizzle/personal-organization.d.ts +41 -0
- package/dist/{access-490O6aOU.d.ts → teams/drizzle/schema.d.ts} +57 -122
- package/dist/teams/drizzle.d.ts +12 -44
- package/dist/teams/index.d.ts +20 -44
- package/dist/teams/invitations-api.d.ts +17 -21
- package/dist/{invitations-DoYMvXea.d.ts → teams/invitations.d.ts} +14 -18
- package/dist/teams/invite.d.ts +42 -0
- package/dist/teams/members-api.d.ts +12 -16
- package/dist/teams/resend.d.ts +3 -13
- package/dist/{roles-B4nU3jDi.d.ts → teams/roles.d.ts} +18 -20
- package/dist/teams-react/components/BrandMark.d.ts +10 -0
- package/dist/teams-react/components/InvitationsPanel.d.ts +13 -0
- package/dist/teams-react/components/InviteAcceptPage.d.ts +10 -0
- package/dist/teams-react/components/MembersPanel.d.ts +14 -0
- package/dist/teams-react/components/RoleSelect.d.ts +17 -0
- package/dist/teams-react/components/index.d.ts +3 -0
- package/dist/teams-react/contracts.d.ts +134 -0
- package/dist/teams-react/index.d.ts +12 -143
- package/dist/teams-react/lazy.d.ts +11 -11
- package/dist/test-setup.d.ts +1 -0
- package/dist/theme/index.d.ts +6 -104
- package/dist/theme/tailwind-preset.d.ts +1 -2
- package/dist/theme/theme.d.ts +106 -0
- package/dist/theme-contract/cli.d.ts +21 -0
- package/dist/theme-contract/index.d.ts +4 -6
- package/dist/{auth-BYtiazA4.d.ts → tools/auth.d.ts} +8 -11
- package/dist/tools/capability.d.ts +54 -0
- package/dist/tools/dispatch.d.ts +37 -0
- package/dist/tools/errors.d.ts +8 -0
- package/dist/tools/gating.d.ts +62 -0
- package/dist/tools/http.d.ts +27 -0
- package/dist/tools/index.d.ts +12 -217
- package/dist/{mcp-rpc-DYwPlYbZ.d.ts → tools/mcp-rpc.d.ts} +7 -9
- package/dist/{mcp-xxoZZfor.d.ts → tools/mcp.d.ts} +14 -16
- package/dist/tools/openai.d.ts +28 -0
- package/dist/tools/registry.d.ts +39 -0
- package/dist/tools/runtime.d.ts +22 -0
- package/dist/{types-B25Mib1r.d.ts → tools/types.d.ts} +15 -83
- package/dist/{flow-types-CJxEmaRy.d.ts → trace/flow-types.d.ts} +2 -4
- package/dist/trace/index.d.ts +11 -148
- package/dist/trace/mission-flow.d.ts +82 -0
- package/dist/trace/mission-trace.d.ts +52 -0
- package/dist/turn-health/classify.d.ts +207 -0
- package/dist/turn-health/index.d.ts +29 -637
- package/dist/turn-health/lifecycle.d.ts +75 -0
- package/dist/turn-health/sink.d.ts +122 -0
- package/dist/turn-health/sweep.d.ts +245 -0
- package/dist/turn-stream/adapters.d.ts +257 -0
- package/dist/turn-stream/core.d.ts +293 -0
- package/dist/turn-stream/do.d.ts +144 -0
- package/dist/turn-stream/index.d.ts +62 -738
- package/dist/turn-stream/memory.d.ts +41 -0
- package/dist/vault/ConfirmDialog.d.ts +22 -0
- package/dist/vault/VaultPane.d.ts +15 -0
- package/dist/{VaultPane-BDP6SB_K.d.ts → vault/contracts.d.ts} +15 -22
- package/dist/vault/index.d.ts +15 -22
- package/dist/vault/lazy.d.ts +9 -7
- package/dist/vault/server.d.ts +8 -10
- package/dist/web/free-route-limit.d.ts +187 -0
- package/dist/web/index.d.ts +15 -207
- package/dist/{rate-limit-BOVmJRXZ.d.ts → web/rate-limit.d.ts} +3 -5
- package/dist/web-react/agent-session-controls.d.ts +105 -0
- package/dist/web-react/async/async-view.d.ts +69 -0
- package/dist/web-react/async/index.d.ts +13 -305
- package/dist/web-react/async/state.d.ts +107 -0
- package/dist/web-react/async/use-async-resource.d.ts +41 -0
- package/dist/web-react/async/use-confirmed-mutation.d.ts +90 -0
- package/dist/web-react/brand-mark.d.ts +11 -0
- package/dist/web-react/chat-attachments.d.ts +21 -0
- package/dist/web-react/chat-composer.d.ts +174 -0
- package/dist/web-react/chat-interactions.d.ts +1 -0
- package/dist/web-react/chat-mentions.d.ts +48 -0
- package/dist/web-react/chat-stream.d.ts +106 -0
- package/dist/web-react/class-names.d.ts +10 -0
- package/dist/web-react/controls.d.ts +265 -0
- package/dist/web-react/durable-chat-cards.d.ts +40 -0
- package/dist/web-react/durable-interaction-submit.d.ts +22 -0
- package/dist/web-react/durable-plan-card.d.ts +13 -0
- package/dist/web-react/durable-plan-flow.d.ts +77 -0
- package/dist/web-react/harness-glyphs.d.ts +28 -0
- package/dist/web-react/index.d.ts +80 -2347
- package/dist/web-react/inert.d.ts +39 -0
- package/dist/web-react/insight-card.d.ts +203 -0
- package/dist/web-react/interaction-card-support.d.ts +115 -0
- package/dist/web-react/interaction-plan-card.d.ts +39 -0
- package/dist/web-react/interaction-question-card.d.ts +100 -0
- package/dist/web-react/message-attachments.d.ts +56 -0
- package/dist/web-react/mission-activity.d.ts +96 -0
- package/dist/web-react/motion.d.ts +43 -0
- package/dist/web-react/provenance-model.d.ts +195 -0
- package/dist/web-react/provenance.d.ts +82 -0
- package/dist/web-react/provider-logo.d.ts +14 -0
- package/dist/web-react/record-grid-model.d.ts +257 -0
- package/dist/web-react/record-grid.d.ts +108 -0
- package/dist/web-react/sandbox-terminal.d.ts +90 -0
- package/dist/web-react/seat-paywall.d.ts +47 -0
- package/dist/web-react/session-history.d.ts +196 -0
- package/dist/web-react/smooth-text.d.ts +29 -0
- package/dist/web-react/sparkline.d.ts +150 -0
- package/dist/web-react/terminal.d.ts +1 -92
- package/dist/web-react/use-chat-interactions.d.ts +78 -0
- package/dist/web-react/use-composer-attachments.d.ts +111 -0
- package/dist/web-react/use-file-mentions.d.ts +94 -0
- package/dist/web-react/work-product.d.ts +105 -0
- package/dist/work-product/claim-support.d.ts +288 -0
- package/dist/work-product/index.d.ts +16 -849
- package/dist/work-product/provenance.d.ts +61 -0
- package/dist/{queue-VTBA5ONX.d.ts → work-product/queue.d.ts} +10 -12
- package/dist/work-product/quote.d.ts +139 -0
- package/dist/work-product/route.d.ts +88 -0
- package/dist/work-product/service.d.ts +123 -0
- package/dist/work-product/tools.d.ts +144 -0
- package/dist/{types-CCeYywdS.d.ts → work-product/types.d.ts} +29 -31
- package/dist/work-product-react/index.d.ts +19 -8
- package/dist/workspace-react/index.d.ts +8 -11
- package/package.json +5 -4
- package/dist/agent-session-controls-CmlXwp_H.d.ts +0 -384
- package/dist/apply-6wlMOLf8.d.ts +0 -280
- package/dist/attachment-validation-BfJDBU1g.d.ts +0 -261
- package/dist/budget-BOucfcb_.d.ts +0 -142
- package/dist/values-C7RidJuI.d.ts +0 -156
|
@@ -1,309 +1,17 @@
|
|
|
1
|
-
import { ReactElement, ReactNode } from 'react';
|
|
2
|
-
|
|
3
1
|
/**
|
|
4
|
-
*
|
|
2
|
+
* `web-react/async` — the three-state fetch primitive.
|
|
5
3
|
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
* that would fix it is never offered.
|
|
4
|
+
* A failed load, an empty result and a load in flight are three different
|
|
5
|
+
* things, and every product that hand-rolled them collapsed the first two: a
|
|
6
|
+
* network failure rendered as "No templates available", an empty member list or
|
|
7
|
+
* a blank conversation, with no message and no retry. The write half collapsed
|
|
8
|
+
* the same way in the other direction — a save button reading "Saved" over a
|
|
9
|
+
* 404, because a resolved promise was read as a landed write.
|
|
13
10
|
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
* the only one carrying a resolved-but-empty value and it never carries a
|
|
17
|
-
* message. A component rendering one is structurally not rendering the other.
|
|
18
|
-
*
|
|
19
|
-
* This file is React-free so the state model, the emptiness rule and the
|
|
20
|
-
* Response readers can be unit-tested and reused outside a component.
|
|
21
|
-
*/
|
|
22
|
-
/**
|
|
23
|
-
* - `idle` — no load has been attempted (the hook is disabled, or its inputs
|
|
24
|
-
* are not resolved yet). Distinct from `loading`: nothing is in flight.
|
|
25
|
-
* - `loading` — a load is in flight and no value is held.
|
|
26
|
-
* - `error` — the load failed. Carries the message and never a value.
|
|
27
|
-
* - `empty` — the load succeeded and the value is empty. Never carries a message.
|
|
28
|
-
* - `ready` — the load succeeded and the value is non-empty.
|
|
29
|
-
*/
|
|
30
|
-
type AsyncResourceStatus = 'idle' | 'loading' | 'error' | 'empty' | 'ready';
|
|
31
|
-
/** Re-runs the load. Present on every variant so the error branch can never be
|
|
32
|
-
* rendered without the action that recovers from it. */
|
|
33
|
-
interface AsyncRetryable {
|
|
34
|
-
readonly retry: () => void;
|
|
35
|
-
}
|
|
36
|
-
type AsyncResourceState<T> = ({
|
|
37
|
-
readonly status: 'idle';
|
|
38
|
-
} & AsyncRetryable) | ({
|
|
39
|
-
readonly status: 'loading';
|
|
40
|
-
} & AsyncRetryable) | ({
|
|
41
|
-
readonly status: 'error';
|
|
42
|
-
readonly message: string;
|
|
43
|
-
readonly error: unknown;
|
|
44
|
-
} & AsyncRetryable) | ({
|
|
45
|
-
readonly status: 'empty';
|
|
46
|
-
readonly value: T;
|
|
47
|
-
} & AsyncRetryable) | ({
|
|
48
|
-
readonly status: 'ready';
|
|
49
|
-
readonly value: T;
|
|
50
|
-
} & AsyncRetryable);
|
|
51
|
-
/** The state model without the retry action — what a reducer produces. */
|
|
52
|
-
type AsyncResolution<T> = {
|
|
53
|
-
readonly status: 'idle';
|
|
54
|
-
} | {
|
|
55
|
-
readonly status: 'loading';
|
|
56
|
-
} | {
|
|
57
|
-
readonly status: 'error';
|
|
58
|
-
readonly message: string;
|
|
59
|
-
readonly error: unknown;
|
|
60
|
-
} | {
|
|
61
|
-
readonly status: 'empty';
|
|
62
|
-
readonly value: T;
|
|
63
|
-
} | {
|
|
64
|
-
readonly status: 'ready';
|
|
65
|
-
readonly value: T;
|
|
66
|
-
};
|
|
67
|
-
declare const DEFAULT_ASYNC_ERROR_MESSAGE = "Something went wrong. Please try again.";
|
|
68
|
-
/**
|
|
69
|
-
* Default emptiness rule: `null`/`undefined`, an empty array, an empty `Map` or
|
|
70
|
-
* `Set`. A string, a number and a plain object are `ready` — `''` and `{}` are
|
|
71
|
-
* legitimate values for the resources that produce them, and guessing otherwise
|
|
72
|
-
* would route a real answer into the empty branch. Pass `isEmpty` for a shape
|
|
73
|
-
* this cannot see into (`{ items: [] }`, a paged envelope, a count).
|
|
74
|
-
*/
|
|
75
|
-
declare function defaultIsEmpty(value: unknown): boolean;
|
|
76
|
-
/** Best available human-readable message for a thrown value. Never returns an
|
|
77
|
-
* empty string — a blank error block reads as a rendering bug. */
|
|
78
|
-
declare function asyncErrorMessage(error: unknown, fallback?: string): string;
|
|
79
|
-
/** Classifies a successfully loaded value into `ready` or `empty`. */
|
|
80
|
-
declare function resolveAsyncValue<T>(value: T, isEmpty?: (value: T) => boolean): AsyncResolution<T>;
|
|
81
|
-
/**
|
|
82
|
-
* A non-ok HTTP response, as a throwable. `requireOk`/`readOkJson` raise this so
|
|
83
|
-
* a non-ok response reaches the `error` branch instead of an early `return` that
|
|
84
|
-
* leaves the caller rendering the empty branch.
|
|
85
|
-
*/
|
|
86
|
-
declare class AsyncRequestError extends Error {
|
|
87
|
-
readonly status: number;
|
|
88
|
-
readonly statusText: string;
|
|
89
|
-
readonly url: string;
|
|
90
|
-
/** First 200 characters of the response body when it could be read, else `''`.
|
|
91
|
-
* Kept off `message` so a server's HTML error page never becomes UI copy. */
|
|
92
|
-
readonly body: string;
|
|
93
|
-
constructor(response: {
|
|
94
|
-
status: number;
|
|
95
|
-
statusText?: string;
|
|
96
|
-
url?: string;
|
|
97
|
-
}, body?: string);
|
|
98
|
-
}
|
|
99
|
-
/** Returns the response when ok; throws `AsyncRequestError` otherwise. Reads the
|
|
100
|
-
* body only on the failure path, so the caller keeps an unconsumed stream. */
|
|
101
|
-
declare function requireOk(response: Response): Promise<Response>;
|
|
102
|
-
/**
|
|
103
|
-
* `requireOk` + `response.json()`. Without `parse` the result is `unknown`, so a
|
|
104
|
-
* caller narrows at the JSON boundary rather than inheriting an unchecked shape;
|
|
105
|
-
* with `parse` the validator runs inside the load and a rejection lands in the
|
|
106
|
-
* `error` branch.
|
|
107
|
-
*/
|
|
108
|
-
declare function readOkJson(response: Response): Promise<unknown>;
|
|
109
|
-
declare function readOkJson<T>(response: Response, parse: (data: unknown) => T): Promise<T>;
|
|
110
|
-
|
|
111
|
-
interface AsyncLoadContext {
|
|
112
|
-
/** Aborted when the inputs change, a retry supersedes this load, or the
|
|
113
|
-
* component unmounts. Forward it to `fetch` so a superseded request stops. */
|
|
114
|
-
readonly signal: AbortSignal;
|
|
115
|
-
}
|
|
116
|
-
interface UseAsyncResourceOptions<T> {
|
|
117
|
-
/**
|
|
118
|
-
* The one load. Reject (or throw) to reach the `error` branch — a non-ok
|
|
119
|
-
* response must reject too, which is what `requireOk`/`readOkJson` are for.
|
|
120
|
-
* Read from a ref internally, so an inline arrow does not re-trigger; `deps`
|
|
121
|
-
* is what declares when the load must run again.
|
|
122
|
-
*/
|
|
123
|
-
load: (context: AsyncLoadContext) => Promise<T>;
|
|
124
|
-
/** Re-runs the load when any entry changes by `Object.is`, like `useEffect`. */
|
|
125
|
-
deps?: readonly unknown[];
|
|
126
|
-
/** `false` holds the resource at `idle` and runs nothing — for inputs that are
|
|
127
|
-
* not resolved yet. Flipping it to `true` starts the load. */
|
|
128
|
-
enabled?: boolean;
|
|
129
|
-
/** First-render seed (an SSR/loader page). The hook starts resolved and skips
|
|
130
|
-
* the first load. Read once — later identity changes are ignored, so a
|
|
131
|
-
* revalidating loader belongs in `deps`, not here. */
|
|
132
|
-
initialValue?: T;
|
|
133
|
-
/** Splits a successful load into `empty` vs `ready`. Default: `defaultIsEmpty`. */
|
|
134
|
-
isEmpty?: (value: T) => boolean;
|
|
135
|
-
/** Maps a thrown value to the message the `error` branch renders. */
|
|
136
|
-
errorMessage?: (error: unknown) => string;
|
|
137
|
-
}
|
|
138
|
-
/**
|
|
139
|
-
* The five-state fetch machine: `idle | loading | error | empty | ready`.
|
|
140
|
-
*
|
|
141
|
-
* What it guarantees, and what the hand-rolled versions it replaces did not:
|
|
142
|
-
*
|
|
143
|
-
* - a rejected load lands on `error` with a message and a `retry`, never on an
|
|
144
|
-
* empty list;
|
|
145
|
-
* - `empty` is only reachable from a load that actually succeeded;
|
|
146
|
-
* - a superseded load (inputs changed, retry pressed, component unmounted) is
|
|
147
|
-
* aborted and its late result is dropped by a monotonic sequence guard, so it
|
|
148
|
-
* cannot repaint a newer view.
|
|
149
|
-
*/
|
|
150
|
-
declare function useAsyncResource<T>({ load, deps, enabled, initialValue, isEmpty, errorMessage, }: UseAsyncResourceOptions<T>): AsyncResourceState<T>;
|
|
151
|
-
|
|
152
|
-
/**
|
|
153
|
-
* The brand that makes "Saved" unreachable without a confirmed write.
|
|
154
|
-
*
|
|
155
|
-
* A resolved promise is not a success: `fetch` resolves on a 404, and the
|
|
156
|
-
* shipped defect this closes is a save button that rendered "Saved" because the
|
|
157
|
-
* only thing awaited was that the request came back at all. The success variant
|
|
158
|
-
* therefore carries a symbol no object literal can spell, so the only way into
|
|
159
|
-
* `succeeded` is `confirmWrite` / `confirmResponse` / `confirmJson` — each of
|
|
160
|
-
* which has already checked that the write landed.
|
|
161
|
-
*/
|
|
162
|
-
declare const CONFIRMED_WRITE: unique symbol;
|
|
163
|
-
interface MutationConfirmed<T> {
|
|
164
|
-
readonly succeeded: true;
|
|
165
|
-
readonly value: T;
|
|
166
|
-
readonly [CONFIRMED_WRITE]: true;
|
|
167
|
-
}
|
|
168
|
-
interface MutationRejected {
|
|
169
|
-
readonly succeeded: false;
|
|
170
|
-
/** Safe to render: what the user is told the write did not do. */
|
|
171
|
-
readonly message: string;
|
|
172
|
-
readonly error?: unknown;
|
|
173
|
-
}
|
|
174
|
-
type MutationOutcome<T> = MutationConfirmed<T> | MutationRejected;
|
|
175
|
-
/** Confirms a write whose success is already established (an SDK call that
|
|
176
|
-
* throws on failure, a store returning its own typed outcome). The deliberate
|
|
177
|
-
* act is the point — this call is what an audit greps for. */
|
|
178
|
-
declare function confirmWrite<T>(value: T): MutationConfirmed<T>;
|
|
179
|
-
/** A write that did not land. Constructible by hand: failing loud is never the
|
|
180
|
-
* direction that needs guarding. */
|
|
181
|
-
declare function rejectWrite(message: string, error?: unknown): MutationRejected;
|
|
182
|
-
/** Confirms only a 2xx response. A 404/500 becomes a rejection carrying the
|
|
183
|
-
* status — never a success, whatever the promise did. */
|
|
184
|
-
declare function confirmResponse(response: Response): Promise<MutationOutcome<Response>>;
|
|
185
|
-
/** `confirmResponse` + a JSON body. A non-ok status, an unreadable body and a
|
|
186
|
-
* throwing `parse` are all rejections. */
|
|
187
|
-
declare function confirmJson<T>(response: Response, parse: (data: unknown) => T): Promise<MutationOutcome<T>>;
|
|
188
|
-
/** True only for a value built by one of the confirm helpers. Takes `unknown`
|
|
189
|
-
* because an untyped consumer can return anything from `mutate`. */
|
|
190
|
-
declare function isConfirmedWrite<T>(outcome: unknown): outcome is MutationConfirmed<T>;
|
|
191
|
-
type MutationState<T> = {
|
|
192
|
-
readonly status: 'idle';
|
|
193
|
-
} | {
|
|
194
|
-
readonly status: 'pending';
|
|
195
|
-
} | {
|
|
196
|
-
readonly status: 'succeeded';
|
|
197
|
-
readonly value: T;
|
|
198
|
-
} | {
|
|
199
|
-
readonly status: 'failed';
|
|
200
|
-
readonly message: string;
|
|
201
|
-
readonly error: unknown;
|
|
202
|
-
};
|
|
203
|
-
interface UseConfirmedMutationOptions<TInput, TValue> {
|
|
204
|
-
/**
|
|
205
|
-
* Performs the write and returns a confirmation. Anything else — including a
|
|
206
|
-
* hand-written `{ succeeded: true }` — is treated as a failed write, because
|
|
207
|
-
* an unbranded object is exactly the shape produced by code that never
|
|
208
|
-
* checked the response.
|
|
209
|
-
*
|
|
210
|
-
* The context signal aborts only when a later `run` supersedes this one. It is
|
|
211
|
-
* NOT aborted on unmount: a write the user asked for must not be cancelled by
|
|
212
|
-
* navigating away.
|
|
213
|
-
*/
|
|
214
|
-
mutate: (input: TInput, context: AsyncLoadContext) => Promise<MutationOutcome<TValue>>;
|
|
215
|
-
/** Fires after the state reaches `succeeded` (latest run only). */
|
|
216
|
-
onSucceeded?: (value: TValue) => void;
|
|
217
|
-
/** Fires after the state reaches `failed` (latest run only). */
|
|
218
|
-
onFailed?: (message: string, error: unknown) => void;
|
|
219
|
-
/** Maps a thrown value to the message the `failed` state renders. */
|
|
220
|
-
errorMessage?: (error: unknown) => string;
|
|
221
|
-
}
|
|
222
|
-
interface ConfirmedMutation<TInput, TValue> {
|
|
223
|
-
readonly state: MutationState<TValue>;
|
|
224
|
-
/** Runs the write. Never rejects — the outcome is returned and mirrored into
|
|
225
|
-
* `state`. Concurrent runs are last-write-wins; disable the control while
|
|
226
|
-
* `state.status === 'pending'`. */
|
|
227
|
-
readonly run: (input: TInput) => Promise<MutationOutcome<TValue>>;
|
|
228
|
-
/** Back to `idle` (dismisses a "Saved" or error affordance). */
|
|
229
|
-
readonly reset: () => void;
|
|
230
|
-
}
|
|
231
|
-
/**
|
|
232
|
-
* `idle | pending | succeeded | failed` over a write that must confirm itself.
|
|
233
|
-
*
|
|
234
|
-
* `succeeded` is reachable only through a branded confirmation, so the audited
|
|
235
|
-
* "Saved on a 404" bug cannot be written with this hook: the 404 path produces
|
|
236
|
-
* `failed` carrying the status, and a `mutate` that forgot to check produces
|
|
237
|
-
* `failed` carrying the contract violation rather than a success it never
|
|
238
|
-
* earned.
|
|
239
|
-
*/
|
|
240
|
-
declare function useConfirmedMutation<TInput, TValue>({ mutate, onSucceeded, onFailed, errorMessage, }: UseConfirmedMutationOptions<TInput, TValue>): ConfirmedMutation<TInput, TValue>;
|
|
241
|
-
|
|
242
|
-
interface AsyncEmptyAction {
|
|
243
|
-
label: string;
|
|
244
|
-
onClick: () => void;
|
|
245
|
-
}
|
|
246
|
-
interface AsyncEmptySpec {
|
|
247
|
-
/** What is not there, in the reader's words ("No templates yet"). Required:
|
|
248
|
-
* an empty state with nothing to say is the state this module exists to
|
|
249
|
-
* stop being mistaken for a failure. */
|
|
250
|
-
title: string;
|
|
251
|
-
description?: string;
|
|
252
|
-
/** The next action. An element is rendered as supplied (a link, a dialog
|
|
253
|
-
* trigger); the object form renders the standard button. */
|
|
254
|
-
action?: AsyncEmptyAction | ReactElement;
|
|
255
|
-
}
|
|
256
|
-
interface AsyncErrorRenderProps {
|
|
257
|
-
message: string;
|
|
258
|
-
retry: () => void;
|
|
259
|
-
}
|
|
260
|
-
interface AsyncViewProps<T> {
|
|
261
|
-
state: AsyncResourceState<T>;
|
|
262
|
-
/** Rendered only for `ready`, with the loaded value — the branch cannot be
|
|
263
|
-
* entered without one. */
|
|
264
|
-
children: (value: T) => ReactNode;
|
|
265
|
-
/** Required: `empty` must name what is missing and what to do about it. */
|
|
266
|
-
empty: AsyncEmptySpec | ReactElement;
|
|
267
|
-
/** Must return an element. Returning nothing is what produced the blank
|
|
268
|
-
* screens this component replaces, so a nullish return falls back to the
|
|
269
|
-
* built-in block rather than rendering nothing. */
|
|
270
|
-
renderLoading?: () => ReactElement;
|
|
271
|
-
renderError?: (props: AsyncErrorRenderProps) => ReactElement;
|
|
272
|
-
/** `idle` renders the loading block by default — from the reader's side,
|
|
273
|
-
* "not started" and "in flight" are the same wait. */
|
|
274
|
-
renderIdle?: () => ReactElement;
|
|
275
|
-
loadingLabel?: string;
|
|
276
|
-
retryLabel?: string;
|
|
277
|
-
/** Applied to the wrapper around the non-`ready` branches. `ready` renders the
|
|
278
|
-
* children with no wrapper element, so grids and lists keep their layout. */
|
|
279
|
-
className?: string;
|
|
280
|
-
}
|
|
281
|
-
/**
|
|
282
|
-
* Renders the branch the state is actually in.
|
|
283
|
-
*
|
|
284
|
-
* The three anti-patterns this replaces (`catch` that only clears a loading
|
|
285
|
-
* flag, early return on a non-ok response, bare `null` while loading) all end at
|
|
286
|
-
* the same rendered output as a successful-but-empty load. Here every branch is
|
|
287
|
-
* reached from a different variant and each renders visibly: `loading` and
|
|
288
|
-
* `idle` render a labelled busy block, `error` renders the message plus the
|
|
289
|
-
* retry, `empty` renders the caller's copy and next action, and `ready` is the
|
|
290
|
-
* only branch with a value to hand to `children`.
|
|
291
|
-
*/
|
|
292
|
-
declare function AsyncView<T>({ state, children, empty, renderLoading, renderError, renderIdle, loadingLabel, retryLabel, className, }: AsyncViewProps<T>): ReactElement;
|
|
293
|
-
interface MutationStatusLabels {
|
|
294
|
-
pending?: string;
|
|
295
|
-
succeeded?: string;
|
|
296
|
-
}
|
|
297
|
-
interface MutationStatusProps<T> {
|
|
298
|
-
state: MutationState<T>;
|
|
299
|
-
labels?: MutationStatusLabels;
|
|
300
|
-
className?: string;
|
|
301
|
-
}
|
|
302
|
-
/**
|
|
303
|
-
* The write's own status line. "Saved" renders only from `succeeded`, which
|
|
304
|
-
* `useConfirmedMutation` can only reach through a confirmed write, so the label
|
|
305
|
-
* cannot appear over a failed request.
|
|
11
|
+
* Adoption, with the before/after for each shape:
|
|
12
|
+
* [`docs/async-state-module.md`](../../../docs/async-state-module.md).
|
|
306
13
|
*/
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
export {
|
|
14
|
+
export { AsyncRequestError, DEFAULT_ASYNC_ERROR_MESSAGE, asyncErrorMessage, defaultIsEmpty, readOkJson, requireOk, resolveAsyncValue, type AsyncResolution, type AsyncResourceState, type AsyncResourceStatus, type AsyncRetryable, } from './state';
|
|
15
|
+
export { useAsyncResource, type AsyncLoadContext, type UseAsyncResourceOptions } from './use-async-resource';
|
|
16
|
+
export { CONFIRMED_WRITE, confirmJson, confirmResponse, confirmWrite, isConfirmedWrite, rejectWrite, useConfirmedMutation, type ConfirmedMutation, type MutationConfirmed, type MutationOutcome, type MutationRejected, type MutationState, type UseConfirmedMutationOptions, } from './use-confirmed-mutation';
|
|
17
|
+
export { AsyncView, MutationStatus, type AsyncEmptyAction, type AsyncEmptySpec, type AsyncErrorRenderProps, type AsyncViewProps, type MutationStatusLabels, type MutationStatusProps, } from './async-view';
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The fetch-state contract: a failed load cannot render as empty data.
|
|
3
|
+
*
|
|
4
|
+
* Three shapes produce that defect, and two audited verticals shipped dozens of
|
|
5
|
+
* each: a `catch` handler that only clears a loading flag, an early return on a
|
|
6
|
+
* non-ok response, and a bare `null` returned while loading. All three end with
|
|
7
|
+
* the same pixels a successful-but-empty load produces — "No templates
|
|
8
|
+
* available", an empty member list, a blank conversation — so the reader cannot
|
|
9
|
+
* tell "we asked and there is nothing" from "we could not ask", and the retry
|
|
10
|
+
* that would fix it is never offered.
|
|
11
|
+
*
|
|
12
|
+
* `AsyncResourceState` makes the two outcomes separate variants: `error` is the
|
|
13
|
+
* only one carrying a message and it is never reachable with a value, `empty` is
|
|
14
|
+
* the only one carrying a resolved-but-empty value and it never carries a
|
|
15
|
+
* message. A component rendering one is structurally not rendering the other.
|
|
16
|
+
*
|
|
17
|
+
* This file is React-free so the state model, the emptiness rule and the
|
|
18
|
+
* Response readers can be unit-tested and reused outside a component.
|
|
19
|
+
*/
|
|
20
|
+
/**
|
|
21
|
+
* - `idle` — no load has been attempted (the hook is disabled, or its inputs
|
|
22
|
+
* are not resolved yet). Distinct from `loading`: nothing is in flight.
|
|
23
|
+
* - `loading` — a load is in flight and no value is held.
|
|
24
|
+
* - `error` — the load failed. Carries the message and never a value.
|
|
25
|
+
* - `empty` — the load succeeded and the value is empty. Never carries a message.
|
|
26
|
+
* - `ready` — the load succeeded and the value is non-empty.
|
|
27
|
+
*/
|
|
28
|
+
export type AsyncResourceStatus = 'idle' | 'loading' | 'error' | 'empty' | 'ready';
|
|
29
|
+
/** Re-runs the load. Present on every variant so the error branch can never be
|
|
30
|
+
* rendered without the action that recovers from it. */
|
|
31
|
+
export interface AsyncRetryable {
|
|
32
|
+
readonly retry: () => void;
|
|
33
|
+
}
|
|
34
|
+
export type AsyncResourceState<T> = ({
|
|
35
|
+
readonly status: 'idle';
|
|
36
|
+
} & AsyncRetryable) | ({
|
|
37
|
+
readonly status: 'loading';
|
|
38
|
+
} & AsyncRetryable) | ({
|
|
39
|
+
readonly status: 'error';
|
|
40
|
+
readonly message: string;
|
|
41
|
+
readonly error: unknown;
|
|
42
|
+
} & AsyncRetryable) | ({
|
|
43
|
+
readonly status: 'empty';
|
|
44
|
+
readonly value: T;
|
|
45
|
+
} & AsyncRetryable) | ({
|
|
46
|
+
readonly status: 'ready';
|
|
47
|
+
readonly value: T;
|
|
48
|
+
} & AsyncRetryable);
|
|
49
|
+
/** The state model without the retry action — what a reducer produces. */
|
|
50
|
+
export type AsyncResolution<T> = {
|
|
51
|
+
readonly status: 'idle';
|
|
52
|
+
} | {
|
|
53
|
+
readonly status: 'loading';
|
|
54
|
+
} | {
|
|
55
|
+
readonly status: 'error';
|
|
56
|
+
readonly message: string;
|
|
57
|
+
readonly error: unknown;
|
|
58
|
+
} | {
|
|
59
|
+
readonly status: 'empty';
|
|
60
|
+
readonly value: T;
|
|
61
|
+
} | {
|
|
62
|
+
readonly status: 'ready';
|
|
63
|
+
readonly value: T;
|
|
64
|
+
};
|
|
65
|
+
export declare const DEFAULT_ASYNC_ERROR_MESSAGE = "Something went wrong. Please try again.";
|
|
66
|
+
/**
|
|
67
|
+
* Default emptiness rule: `null`/`undefined`, an empty array, an empty `Map` or
|
|
68
|
+
* `Set`. A string, a number and a plain object are `ready` — `''` and `{}` are
|
|
69
|
+
* legitimate values for the resources that produce them, and guessing otherwise
|
|
70
|
+
* would route a real answer into the empty branch. Pass `isEmpty` for a shape
|
|
71
|
+
* this cannot see into (`{ items: [] }`, a paged envelope, a count).
|
|
72
|
+
*/
|
|
73
|
+
export declare function defaultIsEmpty(value: unknown): boolean;
|
|
74
|
+
/** Best available human-readable message for a thrown value. Never returns an
|
|
75
|
+
* empty string — a blank error block reads as a rendering bug. */
|
|
76
|
+
export declare function asyncErrorMessage(error: unknown, fallback?: string): string;
|
|
77
|
+
/** Classifies a successfully loaded value into `ready` or `empty`. */
|
|
78
|
+
export declare function resolveAsyncValue<T>(value: T, isEmpty?: (value: T) => boolean): AsyncResolution<T>;
|
|
79
|
+
/**
|
|
80
|
+
* A non-ok HTTP response, as a throwable. `requireOk`/`readOkJson` raise this so
|
|
81
|
+
* a non-ok response reaches the `error` branch instead of an early `return` that
|
|
82
|
+
* leaves the caller rendering the empty branch.
|
|
83
|
+
*/
|
|
84
|
+
export declare class AsyncRequestError extends Error {
|
|
85
|
+
readonly status: number;
|
|
86
|
+
readonly statusText: string;
|
|
87
|
+
readonly url: string;
|
|
88
|
+
/** First 200 characters of the response body when it could be read, else `''`.
|
|
89
|
+
* Kept off `message` so a server's HTML error page never becomes UI copy. */
|
|
90
|
+
readonly body: string;
|
|
91
|
+
constructor(response: {
|
|
92
|
+
status: number;
|
|
93
|
+
statusText?: string;
|
|
94
|
+
url?: string;
|
|
95
|
+
}, body?: string);
|
|
96
|
+
}
|
|
97
|
+
/** Returns the response when ok; throws `AsyncRequestError` otherwise. Reads the
|
|
98
|
+
* body only on the failure path, so the caller keeps an unconsumed stream. */
|
|
99
|
+
export declare function requireOk(response: Response): Promise<Response>;
|
|
100
|
+
/**
|
|
101
|
+
* `requireOk` + `response.json()`. Without `parse` the result is `unknown`, so a
|
|
102
|
+
* caller narrows at the JSON boundary rather than inheriting an unchecked shape;
|
|
103
|
+
* with `parse` the validator runs inside the load and a rejection lands in the
|
|
104
|
+
* `error` branch.
|
|
105
|
+
*/
|
|
106
|
+
export declare function readOkJson(response: Response): Promise<unknown>;
|
|
107
|
+
export declare function readOkJson<T>(response: Response, parse: (data: unknown) => T): Promise<T>;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { type AsyncResourceState } from './state';
|
|
2
|
+
export interface AsyncLoadContext {
|
|
3
|
+
/** Aborted when the inputs change, a retry supersedes this load, or the
|
|
4
|
+
* component unmounts. Forward it to `fetch` so a superseded request stops. */
|
|
5
|
+
readonly signal: AbortSignal;
|
|
6
|
+
}
|
|
7
|
+
export interface UseAsyncResourceOptions<T> {
|
|
8
|
+
/**
|
|
9
|
+
* The one load. Reject (or throw) to reach the `error` branch — a non-ok
|
|
10
|
+
* response must reject too, which is what `requireOk`/`readOkJson` are for.
|
|
11
|
+
* Read from a ref internally, so an inline arrow does not re-trigger; `deps`
|
|
12
|
+
* is what declares when the load must run again.
|
|
13
|
+
*/
|
|
14
|
+
load: (context: AsyncLoadContext) => Promise<T>;
|
|
15
|
+
/** Re-runs the load when any entry changes by `Object.is`, like `useEffect`. */
|
|
16
|
+
deps?: readonly unknown[];
|
|
17
|
+
/** `false` holds the resource at `idle` and runs nothing — for inputs that are
|
|
18
|
+
* not resolved yet. Flipping it to `true` starts the load. */
|
|
19
|
+
enabled?: boolean;
|
|
20
|
+
/** First-render seed (an SSR/loader page). The hook starts resolved and skips
|
|
21
|
+
* the first load. Read once — later identity changes are ignored, so a
|
|
22
|
+
* revalidating loader belongs in `deps`, not here. */
|
|
23
|
+
initialValue?: T;
|
|
24
|
+
/** Splits a successful load into `empty` vs `ready`. Default: `defaultIsEmpty`. */
|
|
25
|
+
isEmpty?: (value: T) => boolean;
|
|
26
|
+
/** Maps a thrown value to the message the `error` branch renders. */
|
|
27
|
+
errorMessage?: (error: unknown) => string;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* The five-state fetch machine: `idle | loading | error | empty | ready`.
|
|
31
|
+
*
|
|
32
|
+
* What it guarantees, and what the hand-rolled versions it replaces did not:
|
|
33
|
+
*
|
|
34
|
+
* - a rejected load lands on `error` with a message and a `retry`, never on an
|
|
35
|
+
* empty list;
|
|
36
|
+
* - `empty` is only reachable from a load that actually succeeded;
|
|
37
|
+
* - a superseded load (inputs changed, retry pressed, component unmounted) is
|
|
38
|
+
* aborted and its late result is dropped by a monotonic sequence guard, so it
|
|
39
|
+
* cannot repaint a newer view.
|
|
40
|
+
*/
|
|
41
|
+
export declare function useAsyncResource<T>({ load, deps, enabled, initialValue, isEmpty, errorMessage, }: UseAsyncResourceOptions<T>): AsyncResourceState<T>;
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import type { AsyncLoadContext } from './use-async-resource';
|
|
2
|
+
/**
|
|
3
|
+
* The brand that makes "Saved" unreachable without a confirmed write.
|
|
4
|
+
*
|
|
5
|
+
* A resolved promise is not a success: `fetch` resolves on a 404, and the
|
|
6
|
+
* shipped defect this closes is a save button that rendered "Saved" because the
|
|
7
|
+
* only thing awaited was that the request came back at all. The success variant
|
|
8
|
+
* therefore carries a symbol no object literal can spell, so the only way into
|
|
9
|
+
* `succeeded` is `confirmWrite` / `confirmResponse` / `confirmJson` — each of
|
|
10
|
+
* which has already checked that the write landed.
|
|
11
|
+
*/
|
|
12
|
+
export declare const CONFIRMED_WRITE: unique symbol;
|
|
13
|
+
export interface MutationConfirmed<T> {
|
|
14
|
+
readonly succeeded: true;
|
|
15
|
+
readonly value: T;
|
|
16
|
+
readonly [CONFIRMED_WRITE]: true;
|
|
17
|
+
}
|
|
18
|
+
export interface MutationRejected {
|
|
19
|
+
readonly succeeded: false;
|
|
20
|
+
/** Safe to render: what the user is told the write did not do. */
|
|
21
|
+
readonly message: string;
|
|
22
|
+
readonly error?: unknown;
|
|
23
|
+
}
|
|
24
|
+
export type MutationOutcome<T> = MutationConfirmed<T> | MutationRejected;
|
|
25
|
+
/** Confirms a write whose success is already established (an SDK call that
|
|
26
|
+
* throws on failure, a store returning its own typed outcome). The deliberate
|
|
27
|
+
* act is the point — this call is what an audit greps for. */
|
|
28
|
+
export declare function confirmWrite<T>(value: T): MutationConfirmed<T>;
|
|
29
|
+
/** A write that did not land. Constructible by hand: failing loud is never the
|
|
30
|
+
* direction that needs guarding. */
|
|
31
|
+
export declare function rejectWrite(message: string, error?: unknown): MutationRejected;
|
|
32
|
+
/** Confirms only a 2xx response. A 404/500 becomes a rejection carrying the
|
|
33
|
+
* status — never a success, whatever the promise did. */
|
|
34
|
+
export declare function confirmResponse(response: Response): Promise<MutationOutcome<Response>>;
|
|
35
|
+
/** `confirmResponse` + a JSON body. A non-ok status, an unreadable body and a
|
|
36
|
+
* throwing `parse` are all rejections. */
|
|
37
|
+
export declare function confirmJson<T>(response: Response, parse: (data: unknown) => T): Promise<MutationOutcome<T>>;
|
|
38
|
+
/** True only for a value built by one of the confirm helpers. Takes `unknown`
|
|
39
|
+
* because an untyped consumer can return anything from `mutate`. */
|
|
40
|
+
export declare function isConfirmedWrite<T>(outcome: unknown): outcome is MutationConfirmed<T>;
|
|
41
|
+
export type MutationState<T> = {
|
|
42
|
+
readonly status: 'idle';
|
|
43
|
+
} | {
|
|
44
|
+
readonly status: 'pending';
|
|
45
|
+
} | {
|
|
46
|
+
readonly status: 'succeeded';
|
|
47
|
+
readonly value: T;
|
|
48
|
+
} | {
|
|
49
|
+
readonly status: 'failed';
|
|
50
|
+
readonly message: string;
|
|
51
|
+
readonly error: unknown;
|
|
52
|
+
};
|
|
53
|
+
export interface UseConfirmedMutationOptions<TInput, TValue> {
|
|
54
|
+
/**
|
|
55
|
+
* Performs the write and returns a confirmation. Anything else — including a
|
|
56
|
+
* hand-written `{ succeeded: true }` — is treated as a failed write, because
|
|
57
|
+
* an unbranded object is exactly the shape produced by code that never
|
|
58
|
+
* checked the response.
|
|
59
|
+
*
|
|
60
|
+
* The context signal aborts only when a later `run` supersedes this one. It is
|
|
61
|
+
* NOT aborted on unmount: a write the user asked for must not be cancelled by
|
|
62
|
+
* navigating away.
|
|
63
|
+
*/
|
|
64
|
+
mutate: (input: TInput, context: AsyncLoadContext) => Promise<MutationOutcome<TValue>>;
|
|
65
|
+
/** Fires after the state reaches `succeeded` (latest run only). */
|
|
66
|
+
onSucceeded?: (value: TValue) => void;
|
|
67
|
+
/** Fires after the state reaches `failed` (latest run only). */
|
|
68
|
+
onFailed?: (message: string, error: unknown) => void;
|
|
69
|
+
/** Maps a thrown value to the message the `failed` state renders. */
|
|
70
|
+
errorMessage?: (error: unknown) => string;
|
|
71
|
+
}
|
|
72
|
+
export interface ConfirmedMutation<TInput, TValue> {
|
|
73
|
+
readonly state: MutationState<TValue>;
|
|
74
|
+
/** Runs the write. Never rejects — the outcome is returned and mirrored into
|
|
75
|
+
* `state`. Concurrent runs are last-write-wins; disable the control while
|
|
76
|
+
* `state.status === 'pending'`. */
|
|
77
|
+
readonly run: (input: TInput) => Promise<MutationOutcome<TValue>>;
|
|
78
|
+
/** Back to `idle` (dismisses a "Saved" or error affordance). */
|
|
79
|
+
readonly reset: () => void;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* `idle | pending | succeeded | failed` over a write that must confirm itself.
|
|
83
|
+
*
|
|
84
|
+
* `succeeded` is reachable only through a branded confirmation, so the audited
|
|
85
|
+
* "Saved on a 404" bug cannot be written with this hook: the 404 path produces
|
|
86
|
+
* `failed` carrying the status, and a `mutate` that forgot to check produces
|
|
87
|
+
* `failed` carrying the contract violation rather than a success it never
|
|
88
|
+
* earned.
|
|
89
|
+
*/
|
|
90
|
+
export declare function useConfirmedMutation<TInput, TValue>({ mutate, onSucceeded, onFailed, errorMessage, }: UseConfirmedMutationOptions<TInput, TValue>): ConfirmedMutation<TInput, TValue>;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Load the canonical Tangle knot only when a web surface renders it.
|
|
3
|
+
* `/brand` imports the optional `@tangle-network/brand` peer, so a failed load
|
|
4
|
+
* renders a fixed-size spacer instead of crashing the chat shell.
|
|
5
|
+
*/
|
|
6
|
+
interface BrandMarkProps {
|
|
7
|
+
size?: number;
|
|
8
|
+
className?: string;
|
|
9
|
+
}
|
|
10
|
+
export declare function BrandMark({ size, className }: BrandMarkProps): import("react").JSX.Element;
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transcript-side counterpart to the composer's store-backed attachment
|
|
3
|
+
* primitive (agent-app#224). Unlike a `@`-mention, an attachment never rides
|
|
4
|
+
* inline in message text as a token to segment — it renders as its own
|
|
5
|
+
* card/chip keyed off the message's `parts`, so this module is just the
|
|
6
|
+
* browser-safe read side of the attachment vocabulary: the type guard, the
|
|
7
|
+
* per-message part filter, and the two pure conversions a composer/transcript
|
|
8
|
+
* needs before or after a byte upload.
|
|
9
|
+
*
|
|
10
|
+
* `ChatAttachmentPart` and its helpers are re-exported here from
|
|
11
|
+
* `../chat-store/parts` directly (not the `/chat-store` barrel), so a browser
|
|
12
|
+
* bundle gets the attachment vocabulary without importing `/chat-store`, whose
|
|
13
|
+
* barrel pulls the drizzle peer — same reasoning as `./chat-mentions`.
|
|
14
|
+
* `ChatAttachmentKind`/`ChatAttachmentInput` are NOT re-exported from here:
|
|
15
|
+
* they already ship from `./chat-stream` (the import-free `/chat-routes/wire`
|
|
16
|
+
* layer they're defined in), and re-exporting them again from here would
|
|
17
|
+
* collide across the two `export *`s in `./index`.
|
|
18
|
+
*/
|
|
19
|
+
import { attachmentInputToPart, attachmentKindForMime, attachmentPartKey, attachmentPartsFromMessageParts, isChatAttachmentPart, type ChatAttachmentPart } from '../chat-store/parts';
|
|
20
|
+
export type { ChatAttachmentPart };
|
|
21
|
+
export { attachmentInputToPart, attachmentKindForMime, attachmentPartKey, attachmentPartsFromMessageParts, isChatAttachmentPart };
|