@askdb/config 1.0.0-beta.12 → 1.0.0-beta.13

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.
Files changed (48) hide show
  1. package/README.md +19 -17
  2. package/dist/bootstrap.d.ts +3 -0
  3. package/dist/bootstrap.d.ts.map +1 -1
  4. package/dist/bootstrap.js +16 -0
  5. package/dist/bootstrap.js.map +1 -1
  6. package/dist/constants.d.ts +15 -4
  7. package/dist/constants.d.ts.map +1 -1
  8. package/dist/constants.js +15 -4
  9. package/dist/constants.js.map +1 -1
  10. package/dist/defaults.d.ts +33 -1
  11. package/dist/defaults.d.ts.map +1 -1
  12. package/dist/defaults.js +46 -10
  13. package/dist/defaults.js.map +1 -1
  14. package/dist/diagnostics.d.ts +10 -0
  15. package/dist/diagnostics.d.ts.map +1 -0
  16. package/dist/diagnostics.js +13 -0
  17. package/dist/diagnostics.js.map +1 -0
  18. package/dist/flatten.d.ts +8 -1
  19. package/dist/flatten.d.ts.map +1 -1
  20. package/dist/flatten.js +100 -116
  21. package/dist/flatten.js.map +1 -1
  22. package/dist/index.d.ts +4 -3
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.js +2 -1
  25. package/dist/index.js.map +1 -1
  26. package/dist/normalize.d.ts +53 -0
  27. package/dist/normalize.d.ts.map +1 -0
  28. package/dist/normalize.js +398 -0
  29. package/dist/normalize.js.map +1 -0
  30. package/dist/projection.d.ts +12 -1
  31. package/dist/projection.d.ts.map +1 -1
  32. package/dist/projection.js +12 -3
  33. package/dist/projection.js.map +1 -1
  34. package/dist/runtime-config.d.ts +43 -3
  35. package/dist/runtime-config.d.ts.map +1 -1
  36. package/dist/runtime-config.js +57 -12
  37. package/dist/runtime-config.js.map +1 -1
  38. package/dist/scaffold/ai.d.ts +30 -0
  39. package/dist/scaffold/ai.d.ts.map +1 -0
  40. package/dist/scaffold/ai.js +54 -0
  41. package/dist/scaffold/ai.js.map +1 -0
  42. package/dist/scaffold/index.d.ts +8 -0
  43. package/dist/scaffold/index.d.ts.map +1 -0
  44. package/dist/scaffold/index.js +7 -0
  45. package/dist/scaffold/index.js.map +1 -0
  46. package/dist/types.d.ts +174 -106
  47. package/dist/types.d.ts.map +1 -1
  48. package/package.json +9 -4
@@ -1,6 +1,25 @@
1
1
  import { ASKDB_STUDIO_EXECUTE_PROVIDERS } from "./constants.js";
2
- import { DEFAULT_INTROSPECT_OUTPUT_DIR, DEFAULT_STUDIO_EXECUTE_MAX_ROWS, DEFAULT_STUDIO_EXECUTE_TIMEOUT_MS, parsePositiveInteger, } from "./defaults.js";
2
+ import { DEFAULT_HTTP_API_REQUEST_TIMEOUT_MS, DEFAULT_INTROSPECT_OUTPUT_DIR, DEFAULT_STUDIO_EXECUTE_MAX_ROWS, DEFAULT_STUDIO_EXECUTE_TIMEOUT_MS, parseHttpApiRequestTimeoutMs, parsePositiveInteger, } from "./defaults.js";
3
+ import { aiEmbeddingEnv, aiLanguageEnv } from "./flatten.js";
4
+ import { normalizeAskDbConfig } from "./normalize.js";
3
5
  import { flatToAiEnv, getAskDbRuntimeStore } from "./runtime-store.js";
6
+ function isTruthyFlag(raw) {
7
+ return raw !== undefined && ["1", "true", "yes"].includes(raw.toLowerCase());
8
+ }
9
+ /** Normalization is pure, so it runs once per installed config object. */
10
+ const normalizedByConfig = new WeakMap();
11
+ function normalizedFor(structured) {
12
+ let normalized = normalizedByConfig.get(structured);
13
+ if (!normalized) {
14
+ normalized = normalizeAskDbConfig(structured);
15
+ normalizedByConfig.set(structured, normalized);
16
+ }
17
+ return normalized;
18
+ }
19
+ /** The runtime view of a resolved `ai` section, with `env` built from its connection only. */
20
+ function runtimeSection(section, env) {
21
+ return { provider: section.provider, connection: section.connection.name, model: section.model, env };
22
+ }
4
23
  function pickFlat(flat, key) {
5
24
  const v = flat[key];
6
25
  if (v === undefined || v.trim() === "")
@@ -13,15 +32,26 @@ function pickFlat(flat, key) {
13
32
  export function getAskDbRuntimeConfig() {
14
33
  const { structured, flat } = getAskDbRuntimeStore();
15
34
  const aiEnv = flatToAiEnv(flat);
35
+ const { config: normalized, deprecations } = normalizedFor(structured);
36
+ const language = normalized.ai.language;
37
+ const embeddingSection = normalized.ai.embedding;
38
+ const embedding = embeddingSection
39
+ ? {
40
+ ...runtimeSection(embeddingSection, aiEmbeddingEnv(embeddingSection)),
41
+ dimensions: embeddingSection.dimensions,
42
+ }
43
+ : undefined;
44
+ // The RAG CLI's OpenAI embedder never reads another provider's key or base URL.
45
+ const openaiEmbedding = embedding?.provider === "openai" ? embedding : undefined;
16
46
  const logStdoutRaw = pickFlat(flat, "ASKDB_LOG_STDOUT");
17
- const logStdout = logStdoutRaw !== undefined && ["1", "true", "yes"].includes(logStdoutRaw.toLowerCase());
47
+ const logStdout = isTruthyFlag(logStdoutRaw);
18
48
  const portRaw = pickFlat(flat, "PORT");
19
49
  const portParsed = portRaw !== undefined ? Number(portRaw) : NaN;
20
50
  const port = structured.httpApi?.listen?.port ??
21
51
  (!Number.isNaN(portParsed) ? portParsed : 3000);
22
52
  const host = structured.httpApi?.listen?.host ?? pickFlat(flat, "HOST") ?? "127.0.0.1";
23
53
  const omitRaw = pickFlat(flat, "ASKDB_OMIT_SENSITIVE_FROM_PROMPT");
24
- const omitFromFlat = omitRaw !== undefined && ["1", "true", "yes"].includes(omitRaw.toLowerCase());
54
+ const omitFromFlat = isTruthyFlag(omitRaw);
25
55
  const prismaSchemaPathRaw = structured.introspection.provider === "prisma"
26
56
  ? structured.introspection.providerConfig?.prisma?.schemaPath?.trim()
27
57
  : undefined;
@@ -52,6 +82,8 @@ export function getAskDbRuntimeConfig() {
52
82
  flat,
53
83
  ai: {
54
84
  aiEnv,
85
+ language: { ...runtimeSection(language, aiLanguageEnv(language)), modelFamily: language.modelFamily },
86
+ embedding,
55
87
  },
56
88
  introspection: {
57
89
  provider: structured.introspection.provider,
@@ -66,15 +98,19 @@ export function getAskDbRuntimeConfig() {
66
98
  DEFAULT_INTROSPECT_OUTPUT_DIR,
67
99
  },
68
100
  rag: {
69
- embedder: {
70
- apiKey: pickFlat(flat, "ASKDB_RAG_EMBEDDER_API_KEY") ??
71
- pickFlat(flat, "ASKDB_AI_API_KEY") ??
72
- pickFlat(flat, "OPENAI_API_KEY"),
73
- baseURL: pickFlat(flat, "ASKDB_RAG_EMBEDDER_BASE_URL") ??
74
- pickFlat(flat, "ASKDB_AI_BASE_URL") ??
75
- pickFlat(flat, "OPENAI_BASE_URL"),
76
- model: pickFlat(flat, "ASKDB_RAG_EMBEDDER_MODEL"),
77
- },
101
+ embedder: openaiEmbedding
102
+ ? {
103
+ apiKey: openaiEmbedding.env.OPENAI_API_KEY,
104
+ baseURL: openaiEmbedding.env.OPENAI_BASE_URL,
105
+ model: openaiEmbedding.model,
106
+ }
107
+ : {
108
+ apiKey: pickFlat(flat, "OPENAI_API_KEY"),
109
+ baseURL: pickFlat(flat, "OPENAI_BASE_URL"),
110
+ model: undefined,
111
+ },
112
+ store: normalized.rag.store,
113
+ storeConfig: normalized.rag.storeConfig,
78
114
  },
79
115
  logging: {
80
116
  level: structured.logging?.level ?? pickFlat(flat, "ASKDB_LOG_LEVEL"),
@@ -84,6 +120,14 @@ export function getAskDbRuntimeConfig() {
84
120
  },
85
121
  httpApi: {
86
122
  listen: { port, host },
123
+ // Only a real boolean counts: flattening rejects anything else, so a store installed
124
+ // without it falls back to the flat key, which is set only for `true`.
125
+ allowSchemaOverride: typeof structured.httpApi?.allowSchemaOverride === "boolean"
126
+ ? structured.httpApi.allowSchemaOverride
127
+ : isTruthyFlag(pickFlat(flat, "ASKDB_HTTP_ALLOW_SCHEMA_OVERRIDE")),
128
+ requestTimeoutMs: parseHttpApiRequestTimeoutMs(structured.httpApi?.requestTimeoutMs, "httpApi.requestTimeoutMs") ??
129
+ parseHttpApiRequestTimeoutMs(pickFlat(flat, "ASKDB_HTTP_REQUEST_TIMEOUT_MS"), "ASKDB_HTTP_REQUEST_TIMEOUT_MS") ??
130
+ DEFAULT_HTTP_API_REQUEST_TIMEOUT_MS,
87
131
  },
88
132
  dev: {
89
133
  mockSql: structured.dev?.mockSql ?? pickFlat(flat, "ASKDB_MOCK_SQL"),
@@ -98,6 +142,7 @@ export function getAskDbRuntimeConfig() {
98
142
  studio: {
99
143
  execute: resolveStudioExecuteConfig(structured, flat),
100
144
  },
145
+ deprecations,
101
146
  };
102
147
  }
103
148
  function resolveStudioExecuteConfig(structured, flat) {
@@ -1 +1 @@
1
- {"version":3,"file":"runtime-config.js","sourceRoot":"","sources":["../src/runtime-config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime-config.js","sourceRoot":"","sources":["../src/runtime-config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import { type AskDbAiProviderId } from "../constants.js";
2
+ /** An env var a scaffolded config reads through `env()`. */
3
+ export type AskDbScaffoldEnvVar = {
4
+ name: string;
5
+ /** Short description for `.env.example` and setup UIs. */
6
+ purpose: string;
7
+ };
8
+ export type AskDbAiConfigScaffoldInput = {
9
+ provider: AskDbAiProviderId;
10
+ /** Env var NAME for the API key. */
11
+ keyEnv: string;
12
+ /** Env var NAME for the language model (the deployment name on Azure). Omit to use the provider's default model. */
13
+ modelEnv?: string;
14
+ };
15
+ export type AskDbAiConfigScaffold = {
16
+ /** The `ai: { … },` property, indented for the top level of `defineConfig({ … })`. */
17
+ source: string;
18
+ /** Every env var `source` reads, in order. */
19
+ envVars: AskDbScaffoldEnvVar[];
20
+ };
21
+ /**
22
+ * Renders the `ai` block of a new `askdb.config.ts` (a provider connection, plus
23
+ * `ai.language` when a model env var is given), plus the env vars it reads. `askdb init` and Studio's setup wizard both call this, so the fields
24
+ * a provider needs to start (e.g. Azure's `resourceName`) live in one place.
25
+ *
26
+ * Every value is emitted as a JSON string literal: the generated file is
27
+ * executed when the config loads, so a raw quote in a name must not inject code.
28
+ */
29
+ export declare function renderAskDbAiConfigScaffold(input: AskDbAiConfigScaffoldInput): AskDbAiConfigScaffold;
30
+ //# sourceMappingURL=ai.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai.d.ts","sourceRoot":"","sources":["../../src/scaffold/ai.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAE7E,4DAA4D;AAC5D,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,0DAA0D;IAC1D,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG;IACvC,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,oCAAoC;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,oHAAoH;IACpH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,sFAAsF;IACtF,MAAM,EAAE,MAAM,CAAC;IACf,8CAA8C;IAC9C,OAAO,EAAE,mBAAmB,EAAE,CAAC;CAChC,CAAC;AAYF;;;;;;;GAOG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,0BAA0B,GAAG,qBAAqB,CAmCpG"}
@@ -0,0 +1,54 @@
1
+ import { ASKDB_AI_PROVIDERS } from "../constants.js";
2
+ function isAiProvider(provider) {
3
+ return ASKDB_AI_PROVIDERS.includes(provider);
4
+ }
5
+ /**
6
+ * Env var the scaffold reads `resourceName` from. It's also the name the Azure
7
+ * adapter reads when there's no config file.
8
+ */
9
+ const AZURE_RESOURCE_NAME_ENV = "AZURE_RESOURCE_NAME";
10
+ /**
11
+ * Renders the `ai` block of a new `askdb.config.ts` (a provider connection, plus
12
+ * `ai.language` when a model env var is given), plus the env vars it reads. `askdb init` and Studio's setup wizard both call this, so the fields
13
+ * a provider needs to start (e.g. Azure's `resourceName`) live in one place.
14
+ *
15
+ * Every value is emitted as a JSON string literal: the generated file is
16
+ * executed when the config loads, so a raw quote in a name must not inject code.
17
+ */
18
+ export function renderAskDbAiConfigScaffold(input) {
19
+ const { provider, keyEnv, modelEnv } = input;
20
+ // The provider id is emitted as an object key, so only known ids get through.
21
+ if (!isAiProvider(provider)) {
22
+ throw new Error(`Unknown AI provider: ${JSON.stringify(provider)}`);
23
+ }
24
+ const envVars = [{ name: keyEnv, purpose: `${provider} API key` }];
25
+ const fields = [`apiKey: env(${JSON.stringify(keyEnv)}),`];
26
+ // The provider connection holds the key and endpoint only; the model choice lives in `ai.language`.
27
+ let language = "";
28
+ if (modelEnv) {
29
+ envVars.push({ name: modelEnv, purpose: `${provider} model override` });
30
+ language = `
31
+ language: {
32
+ model: env(${JSON.stringify(modelEnv)}),
33
+ },`;
34
+ }
35
+ // `AzureConnection` / `FoundryConnection` need `resourceName` or `baseUrl`; the
36
+ // adapter refuses to start without one. Scaffold the resource-name form.
37
+ if (provider === "azure" || provider === "foundry") {
38
+ envVars.push({
39
+ name: AZURE_RESOURCE_NAME_ENV,
40
+ purpose: 'Azure resource name, e.g. "my-resource" for https://my-resource.openai.azure.com',
41
+ });
42
+ fields.push(`resourceName: env(${JSON.stringify(AZURE_RESOURCE_NAME_ENV)}),`);
43
+ }
44
+ const source = ` ai: {
45
+ provider: ${JSON.stringify(provider)},
46
+ providerConfig: {
47
+ ${provider}: {
48
+ ${fields.map((field) => ` ${field}`).join("\n")}
49
+ },
50
+ },${language}
51
+ },`;
52
+ return { source, envVars };
53
+ }
54
+ //# sourceMappingURL=ai.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai.js","sourceRoot":"","sources":["../../src/scaffold/ai.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAA0B,MAAM,iBAAiB,CAAC;AAwB7E,SAAS,YAAY,CAAC,QAAgB;IACpC,OAAQ,kBAAwC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACtE,CAAC;AAED;;;GAGG;AACH,MAAM,uBAAuB,GAAG,qBAAqB,CAAC;AAEtD;;;;;;;GAOG;AACH,MAAM,UAAU,2BAA2B,CAAC,KAAiC;IAC3E,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAC7C,8EAA8E;IAC9E,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,wBAAwB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACtE,CAAC;IACD,MAAM,OAAO,GAA0B,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,QAAQ,UAAU,EAAE,CAAC,CAAC;IAC1F,MAAM,MAAM,GAAG,CAAC,eAAe,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC3D,oGAAoG;IACpG,IAAI,QAAQ,GAAG,EAAE,CAAC;IAClB,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,QAAQ,iBAAiB,EAAE,CAAC,CAAC;QACxE,QAAQ,GAAG;;mBAEI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;OACpC,CAAC;IACN,CAAC;IACD,gFAAgF;IAChF,yEAAyE;IACzE,IAAI,QAAQ,KAAK,OAAO,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QACnD,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,uBAAuB;YAC7B,OAAO,EAAE,kFAAkF;SAC5F,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,qBAAqB,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;IAChF,CAAC;IACD,MAAM,MAAM,GAAG;gBACD,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;;QAEhC,QAAQ;EACd,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,WAAW,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;QAE9C,QAAQ;KACX,CAAC;IACJ,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AAC7B,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * `@askdb/config/scaffold`: helpers for tools that write a new `askdb.config.ts`
3
+ * (`askdb init`, Studio's setup wizard). Kept off the main entry, which user
4
+ * configs import, so tooling can change without touching the config API.
5
+ */
6
+ export { renderAskDbAiConfigScaffold } from "./ai.js";
7
+ export type { AskDbAiConfigScaffold, AskDbAiConfigScaffoldInput, AskDbScaffoldEnvVar } from "./ai.js";
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/scaffold/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,2BAA2B,EAAE,MAAM,SAAS,CAAC;AACtD,YAAY,EAAE,qBAAqB,EAAE,0BAA0B,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * `@askdb/config/scaffold`: helpers for tools that write a new `askdb.config.ts`
3
+ * (`askdb init`, Studio's setup wizard). Kept off the main entry, which user
4
+ * configs import, so tooling can change without touching the config API.
5
+ */
6
+ export { renderAskDbAiConfigScaffold } from "./ai.js";
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/scaffold/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,2BAA2B,EAAE,MAAM,SAAS,CAAC"}
package/dist/types.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { AskDbDialectId, AskDbLogLevel, AskDbModeV1, AskDbRagEmbedder, AskDbRagStore, AskDbReasoningEffort, AskDbStudioExecuteProvider } from "./constants.js";
1
+ import type { AskDbAiProviderId, AskDbDialectId, AskDbLogLevel, AskDbModeV1, AskDbRagEmbedder, AskDbRagStore, AskDbReasoningEffort, AskDbStudioExecuteProvider } from "./constants.js";
2
2
  /**
3
3
  * Authoring-time AskDB configuration: nested groups (`ai`, `introspection`, `rag`, …)
4
4
  * passed to {@link defineConfig} in `askdb.config.*`, then flattened to canonical env keys for the runtime snapshot.
@@ -7,48 +7,104 @@ import type { AskDbDialectId, AskDbLogLevel, AskDbModeV1, AskDbRagEmbedder, AskD
7
7
  * `defineConfig({ ... } satisfies AskDbConfig)` or `const cfg = { ... } satisfies AskDbConfig`.
8
8
  *
9
9
  */
10
- export type OpenaiConfig = {
10
+ /** Legacy model fields every connection type still accepts until the 1.0 cutover. */
11
+ type LegacyConnectionModel = {
12
+ /**
13
+ * @deprecated Use `ai.language.model`. Translated at load (with a warning) when this is the
14
+ * language section's connection, ignored on any other connection. Removed at 1.0.
15
+ */
16
+ model?: string;
17
+ };
18
+ /** Legacy Azure / Foundry field, also translated at load until the 1.0 cutover. */
19
+ type LegacyConnectionModelFamily = {
20
+ /** @deprecated Use `ai.language.modelFamily`. Removed at 1.0. */
21
+ modelFamily?: string;
22
+ };
23
+ /** OpenAI connection (`ai.providerConfig.openai`). */
24
+ export type OpenaiConnection = LegacyConnectionModel & {
25
+ /** Flattened to `OPENAI_API_KEY`. */
11
26
  apiKey?: string;
27
+ /** Flattened to `OPENAI_BASE_URL`; use it for an OpenAI-compatible endpoint. */
12
28
  baseUrl?: string;
13
- /** When unset, `flattenAskDbConfig` applies the default OpenAI chat model (see `@askdb/config` defaults). */
14
- model?: string;
15
29
  };
16
- export type AzureConfig = {
30
+ /** Azure OpenAI connection (`ai.providerConfig.azure`). */
31
+ export type AzureConnection = LegacyConnectionModel & LegacyConnectionModelFamily & {
17
32
  apiKey?: string;
18
33
  secondaryApiKey?: string;
19
- baseUrl?: string;
20
- /** When unset, `flattenAskDbConfig` applies the default Azure deployment name (see `@askdb/config` defaults). */
21
- model?: string;
22
- apiVersion?: string;
23
34
  /**
24
- * Underlying model id backing `model` (the deployment name), e.g. `"gpt-5"`
25
- * or `"o3-mini"`. Deployment names are arbitrary aliases chosen at deploy
26
- * time, so AskDB can't always infer reasoning-model support from `model`
27
- * alone — set this when your deployment name doesn't match the model id.
35
+ * Azure resource name — the subdomain of your endpoint, e.g. `"my-foundry"`
36
+ * for `https://my-foundry.openai.azure.com`. One of `resourceName` or
37
+ * `baseUrl` is required.
28
38
  */
29
- modelFamily?: string;
39
+ resourceName?: string;
40
+ /** Full endpoint URL. Overrides `resourceName` when both are set. */
41
+ baseUrl?: string;
42
+ apiVersion?: string;
30
43
  };
31
- export type FoundryConfig = {
44
+ /** Microsoft Foundry connection (`ai.providerConfig.foundry`): the same fields as {@link AzureConnection}. */
45
+ export type FoundryConnection = AzureConnection;
46
+ /** Anthropic connection (`ai.providerConfig.anthropic`). Anthropic has no embeddings API. */
47
+ export type AnthropicConnection = LegacyConnectionModel & {
32
48
  apiKey?: string;
33
- secondaryApiKey?: string;
34
- model?: string;
35
- apiVersion?: string;
36
49
  baseUrl?: string;
37
- /** See {@link AzureConfig.modelFamily}. */
38
- modelFamily?: string;
39
50
  };
40
- export type AnthropicConfig = {
51
+ /** Google Gemini connection (`ai.providerConfig.google`). */
52
+ export type GoogleConnection = LegacyConnectionModel & {
41
53
  apiKey?: string;
42
54
  baseUrl?: string;
43
- /** When unset, `flattenAskDbConfig` applies the default Anthropic chat model (see `@askdb/config` defaults). */
44
- model?: string;
45
55
  };
46
- export type GoogleConfig = {
56
+ /** Vercel AI Gateway connection (`ai.providerConfig.gateway`), built into `ai` — no extra provider package. */
57
+ export type GatewayConnection = LegacyConnectionModel & {
58
+ /** AI Gateway API key. Flattened to `AI_GATEWAY_API_KEY`. */
47
59
  apiKey?: string;
48
60
  baseUrl?: string;
49
- /** When unset, `flattenAskDbConfig` applies the default Gemini chat model (see `@askdb/config` defaults). */
50
- model?: string;
51
61
  };
62
+ /**
63
+ * Connection for a provider AskDB has no dedicated type for, keyed by its provider id
64
+ * (`ai.providerConfig.mistral`). Flattened to the universal `ASKDB_AI_*` keys; works end to
65
+ * end only when the consuming registry has an adapter registered under that provider id.
66
+ */
67
+ export type CustomConnection = LegacyConnectionModel & {
68
+ apiKey?: string;
69
+ baseUrl?: string;
70
+ };
71
+ /** A connection plus its name, unique within its provider. */
72
+ export type AiNamedConnection<T> = T & {
73
+ /** Defaults to `"default"`. Unique within its provider. */
74
+ name?: string;
75
+ };
76
+ /** One connection, or a list of them when a provider needs more than one (for example two Azure resources). */
77
+ export type AiConnections<T> = AiNamedConnection<T> | readonly AiNamedConnection<T>[];
78
+ /**
79
+ * `ai.providerConfig`: provider connections only (keys, endpoints, resources, API versions),
80
+ * keyed by provider id. The model choice lives in `ai.language` and `ai.embedding`.
81
+ */
82
+ export type AiProviderConnections = {
83
+ openai?: AiConnections<OpenaiConnection>;
84
+ azure?: AiConnections<AzureConnection>;
85
+ foundry?: AiConnections<FoundryConnection>;
86
+ anthropic?: AiConnections<AnthropicConnection>;
87
+ google?: AiConnections<GoogleConnection>;
88
+ gateway?: AiConnections<GatewayConnection>;
89
+ /**
90
+ * Any other key is a custom provider id (an adapter registered under that name), whose
91
+ * connection is a {@link CustomConnection}. TypeScript also checks the keys above against this
92
+ * signature, so it accepts the widest built-in connection (Azure's) too.
93
+ */
94
+ [provider: string]: AiConnections<CustomConnection> | AiConnections<AzureConnection> | undefined;
95
+ };
96
+ /** @deprecated Use {@link OpenaiConnection}. Removed at 1.0. */
97
+ export type OpenaiConfig = OpenaiConnection;
98
+ /** @deprecated Use {@link AzureConnection}. Removed at 1.0. */
99
+ export type AzureConfig = AzureConnection;
100
+ /** @deprecated Use {@link FoundryConnection}. Removed at 1.0. */
101
+ export type FoundryConfig = FoundryConnection;
102
+ /** @deprecated Use {@link AnthropicConnection}. Removed at 1.0. */
103
+ export type AnthropicConfig = AnthropicConnection;
104
+ /** @deprecated Use {@link GoogleConnection}. Removed at 1.0. */
105
+ export type GoogleConfig = GoogleConnection;
106
+ /** @deprecated Use {@link GatewayConnection}. Removed at 1.0. */
107
+ export type GatewayConfig = GatewayConnection;
52
108
  /**
53
109
  * Provider-portable reasoning/latency effort for AskDB model calls. Unset
54
110
  * (the default) preserves current behavior: no reasoning `providerOptions`
@@ -68,92 +124,78 @@ export type AskDbAiReasoningConfig = {
68
124
  */
69
125
  enrichment?: AskDbReasoningEffort;
70
126
  };
71
- /** All provider-specific configs as optional fields — intersected per-branch to require only the active provider's key. */
72
- export type AiProviderConfigs = {
73
- openai?: OpenaiConfig;
74
- azure?: AzureConfig;
75
- foundry?: FoundryConfig;
76
- anthropic?: AnthropicConfig;
77
- google?: GoogleConfig;
78
- };
79
- /** Discriminated union branch for `ai` when `provider` is `"openai"`. */
80
- export type OpenaiAiConfig = {
81
- provider: "openai";
82
- providerConfig: AiProviderConfigs & {
83
- openai: OpenaiConfig;
84
- };
85
- reasoning?: AskDbAiReasoningConfig;
86
- };
87
- /** Discriminated union branch for `ai` when `provider` is `"azure"`. */
88
- export type AzureAiConfig = {
89
- provider: "azure";
90
- providerConfig: AiProviderConfigs & {
91
- azure: AzureConfig;
92
- };
93
- reasoning?: AskDbAiReasoningConfig;
94
- };
95
- /** Discriminated union branch for `ai` when `provider` is `"foundry"`. */
96
- export type FoundryAiConfig = {
97
- provider: "foundry";
98
- providerConfig: AiProviderConfigs & {
99
- foundry: FoundryConfig;
100
- };
101
- reasoning?: AskDbAiReasoningConfig;
102
- };
103
- /** Discriminated union branch for `ai` when `provider` is `"anthropic"`. */
104
- export type AnthropicAiConfig = {
105
- provider: "anthropic";
106
- providerConfig: AiProviderConfigs & {
107
- anthropic: AnthropicConfig;
108
- };
109
- reasoning?: AskDbAiReasoningConfig;
110
- };
111
- /** Discriminated union branch for `ai` when `provider` is `"google"`. */
112
- export type GoogleAiConfig = {
113
- provider: "google";
114
- providerConfig: AiProviderConfigs & {
115
- google: GoogleConfig;
116
- };
127
+ /** `ai.language`: the language model AskDB generates SQL and enrichment suggestions with. */
128
+ export type AskDbAiLanguageConfig = {
129
+ /** Defaults to `ai.provider`. */
130
+ provider?: AskDbAiProviderId | (string & {});
131
+ /** Name of a connection in `ai.providerConfig.<provider>`. Defaults to `"default"`. */
132
+ connection?: string;
133
+ /** Defaults to the provider's default language model (none for a custom provider). On Azure, the deployment name. */
134
+ model?: string;
135
+ /**
136
+ * Underlying model id when `model` is an alias, e.g. `"gpt-5"` or `"o3-mini"` behind an Azure
137
+ * deployment name. Deployment names are arbitrary, so AskDB can't always infer reasoning-model
138
+ * support from `model` alone. Read on Azure and Foundry.
139
+ */
140
+ modelFamily?: string;
117
141
  reasoning?: AskDbAiReasoningConfig;
118
142
  };
119
- /** Generic connection settings for a provider AskDB has no dedicated branch for.
120
- * Flattened to the universal ASKDB_AI_* keys; works end to end only when the
121
- * consuming registry has an adapter registered under this provider name. */
122
- export type CustomProviderConfig = {
123
- apiKey?: string;
124
- baseUrl?: string;
143
+ /** `ai.embedding`: the embedding model behind `rag.embedder: "ai"`. Ignored when `rag.embedder` is `"mock"`. */
144
+ export type AskDbAiEmbeddingConfig = {
145
+ /** Defaults to `ai.provider`. Anthropic has no embeddings API, so it can't be this section's provider. */
146
+ provider?: AskDbAiProviderId | (string & {});
147
+ /** Name of a connection in `ai.providerConfig.<provider>`. Defaults to `"default"`. */
148
+ connection?: string;
149
+ /** Required when `rag.embedder` is `"ai"`: AskDB has no default embedding model. On Azure, the deployment name. */
125
150
  model?: string;
151
+ /**
152
+ * Vector size to request from the provider, as a positive integer or a string holding one, for
153
+ * models that let you choose one (OpenAI's text-embedding-3 models, Gemini's). Unset: the
154
+ * model's own width, which AskDB learns from the model when it builds an index.
155
+ */
156
+ dimensions?: string | number;
126
157
  };
127
- /** Branch for custom/third-party providers. `(string & {})` preserves literal
128
- * autocomplete for the known providers while accepting any other string.
158
+ /**
159
+ * `ai`: provider connections plus one section per use of a model.
129
160
  *
130
- * **Type-level hole**: TypeScript cannot exclude specific string literals from
131
- * `string & {}`, so every known provider literal (`"openai"`, `"azure"`, …) is
132
- * technically assignable to this branch as well. As a result, a misconfigured
133
- * object like `{ provider: "openai" }` (no `providerConfig`) compiles without
134
- * error. `flattenAskDbConfig` closes this gap at runtime: it calls
135
- * `requireProviderBranch` in each known-provider branch, which throws a clear
136
- * `askdb.config: ai.providerConfig.<provider> is required …` error instead of
137
- * crashing with a raw `TypeError` when the expected branch is absent. */
138
- export type CustomAiConfig = {
139
- /** Any provider string not covered by a first-party branch. Works end to end
140
- * only when the host registry has an adapter registered under this name.
141
- * See the three-tier model: known literal (zero code) → custom string + registered
142
- * adapter (~40 lines) → BYO `LanguageModel` via `ask({ model })` (no config). */
143
- provider: string & {};
144
- providerConfig?: {
145
- custom?: CustomProviderConfig;
146
- };
161
+ * - **`provider`**: the default provider for both sections.
162
+ * - **`providerConfig`**: provider connections, keyed by provider id.
163
+ * - **`language`**: the language model (NL→SQL, enrichment suggestions).
164
+ * - **`embedding`**: the embedding model behind `rag.embedder: "ai"`.
165
+ *
166
+ * A section's provider is `section.provider ?? ai.provider`, and its connection is
167
+ * `section.connection ?? "default"` within that provider. Loading fails when a section resolves
168
+ * to no provider or to a connection that doesn't exist.
169
+ */
170
+ export type AskDbAiConfig = {
171
+ provider?: AskDbAiProviderId | (string & {});
172
+ providerConfig?: AiProviderConnections;
173
+ language?: AskDbAiLanguageConfig;
174
+ embedding?: AskDbAiEmbeddingConfig;
175
+ /** @deprecated Use `ai.language.reasoning`. Removed at 1.0. */
147
176
  reasoning?: AskDbAiReasoningConfig;
148
177
  };
149
- /** Discriminated union of all supported AI provider branches plus the generic
150
- * custom-provider escape hatch for third-party or host-registered adapters. */
151
- export type AskDbAiConfig = OpenaiAiConfig | AzureAiConfig | FoundryAiConfig | AnthropicAiConfig | GoogleAiConfig | CustomAiConfig;
178
+ /** @deprecated Use {@link AskDbAiConfig}. Removed at 1.0. */
179
+ export type OpenaiAiConfig = AskDbAiConfig;
180
+ /** @deprecated Use {@link AskDbAiConfig}. Removed at 1.0. */
181
+ export type AzureAiConfig = AskDbAiConfig;
182
+ /** @deprecated Use {@link AskDbAiConfig}. Removed at 1.0. */
183
+ export type FoundryAiConfig = AskDbAiConfig;
184
+ /** @deprecated Use {@link AskDbAiConfig}. Removed at 1.0. */
185
+ export type AnthropicAiConfig = AskDbAiConfig;
186
+ /** @deprecated Use {@link AskDbAiConfig}. Removed at 1.0. */
187
+ export type GoogleAiConfig = AskDbAiConfig;
188
+ /** @deprecated Use {@link AskDbAiConfig}. Removed at 1.0. */
189
+ export type GatewayAiConfig = AskDbAiConfig;
190
+ /** @deprecated Use `ai.embedding` and a connection in `ai.providerConfig`. Translated at load (with a warning); removed at 1.0. */
152
191
  export type OpenaiRagEmbedderConfig = {
192
+ /** @deprecated Use `ai.embedding.model`. */
153
193
  model?: string;
154
- /** Raw env string or number; positive integer parsed in {@link flattenAskDbConfig}, else derived from `model`. */
194
+ /** @deprecated Use `ai.embedding.dimensions`. */
155
195
  dimension?: string | number;
196
+ /** @deprecated Put the key on a connection in `ai.providerConfig`. */
156
197
  apiKey?: string;
198
+ /** @deprecated Put the base URL on a connection in `ai.providerConfig`. */
157
199
  baseUrl?: string;
158
200
  };
159
201
  export type FileStoreConfig = {
@@ -167,7 +209,11 @@ export type PgvectorStoreConfig = {
167
209
  /** Connection string for pgvector (maps to `ASKDB_PGVECTOR_URL`). */
168
210
  databaseUrl?: string;
169
211
  table?: string;
170
- /** Positive integer from env or number; when unset, matches resolved RAG embedder dimensions in {@link flattenAskDbConfig}. */
212
+ /**
213
+ * @deprecated Ignored with `rag.embedder: "mock"`, whose vectors are always 64 wide (a load warning
214
+ * says so). With `rag.embedder: "ai"`, use `ai.embedding.dimensions` (translated at load, with a
215
+ * warning). Removed at 1.0.
216
+ */
171
217
  dimensions?: string | number;
172
218
  /** When unset, {@link flattenAskDbConfig} uses `hnsw`. */
173
219
  indexStrategy?: string;
@@ -308,9 +354,9 @@ export type AskDbIntrospectionConfig = PostgresIntrospectionConfig | PrismaIntro
308
354
  /**
309
355
  * Root shape for `export default defineConfig({ ... })` in `askdb.config.*`.
310
356
  *
311
- * - **`ai`**: LLM provider discriminated union — selecting `provider` determines which `providerConfig` branch is required.
357
+ * - **`ai`**: provider connections (`providerConfig`) plus the `language` and `embedding` model sections.
312
358
  * - **`introspection`**: target engine for `askdb introspect` (postgres / prisma / mysql / sqlite / sqlserver) — selecting `provider` determines which `providerConfig` branch is valid. Each branch holds the connection URL/path for that engine.
313
- * - **`rag`**: embedder + store branches flattened to `ASKDB_RAG_*` / `ASKDB_PGVECTOR_URL` / file paths.
359
+ * - **`rag`** (optional): the embedder (`"mock"`, or `"ai"` for `ai.embedding`) and the vector store, flattened to `ASKDB_RAG_*` / `ASKDB_PGVECTOR_URL` / file paths. Omitting it means the mock embedder and the in-memory store.
314
360
  * - **`logging` | `modes` | `host`**: optional operational defaults.
315
361
  */
316
362
  export type AskDbConfig = {
@@ -325,9 +371,17 @@ export type AskDbConfig = {
325
371
  * Keep aligned with `DialectId` in `@askdb/core`. Shipped specs: see `ASKDB_DIALECTS`.
326
372
  */
327
373
  dialect?: AskDbDialectId;
328
- rag: {
374
+ /**
375
+ * Retrieval (RAG): the embedder and the vector store. Optional: omit it when you don't use
376
+ * retrieval, and AskDB behaves as if `{ embedder: "mock", store: "memory", storeConfig: {} }`
377
+ * were set, so no store keys are written. Setting `ai.embedding` without it is an error, since
378
+ * nothing would use that model. When present, `embedder`, `store` and `storeConfig` are required.
379
+ */
380
+ rag?: {
381
+ /** `"mock"` (a local lexical embedder) or `"ai"` (the `ai.embedding` model). `"openai"` and `"ai-sdk"` are deprecated. */
329
382
  embedder: AskDbRagEmbedder;
330
- embedderConfig: {
383
+ /** @deprecated Use `ai.embedding` and a connection in `ai.providerConfig`. Translated at load (with a warning); removed at 1.0. */
384
+ embedderConfig?: {
331
385
  openai?: OpenaiRagEmbedderConfig;
332
386
  };
333
387
  store: AskDbRagStore;
@@ -416,6 +470,20 @@ export type AskDbConfig = {
416
470
  port?: number;
417
471
  host?: string;
418
472
  };
473
+ /**
474
+ * Accept a per-request `schemaJson` override on `POST /ask`. Default `false`: an override
475
+ * lets any caller send arbitrary schema/prompt content through the server's model key, so
476
+ * enable it only for tests or trusted multi-schema deployments.
477
+ * Maps to `ASKDB_HTTP_ALLOW_SCHEMA_OVERRIDE`.
478
+ */
479
+ allowSchemaOverride?: boolean;
480
+ /**
481
+ * Abort the model call for a `POST /ask` request after this many milliseconds (positive
482
+ * integer, at most `2147483647`, the Node timer maximum; larger values are a config error).
483
+ * Default `60000`. Maps to `ASKDB_HTTP_REQUEST_TIMEOUT_MS`.
484
+ */
485
+ requestTimeoutMs?: number;
419
486
  };
420
487
  };
488
+ export {};
421
489
  //# sourceMappingURL=types.d.ts.map