@askdb/config 1.0.0-beta.11 → 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.
- package/README.md +20 -19
- package/dist/bootstrap.d.ts +3 -0
- package/dist/bootstrap.d.ts.map +1 -1
- package/dist/bootstrap.js +16 -0
- package/dist/bootstrap.js.map +1 -1
- package/dist/constants.d.ts +15 -4
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +15 -4
- package/dist/constants.js.map +1 -1
- package/dist/defaults.d.ts +37 -1
- package/dist/defaults.d.ts.map +1 -1
- package/dist/defaults.js +50 -10
- package/dist/defaults.js.map +1 -1
- package/dist/diagnostics.d.ts +10 -0
- package/dist/diagnostics.d.ts.map +1 -0
- package/dist/diagnostics.js +13 -0
- package/dist/diagnostics.js.map +1 -0
- package/dist/flatten.d.ts +8 -1
- package/dist/flatten.d.ts.map +1 -1
- package/dist/flatten.js +128 -117
- package/dist/flatten.js.map +1 -1
- package/dist/index.d.ts +4 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/normalize.d.ts +53 -0
- package/dist/normalize.d.ts.map +1 -0
- package/dist/normalize.js +398 -0
- package/dist/normalize.js.map +1 -0
- package/dist/projection.d.ts +12 -1
- package/dist/projection.d.ts.map +1 -1
- package/dist/projection.js +12 -3
- package/dist/projection.js.map +1 -1
- package/dist/runtime-config.d.ts +66 -3
- package/dist/runtime-config.d.ts.map +1 -1
- package/dist/runtime-config.js +122 -46
- package/dist/runtime-config.js.map +1 -1
- package/dist/scaffold/ai.d.ts +30 -0
- package/dist/scaffold/ai.d.ts.map +1 -0
- package/dist/scaffold/ai.js +54 -0
- package/dist/scaffold/ai.js.map +1 -0
- package/dist/scaffold/index.d.ts +8 -0
- package/dist/scaffold/index.d.ts.map +1 -0
- package/dist/scaffold/index.js +7 -0
- package/dist/scaffold/index.js.map +1 -0
- package/dist/types.d.ts +244 -107
- package/dist/types.d.ts.map +1 -1
- package/package.json +11 -5
package/dist/runtime-config.js
CHANGED
|
@@ -1,6 +1,25 @@
|
|
|
1
1
|
import { ASKDB_STUDIO_EXECUTE_PROVIDERS } from "./constants.js";
|
|
2
|
-
import { DEFAULT_INTROSPECT_OUTPUT_DIR } 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 =
|
|
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 =
|
|
54
|
+
const omitFromFlat = isTruthyFlag(omitRaw);
|
|
25
55
|
const prismaSchemaPathRaw = structured.introspection.provider === "prisma"
|
|
26
56
|
? structured.introspection.providerConfig?.prisma?.schemaPath?.trim()
|
|
27
57
|
: undefined;
|
|
@@ -36,6 +66,9 @@ export function getAskDbRuntimeConfig() {
|
|
|
36
66
|
? structured.introspection.providerConfig?.mysql?.databaseUrl?.trim() ||
|
|
37
67
|
pickFlat(flat, "ASKDB_INTROSPECT_MYSQL_URL")
|
|
38
68
|
: undefined;
|
|
69
|
+
const schemas = (structured.introspection.schemas ?? pickFlat(flat, "ASKDB_INTROSPECT_SCHEMAS")?.split(","))
|
|
70
|
+
?.map((s) => s.trim())
|
|
71
|
+
.filter(Boolean);
|
|
39
72
|
const sqliteFile = structured.introspection.provider === "sqlite"
|
|
40
73
|
? structured.introspection.providerConfig?.sqlite?.file?.trim() ||
|
|
41
74
|
pickFlat(flat, "ASKDB_INTROSPECT_SQLITE_FILE")
|
|
@@ -49,12 +82,15 @@ export function getAskDbRuntimeConfig() {
|
|
|
49
82
|
flat,
|
|
50
83
|
ai: {
|
|
51
84
|
aiEnv,
|
|
85
|
+
language: { ...runtimeSection(language, aiLanguageEnv(language)), modelFamily: language.modelFamily },
|
|
86
|
+
embedding,
|
|
52
87
|
},
|
|
53
88
|
introspection: {
|
|
54
89
|
provider: structured.introspection.provider,
|
|
55
90
|
postgresDatabaseUrl,
|
|
56
91
|
prismaSchemaPath: prismaSchemaPathRaw || undefined,
|
|
57
92
|
mysqlDatabaseUrl,
|
|
93
|
+
schemas: schemas?.length ? schemas : undefined,
|
|
58
94
|
sqliteFile,
|
|
59
95
|
sqlserverDatabaseUrl,
|
|
60
96
|
outputDir: pickFlat(flat, "ASKDB_INTROSPECT_OUT") ??
|
|
@@ -62,15 +98,19 @@ export function getAskDbRuntimeConfig() {
|
|
|
62
98
|
DEFAULT_INTROSPECT_OUTPUT_DIR,
|
|
63
99
|
},
|
|
64
100
|
rag: {
|
|
65
|
-
embedder:
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
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,
|
|
74
114
|
},
|
|
75
115
|
logging: {
|
|
76
116
|
level: structured.logging?.level ?? pickFlat(flat, "ASKDB_LOG_LEVEL"),
|
|
@@ -80,6 +120,14 @@ export function getAskDbRuntimeConfig() {
|
|
|
80
120
|
},
|
|
81
121
|
httpApi: {
|
|
82
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,
|
|
83
131
|
},
|
|
84
132
|
dev: {
|
|
85
133
|
mockSql: structured.dev?.mockSql ?? pickFlat(flat, "ASKDB_MOCK_SQL"),
|
|
@@ -94,6 +142,7 @@ export function getAskDbRuntimeConfig() {
|
|
|
94
142
|
studio: {
|
|
95
143
|
execute: resolveStudioExecuteConfig(structured, flat),
|
|
96
144
|
},
|
|
145
|
+
deprecations,
|
|
97
146
|
};
|
|
98
147
|
}
|
|
99
148
|
function resolveStudioExecuteConfig(structured, flat) {
|
|
@@ -115,46 +164,73 @@ function resolveStudioExecuteConfig(structured, flat) {
|
|
|
115
164
|
provider = "postgres";
|
|
116
165
|
}
|
|
117
166
|
}
|
|
167
|
+
const execute = structured.studio?.execute;
|
|
168
|
+
const enabled = (typeof execute?.enabled === "boolean" ? execute.enabled : undefined) ??
|
|
169
|
+
parseFlatBoolean(pickFlat(flat, "ASKDB_STUDIO_EXECUTE_ENABLED")) ??
|
|
170
|
+
false;
|
|
171
|
+
const useIntrospectionConnection = (typeof execute?.useIntrospectionConnection === "boolean" ? execute.useIntrospectionConnection : undefined) ??
|
|
172
|
+
parseFlatBoolean(pickFlat(flat, "ASKDB_STUDIO_EXECUTE_USE_INTROSPECTION_CONNECTION")) ??
|
|
173
|
+
false;
|
|
174
|
+
const timeoutMs = parsePositiveInteger(execute?.timeoutMs) ??
|
|
175
|
+
parsePositiveInteger(pickFlat(flat, "ASKDB_STUDIO_EXECUTE_TIMEOUT_MS")) ??
|
|
176
|
+
DEFAULT_STUDIO_EXECUTE_TIMEOUT_MS;
|
|
177
|
+
const maxRows = parsePositiveInteger(execute?.maxRows) ??
|
|
178
|
+
parsePositiveInteger(pickFlat(flat, "ASKDB_STUDIO_EXECUTE_MAX_ROWS")) ??
|
|
179
|
+
DEFAULT_STUDIO_EXECUTE_MAX_ROWS;
|
|
118
180
|
// Connection resolution — each provider draws from its own structured field
|
|
119
|
-
// first, then the relevant flat env key.
|
|
181
|
+
// first, then the relevant flat env key. The introspection connection is only
|
|
182
|
+
// reused when `useIntrospectionConnection` is explicitly on, so turning execute
|
|
183
|
+
// on never silently runs ad-hoc SQL with introspection credentials.
|
|
184
|
+
const introspectionConnection = introspectionConnectionFor(provider, structured, flat);
|
|
120
185
|
let databaseUrl;
|
|
121
186
|
let file;
|
|
122
|
-
if (provider === "
|
|
123
|
-
|
|
124
|
-
structured.studio?.execute?.databaseUrl?.trim() ||
|
|
125
|
-
pickFlat(flat, "ASKDB_STUDIO_DATABASE_URL") ||
|
|
126
|
-
(structured.introspection?.provider === "postgres"
|
|
127
|
-
? structured.introspection.providerConfig?.postgres?.databaseUrl?.trim() ||
|
|
128
|
-
pickFlat(flat, "ASKDB_INTROSPECT_POSTGRES_URL")
|
|
129
|
-
: undefined);
|
|
187
|
+
if (provider === "sqlite") {
|
|
188
|
+
file = execute?.file?.trim() || pickFlat(flat, "ASKDB_STUDIO_SQLITE_FILE");
|
|
130
189
|
}
|
|
131
|
-
else
|
|
132
|
-
databaseUrl =
|
|
133
|
-
structured.studio?.execute?.databaseUrl?.trim() ||
|
|
134
|
-
pickFlat(flat, "ASKDB_STUDIO_DATABASE_URL") ||
|
|
135
|
-
(structured.introspection?.provider === "mysql"
|
|
136
|
-
? structured.introspection.providerConfig?.mysql?.databaseUrl?.trim() ||
|
|
137
|
-
pickFlat(flat, "ASKDB_INTROSPECT_MYSQL_URL")
|
|
138
|
-
: undefined);
|
|
190
|
+
else {
|
|
191
|
+
databaseUrl = execute?.databaseUrl?.trim() || pickFlat(flat, "ASKDB_STUDIO_DATABASE_URL");
|
|
139
192
|
}
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
pickFlat(flat, "ASKDB_INTROSPECT_SQLSERVER_URL")
|
|
147
|
-
: undefined);
|
|
193
|
+
const explicit = provider === "sqlite" ? file : databaseUrl;
|
|
194
|
+
if (!explicit && useIntrospectionConnection && introspectionConnection) {
|
|
195
|
+
if (provider === "sqlite")
|
|
196
|
+
file = introspectionConnection;
|
|
197
|
+
else
|
|
198
|
+
databaseUrl = introspectionConnection;
|
|
148
199
|
}
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
200
|
+
return {
|
|
201
|
+
provider,
|
|
202
|
+
databaseUrl,
|
|
203
|
+
file,
|
|
204
|
+
enabled,
|
|
205
|
+
useIntrospectionConnection,
|
|
206
|
+
introspectionConnectionAvailable: !explicit && !useIntrospectionConnection && introspectionConnection !== undefined,
|
|
207
|
+
timeoutMs,
|
|
208
|
+
maxRows,
|
|
209
|
+
};
|
|
210
|
+
}
|
|
211
|
+
function introspectionConnectionFor(provider, structured, flat) {
|
|
212
|
+
const intro = structured.introspection;
|
|
213
|
+
if (intro?.provider !== provider)
|
|
214
|
+
return undefined;
|
|
215
|
+
switch (provider) {
|
|
216
|
+
case "postgres":
|
|
217
|
+
return intro.providerConfig?.postgres?.databaseUrl?.trim() || pickFlat(flat, "ASKDB_INTROSPECT_POSTGRES_URL");
|
|
218
|
+
case "mysql":
|
|
219
|
+
return intro.providerConfig?.mysql?.databaseUrl?.trim() || pickFlat(flat, "ASKDB_INTROSPECT_MYSQL_URL");
|
|
220
|
+
case "sqlserver":
|
|
221
|
+
return intro.providerConfig?.sqlserver?.databaseUrl?.trim() || pickFlat(flat, "ASKDB_INTROSPECT_SQLSERVER_URL");
|
|
222
|
+
case "sqlite":
|
|
223
|
+
return intro.providerConfig?.sqlite?.file?.trim() || pickFlat(flat, "ASKDB_INTROSPECT_SQLITE_FILE");
|
|
157
224
|
}
|
|
158
|
-
|
|
225
|
+
}
|
|
226
|
+
function parseFlatBoolean(raw) {
|
|
227
|
+
if (raw === undefined)
|
|
228
|
+
return undefined;
|
|
229
|
+
const v = raw.toLowerCase();
|
|
230
|
+
if (["1", "true", "yes", "on"].includes(v))
|
|
231
|
+
return true;
|
|
232
|
+
if (["0", "false", "no", "off"].includes(v))
|
|
233
|
+
return false;
|
|
234
|
+
return undefined;
|
|
159
235
|
}
|
|
160
236
|
//# sourceMappingURL=runtime-config.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-config.js","sourceRoot":"","sources":["../src/runtime-config.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,8BAA8B,EAAE,MAAM,gBAAgB,CAAC;AAEhE,OAAO,
|
|
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"}
|