@brainpilot/backend-core 0.0.4 → 0.0.6
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/dist/app.d.ts +2 -15
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +211 -47
- package/dist/app.js.map +1 -1
- package/dist/config.d.ts +123 -2
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +293 -15
- package/dist/config.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/local-orchestrator.d.ts +16 -0
- package/dist/local-orchestrator.d.ts.map +1 -1
- package/dist/local-orchestrator.js +56 -6
- package/dist/local-orchestrator.js.map +1 -1
- package/dist/provider-probe.d.ts +38 -0
- package/dist/provider-probe.d.ts.map +1 -0
- package/dist/provider-probe.js +89 -0
- package/dist/provider-probe.js.map +1 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +13 -1
- package/dist/server.js.map +1 -1
- package/package.json +9 -3
package/dist/config.js
CHANGED
|
@@ -11,12 +11,14 @@
|
|
|
11
11
|
*/
|
|
12
12
|
import { promises as fs } from "node:fs";
|
|
13
13
|
import path from "node:path";
|
|
14
|
+
import { deriveProviderApi } from "@brainpilot/protocol";
|
|
14
15
|
export function configPaths(dataDir) {
|
|
15
16
|
return {
|
|
16
17
|
dataDir,
|
|
17
18
|
bpTemplateSettings: path.join(dataDir, "bp_template", "settings.json"),
|
|
18
19
|
brainpilotConfig: path.join(dataDir, "brainpilot.config.json"),
|
|
19
20
|
dotenv: path.join(dataDir, ".env"),
|
|
21
|
+
providers: path.join(dataDir, "bp_template", "providers.json"),
|
|
20
22
|
};
|
|
21
23
|
}
|
|
22
24
|
async function readJsonSafe(file) {
|
|
@@ -76,6 +78,119 @@ function pickString(obj, ...keys) {
|
|
|
76
78
|
}
|
|
77
79
|
return undefined;
|
|
78
80
|
}
|
|
81
|
+
export async function readProviders(dataDir) {
|
|
82
|
+
const raw = (await readJsonSafe(configPaths(dataDir).providers));
|
|
83
|
+
const profiles = Array.isArray(raw?.profiles) ? raw.profiles : [];
|
|
84
|
+
const selectedProfileId = typeof raw?.selectedProfileId === "string" ? raw.selectedProfileId : profiles[0]?.id;
|
|
85
|
+
return { profiles, selectedProfileId };
|
|
86
|
+
}
|
|
87
|
+
async function writeProviders(dataDir, file) {
|
|
88
|
+
const target = configPaths(dataDir).providers;
|
|
89
|
+
await fs.mkdir(path.dirname(target), { recursive: true });
|
|
90
|
+
const tmp = `${target}.tmp`;
|
|
91
|
+
await fs.writeFile(tmp, JSON.stringify(file, null, 2), { encoding: "utf8", mode: 0o600 });
|
|
92
|
+
await fs.rename(tmp, target); // atomic
|
|
93
|
+
}
|
|
94
|
+
/** The profile a session should use given an optional explicit id. */
|
|
95
|
+
export async function selectedProfile(dataDir, preferId) {
|
|
96
|
+
const { profiles, selectedProfileId } = await readProviders(dataDir);
|
|
97
|
+
return (profiles.find((p) => p.id === preferId) ??
|
|
98
|
+
profiles.find((p) => p.id === selectedProfileId) ??
|
|
99
|
+
profiles[0]);
|
|
100
|
+
}
|
|
101
|
+
let _counter = 0;
|
|
102
|
+
function newId() {
|
|
103
|
+
// No crypto.randomUUID dependency need; ids are local-only and short-lived.
|
|
104
|
+
_counter += 1;
|
|
105
|
+
return `p${Date.now().toString(36)}${_counter.toString(36)}`;
|
|
106
|
+
}
|
|
107
|
+
export async function createProfile(dataDir, input) {
|
|
108
|
+
const file = await readProviders(dataDir);
|
|
109
|
+
const now = Date.now();
|
|
110
|
+
const profile = {
|
|
111
|
+
id: input.id ?? newId(),
|
|
112
|
+
name: input.name ?? "Provider",
|
|
113
|
+
baseUrl: input.baseUrl ?? "",
|
|
114
|
+
// #75: do not unconditionally default api to anthropic-messages — that
|
|
115
|
+
// short-circuited the runtime's adapter fallback (an `adapter:"openai"`
|
|
116
|
+
// profile got `api:"anthropic-messages"`, a contradictory state). Precedence:
|
|
117
|
+
// explicit api → derived from adapter → default. Persist only an explicit or
|
|
118
|
+
// adapter-derived api; leave it unset otherwise so the runtime resolves it.
|
|
119
|
+
api: input.api ?? deriveProviderApi(input.adapter),
|
|
120
|
+
adapter: input.adapter,
|
|
121
|
+
apiKey: input.apiKey ?? "",
|
|
122
|
+
apiKeyEnv: input.apiKeyEnv,
|
|
123
|
+
models: input.models ?? [],
|
|
124
|
+
icon: input.icon,
|
|
125
|
+
iconColor: input.iconColor,
|
|
126
|
+
notes: input.notes,
|
|
127
|
+
createdAt: now,
|
|
128
|
+
updatedAt: now,
|
|
129
|
+
};
|
|
130
|
+
file.profiles.push(profile);
|
|
131
|
+
if (!file.selectedProfileId)
|
|
132
|
+
file.selectedProfileId = profile.id;
|
|
133
|
+
await writeProviders(dataDir, file);
|
|
134
|
+
return profile;
|
|
135
|
+
}
|
|
136
|
+
export async function updateProfile(dataDir, id, patch) {
|
|
137
|
+
const file = await readProviders(dataDir);
|
|
138
|
+
const profile = file.profiles.find((p) => p.id === id);
|
|
139
|
+
if (!profile)
|
|
140
|
+
return undefined;
|
|
141
|
+
// apiKey omitted in patch → keep existing (UI sends masked key, not the real one).
|
|
142
|
+
const writable = profile;
|
|
143
|
+
for (const k of ["name", "baseUrl", "api", "adapter", "models", "icon", "iconColor", "notes"]) {
|
|
144
|
+
if (patch[k] !== undefined)
|
|
145
|
+
writable[k] = patch[k];
|
|
146
|
+
}
|
|
147
|
+
if (typeof patch.apiKey === "string" && patch.apiKey.length > 0) {
|
|
148
|
+
profile.apiKey = patch.apiKey;
|
|
149
|
+
// #65: the user is now intentionally persisting a key in Settings — drop the
|
|
150
|
+
// env reference so the stored key (not the env var) is the source of truth.
|
|
151
|
+
delete profile.apiKeyEnv;
|
|
152
|
+
}
|
|
153
|
+
profile.updatedAt = Date.now();
|
|
154
|
+
await writeProviders(dataDir, file);
|
|
155
|
+
return profile;
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* #69: persist the latest connectivity-probe result on a profile. Kept
|
|
159
|
+
* separate from updateProfile (which is for user-edited fields and bumps
|
|
160
|
+
* updatedAt) — a health write must not look like a profile edit. Returns the
|
|
161
|
+
* updated profile, or undefined if the id is unknown.
|
|
162
|
+
*/
|
|
163
|
+
export async function setProfileHealth(dataDir, id, health) {
|
|
164
|
+
const file = await readProviders(dataDir);
|
|
165
|
+
const profile = file.profiles.find((p) => p.id === id);
|
|
166
|
+
if (!profile)
|
|
167
|
+
return undefined;
|
|
168
|
+
profile.healthStatus = health.healthStatus;
|
|
169
|
+
profile.healthCheckedAt = health.healthCheckedAt;
|
|
170
|
+
profile.healthMessage = health.healthMessage ?? "";
|
|
171
|
+
profile.healthLatencyMs = health.healthLatencyMs ?? null;
|
|
172
|
+
await writeProviders(dataDir, file);
|
|
173
|
+
return profile;
|
|
174
|
+
}
|
|
175
|
+
export async function deleteProfile(dataDir, id) {
|
|
176
|
+
const file = await readProviders(dataDir);
|
|
177
|
+
const before = file.profiles.length;
|
|
178
|
+
file.profiles = file.profiles.filter((p) => p.id !== id);
|
|
179
|
+
if (file.profiles.length === before)
|
|
180
|
+
return false;
|
|
181
|
+
if (file.selectedProfileId === id)
|
|
182
|
+
file.selectedProfileId = file.profiles[0]?.id;
|
|
183
|
+
await writeProviders(dataDir, file);
|
|
184
|
+
return true;
|
|
185
|
+
}
|
|
186
|
+
export async function setSelectedProfile(dataDir, id) {
|
|
187
|
+
const file = await readProviders(dataDir);
|
|
188
|
+
if (!file.profiles.some((p) => p.id === id))
|
|
189
|
+
return false;
|
|
190
|
+
file.selectedProfileId = id;
|
|
191
|
+
await writeProviders(dataDir, file);
|
|
192
|
+
return true;
|
|
193
|
+
}
|
|
79
194
|
/**
|
|
80
195
|
* Resolve the effective provider config by walking the priority chain. The
|
|
81
196
|
* apiKey's `source` reflects the FIRST layer that supplied it; baseUrl/model
|
|
@@ -84,6 +199,18 @@ function pickString(obj, ...keys) {
|
|
|
84
199
|
export async function resolveProvider(options) {
|
|
85
200
|
const env = options.env ?? process.env;
|
|
86
201
|
const paths = configPaths(options.dataDir);
|
|
202
|
+
// Highest authority: the selected profile in providers.json (SSOT). When set,
|
|
203
|
+
// it wins outright; the legacy env/dotenv chain below is the fallback for
|
|
204
|
+
// deployments that haven't migrated (e.g. Docker injecting ANTHROPIC_API_KEY).
|
|
205
|
+
const profile = await selectedProfile(options.dataDir);
|
|
206
|
+
if (profile?.apiKey) {
|
|
207
|
+
return {
|
|
208
|
+
apiKey: profile.apiKey,
|
|
209
|
+
baseUrl: profile.baseUrl || undefined,
|
|
210
|
+
model: profile.models[0],
|
|
211
|
+
source: "bp_template",
|
|
212
|
+
};
|
|
213
|
+
}
|
|
87
214
|
const templateSettings = await readJsonSafe(paths.bpTemplateSettings);
|
|
88
215
|
const config = await readJsonSafe(paths.brainpilotConfig);
|
|
89
216
|
const dotenv = await parseDotenv(paths.dotenv);
|
|
@@ -120,7 +247,9 @@ export async function resolveProvider(options) {
|
|
|
120
247
|
const model = pickString(templateSettings, "model") ||
|
|
121
248
|
pickString(config, "model") ||
|
|
122
249
|
env.BP_MODEL ||
|
|
250
|
+
env.ANTHROPIC_MODEL ||
|
|
123
251
|
dotenv.BP_MODEL ||
|
|
252
|
+
dotenv.ANTHROPIC_MODEL ||
|
|
124
253
|
undefined;
|
|
125
254
|
return { apiKey, baseUrl, model, source };
|
|
126
255
|
}
|
|
@@ -140,22 +269,171 @@ export async function readLocalSettings(options) {
|
|
|
140
269
|
};
|
|
141
270
|
}
|
|
142
271
|
/**
|
|
143
|
-
* Persist a settings patch
|
|
144
|
-
*
|
|
272
|
+
* Persist a simple settings patch into the providers registry (the SSOT). With
|
|
273
|
+
* no profiles yet it creates a default "Local" profile; otherwise it updates the
|
|
274
|
+
* selected profile in place. This keeps the legacy single-field `/api/settings`
|
|
275
|
+
* PUT and `brainpilot init` flowing into providers.json rather than the
|
|
276
|
+
* deprecated settings.json.
|
|
145
277
|
*/
|
|
146
278
|
export async function writeLocalSettings(dataDir, patch) {
|
|
147
|
-
const
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
await
|
|
159
|
-
|
|
279
|
+
const current = await selectedProfile(dataDir);
|
|
280
|
+
const models = patch.model ? [patch.model] : undefined;
|
|
281
|
+
if (!current) {
|
|
282
|
+
await createProfile(dataDir, {
|
|
283
|
+
name: "Local",
|
|
284
|
+
baseUrl: patch.baseUrl ?? "",
|
|
285
|
+
apiKey: patch.apiKey ?? "",
|
|
286
|
+
models: models ?? [],
|
|
287
|
+
});
|
|
288
|
+
return;
|
|
289
|
+
}
|
|
290
|
+
await updateProfile(dataDir, current.id, {
|
|
291
|
+
...(patch.baseUrl !== undefined ? { baseUrl: patch.baseUrl } : {}),
|
|
292
|
+
...(patch.apiKey !== undefined ? { apiKey: patch.apiKey } : {}),
|
|
293
|
+
// merge the model into the profile's model list (front of list = default)
|
|
294
|
+
...(models ? { models: Array.from(new Set([...models, ...current.models])) } : {}),
|
|
295
|
+
});
|
|
296
|
+
}
|
|
297
|
+
/**
|
|
298
|
+
* #51: project env-only provider config into a real, selected provider profile
|
|
299
|
+
* on first launch, so a user who supplies ANTHROPIC_API_KEY (etc.) via the
|
|
300
|
+
* environment — the README's documented quick-start path — sees an active
|
|
301
|
+
* provider in Settings → Providers and an enabled model selector, instead of an
|
|
302
|
+
* empty providers.json and a disabled UI.
|
|
303
|
+
*
|
|
304
|
+
* Bootstrap semantics (intentionally a one-time seed, matching `init --api-key`):
|
|
305
|
+
* - only runs when providers.json has NO profiles yet;
|
|
306
|
+
* - only when the env actually supplies an API key;
|
|
307
|
+
* - writes a selected "Environment" profile from the resolved env key / base
|
|
308
|
+
* URL / model.
|
|
309
|
+
* After this, providers.json is the SSOT — anything the user later edits in
|
|
310
|
+
* Settings wins and is never re-overwritten from the env.
|
|
311
|
+
*
|
|
312
|
+
* Returns the created profile, or null if nothing was bootstrapped.
|
|
313
|
+
*/
|
|
314
|
+
export async function bootstrapEnvProvider(dataDir, env = process.env) {
|
|
315
|
+
const { profiles } = await readProviders(dataDir);
|
|
316
|
+
if (profiles.length > 0)
|
|
317
|
+
return null; // already configured — never clobber
|
|
318
|
+
// Reuse the full resolution chain, then only act on env/dotenv-sourced keys
|
|
319
|
+
// (a template/config key would already imply a profile or be handled by init).
|
|
320
|
+
const resolved = await resolveProvider({ dataDir, env });
|
|
321
|
+
if (!resolved.apiKey || (resolved.source !== "env" && resolved.source !== "dotenv")) {
|
|
322
|
+
return null;
|
|
323
|
+
}
|
|
324
|
+
// #65: do NOT copy the plaintext env key into providers.json. Record only the
|
|
325
|
+
// *name* of the env var the key came from; the profile is created with an
|
|
326
|
+
// empty apiKey, so at request time both resolveProvider (backend) and
|
|
327
|
+
// resolveSessionProvider (runtime) skip the empty key and fall back to the
|
|
328
|
+
// env gateway path, which reads the same env var. The profile still exists so
|
|
329
|
+
// the user sees an active "Environment" provider + model in Settings (#51),
|
|
330
|
+
// but the secret stays in the environment, never on disk.
|
|
331
|
+
const keySources = resolved.source === "dotenv"
|
|
332
|
+
? (await parseDotenv(configPaths(dataDir).dotenv))
|
|
333
|
+
: env;
|
|
334
|
+
const apiKeyEnv = (keySources.ANTHROPIC_API_KEY && "ANTHROPIC_API_KEY") ||
|
|
335
|
+
(keySources.BP_API_KEY && "BP_API_KEY") ||
|
|
336
|
+
(keySources.OPENAI_API_KEY && "OPENAI_API_KEY") ||
|
|
337
|
+
"ANTHROPIC_API_KEY";
|
|
338
|
+
return createProfile(dataDir, {
|
|
339
|
+
name: "Environment",
|
|
340
|
+
baseUrl: resolved.baseUrl ?? "",
|
|
341
|
+
apiKey: "", // #65: never persisted; resolved from apiKeyEnv at request time
|
|
342
|
+
apiKeyEnv,
|
|
343
|
+
models: resolved.model ? [resolved.model] : [],
|
|
344
|
+
notes: `Auto-created from environment variables on first launch. The API key is read from $${apiKeyEnv} at request time and is not stored on disk.`,
|
|
345
|
+
});
|
|
346
|
+
}
|
|
347
|
+
/**
|
|
348
|
+
* Resolve the provider config and reduce it to an onboarding report. Reuses the
|
|
349
|
+
* full priority chain via {@link resolveProvider}; folds apiKey to a boolean so
|
|
350
|
+
* the key never leaves this module in plaintext.
|
|
351
|
+
*/
|
|
352
|
+
export async function describeProviderConfig(options) {
|
|
353
|
+
const resolved = await resolveProvider(options);
|
|
354
|
+
const paths = configPaths(options.dataDir);
|
|
355
|
+
return {
|
|
356
|
+
hasKey: Boolean(resolved.apiKey),
|
|
357
|
+
source: resolved.source,
|
|
358
|
+
baseUrl: resolved.baseUrl,
|
|
359
|
+
model: resolved.model,
|
|
360
|
+
settingsPath: paths.providers,
|
|
361
|
+
dotenvPath: paths.dotenv,
|
|
362
|
+
};
|
|
363
|
+
}
|
|
364
|
+
/**
|
|
365
|
+
* Turn a {@link ProviderConfigReport} into human guidance lines (uncolored;
|
|
366
|
+
* callers pick the styling). Shared by `init` and `up` so the onboarding text
|
|
367
|
+
* never drifts between them.
|
|
368
|
+
*/
|
|
369
|
+
export function formatProviderGuidance(report) {
|
|
370
|
+
if (report.hasKey) {
|
|
371
|
+
const model = report.model || "(default) claude-sonnet-4-6";
|
|
372
|
+
const baseUrl = report.baseUrl || "(built-in Anthropic endpoint)";
|
|
373
|
+
return [
|
|
374
|
+
`✓ Provider key configured (from ${report.source ?? "unknown"}).`,
|
|
375
|
+
` model: ${model} baseUrl: ${baseUrl}`,
|
|
376
|
+
];
|
|
377
|
+
}
|
|
378
|
+
return [
|
|
379
|
+
"No provider API key configured yet. Set one of:",
|
|
380
|
+
" • web Settings UI: launch, open Settings → Providers, add a provider (recommended).",
|
|
381
|
+
` • providers file: ${report.settingsPath}`,
|
|
382
|
+
` { "profiles": [ { "id": "local", "name": "Local", "apiKey": "<key>", "baseUrl": "<gateway, optional>", "models": ["<id>"] } ], "selectedProfileId": "local" }`,
|
|
383
|
+
" • env var: export ANTHROPIC_API_KEY=<key> (also ANTHROPIC_BASE_URL / ANTHROPIC_MODEL / BP_MODEL)",
|
|
384
|
+
" • re-run init: brainpilot init --api-key <key> [--base-url <url>] [--model <id>]",
|
|
385
|
+
"No key needed for a test run: BP_MOCK=1 brainpilot up",
|
|
386
|
+
];
|
|
387
|
+
}
|
|
388
|
+
/* ----------------------- MCP server config CRUD ----------------------- *
|
|
389
|
+
* The runtime reads `mcp_servers.json` from disk (`loadMcpServersConfig` in
|
|
390
|
+
* mcp-bridge.ts); these functions let the Settings → MCP tab persist entries
|
|
391
|
+
* through the same file so the UI and disk stay in sync.
|
|
392
|
+
*
|
|
393
|
+
* Disk format (keyed map): { mcpServers: { name: spec } }
|
|
394
|
+
* HTTP format (flat array): [{ name, ...spec }]
|
|
395
|
+
* -------------------------------------------------------------------------- */
|
|
396
|
+
export function mcpServersPath(dataDir) {
|
|
397
|
+
return path.join(dataDir, "bp_template", "mcp_servers.json");
|
|
398
|
+
}
|
|
399
|
+
async function readMcpServersRaw(dataDir) {
|
|
400
|
+
const raw = await readJsonSafe(mcpServersPath(dataDir));
|
|
401
|
+
if (raw && typeof raw.mcpServers === "object") {
|
|
402
|
+
return raw.mcpServers;
|
|
403
|
+
}
|
|
404
|
+
return {};
|
|
405
|
+
}
|
|
406
|
+
async function writeMcpServersRaw(dataDir, servers) {
|
|
407
|
+
const target = mcpServersPath(dataDir);
|
|
408
|
+
await fs.mkdir(path.dirname(target), { recursive: true });
|
|
409
|
+
const tmp = `${target}.tmp`;
|
|
410
|
+
await fs.writeFile(tmp, JSON.stringify({ mcpServers: servers }, null, 2), { encoding: "utf8", mode: 0o600 });
|
|
411
|
+
await fs.rename(tmp, target);
|
|
412
|
+
}
|
|
413
|
+
export async function readMcpServers(dataDir) {
|
|
414
|
+
const servers = await readMcpServersRaw(dataDir);
|
|
415
|
+
return Object.entries(servers).map(([name, spec]) => ({ name, ...spec }));
|
|
416
|
+
}
|
|
417
|
+
export async function createMcpServer(dataDir, name, spec) {
|
|
418
|
+
const servers = await readMcpServersRaw(dataDir);
|
|
419
|
+
servers[name] = spec;
|
|
420
|
+
await writeMcpServersRaw(dataDir, servers);
|
|
421
|
+
return { name, ...spec };
|
|
422
|
+
}
|
|
423
|
+
export async function updateMcpServer(dataDir, name, spec) {
|
|
424
|
+
const servers = await readMcpServersRaw(dataDir);
|
|
425
|
+
if (!(name in servers))
|
|
426
|
+
return null;
|
|
427
|
+
servers[name] = spec;
|
|
428
|
+
await writeMcpServersRaw(dataDir, servers);
|
|
429
|
+
return { name, ...spec };
|
|
430
|
+
}
|
|
431
|
+
export async function deleteMcpServer(dataDir, name) {
|
|
432
|
+
const servers = await readMcpServersRaw(dataDir);
|
|
433
|
+
if (!(name in servers))
|
|
434
|
+
return false;
|
|
435
|
+
delete servers[name];
|
|
436
|
+
await writeMcpServersRaw(dataDir, servers);
|
|
437
|
+
return true;
|
|
160
438
|
}
|
|
161
439
|
//# sourceMappingURL=config.js.map
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAsBzD,MAAM,UAAU,WAAW,CAAC,OAAe;IACzC,OAAO;QACL,OAAO;QACP,kBAAkB,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,EAAE,eAAe,CAAC;QACtE,gBAAgB,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,wBAAwB,CAAC;QAC9D,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC;QAClC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,EAAE,gBAAgB,CAAC;KAC/D,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,IAAY;IACtC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAChC,OAAO,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAE,MAAkC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3F,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,+EAA+E;AAC/E,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAAY;IAC5C,IAAI,IAAY,CAAC;IACjB,IAAI,CAAC;QACH,IAAI,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACzC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,GAAG,GAA2B,EAAE,CAAC;IACvC,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS;QAC5C,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,EAAE,GAAG,CAAC;YAAE,SAAS;QACrB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACrC,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACtC,IACE,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAC9C,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAC9C,CAAC;YACD,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7B,CAAC;QACD,IAAI,GAAG;YAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IAC5B,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,UAAU,CAAC,GAAmC,EAAE,GAAG,IAAc;IACxE,IAAI,CAAC,GAAG;QAAE,OAAO,SAAS,CAAC;IAC3B,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QACjB,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,CAAC,CAAC;IACtD,CAAC;IACD,6DAA6D;IAC7D,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;IAC9B,IAAI,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC7C,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;YACrB,MAAM,CAAC,GAAI,QAAoC,CAAC,CAAC,CAAC,CAAC;YACnD,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC;gBAAE,OAAO,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAwDD,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAAe;IACjD,MAAM,GAAG,GAAG,CAAC,MAAM,YAAY,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAoC,CAAC;IACpG,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;IAClE,MAAM,iBAAiB,GACrB,OAAO,GAAG,EAAE,iBAAiB,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IACvF,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,CAAC;AACzC,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,OAAe,EAAE,IAAmB;IAChE,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC;IAC9C,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1D,MAAM,GAAG,GAAG,GAAG,MAAM,MAAM,CAAC;IAC5B,MAAM,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC1F,MAAM,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS;AACzC,CAAC;AAED,sEAAsE;AACtE,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,OAAe,EACf,QAAiB;IAEjB,MAAM,EAAE,QAAQ,EAAE,iBAAiB,EAAE,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC;IACrE,OAAO,CACL,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC;QACvC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,iBAAiB,CAAC;QAChD,QAAQ,CAAC,CAAC,CAAC,CACZ,CAAC;AACJ,CAAC;AAED,IAAI,QAAQ,GAAG,CAAC,CAAC;AACjB,SAAS,KAAK;IACZ,4EAA4E;IAC5E,QAAQ,IAAI,CAAC,CAAC;IACd,OAAO,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;AAC/D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,OAAe,EACf,KAAqC;IAErC,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC;IAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,MAAM,OAAO,GAA0B;QACrC,EAAE,EAAE,KAAK,CAAC,EAAE,IAAI,KAAK,EAAE;QACvB,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,UAAU;QAC9B,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,EAAE;QAC5B,uEAAuE;QACvE,wEAAwE;QACxE,8EAA8E;QAC9E,6EAA6E;QAC7E,4EAA4E;QAC5E,GAAG,EAAE,KAAK,CAAC,GAAG,IAAI,iBAAiB,CAAC,KAAK,CAAC,OAAO,CAAC;QAClD,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,EAAE;QAC1B,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,EAAE;QAC1B,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,SAAS,EAAE,GAAG;QACd,SAAS,EAAE,GAAG;KACf,CAAC;IACF,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC5B,IAAI,CAAC,IAAI,CAAC,iBAAiB;QAAE,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,EAAE,CAAC;IACjE,MAAM,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACpC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,OAAe,EACf,EAAU,EACV,KAAqC;IAErC,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC;IAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IACvD,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IAC/B,mFAAmF;IACnF,MAAM,QAAQ,GAAG,OAA6C,CAAC;IAC/D,KAAK,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,CAAU,EAAE,CAAC;QACvG,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS;YAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACrD,CAAC;IACD,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChE,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QAC9B,6EAA6E;QAC7E,4EAA4E;QAC5E,OAAO,OAAO,CAAC,SAAS,CAAC;IAC3B,CAAC;IACD,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC/B,MAAM,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACpC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,OAAe,EACf,EAAU,EACV,MAKC;IAED,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC;IAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IACvD,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IAC/B,OAAO,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;IAC3C,OAAO,CAAC,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;IACjD,OAAO,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,IAAI,EAAE,CAAC;IACnD,OAAO,CAAC,eAAe,GAAG,MAAM,CAAC,eAAe,IAAI,IAAI,CAAC;IACzD,MAAM,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACpC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAAe,EAAE,EAAU;IAC7D,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC;IAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;IACpC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IACzD,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,MAAM;QAAE,OAAO,KAAK,CAAC;IAClD,IAAI,IAAI,CAAC,iBAAiB,KAAK,EAAE;QAAE,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IACjF,MAAM,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACpC,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,OAAe,EAAE,EAAU;IAClE,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC;IAC1C,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;QAAE,OAAO,KAAK,CAAC;IAC1D,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;IAC5B,MAAM,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACpC,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,OAA+B;IAE/B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;IACvC,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAE3C,8EAA8E;IAC9E,0EAA0E;IAC1E,+EAA+E;IAC/E,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACvD,IAAI,OAAO,EAAE,MAAM,EAAE,CAAC;QACpB,OAAO;YACL,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,SAAS;YACrC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;YACxB,MAAM,EAAE,aAAa;SACtB,CAAC;IACJ,CAAC;IAED,MAAM,gBAAgB,GAAG,MAAM,YAAY,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACtE,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;IAC1D,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAE/C,wCAAwC;IACxC,MAAM,MAAM,GACV,GAAG,CAAC,iBAAiB,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,cAAc,IAAI,SAAS,CAAC;IAC7E,MAAM,WAAW,GAAG,UAAU,CAAC,gBAAgB,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;IACtE,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;IAC1D,MAAM,SAAS,GACb,MAAM,CAAC,iBAAiB,IAAI,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,cAAc,IAAI,SAAS,CAAC;IAEtF,IAAI,MAA0B,CAAC;IAC/B,IAAI,MAAkC,CAAC;IACvC,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,GAAG,WAAW,CAAC;QACrB,MAAM,GAAG,aAAa,CAAC;IACzB,CAAC;SAAM,IAAI,SAAS,EAAE,CAAC;QACrB,MAAM,GAAG,SAAS,CAAC;QACnB,MAAM,GAAG,QAAQ,CAAC;IACpB,CAAC;SAAM,IAAI,MAAM,EAAE,CAAC;QAClB,MAAM,GAAG,MAAM,CAAC;QAChB,MAAM,GAAG,KAAK,CAAC;IACjB,CAAC;SAAM,IAAI,SAAS,EAAE,CAAC;QACrB,MAAM,GAAG,SAAS,CAAC;QACnB,MAAM,GAAG,QAAQ,CAAC;IACpB,CAAC;IAED,MAAM,OAAO,GACX,UAAU,CAAC,gBAAgB,EAAE,SAAS,EAAE,UAAU,CAAC;QACnD,UAAU,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,CAAC;QACzC,GAAG,CAAC,kBAAkB;QACtB,GAAG,CAAC,WAAW;QACf,MAAM,CAAC,kBAAkB;QACzB,MAAM,CAAC,WAAW;QAClB,SAAS,CAAC;IAEZ,MAAM,KAAK,GACT,UAAU,CAAC,gBAAgB,EAAE,OAAO,CAAC;QACrC,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC;QAC3B,GAAG,CAAC,QAAQ;QACZ,GAAG,CAAC,eAAe;QACnB,MAAM,CAAC,QAAQ;QACf,MAAM,CAAC,eAAe;QACtB,SAAS,CAAC;IAEZ,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AAC5C,CAAC;AASD,SAAS,OAAO,CAAC,GAAuB;IACtC,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,CAAC;IACpB,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC;QAAE,OAAO,MAAM,CAAC;IACnC,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC/C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,OAA+B;IAE/B,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC;IAChD,OAAO;QACL,KAAK,EAAE,QAAQ,CAAC,KAAK,IAAI,EAAE;QAC3B,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;QAChC,OAAO,EAAE,QAAQ,CAAC,OAAO,IAAI,EAAE;KAChC,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,OAAe,EACf,KAAkE;IAElE,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC;IAC/C,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACvD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,aAAa,CAAC,OAAO,EAAE;YAC3B,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,EAAE;YAC5B,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,EAAE;YAC1B,MAAM,EAAE,MAAM,IAAI,EAAE;SACrB,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IACD,MAAM,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,EAAE;QACvC,GAAG,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClE,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/D,0EAA0E;QAC1E,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACnF,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,OAAe,EACf,MAA0C,OAAO,CAAC,GAAG;IAErD,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC;IAClD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC,CAAC,qCAAqC;IAE3E,4EAA4E;IAC5E,+EAA+E;IAC/E,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;IACzD,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,KAAK,IAAI,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,EAAE,CAAC;QACpF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,8EAA8E;IAC9E,0EAA0E;IAC1E,sEAAsE;IACtE,2EAA2E;IAC3E,8EAA8E;IAC9E,4EAA4E;IAC5E,0DAA0D;IAC1D,MAAM,UAAU,GACd,QAAQ,CAAC,MAAM,KAAK,QAAQ;QAC1B,CAAC,CAAC,CAAC,MAAM,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC;QAClD,CAAC,CAAC,GAAG,CAAC;IACV,MAAM,SAAS,GACb,CAAC,UAAU,CAAC,iBAAiB,IAAI,mBAAmB,CAAC;QACrD,CAAC,UAAU,CAAC,UAAU,IAAI,YAAY,CAAC;QACvC,CAAC,UAAU,CAAC,cAAc,IAAI,gBAAgB,CAAC;QAC/C,mBAAmB,CAAC;IAEtB,OAAO,aAAa,CAAC,OAAO,EAAE;QAC5B,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,QAAQ,CAAC,OAAO,IAAI,EAAE;QAC/B,MAAM,EAAE,EAAE,EAAE,gEAAgE;QAC5E,SAAS;QACT,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;QAC9C,KAAK,EAAE,sFAAsF,SAAS,6CAA6C;KACpJ,CAAC,CAAC;AACL,CAAC;AAkBD;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,OAA+B;IAE/B,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC;IAChD,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3C,OAAO;QACL,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;QAChC,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,KAAK,EAAE,QAAQ,CAAC,KAAK;QACrB,YAAY,EAAE,KAAK,CAAC,SAAS;QAC7B,UAAU,EAAE,KAAK,CAAC,MAAM;KACzB,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CAAC,MAA4B;IACjE,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,6BAA6B,CAAC;QAC5D,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,+BAA+B,CAAC;QAClE,OAAO;YACL,mCAAmC,MAAM,CAAC,MAAM,IAAI,SAAS,IAAI;YACjE,YAAY,KAAK,eAAe,OAAO,EAAE;SAC1C,CAAC;IACJ,CAAC;IACD,OAAO;QACL,iDAAiD;QACjD,uFAAuF;QACvF,wBAAwB,MAAM,CAAC,YAAY,EAAE;QAC7C,qKAAqK;QACrK,6GAA6G;QAC7G,uFAAuF;QACvF,wDAAwD;KACzD,CAAC;AACJ,CAAC;AAED;;;;;;;gFAOgF;AAEhF,MAAM,UAAU,cAAc,CAAC,OAAe;IAC5C,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,EAAE,kBAAkB,CAAC,CAAC;AAC/D,CAAC;AAQD,KAAK,UAAU,iBAAiB,CAAC,OAAe;IAC9C,MAAM,GAAG,GAAG,MAAM,YAAY,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;IACxD,IAAI,GAAG,IAAI,OAAQ,GAA+B,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;QAC3E,OAAQ,GAAiC,CAAC,UAAU,CAAC;IACvD,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,KAAK,UAAU,kBAAkB,CAAC,OAAe,EAAE,OAAgC;IACjF,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IACvC,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1D,MAAM,GAAG,GAAG,GAAG,MAAM,MAAM,CAAC;IAC5B,MAAM,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC7G,MAAM,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,OAAe;IAClD,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,OAAO,CAAC,CAAC;IACjD,OAAO,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;AAC5E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,OAAe,EACf,IAAY,EACZ,IAAa;IAEb,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,OAAO,CAAC,CAAC;IACjD,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACrB,MAAM,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC3C,OAAO,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC;AAC3B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,OAAe,EACf,IAAY,EACZ,IAAa;IAEb,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,OAAO,CAAC,CAAC;IACjD,IAAI,CAAC,CAAC,IAAI,IAAI,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC;IACpC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACrB,MAAM,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC3C,OAAO,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC;AAC3B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,OAAe,EAAE,IAAY;IACjE,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,OAAO,CAAC,CAAC;IACjD,IAAI,CAAC,CAAC,IAAI,IAAI,OAAO,CAAC;QAAE,OAAO,KAAK,CAAC;IACrC,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;IACrB,MAAM,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC3C,OAAO,IAAI,CAAC;AACd,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -22,6 +22,6 @@ export { StaticRuntimeOrchestrator } from "./static-orchestrator.js";
|
|
|
22
22
|
export type { StaticOrchestratorOptions } from "./static-orchestrator.js";
|
|
23
23
|
export { RuntimeClient, buildPath } from "./runtime-client.js";
|
|
24
24
|
export type { RuntimeClientOptions, ForwardOptions } from "./runtime-client.js";
|
|
25
|
-
export { resolveProvider, readLocalSettings, writeLocalSettings, parseDotenv, configPaths, } from "./config.js";
|
|
26
|
-
export type { ResolvedProvider, LocalSettings, ConfigPaths, ResolveProviderOptions, } from "./config.js";
|
|
25
|
+
export { resolveProvider, readLocalSettings, writeLocalSettings, bootstrapEnvProvider, parseDotenv, configPaths, describeProviderConfig, formatProviderGuidance, } from "./config.js";
|
|
26
|
+
export type { ResolvedProvider, LocalSettings, ConfigPaths, ResolveProviderOptions, ProviderConfigReport, } from "./config.js";
|
|
27
27
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,eAAO,MAAM,YAAY,6BAA6B,CAAC;AAEvD,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,YAAY,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAEjD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,YAAY,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAErE,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,YAAY,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAE1E,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,YAAY,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE/D,OAAO,EACL,uBAAuB,GACxB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACV,YAAY,EACZ,gBAAgB,EAChB,aAAa,EACb,oBAAoB,GACrB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,wBAAwB,EACxB,wBAAwB,GACzB,MAAM,yBAAyB,CAAC;AACjC,YAAY,EACV,wBAAwB,EACxB,OAAO,EACP,cAAc,GACf,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,YAAY,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAE1E,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACrE,YAAY,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAE1E,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC/D,YAAY,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAEhF,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,WAAW,EACX,WAAW,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,eAAO,MAAM,YAAY,6BAA6B,CAAC;AAEvD,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,YAAY,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAEjD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,YAAY,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAErE,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,YAAY,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAE1E,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,YAAY,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE/D,OAAO,EACL,uBAAuB,GACxB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACV,YAAY,EACZ,gBAAgB,EAChB,aAAa,EACb,oBAAoB,GACrB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,wBAAwB,EACxB,wBAAwB,GACzB,MAAM,yBAAyB,CAAC;AACjC,YAAY,EACV,wBAAwB,EACxB,OAAO,EACP,cAAc,GACf,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,YAAY,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAE1E,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACrE,YAAY,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAE1E,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC/D,YAAY,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAEhF,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,WAAW,EACX,WAAW,EACX,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,gBAAgB,EAChB,aAAa,EACb,WAAW,EACX,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,aAAa,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -13,5 +13,5 @@ export { LocalProcessOrchestrator, resolveRuntimeServerPath, } from "./local-orc
|
|
|
13
13
|
export { DockerOrchestrator } from "./docker-orchestrator.js";
|
|
14
14
|
export { StaticRuntimeOrchestrator } from "./static-orchestrator.js";
|
|
15
15
|
export { RuntimeClient, buildPath } from "./runtime-client.js";
|
|
16
|
-
export { resolveProvider, readLocalSettings, writeLocalSettings, parseDotenv, configPaths, } from "./config.js";
|
|
16
|
+
export { resolveProvider, readLocalSettings, writeLocalSettings, bootstrapEnvProvider, parseDotenv, configPaths, describeProviderConfig, formatProviderGuidance, } from "./config.js";
|
|
17
17
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,0BAA0B,CAAC;AAEvD,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAGrC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAG9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAG1D,OAAO,EACL,uBAAuB,GACxB,MAAM,mBAAmB,CAAC;AAQ3B,OAAO,EACL,wBAAwB,EACxB,wBAAwB,GACzB,MAAM,yBAAyB,CAAC;AAOjC,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAG9D,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAGrE,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAG/D,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,WAAW,EACX,WAAW,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,0BAA0B,CAAC;AAEvD,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAGrC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAG9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAG1D,OAAO,EACL,uBAAuB,GACxB,MAAM,mBAAmB,CAAC;AAQ3B,OAAO,EACL,wBAAwB,EACxB,wBAAwB,GACzB,MAAM,yBAAyB,CAAC;AAOjC,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAG9D,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAGrE,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAG/D,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,WAAW,EACX,WAAW,EACX,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,aAAa,CAAC"}
|
|
@@ -55,6 +55,22 @@ export declare class LocalProcessOrchestrator implements Orchestrator {
|
|
|
55
55
|
private stopping;
|
|
56
56
|
private gaveUp;
|
|
57
57
|
private lastEnv;
|
|
58
|
+
/**
|
|
59
|
+
* In-flight startup promise (issue #58). ensureRuntime() is single-flight:
|
|
60
|
+
* concurrent first-run callers share this one promise instead of each
|
|
61
|
+
* spawning their own runtime child (which raced for the port and crashed the
|
|
62
|
+
* losers with EADDRINUSE). Null when no startup is in progress.
|
|
63
|
+
*/
|
|
64
|
+
private starting;
|
|
65
|
+
/**
|
|
66
|
+
* Set once the runtime has become healthy at least once (issue #58). The
|
|
67
|
+
* crash-restart self-heal (§11A.5) is only meant for a runtime that was
|
|
68
|
+
* healthy and later died — NOT for a first-start spawn that immediately
|
|
69
|
+
* exits (e.g. a duplicate that lost the port race). While this is false, an
|
|
70
|
+
* exiting child does not trigger a restart; ensureRuntime's waitForHealth
|
|
71
|
+
* surfaces the failure instead.
|
|
72
|
+
*/
|
|
73
|
+
private everHealthy;
|
|
58
74
|
constructor(options?: LocalOrchestratorOptions);
|
|
59
75
|
get baseUrl(): string;
|
|
60
76
|
/** Build the exact argv used to spawn the runtime. Exposed for testing. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-orchestrator.d.ts","sourceRoot":"","sources":["../src/local-orchestrator.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EACV,oBAAoB,EACpB,YAAY,EACZ,aAAa,EACd,MAAM,mBAAmB,CAAC;AAE3B,8EAA8E;AAC9E,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,KAAK,IAAI,GAAG,OAAO,CAAC;IACnG,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,GAAG,OAAO,CAAC;IAC5D,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;CACxC;AAED,MAAM,MAAM,OAAO,GAAG,CACpB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,OAAO,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,KACjD,cAAc,CAAC;AAEpB,MAAM,WAAW,wBAAwB;IACvC,oEAAoE;IACpE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mEAAmE;IACnE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iDAAiD;IACjD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uDAAuD;IACvD,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,0EAA0E;IAC1E,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,0EAA0E;IAC1E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yEAAyE;IACzE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,qDAAqD;IACrD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,0EAA0E;IAC1E,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACpD,yEAAyE;IACzE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kEAAkE;IAClE,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,CAAC;IAC/B,8BAA8B;IAC9B,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC;wFACoF;IACpF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,4FAA4F;IAC5F,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,0EAA0E;IAC1E,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,qFAAqF;AACrF,wBAAgB,wBAAwB,IAAI,MAAM,CAGjD;AAcD,qBAAa,wBAAyB,YAAW,YAAY;IAC3D,OAAO,CAAC,QAAQ,CAAC,IAAI,CAenB;IAEF,OAAO,CAAC,KAAK,CAA+B;IAC5C,OAAO,CAAC,MAAM,CAA8B;IAC5C,OAAO,CAAC,iBAAiB,CAAgB;IACzC,mEAAmE;IACnE,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAyB;
|
|
1
|
+
{"version":3,"file":"local-orchestrator.d.ts","sourceRoot":"","sources":["../src/local-orchestrator.ts"],"names":[],"mappings":"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"}
|
|
@@ -40,6 +40,22 @@ export class LocalProcessOrchestrator {
|
|
|
40
40
|
stopping = false;
|
|
41
41
|
gaveUp = false;
|
|
42
42
|
lastEnv = {};
|
|
43
|
+
/**
|
|
44
|
+
* In-flight startup promise (issue #58). ensureRuntime() is single-flight:
|
|
45
|
+
* concurrent first-run callers share this one promise instead of each
|
|
46
|
+
* spawning their own runtime child (which raced for the port and crashed the
|
|
47
|
+
* losers with EADDRINUSE). Null when no startup is in progress.
|
|
48
|
+
*/
|
|
49
|
+
starting = null;
|
|
50
|
+
/**
|
|
51
|
+
* Set once the runtime has become healthy at least once (issue #58). The
|
|
52
|
+
* crash-restart self-heal (§11A.5) is only meant for a runtime that was
|
|
53
|
+
* healthy and later died — NOT for a first-start spawn that immediately
|
|
54
|
+
* exits (e.g. a duplicate that lost the port race). While this is false, an
|
|
55
|
+
* exiting child does not trigger a restart; ensureRuntime's waitForHealth
|
|
56
|
+
* surfaces the failure instead.
|
|
57
|
+
*/
|
|
58
|
+
everHealthy = false;
|
|
43
59
|
constructor(options = {}) {
|
|
44
60
|
this.opts = {
|
|
45
61
|
dataDir: options.dataDir ?? process.env.BP_DATA_DIR ?? "./brainpilot",
|
|
@@ -93,11 +109,29 @@ export class LocalProcessOrchestrator {
|
|
|
93
109
|
if (this.child && this.handle && (await this.health())) {
|
|
94
110
|
return this.handle;
|
|
95
111
|
}
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
112
|
+
// Single-flight (issue #58): if a startup is already in progress, every
|
|
113
|
+
// concurrent caller rides the same promise rather than spawning its own
|
|
114
|
+
// runtime child. This is what prevents the cold-start spawn storm where N
|
|
115
|
+
// simultaneous requests each spawned a runtime and N-1 crashed on
|
|
116
|
+
// EADDRINUSE. opts.dataDir/port from a piggybacking caller are ignored on
|
|
117
|
+
// purpose — a given backend/data-dir has exactly one runtime.
|
|
118
|
+
if (this.starting) {
|
|
119
|
+
return this.starting;
|
|
120
|
+
}
|
|
121
|
+
this.starting = (async () => {
|
|
122
|
+
this.lastEnv = this.buildEnv(opts?.env);
|
|
123
|
+
this.spawnChild(this.lastEnv);
|
|
124
|
+
await this.waitForHealth();
|
|
125
|
+
this.handle = { baseUrl: this.baseUrl };
|
|
126
|
+
return this.handle;
|
|
127
|
+
})();
|
|
128
|
+
try {
|
|
129
|
+
return await this.starting;
|
|
130
|
+
}
|
|
131
|
+
finally {
|
|
132
|
+
// Clear so a later call can retry (e.g. if waitForHealth threw).
|
|
133
|
+
this.starting = null;
|
|
134
|
+
}
|
|
101
135
|
}
|
|
102
136
|
async health() {
|
|
103
137
|
if (!this.child)
|
|
@@ -106,6 +140,7 @@ export class LocalProcessOrchestrator {
|
|
|
106
140
|
}
|
|
107
141
|
async stopRuntime() {
|
|
108
142
|
this.stopping = true;
|
|
143
|
+
this.everHealthy = false;
|
|
109
144
|
const child = this.child;
|
|
110
145
|
this.child = null;
|
|
111
146
|
this.handle = null;
|
|
@@ -193,6 +228,17 @@ export class LocalProcessOrchestrator {
|
|
|
193
228
|
async handleExit(err) {
|
|
194
229
|
if (this.stopping || this.gaveUp)
|
|
195
230
|
return;
|
|
231
|
+
// Issue #58: a child that exits before the runtime ever became healthy is a
|
|
232
|
+
// failed *startup*, not a crash of a running service. The restart self-heal
|
|
233
|
+
// (§11A.5) is only for an already-healthy runtime that later died. A
|
|
234
|
+
// first-start exit (e.g. a duplicate spawn that lost the port race and got
|
|
235
|
+
// EADDRINUSE) must NOT enter the restart loop — that loop is what flooded
|
|
236
|
+
// runtime.log and clobbered this.child. Just drop the child and let
|
|
237
|
+
// ensureRuntime's waitForHealth surface the failure.
|
|
238
|
+
if (!this.everHealthy) {
|
|
239
|
+
this.child = null;
|
|
240
|
+
return;
|
|
241
|
+
}
|
|
196
242
|
const now = Date.now();
|
|
197
243
|
this.restartTimestamps = this.restartTimestamps.filter((ts) => now - ts < this.opts.restartWindowMs);
|
|
198
244
|
if (this.restartTimestamps.length >= this.opts.maxRestarts) {
|
|
@@ -216,8 +262,12 @@ export class LocalProcessOrchestrator {
|
|
|
216
262
|
const deadline = Date.now() + this.opts.healthTimeoutMs;
|
|
217
263
|
// Poll until healthy or timeout. Spacing is small for local startup.
|
|
218
264
|
for (;;) {
|
|
219
|
-
if (await this.opts.healthProbe(this.baseUrl))
|
|
265
|
+
if (await this.opts.healthProbe(this.baseUrl)) {
|
|
266
|
+
// Mark healthy so a later abnormal exit is eligible for the restart
|
|
267
|
+
// self-heal (issue #58) — first-start exits before this are not.
|
|
268
|
+
this.everHealthy = true;
|
|
220
269
|
return;
|
|
270
|
+
}
|
|
221
271
|
if (Date.now() >= deadline) {
|
|
222
272
|
throw new Error(`runtime did not become healthy at ${this.baseUrl} within ` +
|
|
223
273
|
`${this.opts.healthTimeoutMs}ms`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-orchestrator.js","sourceRoot":"","sources":["../src/local-orchestrator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAE,KAAK,EAAqB,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAChF,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAwDpC,qFAAqF;AACrF,MAAM,UAAU,wBAAwB;IACtC,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC/C,OAAO,OAAO,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC;AACvD,CAAC;AAED,KAAK,UAAU,kBAAkB,CAAC,OAAe;IAC/C,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,SAAS,CAAC,CAAC;QAC7C,OAAO,GAAG,CAAC,EAAE,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,YAAY,GAAG,CAAC,EAAU,EAAiB,EAAE,CACjD,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAEpD,MAAM,OAAO,wBAAwB;IAClB,IAAI,CAenB;IAEM,KAAK,GAA0B,IAAI,CAAC;IACpC,MAAM,GAAyB,IAAI,CAAC;IACpC,iBAAiB,GAAa,EAAE,CAAC;IACzC,mEAAmE;IAC3D,QAAQ,GAAG,KAAK,CAAC;IACjB,MAAM,GAAG,KAAK,CAAC;IACf,OAAO,GAAsB,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"local-orchestrator.js","sourceRoot":"","sources":["../src/local-orchestrator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* #55: real provider connectivity probe for the Settings → Providers "Test"
|
|
3
|
+
* button. Previously the /test route only echoed the stored profile with
|
|
4
|
+
* health_status:"unknown", so even an unreachable gateway looked "tested".
|
|
5
|
+
*
|
|
6
|
+
* Strategy (kept deliberately generic so it works across OpenAI-compatible and
|
|
7
|
+
* Anthropic-compatible gateways without hardcoding a vendor):
|
|
8
|
+
* - best-effort GET {baseUrl}/models with the API key as a Bearer token;
|
|
9
|
+
* - a 2xx ⇒ healthy (connected + authenticated);
|
|
10
|
+
* - 401/403 ⇒ error (reachable but auth rejected);
|
|
11
|
+
* - other 4xx/5xx ⇒ reachable, so still "healthy" at the connectivity level —
|
|
12
|
+
* many Anthropic-style gateways have no /models endpoint and answer 404, and
|
|
13
|
+
* that does NOT mean the gateway is down;
|
|
14
|
+
* - a network/DNS/timeout failure ⇒ unavailable.
|
|
15
|
+
*
|
|
16
|
+
* Error messages are redacted (no absolute node_modules paths) consistent with
|
|
17
|
+
* the #45 hardening.
|
|
18
|
+
*/
|
|
19
|
+
export type ProbeStatus = "healthy" | "unavailable" | "error";
|
|
20
|
+
export interface ProbeResult {
|
|
21
|
+
status: ProbeStatus;
|
|
22
|
+
/** Human-readable detail for the UI; redacted, never leaks internal paths. */
|
|
23
|
+
message?: string;
|
|
24
|
+
latencyMs?: number;
|
|
25
|
+
}
|
|
26
|
+
export interface ProbeInput {
|
|
27
|
+
baseUrl: string;
|
|
28
|
+
apiKey: string;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Probe a provider gateway. `fetchFn`/`timeoutMs` are injectable for tests.
|
|
32
|
+
* Never throws — always resolves to a ProbeResult.
|
|
33
|
+
*/
|
|
34
|
+
export declare function probeProvider(input: ProbeInput, opts?: {
|
|
35
|
+
fetchFn?: typeof fetch;
|
|
36
|
+
timeoutMs?: number;
|
|
37
|
+
}): Promise<ProbeResult>;
|
|
38
|
+
//# sourceMappingURL=provider-probe.d.ts.map
|