@atomic-chat/core 0.20.6 → 0.21.0
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/audio/jobs.js +4 -0
- package/dist/audio/jobs.js.map +1 -1
- package/dist/audio/service.d.ts +1 -1
- package/dist/audio/service.js +3 -1
- package/dist/audio/service.js.map +1 -1
- package/dist/audio/session.js +28 -16
- package/dist/audio/session.js.map +1 -1
- package/dist/audio/state.d.ts +3 -1
- package/dist/audio/state.js +3 -1
- package/dist/audio/state.js.map +1 -1
- package/dist/cli/launch.d.ts +23 -3
- package/dist/cli/launch.js +59 -8
- package/dist/cli/launch.js.map +1 -1
- package/dist/cli/main.d.ts +1 -1
- package/dist/contracts/events.d.ts +8 -0
- package/dist/contracts/settings.d.ts +5 -0
- package/dist/contracts/settings.js.map +1 -1
- package/dist/core/atomic-core.d.ts +3 -1
- package/dist/core/atomic-core.js +4 -1
- package/dist/core/atomic-core.js.map +1 -1
- package/dist/core/create.js +4 -1
- package/dist/core/create.js.map +1 -1
- package/dist/core/sessions.js +1 -0
- package/dist/core/sessions.js.map +1 -1
- package/dist/integrations/catalog.d.ts +25 -8
- package/dist/integrations/catalog.js +105 -38
- package/dist/integrations/catalog.js.map +1 -1
- package/dist/integrations/configure/atomic-agent.d.ts +9 -1
- package/dist/integrations/configure/atomic-agent.js +42 -3
- package/dist/integrations/configure/atomic-agent.js.map +1 -1
- package/dist/integrations/configure/backup.d.ts +21 -0
- package/dist/integrations/configure/backup.js +52 -0
- package/dist/integrations/configure/backup.js.map +1 -0
- package/dist/integrations/configure/claude-code.d.ts +11 -4
- package/dist/integrations/configure/claude-code.js +73 -24
- package/dist/integrations/configure/claude-code.js.map +1 -1
- package/dist/integrations/configure/cline.d.ts +14 -4
- package/dist/integrations/configure/cline.js +78 -6
- package/dist/integrations/configure/cline.js.map +1 -1
- package/dist/integrations/configure/codex.d.ts +5 -3
- package/dist/integrations/configure/codex.js +12 -5
- package/dist/integrations/configure/codex.js.map +1 -1
- package/dist/integrations/configure/copilot.d.ts +28 -5
- package/dist/integrations/configure/copilot.js +124 -8
- package/dist/integrations/configure/copilot.js.map +1 -1
- package/dist/integrations/configure/droid.d.ts +13 -7
- package/dist/integrations/configure/droid.js +48 -17
- package/dist/integrations/configure/droid.js.map +1 -1
- package/dist/integrations/configure/dsh.d.ts +36 -20
- package/dist/integrations/configure/dsh.js +250 -48
- package/dist/integrations/configure/dsh.js.map +1 -1
- package/dist/integrations/configure/goose.d.ts +21 -7
- package/dist/integrations/configure/goose.js +141 -10
- package/dist/integrations/configure/goose.js.map +1 -1
- package/dist/integrations/configure/hermes.d.ts +63 -10
- package/dist/integrations/configure/hermes.js +360 -75
- package/dist/integrations/configure/hermes.js.map +1 -1
- package/dist/integrations/configure/json-backup.d.ts +73 -0
- package/dist/integrations/configure/json-backup.js +292 -0
- package/dist/integrations/configure/json-backup.js.map +1 -0
- package/dist/integrations/configure/json-key-backup.d.ts +43 -0
- package/dist/integrations/configure/json-key-backup.js +113 -0
- package/dist/integrations/configure/json-key-backup.js.map +1 -0
- package/dist/integrations/configure/kilo.d.ts +4 -4
- package/dist/integrations/configure/kilo.js +6 -9
- package/dist/integrations/configure/kilo.js.map +1 -1
- package/dist/integrations/configure/legacy-env-block.d.ts +18 -0
- package/dist/integrations/configure/legacy-env-block.js +47 -0
- package/dist/integrations/configure/legacy-env-block.js.map +1 -0
- package/dist/integrations/configure/mimo.d.ts +3 -2
- package/dist/integrations/configure/mimo.js +8 -9
- package/dist/integrations/configure/mimo.js.map +1 -1
- package/dist/integrations/configure/muse.d.ts +3 -3
- package/dist/integrations/configure/muse.js +5 -6
- package/dist/integrations/configure/muse.js.map +1 -1
- package/dist/integrations/configure/openclaude.d.ts +22 -7
- package/dist/integrations/configure/openclaude.js +132 -39
- package/dist/integrations/configure/openclaude.js.map +1 -1
- package/dist/integrations/configure/openclaw.d.ts +19 -5
- package/dist/integrations/configure/openclaw.js +79 -23
- package/dist/integrations/configure/openclaw.js.map +1 -1
- package/dist/integrations/configure/opencode-style.d.ts +53 -11
- package/dist/integrations/configure/opencode-style.js +218 -23
- package/dist/integrations/configure/opencode-style.js.map +1 -1
- package/dist/integrations/configure/opencode.d.ts +5 -4
- package/dist/integrations/configure/opencode.js +8 -10
- package/dist/integrations/configure/opencode.js.map +1 -1
- package/dist/integrations/configure/openhands.d.ts +5 -4
- package/dist/integrations/configure/openhands.js +7 -7
- package/dist/integrations/configure/openhands.js.map +1 -1
- package/dist/integrations/configure/pi.d.ts +6 -5
- package/dist/integrations/configure/pi.js +79 -30
- package/dist/integrations/configure/pi.js.map +1 -1
- package/dist/integrations/configure/poolside.d.ts +5 -4
- package/dist/integrations/configure/poolside.js +7 -7
- package/dist/integrations/configure/poolside.js.map +1 -1
- package/dist/integrations/configure/registry.d.ts +6 -0
- package/dist/integrations/configure/registry.js +1 -0
- package/dist/integrations/configure/registry.js.map +1 -1
- package/dist/integrations/configure/zcode.d.ts +6 -7
- package/dist/integrations/configure/zcode.js +26 -11
- package/dist/integrations/configure/zcode.js.map +1 -1
- package/dist/integrations/configure/zed.d.ts +16 -4
- package/dist/integrations/configure/zed.js +61 -13
- package/dist/integrations/configure/zed.js.map +1 -1
- package/dist/models/gguf/kv-cache.d.ts +20 -1
- package/dist/models/gguf/kv-cache.js +97 -7
- package/dist/models/gguf/kv-cache.js.map +1 -1
- package/dist/models/gguf/reader.d.ts +5 -3
- package/dist/models/gguf/reader.js +10 -6
- package/dist/models/gguf/reader.js.map +1 -1
- package/dist/runtime/llamacpp/args.d.ts +14 -0
- package/dist/runtime/llamacpp/args.js +48 -4
- package/dist/runtime/llamacpp/args.js.map +1 -1
- package/dist/runtime/llamacpp/ctx-ladder.d.ts +6 -3
- package/dist/runtime/llamacpp/ctx-ladder.js +6 -3
- package/dist/runtime/llamacpp/ctx-ladder.js.map +1 -1
- package/dist/runtime/llamacpp/fit-margin.d.ts +24 -0
- package/dist/runtime/llamacpp/fit-margin.js +31 -0
- package/dist/runtime/llamacpp/fit-margin.js.map +1 -1
- package/dist/runtime/llamacpp/generation-limits.d.ts +45 -0
- package/dist/runtime/llamacpp/generation-limits.js +61 -0
- package/dist/runtime/llamacpp/generation-limits.js.map +1 -0
- package/dist/runtime/llamacpp/load-plan.d.ts +14 -2
- package/dist/runtime/llamacpp/load-plan.js +64 -13
- package/dist/runtime/llamacpp/load-plan.js.map +1 -1
- package/dist/runtime/llamacpp/runtime.d.ts +1 -0
- package/dist/runtime/llamacpp/runtime.js +2 -0
- package/dist/runtime/llamacpp/runtime.js.map +1 -1
- package/dist/runtime/managed-engines/runtime.js +13 -2
- package/dist/runtime/managed-engines/runtime.js.map +1 -1
- package/dist/runtime/managed-engines/spec.d.ts +6 -0
- package/dist/runtime/managed-engines/spec.js.map +1 -1
- package/dist/runtime/managed-models/auto-limits.d.ts +47 -0
- package/dist/runtime/managed-models/auto-limits.js +60 -0
- package/dist/runtime/managed-models/auto-limits.js.map +1 -0
- package/dist/runtime/managed-models/index.d.ts +1 -0
- package/dist/runtime/managed-models/index.js +1 -0
- package/dist/runtime/managed-models/index.js.map +1 -1
- package/dist/runtime/mlx/config.d.ts +9 -5
- package/dist/runtime/mlx/config.js +12 -6
- package/dist/runtime/mlx/config.js.map +1 -1
- package/dist/runtime/mlx/model-files.d.ts +9 -0
- package/dist/runtime/mlx/model-files.js +26 -0
- package/dist/runtime/mlx/model-files.js.map +1 -1
- package/dist/runtime/mlx/runtime.d.ts +7 -0
- package/dist/runtime/mlx/runtime.js +24 -2
- package/dist/runtime/mlx/runtime.js.map +1 -1
- package/dist/runtime/sglang/adapter.d.ts +4 -0
- package/dist/runtime/sglang/adapter.js +9 -6
- package/dist/runtime/sglang/adapter.js.map +1 -1
- package/dist/runtime/sglang/engine.js +2 -1
- package/dist/runtime/sglang/engine.js.map +1 -1
- package/dist/runtime/sglang/memory.d.ts +11 -1
- package/dist/runtime/sglang/memory.js +34 -3
- package/dist/runtime/sglang/memory.js.map +1 -1
- package/dist/runtime/sglang/settings.d.ts +2 -1
- package/dist/runtime/sglang/settings.js +11 -7
- package/dist/runtime/sglang/settings.js.map +1 -1
- package/dist/runtime/vllm/adapter.d.ts +4 -0
- package/dist/runtime/vllm/adapter.js +9 -6
- package/dist/runtime/vllm/adapter.js.map +1 -1
- package/dist/runtime/vllm/engine.js +1 -0
- package/dist/runtime/vllm/engine.js.map +1 -1
- package/dist/runtime/vllm/memory.d.ts +12 -1
- package/dist/runtime/vllm/memory.js +44 -2
- package/dist/runtime/vllm/memory.js.map +1 -1
- package/dist/runtime/vllm/settings.d.ts +2 -1
- package/dist/runtime/vllm/settings.js +12 -7
- package/dist/runtime/vllm/settings.js.map +1 -1
- package/dist/server/public/context-window.d.ts +29 -0
- package/dist/server/public/context-window.js +77 -0
- package/dist/server/public/context-window.js.map +1 -0
- package/dist/server/public/decision-preview.js +1 -0
- package/dist/server/public/decision-preview.js.map +1 -1
- package/dist/server/public/errors.d.ts +15 -4
- package/dist/server/public/errors.js +53 -7
- package/dist/server/public/errors.js.map +1 -1
- package/dist/server/public/forward.js +65 -5
- package/dist/server/public/forward.js.map +1 -1
- package/dist/server/public/index.d.ts +1 -0
- package/dist/server/public/index.js +1 -0
- package/dist/server/public/index.js.map +1 -1
- package/dist/server/public/listing.d.ts +9 -2
- package/dist/server/public/listing.js +30 -9
- package/dist/server/public/listing.js.map +1 -1
- package/dist/server/public/responses.js +9 -5
- package/dist/server/public/responses.js.map +1 -1
- package/dist/server/public/system-messages.d.ts +39 -0
- package/dist/server/public/system-messages.js +166 -0
- package/dist/server/public/system-messages.js.map +1 -0
- package/dist/server/public/telemetry.d.ts +9 -0
- package/dist/server/public/telemetry.js +42 -6
- package/dist/server/public/telemetry.js.map +1 -1
- package/dist/server/public/thinking.d.ts +26 -0
- package/dist/server/public/thinking.js +62 -0
- package/dist/server/public/thinking.js.map +1 -0
- package/dist/server/public/trace.d.ts +8 -0
- package/dist/server/public/trace.js +17 -0
- package/dist/server/public/trace.js.map +1 -1
- package/dist/server/public/types.d.ts +8 -0
- package/dist/server/shims/index.d.ts +1 -0
- package/dist/server/shims/index.js +1 -0
- package/dist/server/shims/index.js.map +1 -1
- package/dist/server/shims/reminders.d.ts +8 -0
- package/dist/server/shims/reminders.js +14 -0
- package/dist/server/shims/reminders.js.map +1 -0
- package/dist/server/shims/responses.d.ts +33 -9
- package/dist/server/shims/responses.js +160 -36
- package/dist/server/shims/responses.js.map +1 -1
- package/dist/settings/default-migrations.d.ts +34 -0
- package/dist/settings/default-migrations.js +47 -0
- package/dist/settings/default-migrations.js.map +1 -0
- package/dist/settings/schema/atomic-prism.json +23 -9
- package/dist/settings/schema/llamacpp-upstream.json +23 -9
- package/dist/settings/schema/llamacpp.json +23 -9
- package/dist/settings/schema/sglang.json +8 -8
- package/dist/settings/schema/vllm.json +8 -8
- package/dist/settings/schema.js +1 -0
- package/dist/settings/schema.js.map +1 -1
- package/dist/settings/store.d.ts +6 -0
- package/dist/settings/store.js +18 -1
- package/dist/settings/store.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
|
@@ -192,7 +192,7 @@ export const AGENTS = [
|
|
|
192
192
|
detectBin: 'goose',
|
|
193
193
|
aliases: [],
|
|
194
194
|
requiresModel: true,
|
|
195
|
-
//
|
|
195
|
+
// Handed the bare host like Claude Code; `childEnv` adds the server's prefix to OPENAI_BASE_URL.
|
|
196
196
|
endpointWithPrefix: false,
|
|
197
197
|
docsUrl: 'https://block.github.io/goose/',
|
|
198
198
|
// A bare `goose` only prints help.
|
|
@@ -263,6 +263,9 @@ export function apiUrlFor(agent, baseUrl, prefix) {
|
|
|
263
263
|
export const CONFLICTING_PROVIDER_ENV = [
|
|
264
264
|
'OPENAI_API_KEY',
|
|
265
265
|
'OPENAI_BASE_URL',
|
|
266
|
+
// Goose reads an OPENAI_HOST from the environment before OPENAI_BASE_URL, and its base path with it.
|
|
267
|
+
'OPENAI_HOST',
|
|
268
|
+
'OPENAI_BASE_PATH',
|
|
266
269
|
'ANTHROPIC_API_KEY',
|
|
267
270
|
'ANTHROPIC_AUTH_TOKEN',
|
|
268
271
|
'ANTHROPIC_OAUTH_TOKEN',
|
|
@@ -273,32 +276,37 @@ export const CONFLICTING_PROVIDER_ENV = [
|
|
|
273
276
|
'OPENROUTER_API_KEY',
|
|
274
277
|
];
|
|
275
278
|
/**
|
|
276
|
-
* Environment the spawned agent needs on top of its config file.
|
|
277
|
-
* through environment variables
|
|
278
|
-
*
|
|
279
|
-
* profile names the variable its key is read from (`env_key`) but never holds the key, so the key
|
|
280
|
-
*
|
|
279
|
+
* Environment the spawned agent needs on top of its config file. Six agents are configured purely
|
|
280
|
+
* through environment variables, only ever on the process we start and never for the user: Goose,
|
|
281
|
+
* OpenHands, Poolside, Muse Code, Copilot (selecting its providers.json entry) and Codex. Codex's
|
|
282
|
+
* profile names the variable its key is read from (`env_key`) but never holds the key, so the key goes
|
|
283
|
+
* on the child — only when there is one, as the profile names the variable only then.
|
|
284
|
+
* `options.contextLength`, the served window when known, tells Goose and Poolside when to compact.
|
|
281
285
|
*/
|
|
282
|
-
export function childEnv(agent, apiUrl, model, apiKey) {
|
|
286
|
+
export function childEnv(agent, apiUrl, model, apiKey, options = {}) {
|
|
283
287
|
const key = apiKey || 'atomic';
|
|
284
288
|
switch (agent.id) {
|
|
285
289
|
case 'copilot':
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
};
|
|
294
|
-
case 'goose':
|
|
290
|
+
// The endpoint, key and limits are our entry in Copilot's providers.json
|
|
291
|
+
// (`configure/copilot.ts`); this selects it for the run, as `--model` would.
|
|
292
|
+
return { COPILOT_MODEL: `atomic-chat/${model}` };
|
|
293
|
+
case 'goose': {
|
|
294
|
+
// Goose derives its chat path from OPENAI_BASE_URL, prefix included; with the window and output
|
|
295
|
+
// cap it compacts before the server refuses.
|
|
296
|
+
const ctx = options.contextLength !== undefined && options.contextLength > 0 ? options.contextLength : 0;
|
|
295
297
|
return {
|
|
296
298
|
GOOSE_PROVIDER: 'openai',
|
|
297
299
|
GOOSE_MODEL: model,
|
|
298
|
-
|
|
299
|
-
OPENAI_BASE_PATH: 'v1/chat/completions',
|
|
300
|
+
OPENAI_BASE_URL: `${apiUrl}${options.apiPrefix ?? '/v1'}`,
|
|
300
301
|
OPENAI_API_KEY: key,
|
|
302
|
+
...(ctx
|
|
303
|
+
? {
|
|
304
|
+
GOOSE_CONTEXT_LIMIT: String(ctx),
|
|
305
|
+
GOOSE_MAX_TOKENS: String(Math.min(8192, Math.floor(ctx / 4))),
|
|
306
|
+
}
|
|
307
|
+
: {}),
|
|
301
308
|
};
|
|
309
|
+
}
|
|
302
310
|
case 'openhands':
|
|
303
311
|
// The litellm `openai/` prefix is required for a custom OpenAI-compatible base_url.
|
|
304
312
|
return { LLM_MODEL: `openai/${model}`, LLM_BASE_URL: apiUrl, LLM_API_KEY: key };
|
|
@@ -307,6 +315,9 @@ export function childEnv(agent, apiUrl, model, apiKey) {
|
|
|
307
315
|
POOLSIDE_STANDALONE_BASE_URL: poolsideStandaloneBaseUrl(apiUrl),
|
|
308
316
|
POOLSIDE_API_KEY: key,
|
|
309
317
|
POOLSIDE_STANDALONE_MODEL: model,
|
|
318
|
+
...(options.contextLength && options.contextLength > 0
|
|
319
|
+
? { POOLSIDE_STANDALONE_CONTEXT_LENGTH: String(options.contextLength) }
|
|
320
|
+
: {}),
|
|
310
321
|
};
|
|
311
322
|
case 'muse':
|
|
312
323
|
return { META_API_KEY: key };
|
|
@@ -316,17 +327,26 @@ export function childEnv(agent, apiUrl, model, apiKey) {
|
|
|
316
327
|
return {};
|
|
317
328
|
}
|
|
318
329
|
}
|
|
319
|
-
/**
|
|
330
|
+
/**
|
|
331
|
+
* The arguments that start `agent` on `model`: its fixed `runArgs`, plus `--model atomic/<id>` for
|
|
332
|
+
* Kilo, which otherwise opens on the model it last used before the one its config selects.
|
|
333
|
+
*/
|
|
334
|
+
export function runArgsFor(agent, model) {
|
|
335
|
+
return agent.id === 'kilo' && model ? ['--model', `atomic/${model}`, ...agent.runArgs] : [...agent.runArgs];
|
|
336
|
+
}
|
|
337
|
+
/**
|
|
338
|
+
* Poolside's docs give the standalone base URL with its API prefix (`/v1`), so it is kept; only
|
|
339
|
+
* surrounding whitespace and trailing slashes go.
|
|
340
|
+
*/
|
|
320
341
|
export function poolsideStandaloneBaseUrl(apiUrl) {
|
|
321
|
-
|
|
322
|
-
const withoutV1 = trimmed.endsWith('/v1') ? trimmed.slice(0, -'/v1'.length) : trimmed;
|
|
323
|
-
return withoutV1.replace(/\/+$/, '');
|
|
342
|
+
return apiUrl.trim().replace(/\/+$/, '');
|
|
324
343
|
}
|
|
325
344
|
/**
|
|
326
345
|
* Launchers that installers drop outside PATH. OpenClaw's installer writes into `~/.openclaw/bin`
|
|
327
346
|
* or `~/.local/bin` (or `$OPENCLAW_PREFIX`), which a login shell may not have on PATH yet. ZCode is a
|
|
328
347
|
* desktop app that puts nothing on PATH outside Linux, so its candidates are the executables its
|
|
329
|
-
* installers write.
|
|
348
|
+
* installers write. Zed's DMG links no `zed` CLI, and its install script's `~/.local/bin` is often
|
|
349
|
+
* not on PATH. Every other agent installs onto PATH, and guessing would only produce false
|
|
330
350
|
* positives.
|
|
331
351
|
*/
|
|
332
352
|
export function offPathCandidates(bin, home, env = process.env, platform = process.platform) {
|
|
@@ -334,6 +354,8 @@ export function offPathCandidates(bin, home, env = process.env, platform = proce
|
|
|
334
354
|
const join = (...parts) => parts.map((p) => p.replace(/[\\/]+$/, '')).join(separator);
|
|
335
355
|
if (bin === 'zcode')
|
|
336
356
|
return zcodeAppCandidates(home, env, platform, join);
|
|
357
|
+
if (bin === 'zed')
|
|
358
|
+
return zedLauncherCandidates(home, env, platform, join);
|
|
337
359
|
if (bin !== 'openclaw' || !home)
|
|
338
360
|
return [];
|
|
339
361
|
const roots = [];
|
|
@@ -349,32 +371,77 @@ export function offPathCandidates(bin, home, env = process.env, platform = proce
|
|
|
349
371
|
out.push(join(root, 'bin', name));
|
|
350
372
|
return out;
|
|
351
373
|
}
|
|
374
|
+
/** ZCode's two builds: product name and Linux executable. */
|
|
375
|
+
const ZCODE_FLAVORS = [
|
|
376
|
+
['ZCode', 'zcode'],
|
|
377
|
+
['ZCode Preview', 'zcode-preview'],
|
|
378
|
+
];
|
|
352
379
|
/**
|
|
353
|
-
* Where each ZCode installer puts the desktop app's executable
|
|
354
|
-
* `core/system/commands.rs`,
|
|
355
|
-
* `/usr/bin/zcode`, which the
|
|
380
|
+
* Where each ZCode installer puts the desktop app's executable, the "ZCode Preview" build included
|
|
381
|
+
* (`zcode_app_candidates_for` in the app's `core/system/commands.rs`, which also scans for AppImages
|
|
382
|
+
* and the Windows uninstall list). The Linux deb/rpm packages also link `/usr/bin/zcode`, which the
|
|
383
|
+
* PATH probe finds first.
|
|
356
384
|
*/
|
|
357
385
|
function zcodeAppCandidates(home, env, platform, join) {
|
|
386
|
+
const out = [];
|
|
358
387
|
if (platform === 'darwin') {
|
|
359
|
-
const
|
|
360
|
-
|
|
361
|
-
|
|
388
|
+
const roots = ['/Applications', ...(home ? [join(home, 'Applications')] : [])];
|
|
389
|
+
for (const root of roots)
|
|
390
|
+
for (const [product] of ZCODE_FLAVORS)
|
|
391
|
+
out.push(join(root, `${product}.app/Contents/MacOS/${product}`));
|
|
362
392
|
return out;
|
|
363
393
|
}
|
|
364
394
|
if (platform === 'win32') {
|
|
365
395
|
// NSIS installs per user under `%LOCALAPPDATA%\Programs` and for all users under `%ProgramFiles%`.
|
|
366
|
-
const
|
|
367
|
-
|
|
368
|
-
['
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
const root = env[variable];
|
|
396
|
+
const roots = [
|
|
397
|
+
env['LOCALAPPDATA'] ? join(env['LOCALAPPDATA'], 'Programs') : undefined,
|
|
398
|
+
env['ProgramFiles'],
|
|
399
|
+
];
|
|
400
|
+
for (const root of roots)
|
|
372
401
|
if (root)
|
|
373
|
-
|
|
374
|
-
|
|
402
|
+
for (const [product] of ZCODE_FLAVORS)
|
|
403
|
+
out.push(join(root, product, `${product}.exe`));
|
|
375
404
|
return out;
|
|
376
405
|
}
|
|
377
|
-
|
|
406
|
+
for (const [product, exe] of ZCODE_FLAVORS) {
|
|
407
|
+
out.push(`/opt/${product}/${exe}`);
|
|
408
|
+
if (exe !== 'zcode')
|
|
409
|
+
out.push(`/usr/bin/${exe}`);
|
|
410
|
+
}
|
|
411
|
+
return out;
|
|
412
|
+
}
|
|
413
|
+
/**
|
|
414
|
+
* Zed's launchers off PATH (`zed_cli_candidates` and `zed_app_candidates` in the app's
|
|
415
|
+
* `core/system/commands.rs`): its CLI, then the editor itself.
|
|
416
|
+
*/
|
|
417
|
+
function zedLauncherCandidates(home, env, platform, join) {
|
|
418
|
+
if (!home)
|
|
419
|
+
return [];
|
|
420
|
+
if (platform === 'darwin') {
|
|
421
|
+
const roots = ['/Applications', join(home, 'Applications')];
|
|
422
|
+
return [
|
|
423
|
+
join(home, '.local/bin/zed'),
|
|
424
|
+
...roots.flatMap((root) => [
|
|
425
|
+
join(root, 'Zed.app/Contents/MacOS/cli'),
|
|
426
|
+
join(root, 'Zed Preview.app/Contents/MacOS/cli'),
|
|
427
|
+
]),
|
|
428
|
+
...roots.map((root) => join(root, 'Zed.app/Contents/MacOS/zed')),
|
|
429
|
+
];
|
|
430
|
+
}
|
|
431
|
+
if (platform === 'win32') {
|
|
432
|
+
// The installer's `{autopf}\Zed`: per user unless run elevated.
|
|
433
|
+
const local = env['LOCALAPPDATA'] || join(home, 'AppData\\Local');
|
|
434
|
+
const dirs = [
|
|
435
|
+
join(local, 'Programs\\Zed'),
|
|
436
|
+
...(env['ProgramFiles'] ? [join(env['ProgramFiles'], 'Zed')] : []),
|
|
437
|
+
];
|
|
438
|
+
return [...dirs.map((dir) => join(dir, 'bin\\zed.exe')), ...dirs.map((dir) => join(dir, 'Zed.exe'))];
|
|
439
|
+
}
|
|
440
|
+
return [
|
|
441
|
+
join(home, '.local/bin/zed'),
|
|
442
|
+
join(home, '.local/zed.app/bin/zed'),
|
|
443
|
+
join(home, '.local/zed-preview.app/bin/zed'),
|
|
444
|
+
];
|
|
378
445
|
}
|
|
379
446
|
/**
|
|
380
447
|
* `launch` runs a bare llama-server, and Muse Code fetches `/muse-code/models` before its first
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../src/integrations/catalog.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../src/integrations/catalog.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,6 +14,12 @@
|
|
|
14
14
|
* - `activeEmbeddingProvider` is repaired only when it is missing or dangling, and always to
|
|
15
15
|
* `local-llama`. Repairing it to US would quietly hand memory recall to Atomic Chat, which is not
|
|
16
16
|
* what Run asked for.
|
|
17
|
+
*
|
|
18
|
+
* With no `llm.fallback` block the agent appends `local-llama` to every chain, so a failure of ours
|
|
19
|
+
* (a 404 included) is retried on :8080 and reported as "The local model isn't running": Connect
|
|
20
|
+
* writes `appendLocal: false` there. What the `llm` keys held before is recorded in
|
|
21
|
+
* `config.json.atomic-chat-backup.json` for the app's Disconnect. Mirrors `configure_atomic_agent_at`
|
|
22
|
+
* in the app's `core/system/commands.rs`, byte for byte.
|
|
17
23
|
*/
|
|
18
24
|
import type { JsonValue } from '../config-io.js';
|
|
19
25
|
import type { JsonObject } from './json-tree.js';
|
|
@@ -29,5 +35,7 @@ export declare function atomicAgentEmbeddingBaseUrl(root: JsonObject, chatUrl: s
|
|
|
29
35
|
/** The `llama-server` entry Atomic Agent would synthesise for itself, from the same inputs. */
|
|
30
36
|
export declare function atomicAgentLocalLlamaEntry(root: JsonObject): JsonObject;
|
|
31
37
|
/** The whole merge, with no I/O, so the rules above are testable without a state directory. */
|
|
32
|
-
export declare function atomicAgentPatchConfig(parsed: JsonValue, apiUrl: string, model: string, apiKey: string): JsonObject;
|
|
38
|
+
export declare function atomicAgentPatchConfig(parsed: JsonValue, apiUrl: string, model: string, apiKey: string, contextLength?: number): JsonObject;
|
|
39
|
+
/** The `llm` keys Connect may overwrite besides our provider entry. */
|
|
40
|
+
export declare const ATOMIC_AGENT_TRACKED_PATHS: string[][];
|
|
33
41
|
export declare const configureAtomicAgent: ConfigureWriter;
|
|
@@ -14,9 +14,16 @@
|
|
|
14
14
|
* - `activeEmbeddingProvider` is repaired only when it is missing or dangling, and always to
|
|
15
15
|
* `local-llama`. Repairing it to US would quietly hand memory recall to Atomic Chat, which is not
|
|
16
16
|
* what Run asked for.
|
|
17
|
+
*
|
|
18
|
+
* With no `llm.fallback` block the agent appends `local-llama` to every chain, so a failure of ours
|
|
19
|
+
* (a 404 included) is retried on :8080 and reported as "The local model isn't running": Connect
|
|
20
|
+
* writes `appendLocal: false` there. What the `llm` keys held before is recorded in
|
|
21
|
+
* `config.json.atomic-chat-backup.json` for the app's Disconnect. Mirrors `configure_atomic_agent_at`
|
|
22
|
+
* in the app's `core/system/commands.rs`, byte for byte.
|
|
17
23
|
*/
|
|
18
24
|
import { AtomicCoreError } from '../../contracts/index.js';
|
|
19
25
|
import { canonicalJson, parseJsonStrict } from '../config-io.js';
|
|
26
|
+
import { getAt, readBackup, renderBackup, trackKeys, writeBackupText } from './json-key-backup.js';
|
|
20
27
|
import { asJsonArray, asJsonObject } from './json-tree.js';
|
|
21
28
|
import { registerWriter } from './registry.js';
|
|
22
29
|
const PROVIDER_ID = 'atomic-chat';
|
|
@@ -68,7 +75,7 @@ function lists(providers, id) {
|
|
|
68
75
|
return providers.some((p) => asJsonObject(p)?.['id'] === id);
|
|
69
76
|
}
|
|
70
77
|
/** The whole merge, with no I/O, so the rules above are testable without a state directory. */
|
|
71
|
-
export function atomicAgentPatchConfig(parsed, apiUrl, model, apiKey) {
|
|
78
|
+
export function atomicAgentPatchConfig(parsed, apiUrl, model, apiKey, contextLength) {
|
|
72
79
|
// The agent's `parseOptionalString` rejects `""` outright rather than treating it as absent, so an
|
|
73
80
|
// empty model would take the whole file down at its next start. Fail before touching anything.
|
|
74
81
|
if (model.trim() === '') {
|
|
@@ -102,6 +109,11 @@ export function atomicAgentPatchConfig(parsed, apiUrl, model, apiKey) {
|
|
|
102
109
|
supportsTools: true,
|
|
103
110
|
requestTimeoutMs: timeout,
|
|
104
111
|
};
|
|
112
|
+
// `userModels` outranks the bundled catalog in the agent's `resolveModel`; without it a local model
|
|
113
|
+
// is assumed to hold 128K and is never compacted before the server refuses.
|
|
114
|
+
if (contextLength !== undefined) {
|
|
115
|
+
entry['userModels'] = [{ id: model.trim(), kind: 'chat', contextWindow: contextLength }];
|
|
116
|
+
}
|
|
105
117
|
if (existing >= 0)
|
|
106
118
|
providers[existing] = entry;
|
|
107
119
|
else
|
|
@@ -114,14 +126,41 @@ export function atomicAgentPatchConfig(parsed, apiUrl, model, apiKey) {
|
|
|
114
126
|
llm['activeTextProvider'] = PROVIDER_ID;
|
|
115
127
|
if (repair)
|
|
116
128
|
llm['activeEmbeddingProvider'] = LOCAL_PROVIDER_ID;
|
|
129
|
+
// A chain the user configured is theirs.
|
|
130
|
+
if (llm['fallback'] === undefined || llm['fallback'] === null)
|
|
131
|
+
llm['fallback'] = { appendLocal: false };
|
|
117
132
|
return root;
|
|
118
133
|
}
|
|
119
|
-
|
|
134
|
+
/** The `llm` keys Connect may overwrite besides our provider entry. */
|
|
135
|
+
export const ATOMIC_AGENT_TRACKED_PATHS = [
|
|
136
|
+
['llm', 'activeTextProvider'],
|
|
137
|
+
['llm', 'activeEmbeddingProvider'],
|
|
138
|
+
['llm', 'fallback'],
|
|
139
|
+
];
|
|
140
|
+
export const configureAtomicAgent = async ({ apiUrl, model, apiKey, fs, env, contextLength, }) => {
|
|
120
141
|
const override = env['ATOMIC_AGENT_STATE_DIR']?.trim();
|
|
121
142
|
const path = `${override && override !== '' ? override : '.atomic-agent'}/config.json`;
|
|
122
143
|
const text = await fs.read(path);
|
|
123
144
|
const parsed = text === undefined ? {} : parseJsonStrict(text, fs.absolute(path));
|
|
124
|
-
|
|
145
|
+
const before = JSON.parse(JSON.stringify(parsed));
|
|
146
|
+
const patched = atomicAgentPatchConfig(parsed, apiUrl, model, apiKey, contextLength);
|
|
147
|
+
// The `local-llama` entry this Connect added, or an earlier one did: Disconnect drops it when
|
|
148
|
+
// nothing else is left.
|
|
149
|
+
const previous = await readBackup(fs, path);
|
|
150
|
+
const listed = (value) => asJsonArray(getAt(value, ['llm', 'providers'])) ?? [];
|
|
151
|
+
const same = (a, b) => canonicalJson(a) === canonicalJson(b);
|
|
152
|
+
const seeded = [...(previous?.seeded ?? [])];
|
|
153
|
+
const original = listed(before);
|
|
154
|
+
for (const entry of listed(patched)) {
|
|
155
|
+
if (asJsonObject(entry)?.['id'] === LOCAL_PROVIDER_ID &&
|
|
156
|
+
!original.some((e) => same(e, entry)) &&
|
|
157
|
+
!seeded.some((e) => same(e, entry))) {
|
|
158
|
+
seeded.push(entry);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
const keys = trackKeys(before, patched, ATOMIC_AGENT_TRACKED_PATHS, previous?.keys ?? []);
|
|
162
|
+
await fs.write(path, canonicalJson(patched));
|
|
163
|
+
await writeBackupText(fs, path, renderBackup({ keys, seeded }));
|
|
125
164
|
};
|
|
126
165
|
registerWriter('atomic-agent', configureAtomicAgent);
|
|
127
166
|
//# sourceMappingURL=atomic-agent.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"atomic-agent.js","sourceRoot":"","sources":["../../../src/integrations/configure/atomic-agent.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"atomic-agent.js","sourceRoot":"","sources":["../../../src/integrations/configure/atomic-agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The backup sidecar the desktop's Disconnect reads — twin of `agent_files.rs` in the app.
|
|
3
|
+
*
|
|
4
|
+
* `<config file>.atomic-chat-backup.json` records what the keys a writer overwrites held before the
|
|
5
|
+
* first Connect (`previous`) and what the writer put there (`written`). Disconnect restores
|
|
6
|
+
* `previous` only while the file still holds `written`, so a later choice of the user's stands. A
|
|
7
|
+
* `launch` from this CLI writes the same sidecar as the desktop, so either side can undo the other.
|
|
8
|
+
*/
|
|
9
|
+
import type { ConfigFs, JsonValue } from '../config-io.js';
|
|
10
|
+
import type { JsonObject } from './json-tree.js';
|
|
11
|
+
export declare function sidecarPath(path: string): string;
|
|
12
|
+
/** The sidecar of `path`, when there is one; one that does not parse only narrows what is restored. */
|
|
13
|
+
export declare function readSidecar(fs: ConfigFs, path: string): Promise<JsonObject | undefined>;
|
|
14
|
+
/** Owner-only off Windows: the previous values can include another provider's key. */
|
|
15
|
+
export declare function writeSidecar(fs: ConfigFs, path: string, backup: JsonValue, platform: NodeJS.Platform): Promise<void>;
|
|
16
|
+
/** The window to write, or `undefined` when it is not known. */
|
|
17
|
+
export declare function knownWindow(contextLength: number | undefined): number | undefined;
|
|
18
|
+
/** The reply cap written beside a known window: a quarter of it, and never more than 8192. */
|
|
19
|
+
export declare function outputCap(contextLength: number): number;
|
|
20
|
+
/** Deep equality of two JSON values, key order aside. */
|
|
21
|
+
export declare function sameJson(a: JsonValue | undefined, b: JsonValue | undefined): boolean;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The backup sidecar the desktop's Disconnect reads — twin of `agent_files.rs` in the app.
|
|
3
|
+
*
|
|
4
|
+
* `<config file>.atomic-chat-backup.json` records what the keys a writer overwrites held before the
|
|
5
|
+
* first Connect (`previous`) and what the writer put there (`written`). Disconnect restores
|
|
6
|
+
* `previous` only while the file still holds `written`, so a later choice of the user's stands. A
|
|
7
|
+
* `launch` from this CLI writes the same sidecar as the desktop, so either side can undo the other.
|
|
8
|
+
*/
|
|
9
|
+
import { canonicalJson } from '../config-io.js';
|
|
10
|
+
import { asJsonObject } from './json-tree.js';
|
|
11
|
+
export function sidecarPath(path) {
|
|
12
|
+
return `${path}.atomic-chat-backup.json`;
|
|
13
|
+
}
|
|
14
|
+
/** The sidecar of `path`, when there is one; one that does not parse only narrows what is restored. */
|
|
15
|
+
export async function readSidecar(fs, path) {
|
|
16
|
+
const text = await fs.read(sidecarPath(path));
|
|
17
|
+
if (text === undefined)
|
|
18
|
+
return undefined;
|
|
19
|
+
try {
|
|
20
|
+
return asJsonObject(JSON.parse(text));
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
return undefined;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
/** Owner-only off Windows: the previous values can include another provider's key. */
|
|
27
|
+
export async function writeSidecar(fs, path, backup, platform) {
|
|
28
|
+
await fs.write(sidecarPath(path), canonicalJson(backup), platform === 'win32' ? {} : { mode: 0o600 });
|
|
29
|
+
}
|
|
30
|
+
/** The window to write, or `undefined` when it is not known. */
|
|
31
|
+
export function knownWindow(contextLength) {
|
|
32
|
+
return contextLength !== undefined && contextLength > 0 ? contextLength : undefined;
|
|
33
|
+
}
|
|
34
|
+
/** The reply cap written beside a known window: a quarter of it, and never more than 8192. */
|
|
35
|
+
export function outputCap(contextLength) {
|
|
36
|
+
return Math.min(8192, Math.floor(contextLength / 4));
|
|
37
|
+
}
|
|
38
|
+
/** Deep equality of two JSON values, key order aside. */
|
|
39
|
+
export function sameJson(a, b) {
|
|
40
|
+
if (a === b)
|
|
41
|
+
return true;
|
|
42
|
+
if (a === undefined || b === undefined || a === null || b === null)
|
|
43
|
+
return false;
|
|
44
|
+
if (Array.isArray(a) || Array.isArray(b)) {
|
|
45
|
+
return (Array.isArray(a) && Array.isArray(b) && a.length === b.length && a.every((v, i) => sameJson(v, b[i])));
|
|
46
|
+
}
|
|
47
|
+
if (typeof a !== 'object' || typeof b !== 'object')
|
|
48
|
+
return false;
|
|
49
|
+
const keys = Object.keys(a);
|
|
50
|
+
return (keys.length === Object.keys(b).length && keys.every((k) => Object.hasOwn(b, k) && sameJson(a[k], b[k])));
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=backup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backup.js","sourceRoot":"","sources":["../../../src/integrations/configure/backup.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAE/C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAE7C,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,OAAO,GAAG,IAAI,0BAA0B,CAAA;AAC1C,CAAC;AAED,uGAAuG;AACvG,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,EAAY,EAAE,IAAY;IAC1D,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAA;IAC7C,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,SAAS,CAAA;IACxC,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAc,CAAC,CAAA;IACpD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAA;IAClB,CAAC;AACH,CAAC;AAED,sFAAsF;AACtF,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,EAAY,EACZ,IAAY,EACZ,MAAiB,EACjB,QAAyB;IAEzB,MAAM,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,EAAE,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;AACvG,CAAC;AAED,gEAAgE;AAChE,MAAM,UAAU,WAAW,CAAC,aAAiC;IAC3D,OAAO,aAAa,KAAK,SAAS,IAAI,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAA;AACrF,CAAC;AAED,8FAA8F;AAC9F,MAAM,UAAU,SAAS,CAAC,aAAqB;IAC7C,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC,CAAA;AACtD,CAAC;AAED,yDAAyD;AACzD,MAAM,UAAU,QAAQ,CAAC,CAAwB,EAAE,CAAwB;IACzE,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IACxB,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI;QAAE,OAAO,KAAK,CAAA;IAChF,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QACzC,OAAO,CACL,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACtG,CAAA;IACH,CAAC;IACD,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAA;IAChE,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAC3B,OAAO,CACL,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACxG,CAAA;AACH,CAAC"}
|
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Claude Code — `~/.claude
|
|
2
|
+
* Claude Code — `settings.json` in its config directory (`$CLAUDE_CONFIG_DIR`, else `~/.claude`).
|
|
3
3
|
*
|
|
4
|
-
* Port of `configure_claude_code` in `src-tauri/src/core/system/
|
|
5
|
-
* endpoint from environment variables that its settings
|
|
6
|
-
*
|
|
4
|
+
* Port of `configure_claude_code` / `connect_claude_code` in the app (`src-tauri/src/core/system/
|
|
5
|
+
* claude_config.rs`). Claude Code takes its endpoint from environment variables that its settings
|
|
6
|
+
* file can carry, and that `env` wins over the shell's, so pointing it at a local model is an upsert
|
|
7
|
+
* into that map plus the top-level `model` setting. Alongside the endpoint go empty values for the
|
|
8
|
+
* Bedrock / Vertex / Foundry switches (Claude Code's documented way to unset a shell's), the tab
|
|
9
|
+
* title off (it costs a side request to the model) and, when the served window is known, that window
|
|
10
|
+
* and an output cap so Claude Code compacts before the server refuses. What every key held before is
|
|
11
|
+
* kept in the sidecar `json-backup.ts` describes, for the app's Disconnect.
|
|
7
12
|
*
|
|
8
13
|
* Claude Code appends its own `/v1`, so `apiUrl` here is the bare `host:port` (the catalog marks
|
|
9
14
|
* this agent `endpointWithPrefix: false`).
|
|
@@ -13,4 +18,6 @@
|
|
|
13
18
|
* ones an earlier run left behind, so a rerun without a model keeps pointing at the last one.
|
|
14
19
|
*/
|
|
15
20
|
import type { ConfigureInput } from './registry.js';
|
|
21
|
+
/** `settings.json` in `$CLAUDE_CONFIG_DIR` (absolute or `~`-relative), else `.claude/settings.json`. */
|
|
22
|
+
export declare function claudeSettingsPath(input: Pick<ConfigureInput, 'env' | 'fs'>): string;
|
|
16
23
|
export declare function configureClaudeCode(input: ConfigureInput): Promise<void>;
|
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Claude Code — `~/.claude
|
|
2
|
+
* Claude Code — `settings.json` in its config directory (`$CLAUDE_CONFIG_DIR`, else `~/.claude`).
|
|
3
3
|
*
|
|
4
|
-
* Port of `configure_claude_code` in `src-tauri/src/core/system/
|
|
5
|
-
* endpoint from environment variables that its settings
|
|
6
|
-
*
|
|
4
|
+
* Port of `configure_claude_code` / `connect_claude_code` in the app (`src-tauri/src/core/system/
|
|
5
|
+
* claude_config.rs`). Claude Code takes its endpoint from environment variables that its settings
|
|
6
|
+
* file can carry, and that `env` wins over the shell's, so pointing it at a local model is an upsert
|
|
7
|
+
* into that map plus the top-level `model` setting. Alongside the endpoint go empty values for the
|
|
8
|
+
* Bedrock / Vertex / Foundry switches (Claude Code's documented way to unset a shell's), the tab
|
|
9
|
+
* title off (it costs a side request to the model) and, when the served window is known, that window
|
|
10
|
+
* and an output cap so Claude Code compacts before the server refuses. What every key held before is
|
|
11
|
+
* kept in the sidecar `json-backup.ts` describes, for the app's Disconnect.
|
|
7
12
|
*
|
|
8
13
|
* Claude Code appends its own `/v1`, so `apiUrl` here is the bare `host:port` (the catalog marks
|
|
9
14
|
* this agent `endpointWithPrefix: false`).
|
|
@@ -12,34 +17,78 @@
|
|
|
12
17
|
* this agent, and the writer then leaves every model key alone — it neither writes them nor removes
|
|
13
18
|
* ones an earlier run left behind, so a rerun without a model keeps pointing at the last one.
|
|
14
19
|
*/
|
|
20
|
+
import { join } from 'node:path';
|
|
15
21
|
import { AtomicCoreError } from '../../contracts/index.js';
|
|
16
22
|
import { canonicalJson, keyOr, parseJsonStrict } from '../config-io.js';
|
|
23
|
+
import { configDirFrom, getAt, isOurServerUrl, ourServerFromUrl, outputCap, readBackup, redo, writeBackup, writeConfigFile, } from './json-backup.js';
|
|
17
24
|
import { asJsonObject } from './json-tree.js';
|
|
18
25
|
import { registerWriter } from './registry.js';
|
|
19
|
-
const
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
26
|
+
const MODEL_KEYS = [
|
|
27
|
+
'ANTHROPIC_MODEL',
|
|
28
|
+
'ANTHROPIC_DEFAULT_OPUS_MODEL',
|
|
29
|
+
'ANTHROPIC_DEFAULT_SONNET_MODEL',
|
|
30
|
+
'ANTHROPIC_DEFAULT_HAIKU_MODEL',
|
|
31
|
+
];
|
|
32
|
+
/** Provider switches a shell can export that Claude Code would follow instead of our endpoint. */
|
|
33
|
+
const PROVIDER_SWITCHES = [
|
|
34
|
+
'CLAUDE_CODE_USE_BEDROCK',
|
|
35
|
+
'CLAUDE_CODE_USE_VERTEX',
|
|
36
|
+
'CLAUDE_CODE_USE_FOUNDRY',
|
|
37
|
+
];
|
|
38
|
+
const env = (key) => ['env', key];
|
|
39
|
+
const MODEL_PATHS = [...MODEL_KEYS.map(env), ['model']];
|
|
40
|
+
/** `settings.json` in `$CLAUDE_CONFIG_DIR` (absolute or `~`-relative), else `.claude/settings.json`. */
|
|
41
|
+
export function claudeSettingsPath(input) {
|
|
42
|
+
const dir = configDirFrom(input.env['CLAUDE_CONFIG_DIR'], input.fs.home);
|
|
43
|
+
return dir === undefined ? '.claude/settings.json' : join(dir, 'settings.json');
|
|
44
|
+
}
|
|
45
|
+
function writesFor(input) {
|
|
46
|
+
const { apiUrl, model, apiKey, contextLength } = input;
|
|
47
|
+
const writes = [
|
|
48
|
+
[env('ANTHROPIC_BASE_URL'), apiUrl],
|
|
49
|
+
[env('ANTHROPIC_AUTH_TOKEN'), keyOr(apiKey, 'atomic')],
|
|
50
|
+
];
|
|
51
|
+
for (const name of PROVIDER_SWITCHES)
|
|
52
|
+
writes.push([env(name), '']);
|
|
53
|
+
writes.push([env('CLAUDE_CODE_DISABLE_TERMINAL_TITLE'), '1']);
|
|
54
|
+
if (contextLength !== undefined && contextLength > 0) {
|
|
55
|
+
writes.push([env('CLAUDE_CODE_MAX_CONTEXT_TOKENS'), String(contextLength)]);
|
|
56
|
+
writes.push([env('CLAUDE_CODE_MAX_OUTPUT_TOKENS'), String(outputCap(contextLength))]);
|
|
57
|
+
}
|
|
33
58
|
if (model !== '') {
|
|
34
59
|
// ANTHROPIC_MODEL overrides the `model` setting; the tier aliases make every Opus/Sonnet/Haiku
|
|
35
60
|
// request route to the single local model too.
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
env['ANTHROPIC_DEFAULT_HAIKU_MODEL'] = model;
|
|
40
|
-
root['model'] = model;
|
|
61
|
+
for (const key of MODEL_KEYS)
|
|
62
|
+
writes.push([env(key), model]);
|
|
63
|
+
writes.push([['model'], model]);
|
|
41
64
|
}
|
|
42
|
-
|
|
65
|
+
return writes;
|
|
66
|
+
}
|
|
67
|
+
/** Settings an earlier release wrote without a backup: the endpoint is this server. */
|
|
68
|
+
function forgetLegacy(root, server) {
|
|
69
|
+
const base = getAt(root, env('ANTHROPIC_BASE_URL'));
|
|
70
|
+
if (typeof base !== 'string' || !isOurServerUrl(server, base))
|
|
71
|
+
return;
|
|
72
|
+
const envObject = asJsonObject(root['env']);
|
|
73
|
+
const model = envObject['ANTHROPIC_MODEL'];
|
|
74
|
+
for (const key of ['ANTHROPIC_BASE_URL', 'ANTHROPIC_AUTH_TOKEN', ...MODEL_KEYS])
|
|
75
|
+
delete envObject[key];
|
|
76
|
+
if (model !== undefined && root['model'] === model)
|
|
77
|
+
delete root['model'];
|
|
78
|
+
}
|
|
79
|
+
export async function configureClaudeCode(input) {
|
|
80
|
+
const { fs, apiUrl } = input;
|
|
81
|
+
const path = claudeSettingsPath(input);
|
|
82
|
+
const text = await fs.read(path);
|
|
83
|
+
const parsed = text === undefined ? {} : parseJsonStrict(text, fs.absolute(path));
|
|
84
|
+
const root = asJsonObject(parsed);
|
|
85
|
+
if (!root)
|
|
86
|
+
throw new AtomicCoreError('IO_ERROR', 'settings.json is not a JSON object');
|
|
87
|
+
const server = ourServerFromUrl(apiUrl);
|
|
88
|
+
const backup = redo(root, await readBackup(fs, path), text !== undefined, writesFor(input), MODEL_PATHS, (r) => forgetLegacy(r, server));
|
|
89
|
+
// Sidecar first: a crash between the two leaves a backup whose values simply do not match yet.
|
|
90
|
+
await writeBackup(fs, path, backup);
|
|
91
|
+
await writeConfigFile(fs, path, canonicalJson(root));
|
|
43
92
|
}
|
|
44
93
|
registerWriter('claude-code', configureClaudeCode);
|
|
45
94
|
//# sourceMappingURL=claude-code.js.map
|