@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,529 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The vocabulary of the legibility gate: what a finding is, what a suppression
|
|
3
|
-
* is, and what a product configures.
|
|
4
|
-
*
|
|
5
|
-
* Kept in its own module so the checks, the report formatter and the bin all
|
|
6
|
-
* agree on one shape, and so a consumer can import the types without pulling in
|
|
7
|
-
* `node:fs`.
|
|
8
|
-
*/
|
|
9
|
-
/** The checks this gate runs. Each is individually suppressible, by name. */
|
|
10
|
-
type LegibilityCheckId =
|
|
11
|
-
/** Words on screen that belong to the codebase, not to the reader. */
|
|
12
|
-
'engineering-vocabulary'
|
|
13
|
-
/** An empty/zero state whose subtree offers no next action. */
|
|
14
|
-
| 'dead-end-empty-state'
|
|
15
|
-
/** A success state set without inspecting the response that would deny it. */
|
|
16
|
-
| 'unchecked-success'
|
|
17
|
-
/** A `catch` that neither surfaces the failure nor rethrows it. */
|
|
18
|
-
| 'silent-failure'
|
|
19
|
-
/** A route no navigation entry and no in-source link can reach. */
|
|
20
|
-
| 'unreachable-capability'
|
|
21
|
-
/** A suppression comment that names a check but gives no reason. */
|
|
22
|
-
| 'suppression-without-reason';
|
|
23
|
-
declare const LEGIBILITY_CHECKS: readonly LegibilityCheckId[];
|
|
24
|
-
/** One defect, at one place, with the fix named. */
|
|
25
|
-
interface LegibilityFinding {
|
|
26
|
-
readonly check: LegibilityCheckId;
|
|
27
|
-
/** Path as reported — relative to the working directory when it is inside it. */
|
|
28
|
-
readonly file: string;
|
|
29
|
-
/** 1-based. */
|
|
30
|
-
readonly line: number;
|
|
31
|
-
/** 1-based. */
|
|
32
|
-
readonly column: number;
|
|
33
|
-
/** What is wrong, in one sentence a reviewer can act on. */
|
|
34
|
-
readonly message: string;
|
|
35
|
-
/** What to do about it. Every finding carries one; a finding without a fix is a complaint. */
|
|
36
|
-
readonly remedy: string;
|
|
37
|
-
/** The offending source, trimmed to one readable line. */
|
|
38
|
-
readonly evidence: string;
|
|
39
|
-
}
|
|
40
|
-
/** A suppression that was honoured, with the reason its author wrote. */
|
|
41
|
-
interface LegibilitySuppression {
|
|
42
|
-
readonly check: LegibilityCheckId;
|
|
43
|
-
readonly reason: string;
|
|
44
|
-
readonly file: string;
|
|
45
|
-
readonly line: number;
|
|
46
|
-
}
|
|
47
|
-
interface LegibilityReport {
|
|
48
|
-
readonly ok: boolean;
|
|
49
|
-
readonly findings: readonly LegibilityFinding[];
|
|
50
|
-
/** Honoured suppressions — printed, never silent. */
|
|
51
|
-
readonly suppressed: readonly LegibilitySuppression[];
|
|
52
|
-
readonly filesScanned: number;
|
|
53
|
-
readonly checksRun: readonly LegibilityCheckId[];
|
|
54
|
-
}
|
|
55
|
-
/** A banned term plus the sentence that replaces it. */
|
|
56
|
-
interface BannedTerm {
|
|
57
|
-
/** Matched case-insensitively at word boundaries against visible copy. */
|
|
58
|
-
readonly term: string;
|
|
59
|
-
/** What to write instead — printed with the finding. */
|
|
60
|
-
readonly instead: string;
|
|
61
|
-
}
|
|
62
|
-
interface VocabularyOptions {
|
|
63
|
-
/** Replaces the default list outright. */
|
|
64
|
-
readonly terms?: readonly BannedTerm[];
|
|
65
|
-
/** Added to the default list — the common case for a product's own jargon. */
|
|
66
|
-
readonly extraTerms?: readonly BannedTerm[];
|
|
67
|
-
/** Removed from the default list, for a word that is genuinely the reader's. */
|
|
68
|
-
readonly allowTerms?: readonly string[];
|
|
69
|
-
/**
|
|
70
|
-
* Additional JSX attributes / object keys whose string value is user-visible
|
|
71
|
-
* copy (the defaults cover `title`, `label`, `placeholder`, `empty*`, …).
|
|
72
|
-
*/
|
|
73
|
-
readonly extraCopyKeys?: readonly string[];
|
|
74
|
-
/**
|
|
75
|
-
* Additional call names whose first string argument is user-visible copy
|
|
76
|
-
* (defaults cover `toast*`, `alert`, `setError`, `new Error`).
|
|
77
|
-
*/
|
|
78
|
-
readonly extraCopyCalls?: readonly string[];
|
|
79
|
-
/**
|
|
80
|
-
* Also read strings filling an object key named like copy
|
|
81
|
-
* (`description: '…'`). OFF by default: measured as the tier that reports
|
|
82
|
-
* system prompts, MCP tool descriptions and document templates — text no
|
|
83
|
-
* reader ever sees. Turn it on when your data modules really do hold UI copy.
|
|
84
|
-
*/
|
|
85
|
-
readonly includeObjectCopy?: boolean;
|
|
86
|
-
}
|
|
87
|
-
interface EmptyStateOptions {
|
|
88
|
-
/** Extra tags that count as an action (defaults: button, a, input, form, *Button, *Link, …). */
|
|
89
|
-
readonly extraActionTags?: readonly string[];
|
|
90
|
-
/** Extra props that count as an action (defaults: onClick, onSubmit, href, to, action, …). */
|
|
91
|
-
readonly extraActionProps?: readonly string[];
|
|
92
|
-
/** Extra regexes (as source strings) that identify empty-state copy. */
|
|
93
|
-
readonly extraEmptyPatterns?: readonly string[];
|
|
94
|
-
/**
|
|
95
|
-
* Also report a zero-state that sits directly under a heading. OFF by
|
|
96
|
-
* default: measured as the largest false-positive class — a titled section
|
|
97
|
-
* with nothing in it labels a screen the reader is already oriented on, and a
|
|
98
|
-
* detail page carrying four of them buries the one screen that is entirely
|
|
99
|
-
* empty.
|
|
100
|
-
*/
|
|
101
|
-
readonly reportSectionZeroStates?: boolean;
|
|
102
|
-
}
|
|
103
|
-
interface SuccessOptions {
|
|
104
|
-
/**
|
|
105
|
-
* Callees that resolve on a failed request instead of throwing. `fetch` is the
|
|
106
|
-
* default and the reason this check exists; add your own thin wrapper here.
|
|
107
|
-
*/
|
|
108
|
-
readonly httpCalls?: readonly string[];
|
|
109
|
-
/** Extra identifiers that mean "the user has been told it worked". */
|
|
110
|
-
readonly extraSuccessSignals?: readonly string[];
|
|
111
|
-
/**
|
|
112
|
-
* Calls that inspect a response and throw on a bad status
|
|
113
|
-
* (`assertOk(res)`). Their presence in the same function counts as checking.
|
|
114
|
-
*/
|
|
115
|
-
readonly okGuards?: readonly string[];
|
|
116
|
-
}
|
|
117
|
-
interface SilentFailureOptions {
|
|
118
|
-
/** Extra identifiers that count as surfacing a failure to the user. */
|
|
119
|
-
readonly extraErrorSinks?: readonly string[];
|
|
120
|
-
/**
|
|
121
|
-
* Path substrings whose modules cannot reach a browser, and whose handlers
|
|
122
|
-
* are therefore not this check's business. Defaults to react-router's
|
|
123
|
-
* server-only conventions (`/.server/`, `/routes/api.`); pass `[]` to read
|
|
124
|
-
* every module, at the measured cost of a large false-positive class
|
|
125
|
-
* (best-effort telemetry, audit writes and cache fallbacks).
|
|
126
|
-
*/
|
|
127
|
-
readonly readerlessPaths?: readonly string[];
|
|
128
|
-
}
|
|
129
|
-
interface ReachabilityOptions {
|
|
130
|
-
/**
|
|
131
|
-
* A react-router `routes.ts` (the `@react-router/dev/routes` shape:
|
|
132
|
-
* `route()` / `index()` / `layout()` / `prefix()`).
|
|
133
|
-
*/
|
|
134
|
-
readonly routeConfigFile?: string;
|
|
135
|
-
/** Route paths supplied directly, for a product on another router. */
|
|
136
|
-
readonly routePaths?: readonly string[];
|
|
137
|
-
/** Files that define navigation. Their path literals are the nav entries. */
|
|
138
|
-
readonly navFiles?: readonly string[];
|
|
139
|
-
/** Route paths (or prefixes ending in `/*`) that need no door — defaults to `api/*`. */
|
|
140
|
-
readonly ignore?: readonly string[];
|
|
141
|
-
/**
|
|
142
|
-
* Treat a route whose module is not a `.tsx` file as a resource endpoint
|
|
143
|
-
* rather than a screen. Default true — react-router resource routes are `.ts`.
|
|
144
|
-
*/
|
|
145
|
-
readonly ignoreNonTsxRoutes?: boolean;
|
|
146
|
-
}
|
|
147
|
-
/** What a product writes in `legibility.config.mjs`. */
|
|
148
|
-
interface LegibilityConfig {
|
|
149
|
-
/** Source directories to scan, recursively. At least one. */
|
|
150
|
-
readonly srcDirs: readonly string[];
|
|
151
|
-
/** Turn a check off wholesale. Prefer a per-line suppression with a reason. */
|
|
152
|
-
readonly checks?: Partial<Record<LegibilityCheckId, boolean>>;
|
|
153
|
-
readonly vocabulary?: VocabularyOptions;
|
|
154
|
-
readonly emptyState?: EmptyStateOptions;
|
|
155
|
-
readonly success?: SuccessOptions;
|
|
156
|
-
readonly silentFailure?: SilentFailureOptions;
|
|
157
|
-
readonly reachability?: ReachabilityOptions;
|
|
158
|
-
/** Path substrings to skip, added to the defaults (tests, fixtures, generated). */
|
|
159
|
-
readonly ignorePaths?: readonly string[];
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
/**
|
|
163
|
-
* The report a product reads in its CI log.
|
|
164
|
-
*
|
|
165
|
-
* A gate is only as good as the sentence a developer reads at 6pm with a red
|
|
166
|
-
* build. So every finding prints three things and never fewer: WHERE
|
|
167
|
-
* (`file:line:col`, clickable in every terminal and editor), WHAT is wrong in
|
|
168
|
-
* the reader's terms, and WHAT TO DO about it. A finding without a remedy is a
|
|
169
|
-
* complaint, and complaints get suppressed rather than fixed.
|
|
170
|
-
*
|
|
171
|
-
* Honoured suppressions are counted in the summary and listed on request. A
|
|
172
|
-
* suppression that nobody can see is a disabled check with extra steps.
|
|
173
|
-
*/
|
|
174
|
-
|
|
175
|
-
interface FormatOptions {
|
|
176
|
-
/** Print every honoured suppression with its reason. */
|
|
177
|
-
readonly listSuppressions?: boolean;
|
|
178
|
-
/** Wrap check names in ANSI colour. Off by default — CI logs keep the bytes. */
|
|
179
|
-
readonly colour?: boolean;
|
|
180
|
-
}
|
|
181
|
-
declare function formatLegibilityReport(report: LegibilityReport, options?: FormatOptions): string;
|
|
182
|
-
/** The machine-readable form, for a product that posts findings somewhere. */
|
|
183
|
-
declare function legibilityReportToJson(report: LegibilityReport): string;
|
|
184
|
-
|
|
185
|
-
/**
|
|
186
|
-
* A purpose-built TS/TSX scanner: the one place this subpath decides what part
|
|
187
|
-
* of a file is CODE and what part is COPY A HUMAN READS.
|
|
188
|
-
*
|
|
189
|
-
* Every legibility check needs the same distinction, and getting it from
|
|
190
|
-
* per-check regexes is what makes a lint gate imprecise enough to be turned off.
|
|
191
|
-
* `grep -i artifact` over one product's `apps/web/src` returns 11 hits and every
|
|
192
|
-
* single one is an import specifier, a prop name, or a doc comment — zero are on
|
|
193
|
-
* screen. A checker that reports those 11 is deleted within a week, and then it
|
|
194
|
-
* guards nothing.
|
|
195
|
-
*
|
|
196
|
-
* So this module lexes instead: one pass produces (a) classified SEGMENTS —
|
|
197
|
-
* comments, string literals, template chunks, JSX text, JSX attribute values —
|
|
198
|
-
* and (b) a JSX ELEMENT TREE with spans, attributes, and the enclosing
|
|
199
|
-
* expression container. Checks read those, never the raw bytes.
|
|
200
|
-
*
|
|
201
|
-
* It is a lexer, not a type-aware parser, and that boundary is deliberate: this
|
|
202
|
-
* package ships one runtime dependency and adding `typescript` to every
|
|
203
|
-
* consumer's install to lint copy is the wrong trade. What a lexer cannot do —
|
|
204
|
-
* resolve a string through a variable, follow a component's props to its render
|
|
205
|
-
* — is out of scope by construction and documented per check.
|
|
206
|
-
*
|
|
207
|
-
* Node-agnostic: pure string in, data out. The `fs` walking lives in `scan.ts`.
|
|
208
|
-
*/
|
|
209
|
-
/** What a stretch of source is, once the lexer has decided. */
|
|
210
|
-
type SegmentKind =
|
|
211
|
-
/** `//…` or `/*…*/` — never user-visible; every check skips these. */
|
|
212
|
-
'comment'
|
|
213
|
-
/** A `'…'` / `"…"` literal in code position. Visible only in some contexts. */
|
|
214
|
-
| 'string'
|
|
215
|
-
/** One literal chunk of a template literal (the `${…}` holes are code). */
|
|
216
|
-
| 'template'
|
|
217
|
-
/** Text between JSX tags. The highest-confidence user-visible signal there is. */
|
|
218
|
-
| 'jsx-text'
|
|
219
|
-
/** A `name="…"` attribute value on a JSX element. */
|
|
220
|
-
| 'jsx-attribute';
|
|
221
|
-
/** One classified stretch of source. */
|
|
222
|
-
interface SourceSegment {
|
|
223
|
-
readonly kind: SegmentKind;
|
|
224
|
-
/** Offset of the first character of the segment's VALUE (inside the quotes). */
|
|
225
|
-
readonly start: number;
|
|
226
|
-
/** Offset just past the segment's value. */
|
|
227
|
-
readonly end: number;
|
|
228
|
-
/** The value text, quotes stripped, escapes left as written. */
|
|
229
|
-
readonly value: string;
|
|
230
|
-
/** For `jsx-attribute`: the attribute name. For `jsx-text`: absent. */
|
|
231
|
-
readonly attribute?: string;
|
|
232
|
-
/** For `jsx-attribute` / `jsx-text`: the owning element's tag name. */
|
|
233
|
-
readonly tag?: string;
|
|
234
|
-
}
|
|
235
|
-
/** One attribute on a JSX element. */
|
|
236
|
-
interface JsxAttribute {
|
|
237
|
-
readonly name: string;
|
|
238
|
-
readonly start: number;
|
|
239
|
-
/** The literal value when written `name="…"`; null when `name={…}` or bare. */
|
|
240
|
-
readonly value: string | null;
|
|
241
|
-
/** True when written `name={…}` — the value is code, not copy. */
|
|
242
|
-
readonly expression: boolean;
|
|
243
|
-
}
|
|
244
|
-
/** One JSX element, with the span every subtree question needs. */
|
|
245
|
-
interface JsxElement {
|
|
246
|
-
/** Tag as written (`div`, `Button`, `Card.Header`); `''` for a fragment. */
|
|
247
|
-
readonly tag: string;
|
|
248
|
-
readonly attributes: JsxAttribute[];
|
|
249
|
-
readonly children: JsxElement[];
|
|
250
|
-
parent: JsxElement | null;
|
|
251
|
-
/** Offset of the opening `<`. */
|
|
252
|
-
readonly start: number;
|
|
253
|
-
/** Offset just past the opening tag's `>`. */
|
|
254
|
-
openEnd: number;
|
|
255
|
-
/** Offset just past the element's end (`/>` or `</tag>`). */
|
|
256
|
-
end: number;
|
|
257
|
-
/**
|
|
258
|
-
* Offset of the `{` of the nearest enclosing JSX expression container, or
|
|
259
|
-
* null at the top of a return/assignment. This is what scopes an empty state
|
|
260
|
-
* to its own conditional branch instead of to the whole page.
|
|
261
|
-
*/
|
|
262
|
-
readonly containerStart: number | null;
|
|
263
|
-
}
|
|
264
|
-
/** Everything one pass over a file produces. */
|
|
265
|
-
interface ScannedSource {
|
|
266
|
-
readonly text: string;
|
|
267
|
-
readonly segments: readonly SourceSegment[];
|
|
268
|
-
/** Every element, in document (open-tag) order. */
|
|
269
|
-
readonly elements: readonly JsxElement[];
|
|
270
|
-
/**
|
|
271
|
-
* `text` with every comment, string body and template body replaced by
|
|
272
|
-
* spaces, offsets preserved. Structural regexes (catch bodies, fetch calls)
|
|
273
|
-
* run over this so a `catch` inside a string can never be a finding.
|
|
274
|
-
*/
|
|
275
|
-
readonly masked: string;
|
|
276
|
-
}
|
|
277
|
-
/** 1-based line/column for a byte offset. */
|
|
278
|
-
interface SourcePosition {
|
|
279
|
-
readonly line: number;
|
|
280
|
-
readonly column: number;
|
|
281
|
-
}
|
|
282
|
-
/**
|
|
283
|
-
* Lex one TS/TSX source.
|
|
284
|
-
*
|
|
285
|
-
* The loop keeps a frame stack. A code frame pops back to its JSX parent when
|
|
286
|
-
* an unmatched `}` closes the expression container that opened it; a JSX tag
|
|
287
|
-
* frame becomes a children frame at `>` and pops at `/>`.
|
|
288
|
-
*/
|
|
289
|
-
declare function scanSource(text: string): ScannedSource;
|
|
290
|
-
|
|
291
|
-
/**
|
|
292
|
-
* Filesystem side of the gate: walk a product's source, lex each file once, and
|
|
293
|
-
* hand every check the same `ScannedFile`.
|
|
294
|
-
*
|
|
295
|
-
* Test files are excluded by default and that exclusion is load-bearing, not
|
|
296
|
-
* tidiness: a test fixture deliberately contains the copy and the shapes the
|
|
297
|
-
* checks hunt for ("No results", a silent catch, the word `payload`), so
|
|
298
|
-
* scanning tests would make the gate loudest exactly where nothing ships.
|
|
299
|
-
*/
|
|
300
|
-
|
|
301
|
-
/** One file, lexed once, with its line index ready. */
|
|
302
|
-
interface ScannedFile {
|
|
303
|
-
/** Absolute path as walked. */
|
|
304
|
-
readonly path: string;
|
|
305
|
-
/** Path as reported in findings — relative to cwd when it is inside it. */
|
|
306
|
-
readonly display: string;
|
|
307
|
-
readonly text: string;
|
|
308
|
-
readonly scan: ScannedSource;
|
|
309
|
-
readonly lineStarts: readonly number[];
|
|
310
|
-
positionAt(offset: number): SourcePosition;
|
|
311
|
-
}
|
|
312
|
-
/** Read and lex one file. Returns null when it cannot be read. */
|
|
313
|
-
declare function scanFile(path: string): ScannedFile | null;
|
|
314
|
-
/** Lex an in-memory source — the shape every check test uses. */
|
|
315
|
-
declare function buildScannedFile(path: string, text: string): ScannedFile;
|
|
316
|
-
/** Lex every scannable file under `srcDirs`. */
|
|
317
|
-
declare function scanSources(srcDirs: readonly string[], ignore?: readonly string[]): ScannedFile[];
|
|
318
|
-
|
|
319
|
-
/**
|
|
320
|
-
* Check 1 — engineering vocabulary on screen.
|
|
321
|
-
*
|
|
322
|
-
* The defect: a word from the codebase reaches the reader. Shipped instances
|
|
323
|
-
* include "materialized" inside a user-facing error, a column of `sourceKind`,
|
|
324
|
-
* and a chip reading `undefined`. Nobody decided to say those words; they leaked
|
|
325
|
-
* because the label and the field name were the same string.
|
|
326
|
-
*
|
|
327
|
-
* ── Precision over recall, deliberately ──────────────────────────────────────
|
|
328
|
-
*
|
|
329
|
-
* A vocabulary gate lives or dies on false positives: one bad report and the
|
|
330
|
-
* check is disabled, after which it guards nothing. `grep -i artifact` over one
|
|
331
|
-
* product's `apps/web/src` returns 11 hits, all of them imports, prop names or
|
|
332
|
-
* doc comments — a checker that reports those is deleted in a week.
|
|
333
|
-
*
|
|
334
|
-
* So this check only reads positions the lexer PROVES are copy, in two tiers
|
|
335
|
-
* that are ON by default:
|
|
336
|
-
*
|
|
337
|
-
* 1. JSX text — `<p>No artifact yet</p>`. Unambiguous.
|
|
338
|
-
* 2. A JSX attribute value, when the attribute is in {@link COPY_KEYS}. An
|
|
339
|
-
* allowlist, so `className`, `data-*`, `aria-*`, `id`, `href` and every
|
|
340
|
-
* other internal attribute are excluded by construction rather than by a
|
|
341
|
-
* denylist that goes stale.
|
|
342
|
-
* 3. The first argument of a call in {@link COPY_CALLS} — `toast.error('…')`,
|
|
343
|
-
* `new Error('…')`, `setError('…')`. This is the tier that catches the
|
|
344
|
-
* flagship defect: "materialization" reached a reader from a `new Error`
|
|
345
|
-
* in a server module, not from a component.
|
|
346
|
-
*
|
|
347
|
-
* And ONE tier that is off by default, `includeObjectCopy`:
|
|
348
|
-
*
|
|
349
|
-
* 4. A string or template filling an object key named in {@link COPY_KEYS}
|
|
350
|
-
* (`emptyTitle: '…'`, `description: '…'`).
|
|
351
|
-
*
|
|
352
|
-
* Tier 4 is off because it was MEASURED as the false-positive tier. Over two
|
|
353
|
-
* production verticals it produced findings on a system prompt (`prompt:` in an
|
|
354
|
-
* agent profile), an MCP tool description the model reads, and the body of a
|
|
355
|
-
* legal document template where "Records" is a term of the drafted document —
|
|
356
|
-
* none of them on any screen. A key named `description` is model-facing about
|
|
357
|
-
* as often as it is reader-facing, and a checker that cannot tell them apart
|
|
358
|
-
* must not be the one that fails the build. Products whose data modules really
|
|
359
|
-
* do hold UI copy turn it on.
|
|
360
|
-
*
|
|
361
|
-
* Everything else — a bare string in code, an import specifier, a comment, an
|
|
362
|
-
* identifier, a test file — is not read at all. The cost is real recall: copy
|
|
363
|
-
* assembled through a variable (`const msg = base + suffix`) is invisible here,
|
|
364
|
-
* and no lexer can see it. That is the trade this check makes on purpose.
|
|
365
|
-
*/
|
|
366
|
-
|
|
367
|
-
/**
|
|
368
|
-
* The default list. Every entry has shipped to a real screen in this fleet or
|
|
369
|
-
* its verticals, and every one carries the sentence that replaces it — a gate
|
|
370
|
-
* that only says "don't" leaves the author to guess.
|
|
371
|
-
*/
|
|
372
|
-
declare const DEFAULT_BANNED_TERMS: readonly BannedTerm[];
|
|
373
|
-
/**
|
|
374
|
-
* Attributes and object keys whose string value is copy. An allowlist: an
|
|
375
|
-
* attribute that is not here is never read, which is how `aria-label`,
|
|
376
|
-
* `className`, `data-testid` and `href` stay out without being enumerated.
|
|
377
|
-
*/
|
|
378
|
-
declare const COPY_KEYS: readonly string[];
|
|
379
|
-
/** Calls whose first string argument reaches the reader. */
|
|
380
|
-
declare const COPY_CALLS: readonly string[];
|
|
381
|
-
|
|
382
|
-
/**
|
|
383
|
-
* Check 4 — a failure the reader never learns about.
|
|
384
|
-
*
|
|
385
|
-
* The shape: a `catch` that clears a loading flag, or returns a fallback, and
|
|
386
|
-
* tells nobody. The request failed; the screen renders the empty state. The
|
|
387
|
-
* reader is shown "No documents yet" for a network error, believes the answer,
|
|
388
|
-
* and acts on it. That is worse than an error message, because it is a
|
|
389
|
-
* confident wrong answer rather than a visible problem.
|
|
390
|
-
*
|
|
391
|
-
* ── What passes ──────────────────────────────────────────────────────────────
|
|
392
|
-
*
|
|
393
|
-
* The handler surfaces the failure (an error/notice state setter, a toast, an
|
|
394
|
-
* injected `onError`), or rethrows / rejects so a boundary above can. Anything
|
|
395
|
-
* else — an empty body, `setLoading(false)`, `return []`, a lone
|
|
396
|
-
* `console.error` — is a finding. `console.error` is deliberately NOT a sink:
|
|
397
|
-
* it writes to a console the reader does not have.
|
|
398
|
-
*
|
|
399
|
-
* ── Precision ────────────────────────────────────────────────────────────────
|
|
400
|
-
*
|
|
401
|
-
* Only handlers around I/O are read. A `try { JSON.parse(raw) } catch { return
|
|
402
|
-
* {} }` is a legitimate fallback over a value already in hand, and reporting it
|
|
403
|
-
* is exactly the noise that gets a gate switched off — so a `try` block with no
|
|
404
|
-
* `await`, no request call and no `.then` is skipped entirely. A `.catch(…)`
|
|
405
|
-
* handler is always on a promise, so it needs no such test.
|
|
406
|
-
*
|
|
407
|
-
* Three narrowings were MEASURED against two production verticals, where the
|
|
408
|
-
* unnarrowed check reported 52 handlers of which 14 were real (27%) — a rate
|
|
409
|
-
* that gets a check deleted, not fixed:
|
|
410
|
-
*
|
|
411
|
-
* 1. Only modules that can reach a browser are read ({@link READERLESS_PATHS}).
|
|
412
|
-
* 31 of the 52 sat in `.server/` service modules and resource routes, where
|
|
413
|
-
* the failure IS reported — to the operator's log — and the question of what
|
|
414
|
-
* the reader is told belongs to the caller that renders. This is the single
|
|
415
|
-
* largest noise class and it is a react-router CONVENTION, not a guess:
|
|
416
|
-
* `.server` modules are compiled out of the client bundle.
|
|
417
|
-
* 2. A handler that RESTORES the prior value has surfaced the failure: the
|
|
418
|
-
* control the reader just moved visibly snaps back.
|
|
419
|
-
* 3. A handler that RETURNS words — `return 'unknown'`, `new Response('Invalid
|
|
420
|
-
* JSON', …)` — hands a distinguishable outcome to a caller that renders it.
|
|
421
|
-
* Words inside a `console` call do not count, for the reason above.
|
|
422
|
-
*
|
|
423
|
-
* The cost is stated rather than hidden: narrowing 1 gives up the real
|
|
424
|
-
* one-hop defect (a service returning `[]` on a network error, which a screen
|
|
425
|
-
* then renders as "nothing here"). That is a caller-side finding this check
|
|
426
|
-
* cannot see from the callee, and a product that wants it back passes
|
|
427
|
-
* `readerlessPaths: []`.
|
|
428
|
-
*/
|
|
429
|
-
|
|
430
|
-
/**
|
|
431
|
-
* Paths whose modules cannot render. `.server` is react-router's server-only
|
|
432
|
-
* convention (compiled out of the client bundle) and `routes/api.` its resource
|
|
433
|
-
* -route naming; a `catch` in either reports to an operator, not to a reader.
|
|
434
|
-
*/
|
|
435
|
-
declare const READERLESS_PATHS: readonly string[];
|
|
436
|
-
|
|
437
|
-
/**
|
|
438
|
-
* Check 5 — a capability with no door.
|
|
439
|
-
*
|
|
440
|
-
* Two deterministic engines shipped in this fleet with no way to reach them: a
|
|
441
|
-
* contract redline that cites statutes, and a court-deadline calculator with 59
|
|
442
|
-
* golden tests. Both correct, both routed, neither in the navigation and
|
|
443
|
-
* neither linked from any screen. The only way to open them was to type the URL.
|
|
444
|
-
* No test failed, because every test was about the engine.
|
|
445
|
-
*
|
|
446
|
-
* This check joins two things a product already has — its route table and its
|
|
447
|
-
* navigation definition — and reports the routes that neither the navigation
|
|
448
|
-
* nor any link in the source reaches.
|
|
449
|
-
*
|
|
450
|
-
* ── Matching, and why it is by STATIC SEGMENTS ───────────────────────────────
|
|
451
|
-
*
|
|
452
|
-
* Links are written against a base that is computed at runtime:
|
|
453
|
-
*
|
|
454
|
-
* route('contracts/redline', …) under route(':workspaceId', …) under route('app', …)
|
|
455
|
-
* <Link to={`${base}/contracts/redline`}> base = `/app/${workspaceId}`
|
|
456
|
-
*
|
|
457
|
-
* Comparing strings finds nothing. So both sides are reduced to their STATIC
|
|
458
|
-
* segments — parameters and `${…}` holes drop out — and a link reaches a route
|
|
459
|
-
* when the link's segments are a suffix of the route's:
|
|
460
|
-
*
|
|
461
|
-
* route app/:workspaceId/contracts/redline → [app, contracts, redline]
|
|
462
|
-
* link `${base}/contracts/redline` → [contracts, redline] ✓ suffix
|
|
463
|
-
* link `${base}/contracts` → [contracts] ✗ (matches the parent, not this)
|
|
464
|
-
*
|
|
465
|
-
* The suffix rule is what makes the check usable without resolving `base`, and
|
|
466
|
-
* the cost is a known blind spot: a detail route (`reviews/:id`) has the same
|
|
467
|
-
* static segments as its list route, so a link to the list marks the detail
|
|
468
|
-
* reachable. That is a missed defect, never a false alarm — the deliberate
|
|
469
|
-
* direction for a gate that only survives if its reports are all real.
|
|
470
|
-
*
|
|
471
|
-
* ── Reachable FROM THE NAVIGATION, not merely linked ─────────────────────────
|
|
472
|
-
*
|
|
473
|
-
* A link is only a door if the screen holding it can itself be opened. The
|
|
474
|
-
* shipped defect is an ISLAND: a contract list, a contract detail page and a
|
|
475
|
-
* statute-citing redline engine, each linking the other two, and no navigation
|
|
476
|
-
* entry pointing at any of them. Every route in it has an inbound link, so a
|
|
477
|
-
* check that asks "does a link exist?" reports nothing at all — which is what
|
|
478
|
-
* happened, and the redline shipped unreachable.
|
|
479
|
-
*
|
|
480
|
-
* So doors are resolved transitively from the navigation:
|
|
481
|
-
*
|
|
482
|
-
* - a nav file's path literals are roots;
|
|
483
|
-
* - so is a link in a file that is NOT a route module (a shared component, a
|
|
484
|
-
* header, an index route) — it could be rendered anywhere, and assuming it
|
|
485
|
-
* is always available is the direction that removes findings rather than
|
|
486
|
-
* inventing them;
|
|
487
|
-
* - a link inside a ROUTE module counts only once that route is itself
|
|
488
|
-
* reachable, and the pass repeats to a fixpoint.
|
|
489
|
-
*
|
|
490
|
-
* An island therefore reports every route in it, which is right: one nav entry
|
|
491
|
-
* clears them all, and naming only the entry route would hide how much shipped
|
|
492
|
-
* behind it.
|
|
493
|
-
*
|
|
494
|
-
* ── What is not a screen ─────────────────────────────────────────────────────
|
|
495
|
-
*
|
|
496
|
-
* `index()` and `layout()` add no path of their own. A route whose module is
|
|
497
|
-
* not `.tsx` is a resource endpoint (the react-router convention) and is
|
|
498
|
-
* skipped by default, as is anything under `ignore` (default `api/*`).
|
|
499
|
-
*/
|
|
500
|
-
|
|
501
|
-
/** One route as declared, with its composed path. */
|
|
502
|
-
interface RouteEntry {
|
|
503
|
-
/** Full path from the root of the route table, no leading slash. */
|
|
504
|
-
readonly path: string;
|
|
505
|
-
/** The route module, when the declaration names one. */
|
|
506
|
-
readonly module: string | null;
|
|
507
|
-
/** Offset of the path literal in the route config, for file:line. */
|
|
508
|
-
readonly offset: number;
|
|
509
|
-
/**
|
|
510
|
-
* True when the declaration nests children. Such a route renders an Outlet
|
|
511
|
-
* shell; the destination is its index child, whose path is the same string.
|
|
512
|
-
* Asking a layout for its own door reports every product's `app` wrapper.
|
|
513
|
-
*/
|
|
514
|
-
readonly isLayout: boolean;
|
|
515
|
-
}
|
|
516
|
-
/**
|
|
517
|
-
* Parse a `@react-router/dev/routes` config into composed route paths.
|
|
518
|
-
*
|
|
519
|
-
* Nesting is read from offset containment rather than from a grammar: a call
|
|
520
|
-
* whose parentheses sit inside another call's is that call's child, which is
|
|
521
|
-
* true of `route(p, m, [ route(…) ])` and needs no array bookkeeping.
|
|
522
|
-
*/
|
|
523
|
-
declare function parseRouteConfig(file: ScannedFile): RouteEntry[];
|
|
524
|
-
/** The comparable segments of a path: statics only, params and holes dropped. */
|
|
525
|
-
declare function staticSegments(path: string): string[];
|
|
526
|
-
|
|
527
1
|
/**
|
|
528
2
|
* `@tangle-network/agent-app/legibility` — the understandability gate a product
|
|
529
3
|
* runs over its OWN source, in its OWN CI.
|
|
@@ -559,7 +33,15 @@ declare function staticSegments(path: string): string[];
|
|
|
559
33
|
*
|
|
560
34
|
* or, in CI, the bin: `agent-app-legibility-check --src src --routes src/routes.ts --nav src/components/sidebar.tsx`.
|
|
561
35
|
*/
|
|
562
|
-
|
|
36
|
+
import { type LegibilityConfig, type LegibilityReport } from './types';
|
|
37
|
+
export { LEGIBILITY_CHECKS } from './types';
|
|
38
|
+
export type { BannedTerm, EmptyStateOptions, LegibilityCheckId, LegibilityConfig, LegibilityFinding, LegibilityReport, LegibilitySuppression, ReachabilityOptions, SilentFailureOptions, SuccessOptions, VocabularyOptions, } from './types';
|
|
39
|
+
export { formatLegibilityReport, legibilityReportToJson, type FormatOptions } from './report';
|
|
40
|
+
export { DEFAULT_BANNED_TERMS, COPY_KEYS, COPY_CALLS } from './checks/vocabulary';
|
|
41
|
+
export { READERLESS_PATHS } from './checks/silent-failure';
|
|
42
|
+
export { parseRouteConfig, staticSegments, type RouteEntry } from './checks/reachability';
|
|
43
|
+
export { scanSources, scanFile, buildScannedFile, type ScannedFile } from './scan';
|
|
44
|
+
export { scanSource, type JsxAttribute, type JsxElement, type ScannedSource, type SegmentKind, type SourceSegment, } from './source';
|
|
563
45
|
/**
|
|
564
46
|
* Run the gate over a product's source.
|
|
565
47
|
*
|
|
@@ -567,6 +49,4 @@ declare function staticSegments(path: string): string[];
|
|
|
567
49
|
* The bin decides what to do with the report; a product embedding this in its
|
|
568
50
|
* own tooling decides something else.
|
|
569
51
|
*/
|
|
570
|
-
declare function checkLegibility(config: LegibilityConfig): LegibilityReport;
|
|
571
|
-
|
|
572
|
-
export { type BannedTerm, COPY_CALLS, COPY_KEYS, DEFAULT_BANNED_TERMS, type EmptyStateOptions, type FormatOptions, type JsxAttribute, type JsxElement, LEGIBILITY_CHECKS, type LegibilityCheckId, type LegibilityConfig, type LegibilityFinding, type LegibilityReport, type LegibilitySuppression, READERLESS_PATHS, type ReachabilityOptions, type RouteEntry, type ScannedFile, type ScannedSource, type SegmentKind, type SilentFailureOptions, type SourceSegment, type SuccessOptions, type VocabularyOptions, buildScannedFile, checkLegibility, formatLegibilityReport, legibilityReportToJson, parseRouteConfig, scanFile, scanSource, scanSources, staticSegments };
|
|
52
|
+
export declare function checkLegibility(config: LegibilityConfig): LegibilityReport;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The report a product reads in its CI log.
|
|
3
|
+
*
|
|
4
|
+
* A gate is only as good as the sentence a developer reads at 6pm with a red
|
|
5
|
+
* build. So every finding prints three things and never fewer: WHERE
|
|
6
|
+
* (`file:line:col`, clickable in every terminal and editor), WHAT is wrong in
|
|
7
|
+
* the reader's terms, and WHAT TO DO about it. A finding without a remedy is a
|
|
8
|
+
* complaint, and complaints get suppressed rather than fixed.
|
|
9
|
+
*
|
|
10
|
+
* Honoured suppressions are counted in the summary and listed on request. A
|
|
11
|
+
* suppression that nobody can see is a disabled check with extra steps.
|
|
12
|
+
*/
|
|
13
|
+
import { type LegibilityReport } from './types';
|
|
14
|
+
export interface FormatOptions {
|
|
15
|
+
/** Print every honoured suppression with its reason. */
|
|
16
|
+
readonly listSuppressions?: boolean;
|
|
17
|
+
/** Wrap check names in ANSI colour. Off by default — CI logs keep the bytes. */
|
|
18
|
+
readonly colour?: boolean;
|
|
19
|
+
}
|
|
20
|
+
export declare function formatLegibilityReport(report: LegibilityReport, options?: FormatOptions): string;
|
|
21
|
+
/** The machine-readable form, for a product that posts findings somewhere. */
|
|
22
|
+
export declare function legibilityReportToJson(report: LegibilityReport): string;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Filesystem side of the gate: walk a product's source, lex each file once, and
|
|
3
|
+
* hand every check the same `ScannedFile`.
|
|
4
|
+
*
|
|
5
|
+
* Test files are excluded by default and that exclusion is load-bearing, not
|
|
6
|
+
* tidiness: a test fixture deliberately contains the copy and the shapes the
|
|
7
|
+
* checks hunt for ("No results", a silent catch, the word `payload`), so
|
|
8
|
+
* scanning tests would make the gate loudest exactly where nothing ships.
|
|
9
|
+
*/
|
|
10
|
+
import { type ScannedSource, type SourcePosition } from './source';
|
|
11
|
+
/** One file, lexed once, with its line index ready. */
|
|
12
|
+
export interface ScannedFile {
|
|
13
|
+
/** Absolute path as walked. */
|
|
14
|
+
readonly path: string;
|
|
15
|
+
/** Path as reported in findings — relative to cwd when it is inside it. */
|
|
16
|
+
readonly display: string;
|
|
17
|
+
readonly text: string;
|
|
18
|
+
readonly scan: ScannedSource;
|
|
19
|
+
readonly lineStarts: readonly number[];
|
|
20
|
+
positionAt(offset: number): SourcePosition;
|
|
21
|
+
}
|
|
22
|
+
/** Read and lex one file. Returns null when it cannot be read. */
|
|
23
|
+
export declare function scanFile(path: string): ScannedFile | null;
|
|
24
|
+
/** Lex an in-memory source — the shape every check test uses. */
|
|
25
|
+
export declare function buildScannedFile(path: string, text: string): ScannedFile;
|
|
26
|
+
/** Lex every scannable file under `srcDirs`. */
|
|
27
|
+
export declare function scanSources(srcDirs: readonly string[], ignore?: readonly string[]): ScannedFile[];
|
|
28
|
+
/** One readable line of evidence: collapsed whitespace, clipped. */
|
|
29
|
+
export declare function evidenceOf(text: string, start: number, end: number, max?: number): string;
|