From b46e314240f6045466947957c390877e08ecd2b7 Mon Sep 17 00:00:00 2001 From: JSONbored <49853598+JSONbored@users.noreply.github.com> Date: Mon, 27 Jul 2026 01:11:40 -0700 Subject: [PATCH] chore(imports): unify relative-import specifiers per resolution zone; add a drift guard (#9221) --- package.json | 3 +- .../discovery-index/worker-configuration.d.ts | 6 +- .../loopover-engine/src/signals/engine.ts | 24 ++-- .../src/components/accordion.test.tsx | 2 +- .../src/components/accordion.tsx | 2 +- .../src/components/alert-dialog.tsx | 4 +- .../loopover-ui-kit/src/components/alert.tsx | 2 +- .../loopover-ui-kit/src/components/avatar.tsx | 2 +- .../loopover-ui-kit/src/components/badge.tsx | 2 +- .../src/components/breadcrumb.tsx | 2 +- .../loopover-ui-kit/src/components/button.tsx | 2 +- .../src/components/calendar.tsx | 4 +- .../loopover-ui-kit/src/components/card.tsx | 2 +- .../src/components/carousel.test.tsx | 2 +- .../src/components/carousel.tsx | 4 +- .../loopover-ui-kit/src/components/chart.tsx | 2 +- .../src/components/checkbox.tsx | 2 +- .../src/components/command.tsx | 4 +- .../src/components/context-menu.tsx | 2 +- .../loopover-ui-kit/src/components/dialog.tsx | 2 +- .../loopover-ui-kit/src/components/drawer.tsx | 2 +- .../src/components/dropdown-menu.tsx | 2 +- .../focus-visible-convention.test.tsx | 4 +- .../loopover-ui-kit/src/components/form.tsx | 4 +- .../src/components/hover-card.tsx | 2 +- .../src/components/input-otp.tsx | 2 +- .../loopover-ui-kit/src/components/input.tsx | 2 +- .../loopover-ui-kit/src/components/label.tsx | 2 +- .../src/components/menubar.tsx | 2 +- .../src/components/navigation-menu.tsx | 2 +- .../src/components/pagination.test.tsx | 2 +- .../src/components/pagination.tsx | 4 +- .../src/components/popover.tsx | 2 +- .../src/components/progress.tsx | 2 +- .../src/components/radio-group.tsx | 2 +- .../src/components/resizable.tsx | 2 +- .../src/components/scroll-area.tsx | 2 +- .../loopover-ui-kit/src/components/select.tsx | 2 +- .../src/components/separator.tsx | 2 +- .../loopover-ui-kit/src/components/sheet.tsx | 2 +- .../src/components/sidebar.test.tsx | 2 +- .../src/components/sidebar.tsx | 16 +-- .../src/components/skeleton.tsx | 2 +- .../loopover-ui-kit/src/components/slider.tsx | 2 +- .../src/components/state-views.test.tsx | 2 +- .../src/components/state-views.tsx | 2 +- .../loopover-ui-kit/src/components/switch.tsx | 2 +- .../loopover-ui-kit/src/components/table.tsx | 2 +- .../loopover-ui-kit/src/components/tabs.tsx | 2 +- .../src/components/textarea.tsx | 2 +- .../src/components/toggle-group.tsx | 4 +- .../loopover-ui-kit/src/components/toggle.tsx | 2 +- .../src/components/tooltip.tsx | 2 +- .../src/hooks/use-mobile.test.tsx | 2 +- packages/loopover-ui-kit/src/utils.test.ts | 2 +- packages/loopover-ui-kit/vitest.setup.ts | 2 +- scripts/attested-backtest-run-core.ts | 2 +- scripts/attested-backtest-run.ts | 6 +- ...backfill-calibration-corpus-phase2-core.ts | 6 +- scripts/backfill-calibration-corpus-phase2.ts | 8 +- scripts/backfill-calibration-corpus.ts | 4 +- scripts/backfill-decision-labels.ts | 6 +- scripts/backfill-pr-outcomes.ts | 2 +- scripts/backfill-slop-corpus-core.ts | 2 +- scripts/backfill-slop-corpus.ts | 6 +- scripts/backtest-corpus-export.ts | 4 +- scripts/backtest-logic-check.ts | 4 +- scripts/backtest-track-record.ts | 6 +- scripts/check-engine-package.ts | 2 +- scripts/check-import-specifiers.ts | 121 ++++++++++++++++ scripts/check-manifest-drift.ts | 2 +- scripts/check-mcp-package.ts | 4 +- scripts/check-mcp-release-candidate.ts | 2 +- scripts/check-mcp-release-due.ts | 2 +- scripts/check-migrations.ts | 4 +- scripts/check-miner-deployment-docs.ts | 2 +- scripts/check-miner-package.ts | 2 +- scripts/check-openapi-settings-parity.ts | 2 +- scripts/check-orb-release-due.ts | 2 +- scripts/check-orb-stable-release-due.ts | 2 +- scripts/check-package-release-due.ts | 4 +- scripts/check-schema-drift.ts | 2 +- scripts/check-ui-kit-package.ts | 2 +- scripts/counterfactual-replay.ts | 4 +- scripts/draft-issue.ts | 2 +- scripts/export-d1-data.ts | 2 +- scripts/generate-mcp-changelog.ts | 2 +- scripts/mcp-release-candidate-core.ts | 4 +- scripts/mcp-release-core.ts | 2 +- scripts/package-release-core.ts | 2 +- scripts/pg-cli.ts | 2 +- scripts/provider-replay-track-record.ts | 2 +- scripts/record-drafting-miss.ts | 2 +- scripts/record-engine-parity-goldens.ts | 4 +- scripts/smoke-production.ts | 2 +- src/mcp/find-opportunities.ts | 6 +- src/mcp/redeploy-companion-registry.ts | 2 +- src/rules/predicted-gate.ts | 2 +- src/selfhost/config-lint.ts | 2 +- src/selfhost/orb-collector.ts | 2 +- src/selfhost/posthog.ts | 2 +- src/services/focus-manifest-validation.ts | 2 +- src/services/pr-body-draft.ts | 2 +- src/signals/focus-manifest.ts | 4 +- src/signals/reward-risk.ts | 6 +- test/fixtures/deny-hooks/cases.ts | 2 +- .../vitest-global-setup-node-version.ts | 2 +- .../miner-calibration-loop.test.ts | 6 +- .../miner-discovery-pipeline.test.ts | 4 +- ...overnor-rate-limit-budget-pressure.test.ts | 2 +- ...erts-miner-portfolio-queue-backlog.test.ts | 2 +- test/unit/ams-prediction-corpus.test.ts | 4 +- test/unit/attestation-envelope-engine.test.ts | 2 +- test/unit/attested-backtest-run-core.test.ts | 4 +- test/unit/attested-backtest-run-e2e.test.ts | 4 +- test/unit/attester-engine.test.ts | 4 +- .../backfill-calibration-corpus-core.test.ts | 2 +- test/unit/backfill-slop-corpus-core.test.ts | 4 +- test/unit/backtest-corpus-export-core.test.ts | 2 +- test/unit/backtest-corpus.test.ts | 6 +- test/unit/backtest-logic-check-core.test.ts | 2 +- test/unit/backtest-track-record.test.ts | 6 +- test/unit/check-branding-drift-script.test.ts | 2 +- test/unit/check-changelog-script.test.ts | 2 +- ...-coverage-bolt-on-filenames-script.test.ts | 2 +- test/unit/check-docs-drift-script.test.ts | 2 +- test/unit/check-engine-parity-script.test.ts | 2 +- .../check-engines-nvmrc-sync-script.test.ts | 2 +- .../check-import-specifiers-script.test.ts | 134 ++++++++++++++++++ test/unit/check-manifest-drift-script.test.ts | 2 +- test/unit/check-miner-deployment-docs.test.ts | 2 +- test/unit/check-node-version-script.test.ts | 2 +- .../check-roadmap-issue-drift-script.test.ts | 2 +- test/unit/check-schema-drift-script.test.ts | 2 +- ...check-stuck-required-checks-script.test.ts | 2 +- .../check-ui-mcp-version-copy-script.test.ts | 2 +- test/unit/ci-cf-typegen.test.ts | 2 +- test/unit/ci-duration-report-script.test.ts | 2 +- test/unit/ci-openapi-settings-parity.test.ts | 2 +- .../unit/contribution-profile-extract.test.ts | 2 +- test/unit/contribution-profile-schema.test.ts | 2 +- test/unit/counterfactual-contract.test.ts | 4 +- test/unit/counterfactual-replay-core.test.ts | 2 +- test/unit/deny-hook-engine-extraction.test.ts | 2 +- test/unit/deny-hooks-fixtures.test.ts | 4 +- test/unit/env-file-indirection-parity.test.ts | 2 +- test/unit/export-d1-core.test.ts | 2 +- test/unit/forbidden-content.test.ts | 4 +- test/unit/format-table.test.ts | 2 +- .../unit/gen-command-reference-script.test.ts | 2 +- .../generate-mcp-changelog-script.test.ts | 2 +- .../unit/gittensor-impact-card-script.test.ts | 2 +- test/unit/governor-rate-limit-backoff.test.ts | 2 +- .../lint-composite-actions-script.test.ts | 2 +- test/unit/load-test-worker-script.test.ts | 2 +- test/unit/local-branch.test.ts | 46 +++--- test/unit/local-scorer-adapter.test.ts | 58 ++++---- test/unit/mcp-cli-error.test.ts | 2 +- test/unit/mcp-feasibility-gate.test.ts | 2 +- test/unit/mcp-local-telemetry.test.ts | 2 +- test/unit/mcp-release-candidate.test.ts | 2 +- test/unit/mcp-release.test.ts | 4 +- test/unit/miner-ams-calibration.test.ts | 4 +- .../miner-ams-eligibility-backtest.test.ts | 14 +- test/unit/miner-ams-health-server.test.ts | 2 +- test/unit/miner-ams-notifications.test.ts | 2 +- test/unit/miner-ams-policy.test.ts | 2 +- test/unit/miner-attempt-cli.test.ts | 56 ++++---- .../unit/miner-attempt-db-fork-config.test.ts | 2 +- test/unit/miner-attempt-input-builder.test.ts | 2 +- test/unit/miner-attempt-log.test.ts | 4 +- test/unit/miner-attempt-runner.test.ts | 10 +- test/unit/miner-attempt-worktree.test.ts | 2 +- test/unit/miner-calibration-cli.test.ts | 20 +-- test/unit/miner-calibration-run.test.ts | 4 +- test/unit/miner-calibration-types.test.ts | 4 +- test/unit/miner-calibration.test.ts | 4 +- test/unit/miner-chat-action-dispatch.test.ts | 4 +- test/unit/miner-chat-action-registry.test.ts | 2 +- ...iner-chat-discover-attempt-actions.test.ts | 6 +- test/unit/miner-chat-governor-actions.test.ts | 6 +- .../miner-ci-poller-failure-modes.test.ts | 2 +- test/unit/miner-ci-poller.test.ts | 2 +- test/unit/miner-claim-adjudication.test.ts | 2 +- .../miner-claim-conflict-resolver.test.ts | 2 +- test/unit/miner-claim-ledger-cli.test.ts | 4 +- test/unit/miner-claim-ledger-expiry.test.ts | 4 +- .../miner-claim-ledger-sweep-wiring.test.ts | 4 +- test/unit/miner-claim-ledger.test.ts | 2 +- test/unit/miner-cli-deny-check.test.ts | 2 +- test/unit/miner-cli-doctor-checks.test.ts | 6 +- test/unit/miner-cli-error.test.ts | 2 +- test/unit/miner-cli-json-error-paths.test.ts | 16 +-- test/unit/miner-cli-run-state.test.ts | 2 +- test/unit/miner-cli.test.ts | 10 +- .../miner-coding-agent-construction.test.ts | 4 +- .../miner-coding-agent-house-rules.test.ts | 2 +- .../miner-coding-task-spec-path-guard.test.ts | 2 +- test/unit/miner-coding-task-spec.test.ts | 2 +- .../unit/miner-concurrent-store-races.test.ts | 6 +- .../miner-contribution-profile-cache.test.ts | 4 +- .../miner-contribution-profile-filter.test.ts | 4 +- test/unit/miner-cross-repo-evaluation.test.ts | 6 +- test/unit/miner-deny-hook-synthesis.test.ts | 8 +- test/unit/miner-deny-hooks-cli.test.ts | 6 +- test/unit/miner-deny-hooks.test.ts | 2 +- test/unit/miner-deployment-docs-audit.test.ts | 4 +- ...-discover-cli-eligibility-metadata.test.ts | 12 +- test/unit/miner-discover-cli.test.ts | 26 ++-- .../unit/miner-discovery-index-client.test.ts | 2 +- test/unit/miner-discovery-throttle.test.ts | 4 +- test/unit/miner-env-file-indirection.test.ts | 2 +- test/unit/miner-event-ledger-cli.test.ts | 4 +- test/unit/miner-event-ledger.test.ts | 2 +- test/unit/miner-execute-local-write.test.ts | 2 +- test/unit/miner-feasibility-cli.test.ts | 2 +- test/unit/miner-forge-config.test.ts | 2 +- .../miner-github-token-resolution.test.ts | 2 +- test/unit/miner-goal-spec-resolver.test.ts | 2 +- ...iner-governor-chokepoint-persisted.test.ts | 6 +- test/unit/miner-governor-chokepoint.test.ts | 6 +- test/unit/miner-governor-kill-switch.test.ts | 6 +- test/unit/miner-governor-ledger-cli.test.ts | 6 +- test/unit/miner-governor-ledger.test.ts | 4 +- test/unit/miner-governor-metrics-cli.test.ts | 6 +- test/unit/miner-governor-pause-cli.test.ts | 4 +- test/unit/miner-governor-run-halt.test.ts | 8 +- test/unit/miner-governor-state.test.ts | 2 +- .../miner-harness-submission-trigger.test.ts | 4 +- test/unit/miner-hosted-entry.test.ts | 2 +- test/unit/miner-http-retry.test.ts | 2 +- test/unit/miner-idea-feasibility-cli.test.ts | 2 +- test/unit/miner-idea-feasibility.test.ts | 4 +- test/unit/miner-init-verify-token.test.ts | 2 +- test/unit/miner-init-wizard.test.ts | 2 +- test/unit/miner-laptop-init.test.ts | 4 +- test/unit/miner-live-issue-snapshot.test.ts | 2 +- test/unit/miner-local-store.test.ts | 12 +- test/unit/miner-logger.test.ts | 2 +- test/unit/miner-loop-cli.test.ts | 32 ++--- test/unit/miner-loop-closure.test.ts | 8 +- test/unit/miner-loop-reentry.test.ts | 10 +- test/unit/miner-manage-poll.test.ts | 10 +- test/unit/miner-manage-status.test.ts | 8 +- test/unit/miner-mcp-audit-feed.test.ts | 6 +- .../unit/miner-mcp-calibration-report.test.ts | 6 +- test/unit/miner-mcp-contract.test.ts | 6 +- .../unit/miner-mcp-governor-decisions.test.ts | 4 +- test/unit/miner-mcp-manage-status.test.ts | 10 +- test/unit/miner-mcp-scaffold.test.ts | 4 +- test/unit/miner-metrics-cli.test.ts | 10 +- test/unit/miner-migrate-cli.test.ts | 14 +- test/unit/miner-oauth-device-flow.test.ts | 2 +- .../miner-opportunity-fanout-forge.test.ts | 2 +- ...iner-opportunity-fanout-pagination.test.ts | 2 +- test/unit/miner-opportunity-fanout.test.ts | 2 +- test/unit/miner-opportunity-ranker.test.ts | 2 +- test/unit/miner-orb-export.test.ts | 8 +- test/unit/miner-package-skeleton.test.ts | 2 +- test/unit/miner-plan-store-cli.test.ts | 4 +- test/unit/miner-plan-store.test.ts | 6 +- test/unit/miner-policy-doc-cache.test.ts | 2 +- test/unit/miner-policy-verdict-cache.test.ts | 2 +- test/unit/miner-portfolio-dashboard.test.ts | 2 +- test/unit/miner-portfolio-discovery.test.ts | 6 +- test/unit/miner-portfolio-queue-cli.test.ts | 8 +- ...ner-portfolio-queue-crash-recovery.test.ts | 4 +- .../unit/miner-portfolio-queue-expiry.test.ts | 8 +- .../miner-portfolio-queue-manager.test.ts | 4 +- test/unit/miner-portfolio-queue.test.ts | 2 +- test/unit/miner-posthog.test.ts | 2 +- test/unit/miner-pr-disposition-poller.test.ts | 2 +- test/unit/miner-pr-number-parse.test.ts | 2 +- test/unit/miner-pr-outcome.test.ts | 4 +- test/unit/miner-pr-outcomes-cli.test.ts | 6 +- test/unit/miner-prediction-ledger.test.ts | 4 +- test/unit/miner-pretooluse-hook.test.ts | 4 +- test/unit/miner-process-lifecycle.test.ts | 2 +- .../miner-prompt-injection-defense.test.ts | 2 +- test/unit/miner-purge-cli.test.ts | 32 ++--- test/unit/miner-ranked-candidates.test.ts | 2 +- test/unit/miner-rejection-signal.test.ts | 2 +- .../miner-rejection-state-machine.test.ts | 2 +- test/unit/miner-rejection-templates.test.ts | 2 +- .../miner-replay-objective-anchor.test.ts | 2 +- test/unit/miner-replay-snapshot.test.ts | 2 +- test/unit/miner-replay-task-bridge.test.ts | 6 +- .../unit/miner-replay-task-generation.test.ts | 2 +- .../unit/miner-repo-clone-default-git.test.ts | 2 +- test/unit/miner-repo-clone-lock.test.ts | 4 +- test/unit/miner-repo-clone.test.ts | 2 +- test/unit/miner-run-state.test.ts | 2 +- test/unit/miner-schema-version.test.ts | 2 +- test/unit/miner-self-review-context.test.ts | 2 +- test/unit/miner-sentry.test.ts | 2 +- test/unit/miner-signal-tracking-store.test.ts | 4 +- test/unit/miner-slop-assessment.test.ts | 2 +- test/unit/miner-stack-detection.test.ts | 2 +- test/unit/miner-status.test.ts | 12 +- test/unit/miner-store-db-adapter.test.ts | 4 +- test/unit/miner-store-maintenance.test.ts | 2 +- test/unit/miner-store-seam-rollout.test.ts | 10 +- .../miner-submission-freshness-check.test.ts | 2 +- .../miner-target-repo-verification.test.ts | 4 +- test/unit/miner-tenant.test.ts | 4 +- test/unit/miner-version.test.ts | 2 +- test/unit/miner-wire-cli-modules.test.ts | 12 +- ...iner-worktree-allocator-collisions.test.ts | 2 +- ...er-worktree-allocator-lease-expiry.test.ts | 2 +- test/unit/miner-worktree-allocator.test.ts | 4 +- .../unit/opportunity-fanout-ai-policy.test.ts | 2 +- ...pportunity-fanout-policy-doc-cache.test.ts | 4 +- ...tunity-fanout-policy-verdict-cache.test.ts | 4 +- test/unit/orb-release.test.ts | 2 +- test/unit/package-release.test.ts | 4 +- .../unit/provider-replay-track-record.test.ts | 4 +- test/unit/redact-local-path.test.ts | 2 +- test/unit/rees-coverage-script.test.ts | 2 +- test/unit/reliability-curve-engine.test.ts | 4 +- test/unit/repo-corpus-slice-engine.test.ts | 4 +- .../selfhost-env-reference-script.test.ts | 2 +- test/unit/smoke-production-versions.test.ts | 2 +- test/unit/snp-attester.test.ts | 2 +- .../sync-release-lockfile-versions.test.ts | 2 +- test/unit/sync-release-manifest.test.ts | 2 +- ...idate-observability-configs-script.test.ts | 2 +- ...validate-selfhost-sourcemap-script.test.ts | 2 +- 327 files changed, 944 insertions(+), 688 deletions(-) create mode 100644 scripts/check-import-specifiers.ts create mode 100644 test/unit/check-import-specifiers-script.test.ts diff --git a/package.json b/package.json index b4d2207b45..29ecc43d07 100644 --- a/package.json +++ b/package.json @@ -68,6 +68,7 @@ "ui:version-audit:sync": "node --experimental-strip-types scripts/check-ui-mcp-version-copy.ts --write", "docs:drift-check": "node --experimental-strip-types scripts/check-docs-drift.ts", "coverage-boltons:check": "node --experimental-strip-types scripts/check-coverage-bolt-on-filenames.ts", + "import-specifiers:check": "node --experimental-strip-types scripts/check-import-specifiers.ts", "roadmap:drift-check": "node --experimental-strip-types scripts/check-roadmap-issue-drift.ts", "branding-drift:check": "node --experimental-strip-types scripts/check-branding-drift.ts", "branding-drift:update": "node --experimental-strip-types scripts/check-branding-drift.ts --update", @@ -108,7 +109,7 @@ "test:smoke:browser:install": "playwright install chromium", "test:smoke:browser": "node --experimental-strip-types scripts/smoke-ui-browser.ts", "pretest:ci": "npm run check-node-version", - "test:ci": "git diff --check && npm run actionlint && npm run lint:composite-actions && npm run db:migrations:check && npm run db:schema-drift:check && npm run selfhost:env-reference:check && npm run miner:env-reference:check && npm run selfhost:validate-observability && npm run cf-typegen:check && npm run build --workspace @loopover/engine && npm run build --workspace @loopover/discovery-index && npm run build:mcp && npm run build:miner && npm run build --workspace @loopover/ui-kit && npm run typecheck && npm run test:coverage && npm run test:engine-parity && npm run test:live-gate-parity && npm run test:driver-parity && npm run test --workspace @loopover/engine && npm run test:workers && npm run test:mcp-pack && npm run test:miner-pack && npm run test:engine-pack && npm run test:ui-kit-pack && npm run test:miner-deployment-docs-audit && npm run rees:test && npm run ui:openapi:check && npm run ui:openapi:settings-parity && npm run ui:version-audit && npm run docs:drift-check && npm run coverage-boltons:check && npm run branding-drift:check && npm run manifest:drift-check && npm run engine-parity:drift-check && npm run engines-nvmrc:check && npm run release-manifest:sync:check && npm run command-reference:check && npm run ui:lint && npm run ui:typecheck && npm run ui:test && npm run ui:build", + "test:ci": "git diff --check && npm run actionlint && npm run lint:composite-actions && npm run db:migrations:check && npm run db:schema-drift:check && npm run selfhost:env-reference:check && npm run miner:env-reference:check && npm run selfhost:validate-observability && npm run cf-typegen:check && npm run build --workspace @loopover/engine && npm run build --workspace @loopover/discovery-index && npm run build:mcp && npm run build:miner && npm run build --workspace @loopover/ui-kit && npm run typecheck && npm run test:coverage && npm run test:engine-parity && npm run test:live-gate-parity && npm run test:driver-parity && npm run test --workspace @loopover/engine && npm run test:workers && npm run test:mcp-pack && npm run test:miner-pack && npm run test:engine-pack && npm run test:ui-kit-pack && npm run test:miner-deployment-docs-audit && npm run rees:test && npm run ui:openapi:check && npm run ui:openapi:settings-parity && npm run ui:version-audit && npm run docs:drift-check && npm run coverage-boltons:check && npm run import-specifiers:check && npm run branding-drift:check && npm run manifest:drift-check && npm run engine-parity:drift-check && npm run engines-nvmrc:check && npm run release-manifest:sync:check && npm run command-reference:check && npm run ui:lint && npm run ui:typecheck && npm run ui:test && npm run ui:build", "test:release": "npm run test:ci && npm run changelog:check", "test:release:mcp": "npm run test:ci", "test:watch": "vitest", diff --git a/packages/discovery-index/worker-configuration.d.ts b/packages/discovery-index/worker-configuration.d.ts index af8640063f..5c28ae6855 100644 --- a/packages/discovery-index/worker-configuration.d.ts +++ b/packages/discovery-index/worker-configuration.d.ts @@ -2,12 +2,12 @@ // Generated by Wrangler by running `wrangler types` (hash: d2eeff9c442143d238b1256f3c987930) // Runtime types generated with workerd@1.20260714.1 2026-07-21 interface __BaseEnv_Env { - DISCOVERY_INDEX_CONTAINER: DurableObjectNamespace; - DISCOVERY_INDEX_RATE_LIMITER: DurableObjectNamespace; + DISCOVERY_INDEX_CONTAINER: DurableObjectNamespace; + DISCOVERY_INDEX_RATE_LIMITER: DurableObjectNamespace; } declare namespace Cloudflare { interface GlobalProps { - mainModule: typeof import("./src/worker"); + mainModule: typeof import("./src/worker.js"); durableNamespaces: "DiscoveryIndexContainer" | "DiscoveryIndexRateLimiter"; } interface Env extends __BaseEnv_Env {} diff --git a/packages/loopover-engine/src/signals/engine.ts b/packages/loopover-engine/src/signals/engine.ts index aee31fdd67..8ca9e59324 100644 --- a/packages/loopover-engine/src/signals/engine.ts +++ b/packages/loopover-engine/src/signals/engine.ts @@ -23,14 +23,14 @@ import type { RepositoryRecord, RepositorySettings, ScoringModelSnapshotRecord, -} from "../../../../src/types"; -import type { PublicContributorProfile } from "../../../../src/github/public"; -import { commandReferenceUrl, loopoverFooter, gittensorRepoEarnUrl, type LoopOverFooterEnv } from "../../../../src/github/footer"; -import type { FocusManifestReviewConfig, ReviewFieldKey } from "../../../../src/signals/focus-manifest"; -import type { GittensorContributorSnapshot } from "../../../../src/gittensor/api"; +} from "../../../../src/types.js"; +import type { PublicContributorProfile } from "../../../../src/github/public.js"; +import { commandReferenceUrl, loopoverFooter, gittensorRepoEarnUrl, type LoopOverFooterEnv } from "../../../../src/github/footer.js"; +import type { FocusManifestReviewConfig, ReviewFieldKey } from "../../../../src/signals/focus-manifest.js"; +import type { GittensorContributorSnapshot } from "../../../../src/gittensor/api.js"; import { nowIso } from "../utils/json.js"; -import { extractLinkedIssueNumbers } from "../../../../src/db/repositories"; -import { sanitizePublicComment } from "../../../../src/queue-intelligence"; +import { extractLinkedIssueNumbers } from "../../../../src/db/repositories.js"; +import { sanitizePublicComment } from "../../../../src/queue-intelligence.js"; import { labelMatchesPattern, projectLinkedIssueMultiplierForPlannedSolve, type LinkedIssueMultiplierStatus } from "../scoring/preview.js"; import { isSuspiciousConfiguredLabel } from "../scoring/label-match.js"; import { hasLocalTestEvidence, hasValidationNote, isTestPath } from "./test-evidence.js"; @@ -38,13 +38,13 @@ import { isCodeFile, isTestFile } from "./path-matchers.js"; import { isFailingCheckSummary } from "./check-summary.js"; import { isDuplicateClusterWinnerByClaim } from "./duplicate-winner.js"; import { PREFLIGHT_LIMITS } from "./preflight-limits.js"; -import type { UnifiedCollapsible } from "../../../../src/review/unified-comment"; -import { splitAiReviewNits } from "../../../../src/review/ai-notes"; -import { LOOPOVER_GATE_CHECK_NAME, shouldPublishReviewCheck } from "../../../../src/review/check-names"; +import type { UnifiedCollapsible } from "../../../../src/review/unified-comment.js"; +import { splitAiReviewNits } from "../../../../src/review/ai-notes.js"; +import { LOOPOVER_GATE_CHECK_NAME, shouldPublishReviewCheck } from "../../../../src/review/check-names.js"; import { isAgentConfigured } from "../settings/autonomy.js"; import { diffFilePriority } from "../review/diff-file-priority.js"; -import type { ImprovementBand, StructuralImprovementAssessment } from "../../../../src/signals/improvement"; -import type { ImprovementMagnitude } from "../../../../src/services/ai-review"; +import type { ImprovementBand, StructuralImprovementAssessment } from "../../../../src/signals/improvement.js"; +import type { ImprovementMagnitude } from "../../../../src/services/ai-review.js"; import type { SlopBand } from "./slop.js"; export type ParticipationLane = "direct_pr" | "issue_discovery" | "split" | "inactive" | "unknown"; diff --git a/packages/loopover-ui-kit/src/components/accordion.test.tsx b/packages/loopover-ui-kit/src/components/accordion.test.tsx index f9feee9786..207c8adb05 100644 --- a/packages/loopover-ui-kit/src/components/accordion.test.tsx +++ b/packages/loopover-ui-kit/src/components/accordion.test.tsx @@ -6,7 +6,7 @@ import { AccordionContent, AccordionItem, AccordionTrigger, -} from "./accordion"; +} from "./accordion.js"; // Regression for #8303: the Radix content/transition components in @loopover/ui-kit must pair their // animate-* utilities with motion-reduce:animate-none, matching skeleton.tsx / state-views.tsx, so a user diff --git a/packages/loopover-ui-kit/src/components/accordion.tsx b/packages/loopover-ui-kit/src/components/accordion.tsx index b17199a2a7..b930ebdb0a 100644 --- a/packages/loopover-ui-kit/src/components/accordion.tsx +++ b/packages/loopover-ui-kit/src/components/accordion.tsx @@ -2,7 +2,7 @@ import * as React from "react"; import * as AccordionPrimitive from "@radix-ui/react-accordion"; import { ChevronDown } from "lucide-react"; -import { cn } from "../utils"; +import { cn } from "../utils.js"; const Accordion = AccordionPrimitive.Root; diff --git a/packages/loopover-ui-kit/src/components/alert-dialog.tsx b/packages/loopover-ui-kit/src/components/alert-dialog.tsx index 5427c29ef6..2bd51c8d5a 100644 --- a/packages/loopover-ui-kit/src/components/alert-dialog.tsx +++ b/packages/loopover-ui-kit/src/components/alert-dialog.tsx @@ -1,8 +1,8 @@ import * as React from "react"; import * as AlertDialogPrimitive from "@radix-ui/react-alert-dialog"; -import { cn } from "../utils"; -import { buttonVariants } from "./button"; +import { cn } from "../utils.js"; +import { buttonVariants } from "./button.js"; const AlertDialog = AlertDialogPrimitive.Root; diff --git a/packages/loopover-ui-kit/src/components/alert.tsx b/packages/loopover-ui-kit/src/components/alert.tsx index 8150f279f1..b639001693 100644 --- a/packages/loopover-ui-kit/src/components/alert.tsx +++ b/packages/loopover-ui-kit/src/components/alert.tsx @@ -1,7 +1,7 @@ import * as React from "react"; import { cva, type VariantProps } from "class-variance-authority"; -import { cn } from "../utils"; +import { cn } from "../utils.js"; const alertVariants = cva( "relative w-full rounded-lg border px-4 py-3 text-sm [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground [&>svg~*]:pl-7", diff --git a/packages/loopover-ui-kit/src/components/avatar.tsx b/packages/loopover-ui-kit/src/components/avatar.tsx index dbe93d9714..603ef2a122 100644 --- a/packages/loopover-ui-kit/src/components/avatar.tsx +++ b/packages/loopover-ui-kit/src/components/avatar.tsx @@ -3,7 +3,7 @@ import * as React from "react"; import * as AvatarPrimitive from "@radix-ui/react-avatar"; -import { cn } from "../utils"; +import { cn } from "../utils.js"; const Avatar = React.forwardRef< React.ElementRef, diff --git a/packages/loopover-ui-kit/src/components/badge.tsx b/packages/loopover-ui-kit/src/components/badge.tsx index 7f412ea2d9..496d01ed1a 100644 --- a/packages/loopover-ui-kit/src/components/badge.tsx +++ b/packages/loopover-ui-kit/src/components/badge.tsx @@ -1,7 +1,7 @@ import * as React from "react"; import { cva, type VariantProps } from "class-variance-authority"; -import { cn } from "../utils"; +import { cn } from "../utils.js"; const badgeVariants = cva( "inline-flex items-center rounded-token border-hairline px-2.5 py-0.5 text-token-2xs font-semibold uppercase tracking-wider font-mono transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2", diff --git a/packages/loopover-ui-kit/src/components/breadcrumb.tsx b/packages/loopover-ui-kit/src/components/breadcrumb.tsx index 6fb495ca73..889a2066ae 100644 --- a/packages/loopover-ui-kit/src/components/breadcrumb.tsx +++ b/packages/loopover-ui-kit/src/components/breadcrumb.tsx @@ -2,7 +2,7 @@ import * as React from "react"; import { Slot } from "@radix-ui/react-slot"; import { ChevronRight, MoreHorizontal } from "lucide-react"; -import { cn } from "../utils"; +import { cn } from "../utils.js"; const Breadcrumb = React.forwardRef< HTMLElement, diff --git a/packages/loopover-ui-kit/src/components/button.tsx b/packages/loopover-ui-kit/src/components/button.tsx index dd890c081f..beb86b94cc 100644 --- a/packages/loopover-ui-kit/src/components/button.tsx +++ b/packages/loopover-ui-kit/src/components/button.tsx @@ -2,7 +2,7 @@ import * as React from "react"; import { Slot } from "@radix-ui/react-slot"; import { cva, type VariantProps } from "class-variance-authority"; -import { cn } from "../utils"; +import { cn } from "../utils.js"; const buttonVariants = cva( "inline-flex min-w-0 items-center justify-center gap-2 whitespace-normal break-words rounded-token text-center text-token-sm font-medium leading-token-snug cursor-pointer transition-all duration-150 motion-reduce:transition-none motion-reduce:active:scale-100 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background active:scale-[0.99] disabled:pointer-events-none disabled:opacity-60 disabled:cursor-not-allowed [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0", diff --git a/packages/loopover-ui-kit/src/components/calendar.tsx b/packages/loopover-ui-kit/src/components/calendar.tsx index 31a7e88988..e4b9b5d405 100644 --- a/packages/loopover-ui-kit/src/components/calendar.tsx +++ b/packages/loopover-ui-kit/src/components/calendar.tsx @@ -8,8 +8,8 @@ import { } from "lucide-react"; import { DayButton, DayPicker, getDefaultClassNames } from "react-day-picker"; -import { cn } from "../utils"; -import { Button, buttonVariants } from "./button"; +import { cn } from "../utils.js"; +import { Button, buttonVariants } from "./button.js"; function Calendar({ className, diff --git a/packages/loopover-ui-kit/src/components/card.tsx b/packages/loopover-ui-kit/src/components/card.tsx index 6240bd61b3..98ffcf9caf 100644 --- a/packages/loopover-ui-kit/src/components/card.tsx +++ b/packages/loopover-ui-kit/src/components/card.tsx @@ -1,6 +1,6 @@ import * as React from "react"; -import { cn } from "../utils"; +import { cn } from "../utils.js"; const Card = React.forwardRef< HTMLDivElement, diff --git a/packages/loopover-ui-kit/src/components/carousel.test.tsx b/packages/loopover-ui-kit/src/components/carousel.test.tsx index f45f4381ad..83e953877a 100644 --- a/packages/loopover-ui-kit/src/components/carousel.test.tsx +++ b/packages/loopover-ui-kit/src/components/carousel.test.tsx @@ -18,7 +18,7 @@ vi.mock("embla-carousel-react", () => ({ default: () => [() => {}, mockApi], })); -import { Carousel, CarouselContent, CarouselItem } from "./carousel"; +import { Carousel, CarouselContent, CarouselItem } from "./carousel.js"; function renderCarousel(orientation: "horizontal" | "vertical") { return render( diff --git a/packages/loopover-ui-kit/src/components/carousel.tsx b/packages/loopover-ui-kit/src/components/carousel.tsx index 154986c3d3..cf81d34426 100644 --- a/packages/loopover-ui-kit/src/components/carousel.tsx +++ b/packages/loopover-ui-kit/src/components/carousel.tsx @@ -4,8 +4,8 @@ import useEmblaCarousel, { } from "embla-carousel-react"; import { ArrowLeft, ArrowRight } from "lucide-react"; -import { cn } from "../utils"; -import { Button } from "./button"; +import { cn } from "../utils.js"; +import { Button } from "./button.js"; type CarouselApi = UseEmblaCarouselType[1]; type UseCarouselParameters = Parameters; diff --git a/packages/loopover-ui-kit/src/components/chart.tsx b/packages/loopover-ui-kit/src/components/chart.tsx index 9d654f30a3..031ccf764d 100644 --- a/packages/loopover-ui-kit/src/components/chart.tsx +++ b/packages/loopover-ui-kit/src/components/chart.tsx @@ -1,7 +1,7 @@ import * as React from "react"; import * as RechartsPrimitive from "recharts"; -import { cn } from "../utils"; +import { cn } from "../utils.js"; // Format: { THEME_NAME: CSS_SELECTOR } const THEMES = { light: "", dark: ".dark" } as const; diff --git a/packages/loopover-ui-kit/src/components/checkbox.tsx b/packages/loopover-ui-kit/src/components/checkbox.tsx index c0aeed66f2..0eeade8440 100644 --- a/packages/loopover-ui-kit/src/components/checkbox.tsx +++ b/packages/loopover-ui-kit/src/components/checkbox.tsx @@ -2,7 +2,7 @@ import * as React from "react"; import * as CheckboxPrimitive from "@radix-ui/react-checkbox"; import { Check } from "lucide-react"; -import { cn } from "../utils"; +import { cn } from "../utils.js"; const Checkbox = React.forwardRef< React.ElementRef, diff --git a/packages/loopover-ui-kit/src/components/command.tsx b/packages/loopover-ui-kit/src/components/command.tsx index 1c48d9d4dd..841436977f 100644 --- a/packages/loopover-ui-kit/src/components/command.tsx +++ b/packages/loopover-ui-kit/src/components/command.tsx @@ -5,8 +5,8 @@ import { type DialogProps } from "@radix-ui/react-dialog"; import { Command as CommandPrimitive } from "cmdk"; import { Search } from "lucide-react"; -import { cn } from "../utils"; -import { Dialog, DialogContent } from "./dialog"; +import { cn } from "../utils.js"; +import { Dialog, DialogContent } from "./dialog.js"; const Command = React.forwardRef< React.ElementRef, diff --git a/packages/loopover-ui-kit/src/components/context-menu.tsx b/packages/loopover-ui-kit/src/components/context-menu.tsx index 91bf31eaee..fad59a0e7d 100644 --- a/packages/loopover-ui-kit/src/components/context-menu.tsx +++ b/packages/loopover-ui-kit/src/components/context-menu.tsx @@ -2,7 +2,7 @@ import * as React from "react"; import * as ContextMenuPrimitive from "@radix-ui/react-context-menu"; import { Check, ChevronRight, Circle } from "lucide-react"; -import { cn } from "../utils"; +import { cn } from "../utils.js"; const ContextMenu = ContextMenuPrimitive.Root; diff --git a/packages/loopover-ui-kit/src/components/dialog.tsx b/packages/loopover-ui-kit/src/components/dialog.tsx index 638a7ed94f..cbf6ed899f 100644 --- a/packages/loopover-ui-kit/src/components/dialog.tsx +++ b/packages/loopover-ui-kit/src/components/dialog.tsx @@ -4,7 +4,7 @@ import * as React from "react"; import * as DialogPrimitive from "@radix-ui/react-dialog"; import { X } from "lucide-react"; -import { cn } from "../utils"; +import { cn } from "../utils.js"; const Dialog = DialogPrimitive.Root; diff --git a/packages/loopover-ui-kit/src/components/drawer.tsx b/packages/loopover-ui-kit/src/components/drawer.tsx index cadea6056a..d4e891a2c7 100644 --- a/packages/loopover-ui-kit/src/components/drawer.tsx +++ b/packages/loopover-ui-kit/src/components/drawer.tsx @@ -1,7 +1,7 @@ import * as React from "react"; import { Drawer as DrawerPrimitive } from "vaul"; -import { cn } from "../utils"; +import { cn } from "../utils.js"; const Drawer = ({ shouldScaleBackground = true, diff --git a/packages/loopover-ui-kit/src/components/dropdown-menu.tsx b/packages/loopover-ui-kit/src/components/dropdown-menu.tsx index d7aaad0cd1..3bc4556679 100644 --- a/packages/loopover-ui-kit/src/components/dropdown-menu.tsx +++ b/packages/loopover-ui-kit/src/components/dropdown-menu.tsx @@ -4,7 +4,7 @@ import * as React from "react"; import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu"; import { Check, ChevronRight, Circle } from "lucide-react"; -import { cn } from "../utils"; +import { cn } from "../utils.js"; const DropdownMenu = DropdownMenuPrimitive.Root; diff --git a/packages/loopover-ui-kit/src/components/focus-visible-convention.test.tsx b/packages/loopover-ui-kit/src/components/focus-visible-convention.test.tsx index e57d1c7874..7a9ceaea4e 100644 --- a/packages/loopover-ui-kit/src/components/focus-visible-convention.test.tsx +++ b/packages/loopover-ui-kit/src/components/focus-visible-convention.test.tsx @@ -1,8 +1,8 @@ import { render } from "@testing-library/react"; import { describe, expect, it } from "vitest"; -import { navigationMenuTriggerStyle } from "./navigation-menu"; -import { Select, SelectTrigger, SelectValue } from "./select"; +import { navigationMenuTriggerStyle } from "./navigation-menu.js"; +import { Select, SelectTrigger, SelectValue } from "./select.js"; // Regression for #8304: SelectTrigger, the Dialog/Sheet close buttons, and NavigationMenuTrigger must // apply their focus ring/highlight via `focus-visible:` (keyboard/programmatic focus only), matching diff --git a/packages/loopover-ui-kit/src/components/form.tsx b/packages/loopover-ui-kit/src/components/form.tsx index 3b81544d33..bfdff39dac 100644 --- a/packages/loopover-ui-kit/src/components/form.tsx +++ b/packages/loopover-ui-kit/src/components/form.tsx @@ -10,8 +10,8 @@ import { type FieldValues, } from "react-hook-form"; -import { cn } from "../utils"; -import { Label } from "./label"; +import { cn } from "../utils.js"; +import { Label } from "./label.js"; const Form = FormProvider; diff --git a/packages/loopover-ui-kit/src/components/hover-card.tsx b/packages/loopover-ui-kit/src/components/hover-card.tsx index 61c051b0ed..718e1b6224 100644 --- a/packages/loopover-ui-kit/src/components/hover-card.tsx +++ b/packages/loopover-ui-kit/src/components/hover-card.tsx @@ -1,7 +1,7 @@ import * as React from "react"; import * as HoverCardPrimitive from "@radix-ui/react-hover-card"; -import { cn } from "../utils"; +import { cn } from "../utils.js"; const HoverCard = HoverCardPrimitive.Root; diff --git a/packages/loopover-ui-kit/src/components/input-otp.tsx b/packages/loopover-ui-kit/src/components/input-otp.tsx index b1e149016a..8181e0e412 100644 --- a/packages/loopover-ui-kit/src/components/input-otp.tsx +++ b/packages/loopover-ui-kit/src/components/input-otp.tsx @@ -2,7 +2,7 @@ import * as React from "react"; import { OTPInput, OTPInputContext } from "input-otp"; import { Minus } from "lucide-react"; -import { cn } from "../utils"; +import { cn } from "../utils.js"; const InputOTP = React.forwardRef< React.ElementRef, diff --git a/packages/loopover-ui-kit/src/components/input.tsx b/packages/loopover-ui-kit/src/components/input.tsx index 9ce270b1cf..7168a4a7f2 100644 --- a/packages/loopover-ui-kit/src/components/input.tsx +++ b/packages/loopover-ui-kit/src/components/input.tsx @@ -1,6 +1,6 @@ import * as React from "react"; -import { cn } from "../utils"; +import { cn } from "../utils.js"; const Input = React.forwardRef>( ({ className, type, ...props }, ref) => { diff --git a/packages/loopover-ui-kit/src/components/label.tsx b/packages/loopover-ui-kit/src/components/label.tsx index 37d5d68be1..defe237fdd 100644 --- a/packages/loopover-ui-kit/src/components/label.tsx +++ b/packages/loopover-ui-kit/src/components/label.tsx @@ -4,7 +4,7 @@ import * as React from "react"; import * as LabelPrimitive from "@radix-ui/react-label"; import { cva, type VariantProps } from "class-variance-authority"; -import { cn } from "../utils"; +import { cn } from "../utils.js"; const labelVariants = cva( "text-token-xs font-medium leading-token-tight peer-disabled:cursor-not-allowed peer-disabled:opacity-70", diff --git a/packages/loopover-ui-kit/src/components/menubar.tsx b/packages/loopover-ui-kit/src/components/menubar.tsx index e977fd2d72..5e7321bb6f 100644 --- a/packages/loopover-ui-kit/src/components/menubar.tsx +++ b/packages/loopover-ui-kit/src/components/menubar.tsx @@ -2,7 +2,7 @@ import * as React from "react"; import * as MenubarPrimitive from "@radix-ui/react-menubar"; import { Check, ChevronRight, Circle } from "lucide-react"; -import { cn } from "../utils"; +import { cn } from "../utils.js"; function MenubarMenu({ ...props diff --git a/packages/loopover-ui-kit/src/components/navigation-menu.tsx b/packages/loopover-ui-kit/src/components/navigation-menu.tsx index eed9c88640..3f8b714f6b 100644 --- a/packages/loopover-ui-kit/src/components/navigation-menu.tsx +++ b/packages/loopover-ui-kit/src/components/navigation-menu.tsx @@ -3,7 +3,7 @@ import * as NavigationMenuPrimitive from "@radix-ui/react-navigation-menu"; import { cva } from "class-variance-authority"; import { ChevronDown } from "lucide-react"; -import { cn } from "../utils"; +import { cn } from "../utils.js"; const NavigationMenu = React.forwardRef< React.ElementRef, diff --git a/packages/loopover-ui-kit/src/components/pagination.test.tsx b/packages/loopover-ui-kit/src/components/pagination.test.tsx index 83c7873e3e..85df673256 100644 --- a/packages/loopover-ui-kit/src/components/pagination.test.tsx +++ b/packages/loopover-ui-kit/src/components/pagination.test.tsx @@ -5,7 +5,7 @@ import { PaginationLink, PaginationNext, PaginationPrevious, -} from "./pagination"; +} from "./pagination.js"; // Regression for #8307: PaginationLink (and PaginationPrevious/PaginationNext built on it) render an , // which has no native disabled attribute — a consumer-supplied aria-disabled must produce a real diff --git a/packages/loopover-ui-kit/src/components/pagination.tsx b/packages/loopover-ui-kit/src/components/pagination.tsx index cae9d498c2..4255db33ac 100644 --- a/packages/loopover-ui-kit/src/components/pagination.tsx +++ b/packages/loopover-ui-kit/src/components/pagination.tsx @@ -1,8 +1,8 @@ import * as React from "react"; import { ChevronLeft, ChevronRight, MoreHorizontal } from "lucide-react"; -import { cn } from "../utils"; -import { ButtonProps, buttonVariants } from "./button"; +import { cn } from "../utils.js"; +import { ButtonProps, buttonVariants } from "./button.js"; const Pagination = ({ className, ...props }: React.ComponentProps<"nav">) => (