From ca427295b6a0b407ec5692766574085f61f93dc2 Mon Sep 17 00:00:00 2001 From: Melissa Barca Date: Tue, 14 Jul 2026 14:19:58 -0400 Subject: [PATCH] Add .js extensions to relative imports for nodenext consumers --- packages/ai-config/scripts/generate-schema.ts | 2 +- .../__tests__/build-catalog-custom.test.ts | 6 ++--- .../ai-config/src/__tests__/defaults.test.ts | 2 +- .../ai-config/src/__tests__/enforce.test.ts | 4 ++-- .../src/__tests__/load-config.test.ts | 8 +++---- .../src/__tests__/positron-source.test.ts | 2 +- .../src/__tests__/resolve-catalog.test.ts | 6 ++--- .../src/__tests__/resolve-enabled.test.ts | 6 ++--- .../src/__tests__/resolve-models.test.ts | 4 ++-- .../ai-config/src/__tests__/schema.test.ts | 2 +- .../src/__tests__/seed-config.test.ts | 4 ++-- .../ai-config/src/__tests__/smoke.test.ts | 6 ++--- .../src/__tests__/watch-catalog.test.ts | 8 +++---- packages/ai-config/src/build-catalog.ts | 14 ++++++------ packages/ai-config/src/config-source.ts | 2 +- packages/ai-config/src/defaults.ts | 4 ++-- packages/ai-config/src/enforce.ts | 2 +- packages/ai-config/src/index.ts | 22 +++++++++---------- .../src/node/__tests__/paths.test.ts | 2 +- packages/ai-config/src/node/index.ts | 16 +++++++------- packages/ai-config/src/node/load-catalog.ts | 8 +++---- packages/ai-config/src/node/load-config.ts | 8 +++---- packages/ai-config/src/node/mutate-config.ts | 10 ++++----- packages/ai-config/src/node/types.ts | 8 +++---- packages/ai-config/src/node/watch-catalog.ts | 12 +++++----- .../src/positron/authentication-fragment.ts | 2 +- packages/ai-config/src/positron/index.ts | 6 ++--- packages/ai-config/src/resolve-catalog.ts | 10 ++++----- packages/ai-config/src/resolve-connection.ts | 4 ++-- packages/ai-config/src/resolve-enabled.ts | 2 +- packages/ai-config/src/resolve-models.ts | 6 ++--- packages/ai-config/src/schema.ts | 4 ++-- packages/ai-config/src/types.ts | 6 ++--- packages/ai-config/tsconfig.json | 2 ++ 34 files changed, 106 insertions(+), 104 deletions(-) diff --git a/packages/ai-config/scripts/generate-schema.ts b/packages/ai-config/scripts/generate-schema.ts index b29be09..c72ee7f 100644 --- a/packages/ai-config/scripts/generate-schema.ts +++ b/packages/ai-config/scripts/generate-schema.ts @@ -20,7 +20,7 @@ import { fileURLToPath } from "url"; import * as z from "zod/v4"; -import { providersConfigSchema } from "../src/schema"; +import { providersConfigSchema } from "../src/schema.js"; // --------------------------------------------------------------------------- // Schema post-processing utilities diff --git a/packages/ai-config/src/__tests__/build-catalog-custom.test.ts b/packages/ai-config/src/__tests__/build-catalog-custom.test.ts index 18c6e4d..360e7af 100644 --- a/packages/ai-config/src/__tests__/build-catalog-custom.test.ts +++ b/packages/ai-config/src/__tests__/build-catalog-custom.test.ts @@ -4,9 +4,9 @@ import { describe, expect, it } from "vitest"; -import { buildCatalog } from "../build-catalog"; -import type { EnablementLayer } from "../resolve-enabled"; -import type { PlatformBaseline, ProvidersConfig } from "../types"; +import { buildCatalog } from "../build-catalog.js"; +import type { EnablementLayer } from "../resolve-enabled.js"; +import type { PlatformBaseline, ProvidersConfig } from "../types.js"; /** Build the highest-first enablement layer stack from a config's providers map. */ function layersOf(config: ProvidersConfig): EnablementLayer[] { diff --git a/packages/ai-config/src/__tests__/defaults.test.ts b/packages/ai-config/src/__tests__/defaults.test.ts index 5bc1e91..17a8e59 100644 --- a/packages/ai-config/src/__tests__/defaults.test.ts +++ b/packages/ai-config/src/__tests__/defaults.test.ts @@ -11,7 +11,7 @@ import { BEDROCK_DEFAULTS, GOOGLE_VERTEX_DEFAULTS, PROVIDER_CONNECTION_DEFAULTS, -} from "../defaults"; +} from "../defaults.js"; describe("provider connection defaults", () => { it("POSIT_AI_DEFAULTS has expected shape", () => { diff --git a/packages/ai-config/src/__tests__/enforce.test.ts b/packages/ai-config/src/__tests__/enforce.test.ts index 77ccf04..f2510d4 100644 --- a/packages/ai-config/src/__tests__/enforce.test.ts +++ b/packages/ai-config/src/__tests__/enforce.test.ts @@ -4,8 +4,8 @@ import { describe, it, expect } from "vitest"; -import { mergeEnforced } from "../enforce"; -import type { ProvidersConfig } from "../types"; +import { mergeEnforced } from "../enforce.js"; +import type { ProvidersConfig } from "../types.js"; describe("mergeEnforced", () => { it("returns user config when enforced is empty", () => { diff --git a/packages/ai-config/src/__tests__/load-config.test.ts b/packages/ai-config/src/__tests__/load-config.test.ts index eef1272..041dc33 100644 --- a/packages/ai-config/src/__tests__/load-config.test.ts +++ b/packages/ai-config/src/__tests__/load-config.test.ts @@ -8,10 +8,10 @@ import * as path from "path"; import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; -import { loadResolvedProviderCatalog } from "../node/load-catalog"; -import { mutateProvidersConfig } from "../node/mutate-config"; -import type { ProvidersConfig, ResolvedProvider } from "../types"; -import type { PlatformBaseline } from "../types"; +import { loadResolvedProviderCatalog } from "../node/load-catalog.js"; +import { mutateProvidersConfig } from "../node/mutate-config.js"; +import type { ProvidersConfig, ResolvedProvider } from "../types.js"; +import type { PlatformBaseline } from "../types.js"; // --------------------------------------------------------------------------- // Helpers diff --git a/packages/ai-config/src/__tests__/positron-source.test.ts b/packages/ai-config/src/__tests__/positron-source.test.ts index 1020245..bb65262 100644 --- a/packages/ai-config/src/__tests__/positron-source.test.ts +++ b/packages/ai-config/src/__tests__/positron-source.test.ts @@ -14,7 +14,7 @@ import { buildAuthenticationFragment, type PositronAuthSettingDescriptor, type PositronAuthSettingReader, -} from "../positron/authentication-fragment"; +} from "../positron/authentication-fragment.js"; function fakeReader( overrides: { diff --git a/packages/ai-config/src/__tests__/resolve-catalog.test.ts b/packages/ai-config/src/__tests__/resolve-catalog.test.ts index a1cc6d0..6c6233b 100644 --- a/packages/ai-config/src/__tests__/resolve-catalog.test.ts +++ b/packages/ai-config/src/__tests__/resolve-catalog.test.ts @@ -4,9 +4,9 @@ import { describe, expect, it, vi } from "vitest"; -import type { ProviderConfigSource } from "../resolve-catalog"; -import { recoverValidStack, resolveProviderCatalog } from "../resolve-catalog"; -import type { PlatformBaseline, ResolvedProvider } from "../types"; +import type { ProviderConfigSource } from "../resolve-catalog.js"; +import { recoverValidStack, resolveProviderCatalog } from "../resolve-catalog.js"; +import type { PlatformBaseline, ResolvedProvider } from "../types.js"; const STANDALONE: PlatformBaseline = { defaultEnabled: true }; diff --git a/packages/ai-config/src/__tests__/resolve-enabled.test.ts b/packages/ai-config/src/__tests__/resolve-enabled.test.ts index 625c26e..dfcc00c 100644 --- a/packages/ai-config/src/__tests__/resolve-enabled.test.ts +++ b/packages/ai-config/src/__tests__/resolve-enabled.test.ts @@ -4,9 +4,9 @@ import { describe, it, expect } from "vitest"; -import type { EnablementLayer } from "../resolve-enabled"; -import { resolveEnabled } from "../resolve-enabled"; -import type { PlatformBaseline, ProvidersMap } from "../types"; +import type { EnablementLayer } from "../resolve-enabled.js"; +import { resolveEnabled } from "../resolve-enabled.js"; +import type { PlatformBaseline, ProvidersMap } from "../types.js"; const standaloneBaseline: PlatformBaseline = { defaultEnabled: true }; const rstudioBaseline: PlatformBaseline = { diff --git a/packages/ai-config/src/__tests__/resolve-models.test.ts b/packages/ai-config/src/__tests__/resolve-models.test.ts index 7a481b1..a6af788 100644 --- a/packages/ai-config/src/__tests__/resolve-models.test.ts +++ b/packages/ai-config/src/__tests__/resolve-models.test.ts @@ -4,8 +4,8 @@ import { describe, it, expect } from "vitest"; -import { resolveModels } from "../resolve-models"; -import type { ModelInfoLike, ModelsBlock, ResolvedConnection } from "../types"; +import { resolveModels } from "../resolve-models.js"; +import type { ModelInfoLike, ModelsBlock, ResolvedConnection } from "../types.js"; function makeModel(id: string, overrides?: Partial): ModelInfoLike { return { diff --git a/packages/ai-config/src/__tests__/schema.test.ts b/packages/ai-config/src/__tests__/schema.test.ts index cd4b21f..dc785ec 100644 --- a/packages/ai-config/src/__tests__/schema.test.ts +++ b/packages/ai-config/src/__tests__/schema.test.ts @@ -4,7 +4,7 @@ import { describe, it, expect } from "vitest"; -import { enforcedProvidersConfigSchema, providersConfigSchema } from "../schema"; +import { enforcedProvidersConfigSchema, providersConfigSchema } from "../schema.js"; describe("providersConfigSchema", () => { it("accepts an empty config", () => { diff --git a/packages/ai-config/src/__tests__/seed-config.test.ts b/packages/ai-config/src/__tests__/seed-config.test.ts index 2fc648b..a162a4c 100644 --- a/packages/ai-config/src/__tests__/seed-config.test.ts +++ b/packages/ai-config/src/__tests__/seed-config.test.ts @@ -18,8 +18,8 @@ import * as path from "path"; import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; -import { PROVIDERS_CONFIG_VERSION } from "../index"; -import { mutateProvidersConfig } from "../node/mutate-config"; +import { PROVIDERS_CONFIG_VERSION } from "../index.js"; +import { mutateProvidersConfig } from "../node/mutate-config.js"; const mockLogger = { debug: vi.fn(), diff --git a/packages/ai-config/src/__tests__/smoke.test.ts b/packages/ai-config/src/__tests__/smoke.test.ts index d7b13f1..d1cb6bf 100644 --- a/packages/ai-config/src/__tests__/smoke.test.ts +++ b/packages/ai-config/src/__tests__/smoke.test.ts @@ -4,16 +4,16 @@ import { describe, it, expect } from "vitest"; -import { mintCustomProviderId } from "../types"; +import { mintCustomProviderId } from "../types.js"; describe("ai-config", () => { it("pure entry module loads", async () => { - const mod = await import("../index"); + const mod = await import("../index.js"); expect(mod).toBeDefined(); }); it("node entry module loads", async () => { - const mod = await import("../node/index"); + const mod = await import("../node/index.js"); expect(mod).toBeDefined(); }); }); diff --git a/packages/ai-config/src/__tests__/watch-catalog.test.ts b/packages/ai-config/src/__tests__/watch-catalog.test.ts index 5829ba7..3de594a 100644 --- a/packages/ai-config/src/__tests__/watch-catalog.test.ts +++ b/packages/ai-config/src/__tests__/watch-catalog.test.ts @@ -8,10 +8,10 @@ import * as path from "path"; import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; -import type { ProviderCatalogChange, ProviderConfigSourceProvider } from "../node/types"; -import { watchResolvedProviderCatalog } from "../node/watch-catalog"; -import type { ProviderConfigSource } from "../resolve-catalog"; -import type { PlatformBaseline, ProvidersConfig } from "../types"; +import type { ProviderCatalogChange, ProviderConfigSourceProvider } from "../node/types.js"; +import { watchResolvedProviderCatalog } from "../node/watch-catalog.js"; +import type { ProviderConfigSource } from "../resolve-catalog.js"; +import type { PlatformBaseline, ProvidersConfig } from "../types.js"; const mockLogger = { debug: vi.fn(), diff --git a/packages/ai-config/src/build-catalog.ts b/packages/ai-config/src/build-catalog.ts index 01b025f..3365769 100644 --- a/packages/ai-config/src/build-catalog.ts +++ b/packages/ai-config/src/build-catalog.ts @@ -11,9 +11,9 @@ * models (those need credentials + a runtime fetcher ai-config cannot hold). */ -import { PROVIDER_CONNECTION_DEFAULTS } from "./defaults"; -import type { EnablementLayer } from "./resolve-enabled"; -import { resolveEnabled } from "./resolve-enabled"; +import { PROVIDER_CONNECTION_DEFAULTS } from "./defaults.js"; +import type { EnablementLayer } from "./resolve-enabled.js"; +import { resolveEnabled } from "./resolve-enabled.js"; import type { BuiltinProviderBlock, CustomProviderEntry, @@ -22,10 +22,10 @@ import type { ProvidersMap, ResolvedConnection, ResolvedProvider, -} from "./types"; -import { mintCustomProviderId } from "./types"; -import { BUILTIN_PROVIDER_IDS } from "./vocabulary"; -import type { BuiltinProviderId, ClientKind } from "./vocabulary"; +} from "./types.js"; +import { mintCustomProviderId } from "./types.js"; +import { BUILTIN_PROVIDER_IDS } from "./vocabulary.js"; +import type { BuiltinProviderId, ClientKind } from "./vocabulary.js"; // --------------------------------------------------------------------------- // Non-secret connection env var mappings diff --git a/packages/ai-config/src/config-source.ts b/packages/ai-config/src/config-source.ts index 8ba1ee1..e526825 100644 --- a/packages/ai-config/src/config-source.ts +++ b/packages/ai-config/src/config-source.ts @@ -12,7 +12,7 @@ * (`fs`) entry. The node entry re-exports both for back-compat. */ -import type { ProviderConfigSource } from "./resolve-catalog"; +import type { ProviderConfigSource } from "./resolve-catalog.js"; /** * A resource that can be disposed. diff --git a/packages/ai-config/src/defaults.ts b/packages/ai-config/src/defaults.ts index 207ec5c..6a627a4 100644 --- a/packages/ai-config/src/defaults.ts +++ b/packages/ai-config/src/defaults.ts @@ -10,8 +10,8 @@ * configMapper and schema validation. */ -import type { ResolvedConnection } from "./types"; -import type { BuiltinProviderId } from "./vocabulary"; +import type { ResolvedConnection } from "./types.js"; +import type { BuiltinProviderId } from "./vocabulary.js"; /** Posit AI gateway defaults. */ export const POSIT_AI_DEFAULTS = { diff --git a/packages/ai-config/src/enforce.ts b/packages/ai-config/src/enforce.ts index a361cda..37b1a51 100644 --- a/packages/ai-config/src/enforce.ts +++ b/packages/ai-config/src/enforce.ts @@ -11,7 +11,7 @@ * - Primitives: enforced wins. */ -import type { EnforcedProvidersConfig, ProvidersConfig } from "./types"; +import type { EnforcedProvidersConfig, ProvidersConfig } from "./types.js"; /** * Deep-merge `enforced` over `user`, returning a new config object. diff --git a/packages/ai-config/src/index.ts b/packages/ai-config/src/index.ts index 72a8309..324e784 100644 --- a/packages/ai-config/src/index.ts +++ b/packages/ai-config/src/index.ts @@ -24,24 +24,24 @@ export { PROTOCOL_VALUES, RESERVED_PROVIDER_KEYS, SUPPORTED_CUSTOM_CLIENT_KIND_VALUES, -} from "./vocabulary"; +} from "./vocabulary.js"; export type { BuiltinProviderId, ClientKind, Protocol, ReservedProviderKey, SupportedCustomClientKind, -} from "./vocabulary"; +} from "./vocabulary.js"; // --- Schema ---------------------------------------------------------------- -export { enforcedProvidersConfigSchema, providersConfigSchema } from "./schema"; +export { enforcedProvidersConfigSchema, providersConfigSchema } from "./schema.js"; // --- Types (inferred + catalog) -------------------------------------------- export { mintCustomProviderId, MODEL_METADATA_FIELD_NAMES, MODEL_ROUTING_FIELD_NAMES, -} from "./types"; +} from "./types.js"; export type { BuiltinProviderBlock, CustomModel, @@ -61,7 +61,7 @@ export type { ResolvedModelInfo, ResolvedProvider, ResolvedProviderId, -} from "./types"; +} from "./types.js"; // --- Defaults -------------------------------------------------------------- export { @@ -71,23 +71,23 @@ export { OLLAMA_DEFAULTS, POSIT_AI_DEFAULTS, PROVIDER_CONNECTION_DEFAULTS, -} from "./defaults"; +} from "./defaults.js"; // --- Resolution helpers (public) ------------------------------------------- -export { resolveModels } from "./resolve-models"; +export { resolveModels } from "./resolve-models.js"; // --- Deep resolver seam (owns the precedence stack) ------------------------ -export { resolveProviderCatalog } from "./resolve-catalog"; +export { resolveProviderCatalog } from "./resolve-catalog.js"; export type { ProviderConfigSource, ProviderConfigSourceKind, ResolveProviderCatalogOptions, -} from "./resolve-catalog"; +} from "./resolve-catalog.js"; // --- Watchable config-source contracts (pure) ------------------------------ // The seam types a host source implements. Kept in the pure entry so // `ai-config/positron` can build a source without depending on `ai-config/node`. -export type { Disposable, ProviderConfigSourceProvider } from "./config-source"; +export type { Disposable, ProviderConfigSourceProvider } from "./config-source.js"; // --- Enforcement merge ----------------------------------------------------- -export { mergeConfigFragments, mergeEnforced } from "./enforce"; +export { mergeConfigFragments, mergeEnforced } from "./enforce.js"; diff --git a/packages/ai-config/src/node/__tests__/paths.test.ts b/packages/ai-config/src/node/__tests__/paths.test.ts index c8d5938..75be685 100644 --- a/packages/ai-config/src/node/__tests__/paths.test.ts +++ b/packages/ai-config/src/node/__tests__/paths.test.ts @@ -7,7 +7,7 @@ import * as path from "path"; import { describe, expect, it } from "vitest"; -import { AI_CONFIG_DIR, PROVIDERS_CONFIG_PATH, PROVIDERS_LOCKFILE_PATH } from "../paths"; +import { AI_CONFIG_DIR, PROVIDERS_CONFIG_PATH, PROVIDERS_LOCKFILE_PATH } from "../paths.js"; describe("ai-config path constants", () => { const home = os.homedir(); diff --git a/packages/ai-config/src/node/index.ts b/packages/ai-config/src/node/index.ts index 9740d5c..52fcbcb 100644 --- a/packages/ai-config/src/node/index.ts +++ b/packages/ai-config/src/node/index.ts @@ -38,26 +38,26 @@ */ // Re-export everything from the pure entry -export * from "../index"; +export * from "../index.js"; // --- Paths ----------------------------------------------------------------- -export { AI_CONFIG_DIR, PROVIDERS_CONFIG_PATH } from "./paths"; +export { AI_CONFIG_DIR, PROVIDERS_CONFIG_PATH } from "./paths.js"; // --- Read seam (the single deep read seam) --------------------------------- -export { loadResolvedProviderCatalog } from "./load-catalog"; +export { loadResolvedProviderCatalog } from "./load-catalog.js"; // --- Source assembly (file + env fragments → ProviderConfigSource[]) ------- // The deep seam is `loadConfigSources` + `resolveProviderCatalog`; the raw // file/env readers stay internal so callers can't recreate source-assembly or // fallback policy outside ai-config. -export { loadConfigSources } from "./load-config"; -export type { LoadConfigSourcesOptions } from "./load-config"; +export { loadConfigSources } from "./load-config.js"; +export type { LoadConfigSourcesOptions } from "./load-config.js"; // --- Write seam ------------------------------------------------------------ -export { mutateProvidersConfig } from "./mutate-config"; +export { mutateProvidersConfig } from "./mutate-config.js"; // --- Watch seam (the single, source-aware watch seam) ---------------------- -export { watchResolvedProviderCatalog } from "./watch-catalog"; +export { watchResolvedProviderCatalog } from "./watch-catalog.js"; // --- Types ----------------------------------------------------------------- export type { @@ -68,4 +68,4 @@ export type { ProviderCatalogChange, ProviderConfigSourceProvider, WatchCatalogOptions, -} from "./types"; +} from "./types.js"; diff --git a/packages/ai-config/src/node/load-catalog.ts b/packages/ai-config/src/node/load-catalog.ts index f983470..56ff1b2 100644 --- a/packages/ai-config/src/node/load-catalog.ts +++ b/packages/ai-config/src/node/load-catalog.ts @@ -14,10 +14,10 @@ * seam; this function only reads the default node sources and delegates. */ -import { resolveProviderCatalog } from "../resolve-catalog"; -import type { ResolvedProvider } from "../types"; -import { loadConfigSources } from "./load-config"; -import type { LoadCatalogOptions } from "./types"; +import { resolveProviderCatalog } from "../resolve-catalog.js"; +import type { ResolvedProvider } from "../types.js"; +import { loadConfigSources } from "./load-config.js"; +import type { LoadCatalogOptions } from "./types.js"; /** * Load ~/.posit/ai/providers.json, read the enforced/default env overlays, diff --git a/packages/ai-config/src/node/load-config.ts b/packages/ai-config/src/node/load-config.ts index e42b3f3..b902999 100644 --- a/packages/ai-config/src/node/load-config.ts +++ b/packages/ai-config/src/node/load-config.ts @@ -14,10 +14,10 @@ import { promises as fs } from "fs"; -import type { ProviderConfigSource } from "../resolve-catalog"; -import { enforcedProvidersConfigSchema, providersConfigSchema } from "../schema"; -import type { EnforcedProvidersConfig, LoggerLike, ProvidersConfig } from "../types"; -import { DEFAULT_ENV_VAR, ENFORCED_ENV_VAR, PROVIDERS_CONFIG_PATH } from "./paths"; +import type { ProviderConfigSource } from "../resolve-catalog.js"; +import { enforcedProvidersConfigSchema, providersConfigSchema } from "../schema.js"; +import type { EnforcedProvidersConfig, LoggerLike, ProvidersConfig } from "../types.js"; +import { DEFAULT_ENV_VAR, ENFORCED_ENV_VAR, PROVIDERS_CONFIG_PATH } from "./paths.js"; /** Options for assembling the default config sources. */ export interface LoadConfigSourcesOptions { diff --git a/packages/ai-config/src/node/mutate-config.ts b/packages/ai-config/src/node/mutate-config.ts index b05721b..1cc852a 100644 --- a/packages/ai-config/src/node/mutate-config.ts +++ b/packages/ai-config/src/node/mutate-config.ts @@ -19,11 +19,11 @@ import * as path from "path"; import lockfile from "proper-lockfile"; -import { PROVIDERS_CONFIG_VERSION } from "../index"; -import { providersConfigSchema } from "../schema"; -import type { ProvidersConfig } from "../types"; -import { PROVIDERS_CONFIG_PATH } from "./paths"; -import type { LoggerLike, MutateConfigOptions } from "./types"; +import { PROVIDERS_CONFIG_VERSION } from "../index.js"; +import { providersConfigSchema } from "../schema.js"; +import type { ProvidersConfig } from "../types.js"; +import { PROVIDERS_CONFIG_PATH } from "./paths.js"; +import type { LoggerLike, MutateConfigOptions } from "./types.js"; // --------------------------------------------------------------------------- // Lock options diff --git a/packages/ai-config/src/node/types.ts b/packages/ai-config/src/node/types.ts index 393ca1b..5ca756e 100644 --- a/packages/ai-config/src/node/types.ts +++ b/packages/ai-config/src/node/types.ts @@ -6,17 +6,17 @@ * Types specific to the node (filesystem) entry of ai-config. */ -import type { ProviderConfigSourceProvider } from "../config-source"; -import type { LoggerLike, PlatformBaseline, ResolvedProvider } from "../types"; +import type { ProviderConfigSourceProvider } from "../config-source.js"; +import type { LoggerLike, PlatformBaseline, ResolvedProvider } from "../types.js"; // Re-export the pure logger type so node consumers can import it from here. -export type { LoggerLike } from "../types"; +export type { LoggerLike } from "../types.js"; // Re-export the pure config-source contracts so existing `ai-config/node` // consumers keep importing them from here (the seam moved to the pure entry so // `ai-config/positron` can reference it without the node entry — see // `../config-source`). -export type { Disposable, ProviderConfigSourceProvider } from "../config-source"; +export type { Disposable, ProviderConfigSourceProvider } from "../config-source.js"; // --------------------------------------------------------------------------- // Load options diff --git a/packages/ai-config/src/node/watch-catalog.ts b/packages/ai-config/src/node/watch-catalog.ts index 0b93e43..3aead42 100644 --- a/packages/ai-config/src/node/watch-catalog.ts +++ b/packages/ai-config/src/node/watch-catalog.ts @@ -17,17 +17,17 @@ import * as fs from "fs"; import * as path from "path"; -import type { ProviderConfigSource } from "../resolve-catalog"; -import { resolveProviderCatalog } from "../resolve-catalog"; -import type { LoggerLike, ResolvedProvider } from "../types"; -import { readEnvFragment, readFileConfig } from "./load-config"; -import { DEFAULT_ENV_VAR, ENFORCED_ENV_VAR, PROVIDERS_CONFIG_PATH } from "./paths"; +import type { ProviderConfigSource } from "../resolve-catalog.js"; +import { resolveProviderCatalog } from "../resolve-catalog.js"; +import type { LoggerLike, ResolvedProvider } from "../types.js"; +import { readEnvFragment, readFileConfig } from "./load-config.js"; +import { DEFAULT_ENV_VAR, ENFORCED_ENV_VAR, PROVIDERS_CONFIG_PATH } from "./paths.js"; import type { Disposable, ProviderCatalogChange, ProviderConfigSourceProvider, WatchCatalogOptions, -} from "./types"; +} from "./types.js"; /** * Watch the provider config sources for changes and emit typed diff --git a/packages/ai-config/src/positron/authentication-fragment.ts b/packages/ai-config/src/positron/authentication-fragment.ts index 291000e..4bea878 100644 --- a/packages/ai-config/src/positron/authentication-fragment.ts +++ b/packages/ai-config/src/positron/authentication-fragment.ts @@ -23,7 +23,7 @@ * truth for configKeys. */ -import type { BuiltinProviderBlock, EnforcedProvidersConfig } from "../types"; +import type { BuiltinProviderBlock, EnforcedProvidersConfig } from "../types.js"; /** * Reads the `authentication.*` settings the host fragment needs, abstracted diff --git a/packages/ai-config/src/positron/index.ts b/packages/ai-config/src/positron/index.ts index 568e96f..fa5b018 100644 --- a/packages/ai-config/src/positron/index.ts +++ b/packages/ai-config/src/positron/index.ts @@ -22,13 +22,13 @@ import * as vscode from "vscode"; -import type { Disposable, ProviderConfigSourceProvider } from "../config-source"; -import type { ProviderConfigSource } from "../resolve-catalog"; +import type { Disposable, ProviderConfigSourceProvider } from "../config-source.js"; +import type { ProviderConfigSource } from "../resolve-catalog.js"; import { buildAuthenticationFragment, type PositronAuthSettingDescriptor, type PositronAuthSettingReader, -} from "./authentication-fragment"; +} from "./authentication-fragment.js"; export { buildAuthenticationFragment }; export type { PositronAuthSettingDescriptor, PositronAuthSettingReader }; diff --git a/packages/ai-config/src/resolve-catalog.ts b/packages/ai-config/src/resolve-catalog.ts index 1977786..32d96ff 100644 --- a/packages/ai-config/src/resolve-catalog.ts +++ b/packages/ai-config/src/resolve-catalog.ts @@ -17,17 +17,17 @@ * identical precedence semantics for free. */ -import { buildCatalog } from "./build-catalog"; -import { mergeConfigFragments } from "./enforce"; -import type { EnablementLayer } from "./resolve-enabled"; -import { providersConfigSchema } from "./schema"; +import { buildCatalog } from "./build-catalog.js"; +import { mergeConfigFragments } from "./enforce.js"; +import type { EnablementLayer } from "./resolve-enabled.js"; +import { providersConfigSchema } from "./schema.js"; import type { EnforcedProvidersConfig, LoggerLike, PlatformBaseline, ProvidersConfig, ResolvedProvider, -} from "./types"; +} from "./types.js"; // --------------------------------------------------------------------------- // Source model diff --git a/packages/ai-config/src/resolve-connection.ts b/packages/ai-config/src/resolve-connection.ts index 8e7f9de..8e4fc6e 100644 --- a/packages/ai-config/src/resolve-connection.ts +++ b/packages/ai-config/src/resolve-connection.ts @@ -8,8 +8,8 @@ * Internal to the catalog builder and `resolveModels`. */ -import type { ResolvedConnection } from "./types"; -import type { Protocol } from "./vocabulary"; +import type { ResolvedConnection } from "./types.js"; +import type { Protocol } from "./vocabulary.js"; /** * Resolve the base URL / endpoint for a model + protocol combination. diff --git a/packages/ai-config/src/resolve-enabled.ts b/packages/ai-config/src/resolve-enabled.ts index 00ebb45..eed9f05 100644 --- a/packages/ai-config/src/resolve-enabled.ts +++ b/packages/ai-config/src/resolve-enabled.ts @@ -15,7 +15,7 @@ import type { EnforcedProvidersMap, PlatformBaseline, ProvidersMap, -} from "./types"; +} from "./types.js"; /** A single enablement layer — a providers map from one config source. */ export type EnablementLayer = ProvidersMap | EnforcedProvidersMap | undefined; diff --git a/packages/ai-config/src/resolve-models.ts b/packages/ai-config/src/resolve-models.ts index 2a4c81b..b323fe0 100644 --- a/packages/ai-config/src/resolve-models.ts +++ b/packages/ai-config/src/resolve-models.ts @@ -27,7 +27,7 @@ * relative to provider config, so the pipeline tracks them separately. */ -import { resolveEndpoint } from "./resolve-connection"; +import { resolveEndpoint } from "./resolve-connection.js"; import type { CustomModel, ModelInfoLike, @@ -35,8 +35,8 @@ import type { ModelsBlock, ResolvedConnection, ResolvedModelInfo, -} from "./types"; -import type { Protocol } from "./vocabulary"; +} from "./types.js"; +import type { Protocol } from "./vocabulary.js"; /** * Map from legacy bridge protocol values to the widened Protocol enum. diff --git a/packages/ai-config/src/schema.ts b/packages/ai-config/src/schema.ts index def9143..d7b10c9 100644 --- a/packages/ai-config/src/schema.ts +++ b/packages/ai-config/src/schema.ts @@ -18,8 +18,8 @@ import { PROTOCOL_VALUES, RESERVED_PROVIDER_KEYS, SUPPORTED_CUSTOM_CLIENT_KIND_VALUES, -} from "./vocabulary"; -import type { BuiltinProviderId, SupportedCustomClientKind } from "./vocabulary"; +} from "./vocabulary.js"; +import type { BuiltinProviderId, SupportedCustomClientKind } from "./vocabulary.js"; // --------------------------------------------------------------------------- // Leaf enums diff --git a/packages/ai-config/src/types.ts b/packages/ai-config/src/types.ts index ece907d..f6405ec 100644 --- a/packages/ai-config/src/types.ts +++ b/packages/ai-config/src/types.ts @@ -27,9 +27,9 @@ import type { modelsBlockSchema, providersConfigSchema, providersMapSchema, -} from "./schema"; -import { isBuiltinProviderId, RESERVED_PROVIDER_KEYS } from "./vocabulary"; -import type { BuiltinProviderId, ClientKind, Protocol } from "./vocabulary"; +} from "./schema.js"; +import { isBuiltinProviderId, RESERVED_PROVIDER_KEYS } from "./vocabulary.js"; +import type { BuiltinProviderId, ClientKind, Protocol } from "./vocabulary.js"; // --------------------------------------------------------------------------- // Schema-inferred types (on-disk shapes) diff --git a/packages/ai-config/tsconfig.json b/packages/ai-config/tsconfig.json index f07d54c..3cbc547 100644 --- a/packages/ai-config/tsconfig.json +++ b/packages/ai-config/tsconfig.json @@ -1,6 +1,8 @@ { "extends": "../../tsconfig.base.json", "compilerOptions": { + "module": "nodenext", + "moduleResolution": "nodenext", "rootDir": "src", "outDir": "dist", "composite": true,