harnery 0.32.0 → 0.34.0
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 +2 -0
- package/dist/commander.d.ts.map +1 -1
- package/dist/commander.js +7 -1
- package/dist/commands/adapter.js +2 -2
- package/dist/commands/agents.d.ts +144 -1
- package/dist/commands/agents.d.ts.map +1 -1
- package/dist/commands/agents.js +1408 -565
- package/dist/commands/artifacts.d.ts.map +1 -1
- package/dist/commands/artifacts.js +7 -6
- package/dist/commands/backup.d.ts +1 -1
- package/dist/commands/backup.d.ts.map +1 -1
- package/dist/commands/backup.js +29 -16
- package/dist/commands/browse.d.ts.map +1 -1
- package/dist/commands/browse.js +234 -12
- package/dist/commands/checkpoint.d.ts.map +1 -1
- package/dist/commands/checkpoint.js +3 -2
- package/dist/commands/claude-desktop.d.ts +2 -2
- package/dist/commands/claude-desktop.d.ts.map +1 -1
- package/dist/commands/claude-desktop.js +2 -2
- package/dist/commands/context.js +1 -6
- package/dist/commands/decision.d.ts.map +1 -1
- package/dist/commands/decision.js +22 -38
- package/dist/commands/docs.d.ts.map +1 -1
- package/dist/commands/docs.js +91 -28
- package/dist/commands/doctor.d.ts +4 -2
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +55 -7
- package/dist/commands/events.d.ts +5 -0
- package/dist/commands/events.d.ts.map +1 -0
- package/dist/commands/events.js +189 -0
- package/dist/commands/governor.d.ts.map +1 -1
- package/dist/commands/governor.js +13 -4
- package/dist/commands/init.d.ts +10 -2
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +233 -51
- package/dist/commands/instructions.d.ts +4 -0
- package/dist/commands/instructions.d.ts.map +1 -0
- package/dist/commands/instructions.js +100 -0
- package/dist/commands/journal.d.ts.map +1 -1
- package/dist/commands/journal.js +4 -13
- package/dist/commands/ledger-v3.d.ts +5 -0
- package/dist/commands/ledger-v3.d.ts.map +1 -0
- package/dist/commands/ledger-v3.js +91 -0
- package/dist/commands/presence.d.ts.map +1 -1
- package/dist/commands/presence.js +15 -6
- package/dist/commands/sync.d.ts +1 -1
- package/dist/commands/sync.js +1 -1
- package/dist/commands/web.d.ts +6 -0
- package/dist/commands/web.d.ts.map +1 -1
- package/dist/commands/web.js +67 -7
- package/dist/commands/work.d.ts.map +1 -1
- package/dist/commands/work.js +22 -5
- package/dist/core/adapter.d.ts +5 -0
- package/dist/core/adapter.d.ts.map +1 -0
- package/dist/core/adapter.js +1 -0
- package/dist/core/adapters/attest.d.ts +5 -2
- package/dist/core/adapters/attest.d.ts.map +1 -1
- package/dist/core/adapters/attest.js +8 -3
- package/dist/core/adapters/profiles.d.ts +6 -6
- package/dist/core/adapters/profiles.d.ts.map +1 -1
- package/dist/core/adapters/profiles.js +4 -4
- package/dist/core/agents/canonical-emit.d.ts +17 -15
- package/dist/core/agents/canonical-emit.d.ts.map +1 -1
- package/dist/core/agents/canonical-emit.js +27 -25
- package/dist/core/agents/cli.js +212 -235
- package/dist/core/agents/codex-archive-v3.d.ts +14 -0
- package/dist/core/agents/codex-archive-v3.d.ts.map +1 -0
- package/dist/core/agents/codex-archive-v3.js +110 -0
- package/dist/core/agents/coord-client.d.ts +19 -70
- package/dist/core/agents/coord-client.d.ts.map +1 -1
- package/dist/core/agents/coord-client.js +65 -155
- package/dist/core/agents/finalization.d.ts +4 -1
- package/dist/core/agents/finalization.d.ts.map +1 -1
- package/dist/core/agents/finalization.js +89 -32
- package/dist/core/agents/index.d.ts +5 -5
- package/dist/core/agents/index.d.ts.map +1 -1
- package/dist/core/agents/index.js +5 -5
- package/dist/core/agents/live-authority-v3.d.ts +59 -0
- package/dist/core/agents/live-authority-v3.d.ts.map +1 -0
- package/dist/core/agents/live-authority-v3.js +233 -0
- package/dist/core/agents/live-lifecycle-v3.d.ts +20 -0
- package/dist/core/agents/live-lifecycle-v3.d.ts.map +1 -0
- package/dist/core/agents/live-lifecycle-v3.js +91 -0
- package/dist/core/agents/live-observation-v3.d.ts +25 -0
- package/dist/core/agents/live-observation-v3.d.ts.map +1 -0
- package/dist/core/agents/live-observation-v3.js +157 -0
- package/dist/core/agents/render/prompt-context.d.ts +10 -4
- package/dist/core/agents/render/prompt-context.d.ts.map +1 -1
- package/dist/core/agents/render/prompt-context.js +61 -55
- package/dist/core/agents/render/session-context.d.ts +1 -1
- package/dist/core/agents/render/session-context.d.ts.map +1 -1
- package/dist/core/agents/render/session-context.js +15 -33
- package/dist/core/agents/rules/claim-conflict.d.ts +3 -3
- package/dist/core/agents/rules/claim-conflict.d.ts.map +1 -1
- package/dist/core/agents/rules/claim-conflict.js +79 -127
- package/dist/core/agents/rules/commit-conflict.d.ts.map +1 -1
- package/dist/core/agents/rules/commit-conflict.js +3 -18
- package/dist/core/agents/rules/stop-hook.d.ts +9 -50
- package/dist/core/agents/rules/stop-hook.d.ts.map +1 -1
- package/dist/core/agents/rules/stop-hook.js +193 -236
- package/dist/core/agents/session-events.d.ts +5 -7
- package/dist/core/agents/session-events.d.ts.map +1 -1
- package/dist/core/agents/session-events.js +127 -95
- package/dist/core/agents/session-finalization-state-v3.d.ts +30 -0
- package/dist/core/agents/session-finalization-state-v3.d.ts.map +1 -0
- package/dist/core/agents/session-finalization-state-v3.js +40 -0
- package/dist/core/agents/session-finalizer-v3.d.ts +107 -0
- package/dist/core/agents/session-finalizer-v3.d.ts.map +1 -0
- package/dist/core/agents/session-finalizer-v3.js +734 -0
- package/dist/core/agents/session-name-display.d.ts +40 -0
- package/dist/core/agents/session-name-display.d.ts.map +1 -0
- package/dist/core/agents/session-name-display.js +119 -0
- package/dist/core/agents/state/activity-log.d.ts +3 -3
- package/dist/core/agents/state/activity-log.d.ts.map +1 -1
- package/dist/core/agents/state/activity-log.js +7 -16
- package/dist/core/agents/state/heartbeat-writer.d.ts +29 -46
- package/dist/core/agents/state/heartbeat-writer.d.ts.map +1 -1
- package/dist/core/agents/state/heartbeat-writer.js +59 -199
- package/dist/core/agents/state/live-coordination-view.d.ts +31 -0
- package/dist/core/agents/state/live-coordination-view.d.ts.map +1 -0
- package/dist/core/agents/state/live-coordination-view.js +209 -0
- package/dist/core/agents/state/session-state.d.ts +45 -0
- package/dist/core/agents/state/session-state.d.ts.map +1 -0
- package/dist/core/agents/state/session-state.js +90 -0
- package/dist/core/agents/state/stale-sweep.d.ts +1 -1
- package/dist/core/agents/state/stale-sweep.d.ts.map +1 -1
- package/dist/core/agents/state/stale-sweep.js +26 -15
- package/dist/core/artifacts/index.d.ts.map +1 -1
- package/dist/core/artifacts/index.js +5 -7
- package/dist/core/config.d.ts +33 -2
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +98 -2
- package/dist/core/context/index.d.ts +1 -4
- package/dist/core/context/index.d.ts.map +1 -1
- package/dist/core/context/index.js +9 -9
- package/dist/core/events/span-parent.d.ts +15 -0
- package/dist/core/events/span-parent.d.ts.map +1 -0
- package/dist/core/events/span-parent.js +34 -0
- package/dist/core/events/v3/advance.d.ts +14 -0
- package/dist/core/events/v3/advance.d.ts.map +1 -0
- package/dist/core/events/v3/advance.js +134 -0
- package/dist/core/events/v3/authority-outbox.d.ts +78 -0
- package/dist/core/events/v3/authority-outbox.d.ts.map +1 -0
- package/dist/core/events/v3/authority-outbox.js +399 -0
- package/dist/core/events/v3/base-builder.d.ts +20 -0
- package/dist/core/events/v3/base-builder.d.ts.map +1 -0
- package/dist/core/events/v3/base-builder.js +29 -0
- package/dist/core/events/v3/base-contract.d.ts +7576 -0
- package/dist/core/events/v3/base-contract.d.ts.map +1 -0
- package/dist/core/events/v3/base-contract.js +647 -0
- package/dist/core/events/v3/bootstrap.d.ts +34 -0
- package/dist/core/events/v3/bootstrap.d.ts.map +1 -0
- package/dist/core/events/v3/bootstrap.js +175 -0
- package/dist/core/events/v3/builder.d.ts +20 -0
- package/dist/core/events/v3/builder.d.ts.map +1 -0
- package/dist/core/events/v3/builder.js +28 -0
- package/dist/core/events/v3/canonical.d.ts +31 -0
- package/dist/core/events/v3/canonical.d.ts.map +1 -0
- package/dist/core/events/v3/canonical.js +100 -0
- package/dist/core/events/v3/capabilities.d.ts +31 -0
- package/dist/core/events/v3/capabilities.d.ts.map +1 -0
- package/dist/core/events/v3/capabilities.js +107 -0
- package/dist/core/events/v3/capability-drift.d.ts +22 -0
- package/dist/core/events/v3/capability-drift.d.ts.map +1 -0
- package/dist/core/events/v3/capability-drift.js +134 -0
- package/dist/core/events/v3/catalog.d.ts +38 -0
- package/dist/core/events/v3/catalog.d.ts.map +1 -0
- package/dist/core/events/v3/catalog.js +135 -0
- package/dist/core/events/v3/clock-order.d.ts +34 -0
- package/dist/core/events/v3/clock-order.d.ts.map +1 -0
- package/dist/core/events/v3/clock-order.js +35 -0
- package/dist/core/events/v3/contract.d.ts +171 -0
- package/dist/core/events/v3/contract.d.ts.map +1 -0
- package/dist/core/events/v3/contract.js +180 -0
- package/dist/core/events/v3/control.d.ts +111 -0
- package/dist/core/events/v3/control.d.ts.map +1 -0
- package/dist/core/events/v3/control.js +419 -0
- package/dist/core/events/v3/coordination-view.d.ts +69 -0
- package/dist/core/events/v3/coordination-view.d.ts.map +1 -0
- package/dist/core/events/v3/coordination-view.js +119 -0
- package/dist/core/events/v3/economics.d.ts +77 -0
- package/dist/core/events/v3/economics.d.ts.map +1 -0
- package/dist/core/events/v3/economics.js +274 -0
- package/dist/core/events/v3/finalization-view.d.ts +26 -0
- package/dist/core/events/v3/finalization-view.d.ts.map +1 -0
- package/dist/core/events/v3/finalization-view.js +37 -0
- package/dist/core/events/v3/fingerprint-keys.d.ts +25 -0
- package/dist/core/events/v3/fingerprint-keys.d.ts.map +1 -0
- package/dist/core/events/v3/fingerprint-keys.js +217 -0
- package/dist/core/events/v3/generated.d.ts +4 -0
- package/dist/core/events/v3/generated.d.ts.map +1 -0
- package/dist/core/events/v3/generated.js +47 -0
- package/dist/core/events/v3/ids.d.ts +9 -0
- package/dist/core/events/v3/ids.d.ts.map +1 -0
- package/dist/core/events/v3/ids.js +25 -0
- package/dist/core/events/v3/index.d.ts +35 -0
- package/dist/core/events/v3/index.d.ts.map +1 -0
- package/dist/core/events/v3/index.js +33 -0
- package/dist/core/events/v3/latency.d.ts +63 -0
- package/dist/core/events/v3/latency.d.ts.map +1 -0
- package/dist/core/events/v3/latency.js +412 -0
- package/dist/core/events/v3/live-feed.d.ts +45 -0
- package/dist/core/events/v3/live-feed.d.ts.map +1 -0
- package/dist/core/events/v3/live-feed.js +246 -0
- package/dist/core/events/v3/live-observation.d.ts +35 -0
- package/dist/core/events/v3/live-observation.d.ts.map +1 -0
- package/dist/core/events/v3/live-observation.js +1 -0
- package/dist/core/events/v3/live-routing.d.ts +57 -0
- package/dist/core/events/v3/live-routing.d.ts.map +1 -0
- package/dist/core/events/v3/live-routing.js +107 -0
- package/dist/core/events/v3/producers/command-recorder.d.ts +67 -0
- package/dist/core/events/v3/producers/command-recorder.d.ts.map +1 -0
- package/dist/core/events/v3/producers/command-recorder.js +477 -0
- package/dist/core/events/v3/producers/command.d.ts +50 -0
- package/dist/core/events/v3/producers/command.d.ts.map +1 -0
- package/dist/core/events/v3/producers/command.js +135 -0
- package/dist/core/events/v3/producers/coordination-recorder.d.ts +53 -0
- package/dist/core/events/v3/producers/coordination-recorder.d.ts.map +1 -0
- package/dist/core/events/v3/producers/coordination-recorder.js +376 -0
- package/dist/core/events/v3/producers/coordination.d.ts +90 -0
- package/dist/core/events/v3/producers/coordination.d.ts.map +1 -0
- package/dist/core/events/v3/producers/coordination.js +229 -0
- package/dist/core/events/v3/producers/hook-base.d.ts +54 -0
- package/dist/core/events/v3/producers/hook-base.d.ts.map +1 -0
- package/dist/core/events/v3/producers/hook-base.js +424 -0
- package/dist/core/events/v3/producers/hook.d.ts +29 -0
- package/dist/core/events/v3/producers/hook.d.ts.map +1 -0
- package/dist/core/events/v3/producers/hook.js +71 -0
- package/dist/core/events/v3/producers/intake.d.ts +65 -0
- package/dist/core/events/v3/producers/intake.d.ts.map +1 -0
- package/dist/core/events/v3/producers/intake.js +244 -0
- package/dist/core/events/v3/producers/recorder.d.ts +240 -0
- package/dist/core/events/v3/producers/recorder.d.ts.map +1 -0
- package/dist/core/events/v3/producers/recorder.js +2176 -0
- package/dist/core/events/v3/projection.d.ts +101 -0
- package/dist/core/events/v3/projection.d.ts.map +1 -0
- package/dist/core/events/v3/projection.js +479 -0
- package/dist/core/events/v3/reader.d.ts +75 -0
- package/dist/core/events/v3/reader.d.ts.map +1 -0
- package/dist/core/events/v3/reader.js +778 -0
- package/dist/core/events/v3/recovery-record.d.ts +47 -0
- package/dist/core/events/v3/recovery-record.d.ts.map +1 -0
- package/dist/core/events/v3/recovery-record.js +167 -0
- package/dist/core/events/v3/recovery.d.ts +22 -0
- package/dist/core/events/v3/recovery.d.ts.map +1 -0
- package/dist/core/events/v3/recovery.js +227 -0
- package/dist/core/events/v3/span-state.d.ts +52 -0
- package/dist/core/events/v3/span-state.d.ts.map +1 -0
- package/dist/core/events/v3/span-state.js +142 -0
- package/dist/core/events/v3/targets.d.ts +23 -0
- package/dist/core/events/v3/targets.d.ts.map +1 -0
- package/dist/core/events/v3/targets.js +134 -0
- package/dist/core/events/v3/turn-telemetry.d.ts +41 -0
- package/dist/core/events/v3/turn-telemetry.d.ts.map +1 -0
- package/dist/core/events/v3/turn-telemetry.js +168 -0
- package/dist/core/events/v3/validate.d.ts +9 -0
- package/dist/core/events/v3/validate.d.ts.map +1 -0
- package/dist/core/events/v3/validate.js +281 -0
- package/dist/core/events/v3/writer.d.ts +56 -0
- package/dist/core/events/v3/writer.d.ts.map +1 -0
- package/dist/core/events/v3/writer.js +335 -0
- package/dist/core/governor/index.d.ts +1 -1
- package/dist/core/governor/index.d.ts.map +1 -1
- package/dist/core/governor/index.js +1 -1
- package/dist/core/governor/plan-api.d.ts +2 -1
- package/dist/core/governor/plan-api.d.ts.map +1 -1
- package/dist/core/governor/plan-api.js +6 -3
- package/dist/core/governor/read.d.ts +1 -1
- package/dist/core/governor/read.d.ts.map +1 -1
- package/dist/core/governor/read.js +1 -1
- package/dist/core/governor/state.d.ts +9 -0
- package/dist/core/governor/state.d.ts.map +1 -1
- package/dist/core/governor/state.js +40 -3
- package/dist/core/guard/config.d.ts +5 -0
- package/dist/core/guard/config.d.ts.map +1 -0
- package/dist/core/guard/config.js +157 -0
- package/dist/core/guard/coordinator.d.ts +14 -0
- package/dist/core/guard/coordinator.d.ts.map +1 -0
- package/dist/core/guard/coordinator.js +173 -0
- package/dist/core/guard/evaluator.d.ts +4 -0
- package/dist/core/guard/evaluator.d.ts.map +1 -0
- package/dist/core/guard/evaluator.js +242 -0
- package/dist/core/guard/evidence-v3.d.ts +15 -0
- package/dist/core/guard/evidence-v3.d.ts.map +1 -0
- package/dist/core/guard/evidence-v3.js +171 -0
- package/dist/core/guard/index.d.ts +10 -0
- package/dist/core/guard/index.d.ts.map +1 -0
- package/dist/core/guard/index.js +6 -0
- package/dist/core/guard/live-source-v3.d.ts +40 -0
- package/dist/core/guard/live-source-v3.d.ts.map +1 -0
- package/dist/core/guard/live-source-v3.js +128 -0
- package/dist/core/guard/storage.d.ts +27 -0
- package/dist/core/guard/storage.d.ts.map +1 -0
- package/dist/core/guard/storage.js +140 -0
- package/dist/core/guard/types.d.ts +119 -0
- package/dist/core/guard/types.d.ts.map +1 -0
- package/dist/core/guard/types.js +1 -0
- package/dist/core/hooks/adapter/detect.d.ts +18 -1
- package/dist/core/hooks/adapter/detect.d.ts.map +1 -1
- package/dist/core/hooks/adapter/detect.js +29 -0
- package/dist/core/hooks/adapter/events.d.ts +7 -4
- package/dist/core/hooks/adapter/events.d.ts.map +1 -1
- package/dist/core/hooks/adapter/events.js +13 -4
- package/dist/core/hooks/adapter/output.d.ts +2 -2
- package/dist/core/hooks/adapter/output.d.ts.map +1 -1
- package/dist/core/hooks/adapter/parse.d.ts +7 -4
- package/dist/core/hooks/adapter/parse.d.ts.map +1 -1
- package/dist/core/hooks/adapter/parse.js +64 -24
- package/dist/core/hooks/adapter/wiring.d.ts +30 -4
- package/dist/core/hooks/adapter/wiring.d.ts.map +1 -1
- package/dist/core/hooks/adapter/wiring.js +89 -11
- package/dist/core/hooks/cli.d.ts +1 -1
- package/dist/core/hooks/cli.js +345 -400
- package/dist/core/hooks/codex-authorization.d.ts +30 -0
- package/dist/core/hooks/codex-authorization.d.ts.map +1 -0
- package/dist/core/hooks/codex-authorization.js +199 -0
- package/dist/core/hooks/effects/image-capture.d.ts +20 -34
- package/dist/core/hooks/effects/image-capture.d.ts.map +1 -1
- package/dist/core/hooks/effects/image-capture.js +212 -221
- package/dist/core/hooks/effects/index.d.ts +1 -9
- package/dist/core/hooks/effects/index.d.ts.map +1 -1
- package/dist/core/hooks/effects/index.js +1 -24
- package/dist/core/hooks/events/input-hash.d.ts +7 -0
- package/dist/core/hooks/events/input-hash.d.ts.map +1 -0
- package/dist/core/hooks/events/input-hash.js +43 -0
- package/dist/core/hooks/index.d.ts +4 -3
- package/dist/core/hooks/index.d.ts.map +1 -1
- package/dist/core/hooks/index.js +2 -3
- package/dist/core/hooks/resolve/coord-root.d.ts +1 -1
- package/dist/core/hooks/resolve/coord-root.js +1 -1
- package/dist/core/hooks/resolve/owner.d.ts +16 -15
- package/dist/core/hooks/resolve/owner.d.ts.map +1 -1
- package/dist/core/hooks/resolve/owner.js +51 -42
- package/dist/core/hooks/resolve/transcript.d.ts +33 -3
- package/dist/core/hooks/resolve/transcript.d.ts.map +1 -1
- package/dist/core/hooks/resolve/transcript.js +155 -14
- package/dist/core/hooks/session-name-presence.d.ts +9 -10
- package/dist/core/hooks/session-name-presence.d.ts.map +1 -1
- package/dist/core/hooks/session-name-presence.js +15 -15
- package/dist/core/hooks/unsafe-cross-shell.d.ts +1 -1
- package/dist/core/hooks/unsafe-cross-shell.d.ts.map +1 -1
- package/dist/core/journal/index.d.ts +2 -2
- package/dist/core/journal/index.d.ts.map +1 -1
- package/dist/core/journal/index.js +9 -22
- package/dist/core/presence/blob.d.ts +8 -3
- package/dist/core/presence/blob.d.ts.map +1 -1
- package/dist/core/presence/blob.js +54 -41
- package/dist/core/presence/codec-digest.d.ts +29 -0
- package/dist/core/presence/codec-digest.d.ts.map +1 -0
- package/dist/core/presence/codec-digest.js +170 -0
- package/dist/core/presence/index.js +15 -1
- package/dist/core/presence/relay-client.d.ts +1 -1
- package/dist/core/presence/relay-client.d.ts.map +1 -1
- package/dist/core/presence/relay-client.js +5 -5
- package/dist/core/work/index.d.ts +1 -1
- package/dist/core/work/index.d.ts.map +1 -1
- package/dist/core/work/index.js +1 -1
- package/dist/core/work/read.d.ts +1 -1
- package/dist/core/work/read.d.ts.map +1 -1
- package/dist/core/work/read.js +1 -1
- package/dist/core/work/runner.d.ts.map +1 -1
- package/dist/core/work/runner.js +6 -0
- package/dist/core/work/state.d.ts +9 -0
- package/dist/core/work/state.d.ts.map +1 -1
- package/dist/core/work/state.js +17 -3
- package/dist/core/workflow/engine.js +24 -25
- package/dist/core/workflow/live-session-v3.d.ts +19 -0
- package/dist/core/workflow/live-session-v3.d.ts.map +1 -0
- package/dist/core/workflow/live-session-v3.js +86 -0
- package/dist/core/workflow/scope-id.d.ts +3 -0
- package/dist/core/workflow/scope-id.d.ts.map +1 -0
- package/dist/core/workflow/scope-id.js +5 -0
- package/dist/core/workflow/workspaces/leases.d.ts +4 -0
- package/dist/core/workflow/workspaces/leases.d.ts.map +1 -1
- package/dist/core/workflow/workspaces/leases.js +53 -19
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/lib/browser/client.d.ts +41 -0
- package/dist/lib/browser/client.d.ts.map +1 -1
- package/dist/lib/browser/client.js +203 -0
- package/dist/lib/browser/critique.d.ts +28 -2
- package/dist/lib/browser/critique.d.ts.map +1 -1
- package/dist/lib/browser/critique.js +74 -18
- package/dist/lib/browser/geometry.d.ts +1 -1
- package/dist/lib/browser/geometry.d.ts.map +1 -1
- package/dist/lib/browser/geometry.js +130 -6
- package/dist/lib/browser/index.d.ts +3 -0
- package/dist/lib/browser/index.d.ts.map +1 -1
- package/dist/lib/browser/index.js +3 -0
- package/dist/lib/browser/qa-plan.d.ts +174 -0
- package/dist/lib/browser/qa-plan.d.ts.map +1 -0
- package/dist/lib/browser/qa-plan.js +321 -0
- package/dist/lib/browser/qa-reuse.d.ts +99 -0
- package/dist/lib/browser/qa-reuse.d.ts.map +1 -0
- package/dist/lib/browser/qa-reuse.js +222 -0
- package/dist/lib/browser/qa-snapshot.d.ts +64 -0
- package/dist/lib/browser/qa-snapshot.d.ts.map +1 -0
- package/dist/lib/browser/qa-snapshot.js +171 -0
- package/dist/lib/browser/runts.d.ts.map +1 -1
- package/dist/lib/browser/runts.js +22 -1
- package/dist/lib/browser/tiling.d.ts +71 -0
- package/dist/lib/browser/tiling.d.ts.map +1 -0
- package/dist/lib/browser/tiling.js +118 -0
- package/dist/lib/context/index.d.ts +0 -3
- package/dist/lib/context/index.d.ts.map +1 -1
- package/dist/lib/context/index.js +20 -42
- package/dist/lib/council/index.d.ts +2 -2
- package/dist/lib/council/index.d.ts.map +1 -1
- package/dist/lib/council/index.js +9 -20
- package/dist/lib/docs-frontmatter.d.ts +1 -6
- package/dist/lib/docs-frontmatter.d.ts.map +1 -1
- package/dist/lib/docs-frontmatter.js +12 -78
- package/dist/lib/docs-index.d.ts +9 -0
- package/dist/lib/docs-index.d.ts.map +1 -1
- package/dist/lib/docs-index.js +32 -3
- package/dist/lib/docs-lint.d.ts.map +1 -1
- package/dist/lib/docs-lint.js +14 -30
- package/dist/lib/docs-metadata-audit.d.ts +19 -0
- package/dist/lib/docs-metadata-audit.d.ts.map +1 -0
- package/dist/lib/docs-metadata-audit.js +132 -0
- package/dist/lib/docs-metadata-managed.d.ts +23 -0
- package/dist/lib/docs-metadata-managed.d.ts.map +1 -0
- package/dist/lib/docs-metadata-managed.js +78 -0
- package/dist/lib/docs-metadata-sync.d.ts +20 -0
- package/dist/lib/docs-metadata-sync.d.ts.map +1 -0
- package/dist/lib/docs-metadata-sync.js +222 -0
- package/dist/lib/docs-metadata-v2-schema.d.ts +273 -0
- package/dist/lib/docs-metadata-v2-schema.d.ts.map +1 -0
- package/dist/lib/docs-metadata-v2-schema.js +134 -0
- package/dist/lib/docs-metadata-v2.d.ts +21 -0
- package/dist/lib/docs-metadata-v2.d.ts.map +1 -0
- package/dist/lib/docs-metadata-v2.js +424 -0
- package/dist/lib/docs-new.d.ts +11 -0
- package/dist/lib/docs-new.d.ts.map +1 -0
- package/dist/lib/docs-new.js +52 -0
- package/dist/lib/docs-sweep.d.ts.map +1 -1
- package/dist/lib/docs-sweep.js +45 -29
- package/dist/lib/headless/index.d.ts +98 -0
- package/dist/lib/headless/index.d.ts.map +1 -0
- package/dist/lib/headless/index.js +211 -0
- package/dist/lib/identities/assume.d.ts +4 -4
- package/dist/lib/identities/assume.d.ts.map +1 -1
- package/dist/lib/identities/assume.js +52 -68
- package/dist/lib/instructions/apply.d.ts +5 -4
- package/dist/lib/instructions/apply.d.ts.map +1 -1
- package/dist/lib/instructions/apply.js +32 -20
- package/dist/lib/instructions/bundle.d.ts +33 -0
- package/dist/lib/instructions/bundle.d.ts.map +1 -0
- package/dist/lib/instructions/bundle.js +149 -0
- package/dist/lib/instructions/splice.d.ts +0 -1
- package/dist/lib/instructions/splice.d.ts.map +1 -1
- package/dist/lib/instructions/splice.js +22 -6
- package/dist/lib/instructions/templates.d.ts +7 -5
- package/dist/lib/instructions/templates.d.ts.map +1 -1
- package/dist/lib/instructions/templates.js +79 -9
- package/package.json +27 -6
- package/schemas/config.schema.json +120 -2
- package/schemas/docs-metadata-v2.schema.json +441 -0
- package/schemas/event-v3.schema.json +24472 -0
- package/src/commander.ts +7 -1
- package/src/commands/adapter.ts +2 -2
- package/src/commands/agents.ts +1737 -570
- package/src/commands/artifacts.ts +7 -6
- package/src/commands/backup.ts +29 -21
- package/src/commands/browse.ts +349 -8
- package/src/commands/checkpoint.ts +4 -3
- package/src/commands/claude-desktop.ts +7 -5
- package/src/commands/context.ts +1 -6
- package/src/commands/decision.ts +27 -44
- package/src/commands/docs.ts +100 -33
- package/src/commands/doctor.ts +73 -8
- package/src/commands/events.ts +256 -0
- package/src/commands/governor.ts +18 -4
- package/src/commands/init.ts +264 -57
- package/src/commands/instructions.ts +129 -0
- package/src/commands/journal.ts +4 -13
- package/src/commands/ledger-v3.ts +111 -0
- package/src/commands/presence.ts +18 -11
- package/src/commands/sync.ts +1 -1
- package/src/commands/web.ts +67 -8
- package/src/commands/work.ts +28 -5
- package/src/core/adapter.ts +5 -0
- package/src/core/adapters/attest.ts +8 -3
- package/src/core/adapters/profiles.ts +4 -6
- package/src/core/agents/canonical-emit.ts +39 -28
- package/src/core/agents/cli.ts +242 -263
- package/src/core/agents/codex-archive-v3.ts +138 -0
- package/src/core/agents/coord-client.ts +75 -177
- package/src/core/agents/finalization.ts +120 -38
- package/src/core/agents/index.ts +5 -5
- package/src/core/agents/live-authority-v3.ts +375 -0
- package/src/core/agents/live-lifecycle-v3.ts +140 -0
- package/src/core/agents/live-observation-v3.ts +216 -0
- package/src/core/agents/render/prompt-context.ts +89 -55
- package/src/core/agents/render/session-context.ts +23 -32
- package/src/core/agents/rules/claim-conflict.ts +85 -126
- package/src/core/agents/rules/commit-conflict.ts +3 -14
- package/src/core/agents/rules/stop-hook.ts +239 -293
- package/src/core/agents/session-events.ts +137 -104
- package/src/core/agents/session-finalization-state-v3.ts +90 -0
- package/src/core/agents/session-finalizer-v3.ts +953 -0
- package/src/core/agents/session-name-display.ts +149 -0
- package/src/core/agents/state/activity-log.ts +6 -14
- package/src/core/agents/state/heartbeat-writer.ts +98 -242
- package/src/core/agents/state/live-coordination-view.ts +290 -0
- package/src/core/agents/state/session-state.ts +143 -0
- package/src/core/agents/state/stale-sweep.ts +40 -17
- package/src/core/artifacts/index.ts +4 -5
- package/src/core/config.ts +148 -3
- package/src/core/context/index.ts +9 -17
- package/src/core/events/span-parent.ts +46 -0
- package/src/core/events/v3/advance.ts +168 -0
- package/src/core/events/v3/authority-outbox.ts +548 -0
- package/src/core/events/v3/base-builder.ts +60 -0
- package/src/core/events/v3/base-contract.ts +882 -0
- package/src/core/events/v3/bootstrap.ts +226 -0
- package/src/core/events/v3/builder.ts +59 -0
- package/src/core/events/v3/canonical.ts +153 -0
- package/src/core/events/v3/capabilities.ts +171 -0
- package/src/core/events/v3/capability-drift.ts +177 -0
- package/src/core/events/v3/catalog.ts +202 -0
- package/src/core/events/v3/clock-order.ts +41 -0
- package/src/core/events/v3/contract.ts +365 -0
- package/src/core/events/v3/control.ts +576 -0
- package/src/core/events/v3/coordination-view.ts +193 -0
- package/src/core/events/v3/economics.ts +384 -0
- package/src/core/events/v3/finalization-view.ts +67 -0
- package/src/core/events/v3/fingerprint-keys.ts +260 -0
- package/src/core/events/v3/generated.ts +48 -0
- package/src/core/events/v3/ids.ts +33 -0
- package/src/core/events/v3/index.ts +322 -0
- package/src/core/events/v3/latency.ts +551 -0
- package/src/core/events/v3/live-feed.ts +319 -0
- package/src/core/events/v3/live-observation.ts +39 -0
- package/src/core/events/v3/live-routing.ts +135 -0
- package/src/core/events/v3/producers/command-recorder.ts +631 -0
- package/src/core/events/v3/producers/command.ts +201 -0
- package/src/core/events/v3/producers/coordination-recorder.ts +538 -0
- package/src/core/events/v3/producers/coordination.ts +355 -0
- package/src/core/events/v3/producers/hook-base.ts +578 -0
- package/src/core/events/v3/producers/hook.ts +119 -0
- package/src/core/events/v3/producers/intake.ts +319 -0
- package/src/core/events/v3/producers/recorder.ts +2805 -0
- package/src/core/events/v3/projection.ts +653 -0
- package/src/core/events/v3/reader.ts +1127 -0
- package/src/core/events/v3/recovery-record.ts +244 -0
- package/src/core/events/v3/recovery.ts +271 -0
- package/src/core/events/v3/span-state.ts +187 -0
- package/src/core/events/v3/targets.ts +182 -0
- package/src/core/events/v3/turn-telemetry.ts +259 -0
- package/src/core/events/v3/validate.ts +361 -0
- package/src/core/events/v3/writer.ts +419 -0
- package/src/core/governor/index.ts +3 -0
- package/src/core/governor/plan-api.ts +10 -2
- package/src/core/governor/read.ts +3 -0
- package/src/core/governor/state.ts +52 -5
- package/src/core/guard/config.ts +206 -0
- package/src/core/guard/coordinator.ts +227 -0
- package/src/core/guard/evaluator.ts +343 -0
- package/src/core/guard/evidence-v3.ts +227 -0
- package/src/core/guard/index.ts +35 -0
- package/src/core/guard/live-source-v3.ts +204 -0
- package/src/core/guard/storage.ts +188 -0
- package/src/core/guard/types.ts +152 -0
- package/src/core/hooks/adapter/detect.ts +28 -1
- package/src/core/hooks/adapter/events.ts +15 -6
- package/src/core/hooks/adapter/output.ts +7 -2
- package/src/core/hooks/adapter/parse.ts +81 -36
- package/src/core/hooks/adapter/wiring.ts +119 -13
- package/src/core/hooks/cli.ts +398 -422
- package/src/core/hooks/codex-authorization.ts +253 -0
- package/src/core/hooks/effects/image-capture.ts +228 -238
- package/src/core/hooks/effects/index.ts +1 -36
- package/src/core/hooks/events/input-hash.ts +47 -0
- package/src/core/hooks/index.ts +4 -11
- package/src/core/hooks/resolve/coord-root.ts +1 -1
- package/src/core/hooks/resolve/owner.ts +52 -45
- package/src/core/hooks/resolve/transcript.ts +165 -14
- package/src/core/hooks/session-name-presence.ts +14 -15
- package/src/core/hooks/unsafe-cross-shell.ts +1 -1
- package/src/core/journal/index.ts +15 -22
- package/src/core/presence/blob.ts +63 -38
- package/src/core/presence/codec-digest.ts +215 -0
- package/src/core/presence/index.ts +18 -1
- package/src/core/presence/relay-client.ts +5 -5
- package/src/core/work/index.ts +3 -0
- package/src/core/work/read.ts +3 -0
- package/src/core/work/runner.ts +6 -0
- package/src/core/work/state.ts +27 -3
- package/src/core/workflow/engine.ts +24 -24
- package/src/core/workflow/live-session-v3.ts +126 -0
- package/src/core/workflow/scope-id.ts +6 -0
- package/src/core/workflow/workspaces/leases.ts +56 -19
- package/src/index.ts +1 -1
- package/src/lib/browser/client.ts +230 -0
- package/src/lib/browser/critique.ts +104 -27
- package/src/lib/browser/geometry.ts +143 -14
- package/src/lib/browser/index.ts +34 -0
- package/src/lib/browser/qa-plan.ts +501 -0
- package/src/lib/browser/qa-reuse.ts +306 -0
- package/src/lib/browser/qa-snapshot.ts +223 -0
- package/src/lib/browser/runts.ts +27 -2
- package/src/lib/browser/tiling.ts +164 -0
- package/src/lib/context/index.ts +22 -46
- package/src/lib/council/index.ts +9 -21
- package/src/lib/docs-frontmatter.ts +8 -79
- package/src/lib/docs-index.ts +33 -3
- package/src/lib/docs-lint.ts +15 -29
- package/src/lib/docs-metadata-audit.ts +166 -0
- package/src/lib/docs-metadata-managed.ts +83 -0
- package/src/lib/docs-metadata-sync.ts +262 -0
- package/src/lib/docs-metadata-v2-schema.ts +138 -0
- package/src/lib/docs-metadata-v2.ts +646 -0
- package/src/lib/docs-new.ts +63 -0
- package/src/lib/docs-sweep.ts +42 -28
- package/src/lib/headless/index.ts +287 -0
- package/src/lib/identities/assume.ts +67 -86
- package/src/lib/instructions/apply.ts +33 -20
- package/src/lib/instructions/bundle.ts +199 -0
- package/src/lib/instructions/splice.ts +21 -7
- package/src/lib/instructions/templates.ts +85 -13
- package/dist/core/agents/cli-emit.d.ts +0 -27
- package/dist/core/agents/cli-emit.d.ts.map +0 -1
- package/dist/core/agents/cli-emit.js +0 -57
- package/dist/core/agents/codex-replay.d.ts +0 -29
- package/dist/core/agents/codex-replay.d.ts.map +0 -1
- package/dist/core/agents/codex-replay.js +0 -138
- package/dist/core/agents/events/consume.d.ts +0 -82
- package/dist/core/agents/events/consume.d.ts.map +0 -1
- package/dist/core/agents/events/consume.js +0 -195
- package/dist/core/agents/events/emit.d.ts +0 -42
- package/dist/core/agents/events/emit.d.ts.map +0 -1
- package/dist/core/agents/events/emit.js +0 -75
- package/dist/core/agents/events/ulid.d.ts +0 -11
- package/dist/core/agents/events/ulid.d.ts.map +0 -1
- package/dist/core/agents/events/ulid.js +0 -47
- package/dist/core/agents/state/heartbeat-projector.d.ts +0 -65
- package/dist/core/agents/state/heartbeat-projector.d.ts.map +0 -1
- package/dist/core/agents/state/heartbeat-projector.js +0 -527
- package/dist/core/hooks/events/emit.d.ts +0 -31
- package/dist/core/hooks/events/emit.d.ts.map +0 -1
- package/dist/core/hooks/events/emit.js +0 -93
- package/dist/core/hooks/events/rotate.d.ts +0 -43
- package/dist/core/hooks/events/rotate.d.ts.map +0 -1
- package/dist/core/hooks/events/rotate.js +0 -142
- package/dist/core/hooks/events/schema.d.ts +0 -312
- package/dist/core/hooks/events/schema.d.ts.map +0 -1
- package/dist/core/hooks/events/schema.js +0 -12
- package/dist/core/hooks/events/ulid.d.ts +0 -10
- package/dist/core/hooks/events/ulid.d.ts.map +0 -1
- package/dist/core/hooks/events/ulid.js +0 -47
- package/dist/lib/docs-frontmatter-migrate.d.ts +0 -33
- package/dist/lib/docs-frontmatter-migrate.d.ts.map +0 -1
- package/dist/lib/docs-frontmatter-migrate.js +0 -364
- package/src/core/agents/cli-emit.ts +0 -64
- package/src/core/agents/codex-replay.ts +0 -163
- package/src/core/agents/events/consume.ts +0 -254
- package/src/core/agents/events/emit.ts +0 -115
- package/src/core/agents/events/ulid.ts +0 -51
- package/src/core/agents/state/heartbeat-projector.ts +0 -582
- package/src/core/hooks/events/emit.ts +0 -125
- package/src/core/hooks/events/rotate.ts +0 -151
- package/src/core/hooks/events/schema.ts +0 -538
- package/src/core/hooks/events/ulid.ts +0 -51
- package/src/lib/docs-frontmatter-migrate.ts +0 -427
|
@@ -312,6 +312,53 @@ export function buildLayoutLintCheck() {
|
|
|
312
312
|
const clips = new Set(["hidden", "clip", "auto", "scroll"]);
|
|
313
313
|
return { x: clips.has(style.overflowX), y: clips.has(style.overflowY) };
|
|
314
314
|
};
|
|
315
|
+
// The visually-hidden idiom (Tailwind `sr-only`, Bootstrap
|
|
316
|
+
// `visually-hidden`): a ~1px absolutely-positioned box whose content is
|
|
317
|
+
// clipped ON PURPOSE so it exists for assistive tech only. Its box is 1x1
|
|
318
|
+
// (not zero-area, so the zero-area exclusion misses it) and the legacy
|
|
319
|
+
// `clip: rect(0,0,0,0)` it relies on is not an overflow style, so nothing
|
|
320
|
+
// above recognizes it. Reporting it would flag every accessible page.
|
|
321
|
+
const isVisuallyHidden = (element) => {
|
|
322
|
+
const style = getComputedStyle(element);
|
|
323
|
+
if (style.position !== "absolute" && style.position !== "fixed")
|
|
324
|
+
return false;
|
|
325
|
+
if (style.clip && style.clip !== "auto")
|
|
326
|
+
return true;
|
|
327
|
+
const rect = element.getBoundingClientRect();
|
|
328
|
+
return rect.width <= 1 && rect.height <= 1 && style.overflow === "hidden";
|
|
329
|
+
};
|
|
330
|
+
const hasVisuallyHiddenAncestor = (start, scope) => {
|
|
331
|
+
let current = start;
|
|
332
|
+
while (current && scope.contains(current)) {
|
|
333
|
+
if (isVisuallyHidden(current))
|
|
334
|
+
return true;
|
|
335
|
+
if (current === scope)
|
|
336
|
+
break;
|
|
337
|
+
current = current.parentElement;
|
|
338
|
+
}
|
|
339
|
+
return false;
|
|
340
|
+
};
|
|
341
|
+
// Deliberate single-line truncation (`text-overflow: ellipsis` + nowrap +
|
|
342
|
+
// hidden overflow, the `truncate` utility): cutting the text is the
|
|
343
|
+
// design, and the dedicated truncation check owns auditing it. Only text
|
|
344
|
+
// under such an ancestor is exempt; element boxes still have to fit.
|
|
345
|
+
const ellipsizes = (element) => {
|
|
346
|
+
const style = getComputedStyle(element);
|
|
347
|
+
return (style.textOverflow === "ellipsis" &&
|
|
348
|
+
style.whiteSpace === "nowrap" &&
|
|
349
|
+
(style.overflowX === "hidden" || style.overflowX === "clip"));
|
|
350
|
+
};
|
|
351
|
+
const hasEllipsizingAncestor = (start, scope) => {
|
|
352
|
+
let current = start;
|
|
353
|
+
while (current && scope.contains(current)) {
|
|
354
|
+
if (ellipsizes(current))
|
|
355
|
+
return true;
|
|
356
|
+
if (current === scope)
|
|
357
|
+
break;
|
|
358
|
+
current = current.parentElement;
|
|
359
|
+
}
|
|
360
|
+
return false;
|
|
361
|
+
};
|
|
315
362
|
// A scroller hides content the same way a clip does, but the reader can
|
|
316
363
|
// reach it. Content below the fold of a capped table or right of a wide
|
|
317
364
|
// code block is not a layout defect, so an axis stops being checked at the
|
|
@@ -323,6 +370,17 @@ export function buildLayoutLintCheck() {
|
|
|
323
370
|
const scrolls = new Set(["auto", "scroll"]);
|
|
324
371
|
return { x: scrolls.has(style.overflowX), y: scrolls.has(style.overflowY) };
|
|
325
372
|
};
|
|
373
|
+
const scrollsBeforeScope = (start, scope, axis) => {
|
|
374
|
+
let current = start;
|
|
375
|
+
while (current && scope.contains(current)) {
|
|
376
|
+
if (scrollingStyle(current)[axis])
|
|
377
|
+
return true;
|
|
378
|
+
if (current === scope)
|
|
379
|
+
break;
|
|
380
|
+
current = current.parentElement;
|
|
381
|
+
}
|
|
382
|
+
return false;
|
|
383
|
+
};
|
|
326
384
|
const unbounded = () => ({
|
|
327
385
|
x: Number.NEGATIVE_INFINITY,
|
|
328
386
|
y: Number.NEGATIVE_INFINITY,
|
|
@@ -381,7 +439,14 @@ export function buildLayoutLintCheck() {
|
|
|
381
439
|
};
|
|
382
440
|
const maxOverrunPx = Math.max(overrun.top, overrun.right, overrun.bottom, overrun.left);
|
|
383
441
|
if (maxOverrunPx > tolerancePx + SUBPIXEL_EPSILON && issues.length < ISSUE_LIMIT) {
|
|
384
|
-
|
|
442
|
+
const horizontalOverrun = Math.max(overrun.left, overrun.right);
|
|
443
|
+
const verticalOverrun = Math.max(overrun.top, overrun.bottom);
|
|
444
|
+
issues.push({
|
|
445
|
+
element,
|
|
446
|
+
clippedBy: horizontalOverrun >= verticalOverrun ? clippedBy.x : clippedBy.y,
|
|
447
|
+
overrun,
|
|
448
|
+
maxOverrunPx,
|
|
449
|
+
});
|
|
385
450
|
}
|
|
386
451
|
};
|
|
387
452
|
// Walk from `start` up to `container`, intersecting the allowed rect with
|
|
@@ -391,7 +456,7 @@ export function buildLayoutLintCheck() {
|
|
|
391
456
|
// are reachable and so are exempt.
|
|
392
457
|
const clipChain = (start, container, seed, seedLabel) => {
|
|
393
458
|
let allowed = { ...seed };
|
|
394
|
-
|
|
459
|
+
const clippedBy = { x: seedLabel, y: seedLabel };
|
|
395
460
|
const free = { x: false, y: false };
|
|
396
461
|
let current = start;
|
|
397
462
|
while (current && container.contains(current)) {
|
|
@@ -412,6 +477,12 @@ export function buildLayoutLintCheck() {
|
|
|
412
477
|
};
|
|
413
478
|
if (clips.x || clips.y) {
|
|
414
479
|
const candidate = paddingRect(current);
|
|
480
|
+
const tightensX = clips.x &&
|
|
481
|
+
(candidate.left > allowed.left + SUBPIXEL_EPSILON ||
|
|
482
|
+
candidate.right < allowed.right - SUBPIXEL_EPSILON);
|
|
483
|
+
const tightensY = clips.y &&
|
|
484
|
+
(candidate.top > allowed.top + SUBPIXEL_EPSILON ||
|
|
485
|
+
candidate.bottom < allowed.bottom - SUBPIXEL_EPSILON);
|
|
415
486
|
allowed = {
|
|
416
487
|
x: clips.x ? Math.max(allowed.left, candidate.left) : allowed.left,
|
|
417
488
|
y: clips.y ? Math.max(allowed.top, candidate.top) : allowed.top,
|
|
@@ -424,7 +495,13 @@ export function buildLayoutLintCheck() {
|
|
|
424
495
|
};
|
|
425
496
|
allowed.width = Math.max(0, allowed.right - allowed.left);
|
|
426
497
|
allowed.height = Math.max(0, allowed.bottom - allowed.top);
|
|
427
|
-
|
|
498
|
+
// Keep the label of the boundary that actually made each axis
|
|
499
|
+
// smaller. A wider outer scope should not hide the nearer parent
|
|
500
|
+
// responsible for a horizontal overrun.
|
|
501
|
+
if (tightensX)
|
|
502
|
+
clippedBy.x = labelOf(current);
|
|
503
|
+
if (tightensY)
|
|
504
|
+
clippedBy.y = labelOf(current);
|
|
428
505
|
}
|
|
429
506
|
if (scrolls.x)
|
|
430
507
|
free.x = true;
|
|
@@ -436,7 +513,7 @@ export function buildLayoutLintCheck() {
|
|
|
436
513
|
}
|
|
437
514
|
return { allowed, clippedBy };
|
|
438
515
|
};
|
|
439
|
-
const
|
|
516
|
+
const nearestBlockOwner = (node, scope) => {
|
|
440
517
|
let current = node.parentElement;
|
|
441
518
|
while (current && scope.contains(current)) {
|
|
442
519
|
if (current instanceof SVGElement)
|
|
@@ -460,12 +537,36 @@ export function buildLayoutLintCheck() {
|
|
|
460
537
|
excluded.push({ index, tag: element.tagName.toLowerCase(), reason: "hidden" });
|
|
461
538
|
return;
|
|
462
539
|
}
|
|
540
|
+
if (hasVisuallyHiddenAncestor(element, container)) {
|
|
541
|
+
excluded.push({ index, tag: element.tagName.toLowerCase(), reason: "visually-hidden" });
|
|
542
|
+
return;
|
|
543
|
+
}
|
|
463
544
|
const rect = element.getBoundingClientRect();
|
|
464
545
|
if (rect.width <= 0 || rect.height <= 0) {
|
|
465
546
|
excluded.push({ index, tag: element.tagName.toLowerCase(), reason: "zero-area" });
|
|
466
547
|
return;
|
|
467
548
|
}
|
|
468
|
-
|
|
549
|
+
// CSS overflow defaults to visible, so a child can escape a grid or
|
|
550
|
+
// flex cell without any clipping ancestor noticing. Constrain
|
|
551
|
+
// in-flow boxes horizontally to their nearest block owner. Vertical
|
|
552
|
+
// parent containment is intentionally left to real CSS clips because
|
|
553
|
+
// normal margin collapse can paint outside a parent's vertical box.
|
|
554
|
+
const owner = nearestBlockOwner(element, container);
|
|
555
|
+
const seed = unbounded();
|
|
556
|
+
let seedLabel = labelOf(container);
|
|
557
|
+
const position = getComputedStyle(element).position;
|
|
558
|
+
if (owner &&
|
|
559
|
+
position !== "absolute" &&
|
|
560
|
+
position !== "fixed" &&
|
|
561
|
+
!scrollsBeforeScope(owner, container, "x")) {
|
|
562
|
+
const ownerRect = paddingRect(owner);
|
|
563
|
+
seed.left = ownerRect.left;
|
|
564
|
+
seed.right = ownerRect.right;
|
|
565
|
+
seed.x = seed.left;
|
|
566
|
+
seed.width = Math.max(0, seed.right - seed.left);
|
|
567
|
+
seedLabel = labelOf(owner);
|
|
568
|
+
}
|
|
569
|
+
const chain = clipChain(element.parentElement, container, seed, seedLabel);
|
|
469
570
|
recordIssue(measure(element, index, false), chain.allowed, chain.clippedBy);
|
|
470
571
|
});
|
|
471
572
|
const walker = document.createTreeWalker(container, NodeFilter.SHOW_TEXT);
|
|
@@ -484,9 +585,25 @@ export function buildLayoutLintCheck() {
|
|
|
484
585
|
isHidden(parent)) {
|
|
485
586
|
continue;
|
|
486
587
|
}
|
|
487
|
-
const owner =
|
|
588
|
+
const owner = nearestBlockOwner(node, container);
|
|
488
589
|
if (!owner)
|
|
489
590
|
continue;
|
|
591
|
+
if (hasVisuallyHiddenAncestor(parent, container)) {
|
|
592
|
+
excluded.push({
|
|
593
|
+
index: measurementIndex++,
|
|
594
|
+
tag: parent.tagName.toLowerCase(),
|
|
595
|
+
reason: "visually-hidden",
|
|
596
|
+
});
|
|
597
|
+
continue;
|
|
598
|
+
}
|
|
599
|
+
if (hasEllipsizingAncestor(parent, container)) {
|
|
600
|
+
excluded.push({
|
|
601
|
+
index: measurementIndex++,
|
|
602
|
+
tag: parent.tagName.toLowerCase(),
|
|
603
|
+
reason: "ellipsis-truncation",
|
|
604
|
+
});
|
|
605
|
+
continue;
|
|
606
|
+
}
|
|
490
607
|
let transformed = false;
|
|
491
608
|
let current = owner;
|
|
492
609
|
while (current && container.contains(current)) {
|
|
@@ -645,6 +762,11 @@ export function buildLayoutLintCheck() {
|
|
|
645
762
|
"COL",
|
|
646
763
|
"COLGROUP",
|
|
647
764
|
]);
|
|
765
|
+
// Code-family chips are inline controls, not layout cards, but the
|
|
766
|
+
// radius-vs-size pill test misses them (a code chip's radius is modest)
|
|
767
|
+
// and a flex/grid tag row blockifies their computed display, defeating
|
|
768
|
+
// the inline-display exclusion. Exclude them by tag.
|
|
769
|
+
const CONTROL_TAGS = new Set(["CODE", "KBD", "SAMP", "VAR", "OUTPUT"]);
|
|
648
770
|
const maxCornerRadiusPx = (style, minDim) => {
|
|
649
771
|
const corners = [
|
|
650
772
|
"border-top-left-radius",
|
|
@@ -666,6 +788,8 @@ export function buildLayoutLintCheck() {
|
|
|
666
788
|
const isPanel = (element) => {
|
|
667
789
|
if (STRUCTURAL_TAGS.has(element.tagName))
|
|
668
790
|
return false;
|
|
791
|
+
if (CONTROL_TAGS.has(element.tagName))
|
|
792
|
+
return false;
|
|
669
793
|
const style = getComputedStyle(element);
|
|
670
794
|
if (style.display.startsWith("table") || style.display.startsWith("inline"))
|
|
671
795
|
return false;
|
|
@@ -9,8 +9,11 @@ export { isWSL, wslHeadedLaunchArgs } from "./launch-args.js";
|
|
|
9
9
|
export type { OverflowElement, OverflowResult, WidthResult, } from "./layout.js";
|
|
10
10
|
export { serializeNetscapeCookies, writeNetscapeCookieFile, } from "./netscape-cookies.js";
|
|
11
11
|
export { type BrowserProxy, type BrowserProxyGate, browserProxyFromEnv, browserProxyGateFromEnv, extractObservedIp, WEBRTC_PROXY_ONLY_ARG, } from "./proxy.js";
|
|
12
|
+
export { buildQaManifest, type ChangeClass, type ClassifyOptions, classifySignatures, fnv1a32, type ManifestOptions, type QaClassification, type QaContext, type QaManifest, type QaNodeSignature, type QaScope, type QaSignature, type QaStylesheetSignature, } from "./qa-plan.js";
|
|
13
|
+
export { listQaSnapshotTargets, loadQaSnapshot, QA_SNAPSHOT_DIR, type QaSnapshotStoreOptions, qaSnapshotKey, type ResolvedQaBaseline, resolveQaBaseline, type StoredQaSnapshot, saveQaSnapshot, } from "./qa-snapshot.js";
|
|
12
14
|
export type { RuntHit, RuntsResult, } from "./runts.js";
|
|
13
15
|
export { BROWSER_SESSION_MAX_FILL_BYTES, BROWSER_SESSION_MAX_FRAME_BYTES, BROWSER_SESSION_MAX_INSPECTION_TEXT_BYTES, BROWSER_SESSION_PROTOCOL_VERSION, type BrowserSessionDescriptor, BrowserSessionError, type BrowserSessionRequest, type BrowserSessionResponse, type BrowserSessionResult, type BrowserSessionServer, type BrowserSessionTarget, browserSessionTransport, readBrowserSessionDescriptor, sendBrowserSessionRequest, startBrowserSessionServer, } from "./session-control.js";
|
|
14
16
|
export type { TargetSizeNode, TargetSizeOutcome, TargetSizeProfile, TargetSizeResult, } from "./target-size.js";
|
|
17
|
+
export { bandOversizedRect, cutCost, type SnapOptions, type SnapSeam, snappedBandRects, type VisualAtom, } from "./tiling.js";
|
|
15
18
|
export type { CheckVisibilityOptions, VisibilityResult, VisibilitySample, } from "./visibility.js";
|
|
16
19
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/browser/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,gBAAgB,EAChB,eAAe,GAChB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,OAAO,EACP,KAAK,cAAc,EACnB,yBAAyB,EACzB,KAAK,qBAAqB,EAC1B,KAAK,wBAAwB,EAC7B,KAAK,qBAAqB,EAC1B,KAAK,wBAAwB,EAC7B,KAAK,4BAA4B,EACjC,KAAK,wBAAwB,EAC7B,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EACtB,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,cAAc,GACpB,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,SAAS,EACT,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,EACnB,WAAW,EACX,cAAc,EACd,iBAAiB,EACjB,QAAQ,EACR,cAAc,EACd,iBAAiB,EACjB,aAAa,EACb,gBAAgB,GACjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,SAAS,EACT,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,uBAAuB,EACvB,iBAAiB,EACjB,WAAW,EACX,iBAAiB,GAClB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,iBAAiB,EACjB,KAAK,eAAe,EACpB,KAAK,gBAAgB,GACtB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,UAAU,EACV,YAAY,EACZ,WAAW,EACX,SAAS,EACT,UAAU,EACV,SAAS,EACT,WAAW,EACX,UAAU,EACV,OAAO,EACP,SAAS,EACT,UAAU,EACV,wBAAwB,EACxB,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,aAAa,EACb,UAAU,EACV,YAAY,EACZ,aAAa,GACd,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC9D,YAAY,EACV,eAAe,EACf,cAAc,EACd,WAAW,GACZ,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,wBAAwB,EACxB,uBAAuB,GACxB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,mBAAmB,EACnB,uBAAuB,EACvB,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,OAAO,EACP,WAAW,GACZ,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,8BAA8B,EAC9B,+BAA+B,EAC/B,yCAAyC,EACzC,gCAAgC,EAChC,KAAK,wBAAwB,EAC7B,mBAAmB,EACnB,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EACzB,uBAAuB,EACvB,4BAA4B,EAC5B,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACV,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,sBAAsB,EACtB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/browser/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,gBAAgB,EAChB,eAAe,GAChB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,OAAO,EACP,KAAK,cAAc,EACnB,yBAAyB,EACzB,KAAK,qBAAqB,EAC1B,KAAK,wBAAwB,EAC7B,KAAK,qBAAqB,EAC1B,KAAK,wBAAwB,EAC7B,KAAK,4BAA4B,EACjC,KAAK,wBAAwB,EAC7B,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EACtB,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,cAAc,GACpB,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,SAAS,EACT,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,EACnB,WAAW,EACX,cAAc,EACd,iBAAiB,EACjB,QAAQ,EACR,cAAc,EACd,iBAAiB,EACjB,aAAa,EACb,gBAAgB,GACjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,SAAS,EACT,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,uBAAuB,EACvB,iBAAiB,EACjB,WAAW,EACX,iBAAiB,GAClB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,iBAAiB,EACjB,KAAK,eAAe,EACpB,KAAK,gBAAgB,GACtB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,UAAU,EACV,YAAY,EACZ,WAAW,EACX,SAAS,EACT,UAAU,EACV,SAAS,EACT,WAAW,EACX,UAAU,EACV,OAAO,EACP,SAAS,EACT,UAAU,EACV,wBAAwB,EACxB,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,aAAa,EACb,UAAU,EACV,YAAY,EACZ,aAAa,GACd,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC9D,YAAY,EACV,eAAe,EACf,cAAc,EACd,WAAW,GACZ,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,wBAAwB,EACxB,uBAAuB,GACxB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,mBAAmB,EACnB,uBAAuB,EACvB,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,eAAe,EACf,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,kBAAkB,EAClB,OAAO,EACP,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,SAAS,EACd,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,OAAO,EACZ,KAAK,WAAW,EAChB,KAAK,qBAAqB,GAC3B,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,qBAAqB,EACrB,cAAc,EACd,eAAe,EACf,KAAK,sBAAsB,EAC3B,aAAa,EACb,KAAK,kBAAkB,EACvB,iBAAiB,EACjB,KAAK,gBAAgB,EACrB,cAAc,GACf,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,OAAO,EACP,WAAW,GACZ,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,8BAA8B,EAC9B,+BAA+B,EAC/B,yCAAyC,EACzC,gCAAgC,EAChC,KAAK,wBAAwB,EAC7B,mBAAmB,EACnB,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EACzB,uBAAuB,EACvB,4BAA4B,EAC5B,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACV,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,iBAAiB,EACjB,OAAO,EACP,KAAK,WAAW,EAChB,KAAK,QAAQ,EACb,gBAAgB,EAChB,KAAK,UAAU,GAChB,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,sBAAsB,EACtB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,iBAAiB,CAAC"}
|
|
@@ -6,4 +6,7 @@ export { buildLayoutLintCheck } from "./geometry.js";
|
|
|
6
6
|
export { isWSL, wslHeadedLaunchArgs } from "./launch-args.js";
|
|
7
7
|
export { serializeNetscapeCookies, writeNetscapeCookieFile, } from "./netscape-cookies.js";
|
|
8
8
|
export { browserProxyFromEnv, browserProxyGateFromEnv, extractObservedIp, WEBRTC_PROXY_ONLY_ARG, } from "./proxy.js";
|
|
9
|
+
export { buildQaManifest, classifySignatures, fnv1a32, } from "./qa-plan.js";
|
|
10
|
+
export { listQaSnapshotTargets, loadQaSnapshot, QA_SNAPSHOT_DIR, qaSnapshotKey, resolveQaBaseline, saveQaSnapshot, } from "./qa-snapshot.js";
|
|
9
11
|
export { BROWSER_SESSION_MAX_FILL_BYTES, BROWSER_SESSION_MAX_FRAME_BYTES, BROWSER_SESSION_MAX_INSPECTION_TEXT_BYTES, BROWSER_SESSION_PROTOCOL_VERSION, BrowserSessionError, browserSessionTransport, readBrowserSessionDescriptor, sendBrowserSessionRequest, startBrowserSessionServer, } from "./session-control.js";
|
|
12
|
+
export { bandOversizedRect, cutCost, snappedBandRects, } from "./tiling.js";
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
/** FNV-1a 32-bit over a string, hex-encoded, with a length suffix so the
|
|
2
|
+
* (tiny) collision surface also has to match on length. Used for text and
|
|
3
|
+
* stylesheet digests — a comparison fingerprint, not a security hash. */
|
|
4
|
+
export declare function fnv1a32(text: string): string;
|
|
5
|
+
/** One element's structural fingerprint inside a captured page. */
|
|
6
|
+
export interface QaNodeSignature {
|
|
7
|
+
/** Structural path from body: `body>div:0>table:1>tr:4>td:2` (index among
|
|
8
|
+
* element siblings). Position-sensitive by design — reordering IS a
|
|
9
|
+
* structural change. */
|
|
10
|
+
path: string;
|
|
11
|
+
tag: string;
|
|
12
|
+
/** Canonical attribute string: sorted `name=value` pairs joined with \x1f.
|
|
13
|
+
* Raw (not digested) so a reviewer can see WHICH attribute changed. */
|
|
14
|
+
attrs: string;
|
|
15
|
+
/** Digest of the element's direct text-node content (whitespace-normalized),
|
|
16
|
+
* absent when the element has no direct text. */
|
|
17
|
+
text?: string;
|
|
18
|
+
/** Digest of opaque rendered content whose pixels can change without a DOM
|
|
19
|
+
* structure or attribute change (for example SVG descendants or a canvas
|
|
20
|
+
* bitmap). `unavailable` widens to unknown because text-only cannot be
|
|
21
|
+
* proven without this evidence. */
|
|
22
|
+
visual?: string;
|
|
23
|
+
/** Nearest strict-ancestor stable anchor (unique `#id` or
|
|
24
|
+
* `[data-qa-scope="…"]`), with the anchor element's own path so nested
|
|
25
|
+
* anchors can be deduped to the outermost root. Absent for nodes with no
|
|
26
|
+
* anchored ancestor (e.g. direct children of body on an anchor-free page). */
|
|
27
|
+
anchor?: {
|
|
28
|
+
selector: string;
|
|
29
|
+
path: string;
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
export interface QaStylesheetSignature {
|
|
33
|
+
/** External sheet href, or `inline:<index>` for a `<style>` block. */
|
|
34
|
+
key: string;
|
|
35
|
+
kind: "external" | "inline";
|
|
36
|
+
/** Content digest, or the literal `"unavailable"` when the sheet's text
|
|
37
|
+
* could not be read (cross-origin without CORS). Unavailable digests widen
|
|
38
|
+
* classification to `unknown` — style stability can't be proven. */
|
|
39
|
+
digest: string;
|
|
40
|
+
}
|
|
41
|
+
/** A captured page signature: everything the classifier needs, nothing the
|
|
42
|
+
* critique engine does. Produced by the browser client, persisted by the
|
|
43
|
+
* snapshot store. */
|
|
44
|
+
export interface QaSignature {
|
|
45
|
+
url: string;
|
|
46
|
+
/** ISO capture time. */
|
|
47
|
+
capturedAt: string;
|
|
48
|
+
nodes: QaNodeSignature[];
|
|
49
|
+
stylesheets: QaStylesheetSignature[];
|
|
50
|
+
/** True when the capture hit its node cap. A truncated signature cannot
|
|
51
|
+
* prove absence of change — the classifier widens to `unknown`. */
|
|
52
|
+
truncated?: boolean;
|
|
53
|
+
}
|
|
54
|
+
export type ChangeClass = "text-data-only" | "local-visual" | "interaction-state" | "large-structural" | "unknown";
|
|
55
|
+
export interface QaScope {
|
|
56
|
+
selector: string;
|
|
57
|
+
reason: string;
|
|
58
|
+
/** How many elements the selector matched at capture time (1 for anchors —
|
|
59
|
+
* uniqueness is verified during capture; explicit selectors carry the
|
|
60
|
+
* caller-counted value). */
|
|
61
|
+
matches: number;
|
|
62
|
+
}
|
|
63
|
+
export interface QaClassification {
|
|
64
|
+
/** `interaction-state` is never inferred from signatures — it is declared
|
|
65
|
+
* by explicit state inputs at manifest time. */
|
|
66
|
+
change_class: Exclude<ChangeClass, "interaction-state">;
|
|
67
|
+
reasons: string[];
|
|
68
|
+
/** Paths whose direct text content changed (structure + attrs identical). */
|
|
69
|
+
text_changed_paths: string[];
|
|
70
|
+
/** Paths added, removed, or with changed attributes. */
|
|
71
|
+
structural_changed_paths: string[];
|
|
72
|
+
/** Stylesheet keys whose digest changed, appeared, or disappeared. */
|
|
73
|
+
stylesheets_changed: string[];
|
|
74
|
+
/** Stable scope roots covering every structural change (local-visual only). */
|
|
75
|
+
scopes: QaScope[];
|
|
76
|
+
/** True when baseline and current are indistinguishable. */
|
|
77
|
+
identical: boolean;
|
|
78
|
+
}
|
|
79
|
+
export interface ClassifyOptions {
|
|
80
|
+
/** More distinct scope roots than this widens to large-structural: a change
|
|
81
|
+
* that touches many independent regions is a page-level change no matter
|
|
82
|
+
* how well-anchored each region is. Default 4. */
|
|
83
|
+
maxScopes?: number;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Classify current against baseline. Pure: no browser, no filesystem. The
|
|
87
|
+
* bias is stated in the plan and enforced here — ambiguity widens (to
|
|
88
|
+
* `unknown`/`large-structural`), never narrows. A `null` baseline is the
|
|
89
|
+
* "no baseline available" case and is always `unknown`.
|
|
90
|
+
*/
|
|
91
|
+
export declare function classifySignatures(baseline: QaSignature | null, current: QaSignature, opts?: ClassifyOptions): QaClassification;
|
|
92
|
+
export interface QaContext {
|
|
93
|
+
viewport: string;
|
|
94
|
+
theme: "light" | "dark";
|
|
95
|
+
state: string;
|
|
96
|
+
}
|
|
97
|
+
export interface QaManifest {
|
|
98
|
+
schema_version: 1;
|
|
99
|
+
change_class: ChangeClass;
|
|
100
|
+
classification_reasons: string[];
|
|
101
|
+
source_revision?: string;
|
|
102
|
+
baseline_revision?: string;
|
|
103
|
+
/** Which resolution-order source produced the baseline:
|
|
104
|
+
* `qa-snapshot:<capturedAt>`, `production-render:<capturedAt>`,
|
|
105
|
+
* `revision-render:<rev>`, or `none`. */
|
|
106
|
+
baseline_source: string;
|
|
107
|
+
scopes: QaScope[];
|
|
108
|
+
contexts: QaContext[];
|
|
109
|
+
checks: {
|
|
110
|
+
deterministic: string[];
|
|
111
|
+
/** Assertions that prove named interaction states behaved correctly. */
|
|
112
|
+
interaction: string[];
|
|
113
|
+
visual: "none" | "scoped" | "full-page";
|
|
114
|
+
};
|
|
115
|
+
concurrency: {
|
|
116
|
+
headless: number;
|
|
117
|
+
metered: number;
|
|
118
|
+
};
|
|
119
|
+
reuse: {
|
|
120
|
+
mode: "none" | "exact-digest" | "band-diff";
|
|
121
|
+
cache: boolean;
|
|
122
|
+
};
|
|
123
|
+
/** Provider-call ceiling for the plan, so cost is visible before execution.
|
|
124
|
+
* Full-page tile counts need a rendered page; callers pass an estimate. */
|
|
125
|
+
predicted: {
|
|
126
|
+
tiles_ceiling: number;
|
|
127
|
+
model_calls_ceiling: number;
|
|
128
|
+
};
|
|
129
|
+
/** Present when the run cannot produce a trustworthy verdict (e.g. unknown
|
|
130
|
+
* class without permission to widen). An incomplete run is never a pass. */
|
|
131
|
+
incomplete?: {
|
|
132
|
+
reason: string;
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
export interface ManifestOptions {
|
|
136
|
+
baselineSource: string;
|
|
137
|
+
sourceRevision?: string;
|
|
138
|
+
baselineRevision?: string;
|
|
139
|
+
/** Explicit scope selectors from the producing task — resolution order rung
|
|
140
|
+
* 1; they override lifted anchors entirely. */
|
|
141
|
+
explicitScopes?: QaScope[];
|
|
142
|
+
/** Named interaction states to review (before/after pairs, etc.). Any
|
|
143
|
+
* non-empty list promotes a text/local classification to
|
|
144
|
+
* `interaction-state` and appends one context per state. */
|
|
145
|
+
states?: string[];
|
|
146
|
+
/** Viewports for the full matrix (default ["desktop", "mobile"]). */
|
|
147
|
+
viewports?: string[];
|
|
148
|
+
/** Estimated full-page tile count per context, from the caller's render
|
|
149
|
+
* knowledge (page height / band step, capped). Default 24 (the tile cap). */
|
|
150
|
+
estimatedFullPageTiles?: number;
|
|
151
|
+
concurrency?: {
|
|
152
|
+
headless: number;
|
|
153
|
+
metered: number;
|
|
154
|
+
};
|
|
155
|
+
reuse?: {
|
|
156
|
+
mode: "none" | "exact-digest" | "band-diff";
|
|
157
|
+
cache: boolean;
|
|
158
|
+
};
|
|
159
|
+
deterministicChecks?: string[];
|
|
160
|
+
/** Value/behavior assertions paired with explicit interaction states. */
|
|
161
|
+
outcomeAssertions?: string[];
|
|
162
|
+
/** When false (default), an `unknown` classification widens to full
|
|
163
|
+
* large-structural coverage. When true, the manifest instead marks itself
|
|
164
|
+
* incomplete with zero contexts — the caller wants a hard stop. */
|
|
165
|
+
stopOnUnknown?: boolean;
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Turn a classification into an executable review manifest. Pure: rendering,
|
|
169
|
+
* baseline acquisition, and critique execution stay in the caller. The
|
|
170
|
+
* separation is the point — the manifest can be printed by a dry run,
|
|
171
|
+
* reviewed, and overridden before expensive work starts.
|
|
172
|
+
*/
|
|
173
|
+
export declare function buildQaManifest(classification: QaClassification, opts: ManifestOptions): QaManifest;
|
|
174
|
+
//# sourceMappingURL=qa-plan.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"qa-plan.d.ts","sourceRoot":"","sources":["../../../src/lib/browser/qa-plan.ts"],"names":[],"mappings":"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"}
|