zcode-acp-server 0.75.0 → 0.76.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/code-fingerprint.json +2 -2
- package/dist/handlers/io.d.ts +7 -1
- package/dist/handlers/io.d.ts.map +1 -1
- package/dist/handlers/io.js +7 -1
- package/dist/handlers/io.js.map +1 -1
- package/dist/handlers/session.d.ts.map +1 -1
- package/dist/handlers/session.js +17 -7
- package/dist/handlers/session.js.map +1 -1
- package/dist/remote/hub-server.d.ts +5 -0
- package/dist/remote/hub-server.d.ts.map +1 -1
- package/dist/remote/hub-server.js +113 -37
- package/dist/remote/hub-server.js.map +1 -1
- package/dist/remote/settings-endpoint.d.ts.map +1 -1
- package/dist/remote/settings-endpoint.js +104 -2
- package/dist/remote/settings-endpoint.js.map +1 -1
- package/dist/settings/agents-config.d.ts +53 -18
- package/dist/settings/agents-config.d.ts.map +1 -1
- package/dist/settings/agents-config.js +161 -53
- package/dist/settings/agents-config.js.map +1 -1
- package/dist/settings/model-connectivity.d.ts +79 -0
- package/dist/settings/model-connectivity.d.ts.map +1 -0
- package/dist/settings/model-connectivity.js +170 -0
- package/dist/settings/model-connectivity.js.map +1 -0
- package/dist/settings/provider-config.d.ts +16 -2
- package/dist/settings/provider-config.d.ts.map +1 -1
- package/dist/settings/provider-config.js +68 -2
- package/dist/settings/provider-config.js.map +1 -1
- package/docs/BACKLOG.md +18 -0
- package/docs/REMOTE-CLIENTS.md +65 -27
- package/docs/REMOTE.md +7 -1
- package/package.json +1 -1
|
@@ -8,21 +8,25 @@
|
|
|
8
8
|
* - `~/.zcode/v2/agents-state.json` — enablement and model overrides. Built-in
|
|
9
9
|
* agents have no file at all, so their model override can ONLY live here.
|
|
10
10
|
*
|
|
11
|
-
* Scope
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
* through JSON risks silent whitespace and escaping damage, and those fields
|
|
17
|
-
* are rare enough that editing the file directly is the better experience.
|
|
11
|
+
* Scope: everything the desktop app's own agent form edits — `name`,
|
|
12
|
+
* `description`, `color`, `model`, `thoughtLevel`, the system-prompt BODY, and
|
|
13
|
+
* the advanced frontmatter the runtime reads (`tools`, `disallowedTools`,
|
|
14
|
+
* `skills`, `permissionMode`, `maxTurns`, `background`, `injectAgentsMd`) —
|
|
15
|
+
* plus create / delete / enable.
|
|
18
16
|
*
|
|
19
|
-
*
|
|
17
|
+
* The advanced fields used to be out of scope, on the argument that a JSON
|
|
18
|
+
* round-trip risks whitespace and escaping damage. That risk is real but it is
|
|
19
|
+
* handled where it belongs: `updateAgent` re-parses what it just serialized and
|
|
20
|
+
* refuses the write when anything differs, so a field this module understands
|
|
21
|
+
* cannot be silently mangled. Fields it does NOT understand still ride through
|
|
22
|
+
* verbatim as unknown frontmatter keys.
|
|
20
23
|
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
* - Editing an agent REWRITES its frontmatter from the parsed model, so
|
|
24
|
-
*
|
|
25
|
-
*
|
|
24
|
+
* Consequences which callers must know:
|
|
25
|
+
*
|
|
26
|
+
* - Editing an agent REWRITES its frontmatter from the parsed model, so an
|
|
27
|
+
* unknown key is re-emitted in canonical position while its value survives.
|
|
28
|
+
* - A `null` in a patch clears that key (the app's "inherit" choice); an
|
|
29
|
+
* omitted key is left alone.
|
|
26
30
|
*/
|
|
27
31
|
import { mkdir, readFile, readdir, rm, stat, writeFile } from "node:fs/promises";
|
|
28
32
|
import path from "node:path";
|
|
@@ -57,6 +61,15 @@ const NAME_PATTERN = /^[a-zA-Z0-9-]+$/;
|
|
|
57
61
|
export function isValidAgentName(name) {
|
|
58
62
|
return name.length >= 3 && name.length <= 50 && NAME_PATTERN.test(name);
|
|
59
63
|
}
|
|
64
|
+
/** The permission modes the runtime accepts (subagent-profile.ts). */
|
|
65
|
+
export const AGENT_PERMISSION_MODES = [
|
|
66
|
+
"acceptEdits",
|
|
67
|
+
"auto",
|
|
68
|
+
"bypassPermissions",
|
|
69
|
+
"default",
|
|
70
|
+
"dontAsk",
|
|
71
|
+
"plan",
|
|
72
|
+
];
|
|
60
73
|
// ---------- state file ----------
|
|
61
74
|
/** Read the state file; absent → an empty document. */
|
|
62
75
|
export async function readAgentsState() {
|
|
@@ -425,11 +438,57 @@ function resolveAgentFile(name) {
|
|
|
425
438
|
}
|
|
426
439
|
return filePath;
|
|
427
440
|
}
|
|
441
|
+
/** A list-of-strings patch: absent = leave alone, null = clear. */
|
|
442
|
+
function applyStringList(fm, key, value) {
|
|
443
|
+
if (value === undefined)
|
|
444
|
+
return;
|
|
445
|
+
if (value === null || value.length === 0)
|
|
446
|
+
delete fm[key];
|
|
447
|
+
else
|
|
448
|
+
fm[key] = [...value];
|
|
449
|
+
}
|
|
450
|
+
/** Validate the advanced fields a client sent, before anything is written. */
|
|
451
|
+
function validateAdvanced(fields) {
|
|
452
|
+
for (const key of ["tools", "disallowedTools", "skills"]) {
|
|
453
|
+
const value = fields[key];
|
|
454
|
+
if (value === undefined)
|
|
455
|
+
continue;
|
|
456
|
+
if (!Array.isArray(value) || value.some((v) => typeof v !== "string")) {
|
|
457
|
+
throw new Error(`${key} must be an array of strings`);
|
|
458
|
+
}
|
|
459
|
+
}
|
|
460
|
+
if (fields.permissionMode !== undefined) {
|
|
461
|
+
if (!AGENT_PERMISSION_MODES.includes(fields.permissionMode)) {
|
|
462
|
+
throw new Error(`permissionMode must be one of ${AGENT_PERMISSION_MODES.join(", ")}`);
|
|
463
|
+
}
|
|
464
|
+
}
|
|
465
|
+
if (fields.maxTurns !== undefined) {
|
|
466
|
+
if (!Number.isInteger(fields.maxTurns) || fields.maxTurns <= 0) {
|
|
467
|
+
throw new Error("maxTurns must be a positive integer");
|
|
468
|
+
}
|
|
469
|
+
}
|
|
470
|
+
}
|
|
471
|
+
/** Apply the advanced fields onto a frontmatter object. */
|
|
472
|
+
function applyAdvanced(fm, fields) {
|
|
473
|
+
applyStringList(fm, "tools", fields.tools);
|
|
474
|
+
applyStringList(fm, "disallowedTools", fields.disallowedTools);
|
|
475
|
+
applyStringList(fm, "skills", fields.skills);
|
|
476
|
+
if (fields.permissionMode !== undefined)
|
|
477
|
+
fm.permissionMode = fields.permissionMode;
|
|
478
|
+
if (fields.maxTurns !== undefined)
|
|
479
|
+
fm.maxTurns = fields.maxTurns;
|
|
480
|
+
if (fields.background !== undefined)
|
|
481
|
+
fm.background = fields.background;
|
|
482
|
+
if (fields.injectAgentsMd !== undefined)
|
|
483
|
+
fm.injectAgentsMd = fields.injectAgentsMd;
|
|
484
|
+
}
|
|
428
485
|
/**
|
|
429
486
|
* Create an agent file.
|
|
430
487
|
*
|
|
431
488
|
* Refuses to overwrite (the app's own create uses the `wx` flag for the same
|
|
432
|
-
* reason)
|
|
489
|
+
* reason). A caller that supplies a system prompt gets exactly that text as the
|
|
490
|
+
* body; otherwise a minimal template seeds it so the agent is immediately
|
|
491
|
+
* usable.
|
|
433
492
|
*/
|
|
434
493
|
export async function createAgent(input) {
|
|
435
494
|
const filePath = resolveAgentFile(input.name);
|
|
@@ -439,6 +498,7 @@ export async function createAgent(input) {
|
|
|
439
498
|
if (input.color !== undefined && !AGENT_COLORS.includes(input.color)) {
|
|
440
499
|
throw new Error(`color must be one of ${AGENT_COLORS.join(", ")}`);
|
|
441
500
|
}
|
|
501
|
+
validateAdvanced(input);
|
|
442
502
|
await mkdir(path.dirname(filePath), { recursive: true });
|
|
443
503
|
const frontmatter = {
|
|
444
504
|
name: input.name,
|
|
@@ -450,7 +510,12 @@ export async function createAgent(input) {
|
|
|
450
510
|
frontmatter.model = input.model;
|
|
451
511
|
if (input.thoughtLevel !== undefined)
|
|
452
512
|
frontmatter.thoughtLevel = input.thoughtLevel;
|
|
453
|
-
|
|
513
|
+
applyAdvanced(frontmatter, input);
|
|
514
|
+
const body = input.systemPrompt?.trim() ? `${input.systemPrompt.trim()}\n` : TEMPLATE_BODY;
|
|
515
|
+
const content = serializeAgentMarkdown(frontmatter, body);
|
|
516
|
+
// Prove the bytes parse back before creating anything: a create is the one
|
|
517
|
+
// write with no previous file to fall back to.
|
|
518
|
+
assertRoundTrip(frontmatter, content);
|
|
454
519
|
try {
|
|
455
520
|
// Exclusive create: an existing agent must be edited, not replaced.
|
|
456
521
|
await writeFile(filePath, content, { encoding: "utf8", flag: "wx" });
|
|
@@ -466,16 +531,16 @@ export async function createAgent(input) {
|
|
|
466
531
|
fileName: agentFileName(input.name),
|
|
467
532
|
path: filePath,
|
|
468
533
|
frontmatter,
|
|
469
|
-
systemPrompt:
|
|
534
|
+
systemPrompt: body.trim(),
|
|
470
535
|
enabled: true,
|
|
471
536
|
readOnly: false,
|
|
472
537
|
};
|
|
473
538
|
}
|
|
474
539
|
/**
|
|
475
|
-
* Update an agent's editable
|
|
540
|
+
* Update an agent's editable fields.
|
|
476
541
|
*
|
|
477
|
-
* Only the fields present in `patch` change;
|
|
478
|
-
*
|
|
542
|
+
* Only the fields present in `patch` change; every other frontmatter key is
|
|
543
|
+
* carried through from the file. `model`/`thoughtLevel` and the string lists
|
|
479
544
|
* accept `null` to CLEAR the key (the app's "inherit" choice). Renaming is a
|
|
480
545
|
* delete + create, which is why it is NOT offered here — a rename would orphan
|
|
481
546
|
* the state file's disable record.
|
|
@@ -508,7 +573,7 @@ export async function updateAgent(name, patch) {
|
|
|
508
573
|
fm.color = patch.color;
|
|
509
574
|
}
|
|
510
575
|
// An explicit null clears the key (the app's "inherit" choice).
|
|
511
|
-
const
|
|
576
|
+
const applyScalar = (key, value) => {
|
|
512
577
|
if (value === undefined)
|
|
513
578
|
return;
|
|
514
579
|
if (value === null || value === "")
|
|
@@ -516,55 +581,98 @@ export async function updateAgent(name, patch) {
|
|
|
516
581
|
else
|
|
517
582
|
fm[key] = value;
|
|
518
583
|
};
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
// bug would hide.
|
|
531
|
-
const written = serializeAgentMarkdown(next, split.body);
|
|
532
|
-
const reparsed = splitFrontmatter(written);
|
|
533
|
-
if (!reparsed)
|
|
534
|
-
throw new Error("serialized agent has no frontmatter");
|
|
535
|
-
const roundTrip = parseFrontmatter(reparsed.frontmatter);
|
|
536
|
-
for (const [key, before] of Object.entries(next)) {
|
|
537
|
-
const after = roundTrip[key];
|
|
538
|
-
if (before === undefined)
|
|
539
|
-
continue;
|
|
540
|
-
if (typeof before === "object")
|
|
541
|
-
continue; // lists compared by their own path
|
|
542
|
-
if (String(before) !== String(after ?? "")) {
|
|
543
|
-
throw new Error(`frontmatter round-trip failed for '${key}' — not writing`);
|
|
584
|
+
applyScalar("model", patch.model);
|
|
585
|
+
applyScalar("thoughtLevel", patch.thoughtLevel);
|
|
586
|
+
applyScalar("permissionMode", patch.permissionMode);
|
|
587
|
+
if (patch.maxTurns !== undefined) {
|
|
588
|
+
if (patch.maxTurns === null)
|
|
589
|
+
delete fm.maxTurns;
|
|
590
|
+
else {
|
|
591
|
+
if (!Number.isInteger(patch.maxTurns) || patch.maxTurns <= 0) {
|
|
592
|
+
throw new Error("maxTurns must be a positive integer");
|
|
593
|
+
}
|
|
594
|
+
fm.maxTurns = patch.maxTurns;
|
|
544
595
|
}
|
|
545
596
|
}
|
|
597
|
+
for (const key of ["background", "injectAgentsMd"]) {
|
|
598
|
+
const value = patch[key];
|
|
599
|
+
if (value === undefined)
|
|
600
|
+
continue;
|
|
601
|
+
if (value === null)
|
|
602
|
+
delete fm[key];
|
|
603
|
+
else
|
|
604
|
+
fm[key] = value;
|
|
605
|
+
}
|
|
546
606
|
for (const key of ["tools", "disallowedTools", "skills"]) {
|
|
547
|
-
const
|
|
548
|
-
if (
|
|
607
|
+
const value = patch[key];
|
|
608
|
+
if (value === undefined)
|
|
549
609
|
continue;
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
610
|
+
if (value !== null && (!Array.isArray(value) || value.some((v) => typeof v !== "string"))) {
|
|
611
|
+
throw new Error(`${key} must be an array of strings`);
|
|
612
|
+
}
|
|
613
|
+
applyStringList(fm, key, value);
|
|
614
|
+
}
|
|
615
|
+
if (patch.permissionMode !== undefined && patch.permissionMode !== null) {
|
|
616
|
+
if (!AGENT_PERMISSION_MODES.includes(patch.permissionMode)) {
|
|
617
|
+
throw new Error(`permissionMode must be one of ${AGENT_PERMISSION_MODES.join(", ")}`);
|
|
555
618
|
}
|
|
556
619
|
}
|
|
620
|
+
const next = {
|
|
621
|
+
...fm,
|
|
622
|
+
name: typeof fm.name === "string" ? fm.name : name,
|
|
623
|
+
description: typeof fm.description === "string" ? fm.description : "",
|
|
624
|
+
};
|
|
625
|
+
// The body: an explicit string replaces it, `null` clears it, absent keeps it.
|
|
626
|
+
const body = patch.systemPrompt === undefined
|
|
627
|
+
? split.body
|
|
628
|
+
: patch.systemPrompt === null
|
|
629
|
+
? ""
|
|
630
|
+
: patch.systemPrompt;
|
|
631
|
+
const written = serializeAgentMarkdown(next, body);
|
|
632
|
+
assertRoundTrip(next, written);
|
|
557
633
|
await writeAgentFile(filePath, written);
|
|
558
634
|
return {
|
|
559
635
|
name: next.name,
|
|
560
636
|
fileName: agentFileName(name),
|
|
561
637
|
path: filePath,
|
|
562
638
|
frontmatter: next,
|
|
563
|
-
systemPrompt:
|
|
639
|
+
systemPrompt: body.trim(),
|
|
564
640
|
enabled: true,
|
|
565
641
|
readOnly: false,
|
|
566
642
|
};
|
|
567
643
|
}
|
|
644
|
+
/**
|
|
645
|
+
* Prove that `serialized` parses back to `expected`.
|
|
646
|
+
*
|
|
647
|
+
* An escaping mistake would silently rewrite the user's agent, so every known
|
|
648
|
+
* key — not just the editable ones — is compared, and the string lists are
|
|
649
|
+
* compared element by element. Unknown keys are covered too: they are the most
|
|
650
|
+
* likely place for a serializer bug to hide.
|
|
651
|
+
*/
|
|
652
|
+
function assertRoundTrip(expected, serialized) {
|
|
653
|
+
const reparsed = splitFrontmatter(serialized);
|
|
654
|
+
if (!reparsed)
|
|
655
|
+
throw new Error("serialized agent has no frontmatter");
|
|
656
|
+
const back = parseFrontmatter(reparsed.frontmatter);
|
|
657
|
+
for (const [key, before] of Object.entries(expected)) {
|
|
658
|
+
if (before === undefined)
|
|
659
|
+
continue;
|
|
660
|
+
if (Array.isArray(before)) {
|
|
661
|
+
const after = back[key];
|
|
662
|
+
const left = before.join("\u0000");
|
|
663
|
+
const right = Array.isArray(after) ? after.join("\u0000") : "";
|
|
664
|
+
if (left !== right) {
|
|
665
|
+
throw new Error(`frontmatter round-trip failed for '${key}' — not writing`);
|
|
666
|
+
}
|
|
667
|
+
continue;
|
|
668
|
+
}
|
|
669
|
+
if (typeof before === "object")
|
|
670
|
+
continue;
|
|
671
|
+
if (String(before) !== String(back[key] ?? "")) {
|
|
672
|
+
throw new Error(`frontmatter round-trip failed for '${key}' — not writing`);
|
|
673
|
+
}
|
|
674
|
+
}
|
|
675
|
+
}
|
|
568
676
|
/** Delete a user-scope agent file. */
|
|
569
677
|
export async function deleteAgent(name) {
|
|
570
678
|
const filePath = resolveAgentFile(name);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agents-config.js","sourceRoot":"","sources":["../../src/settings/agents-config.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"agents-config.js","sourceRoot":"","sources":["../../src/settings/agents-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Model connectivity test: one minimal round-trip against a provider.
|
|
3
|
+
*
|
|
4
|
+
* The settings UI needs to answer "does this model actually work" without
|
|
5
|
+
* sending a real prompt, which would cost tokens, pollute the session history
|
|
6
|
+
* and (for a broken config) fail far from the field the user just edited. So
|
|
7
|
+
* this module sends the smallest legal request for the provider's API format and
|
|
8
|
+
* reports what came back.
|
|
9
|
+
*
|
|
10
|
+
* What it deliberately is NOT: a full model call. No streaming, no tools, no
|
|
11
|
+
* system prompt, one token of output. A provider that answers `200` here can
|
|
12
|
+
* still reject a real turn (quota, tool support, context), and the messages say
|
|
13
|
+
* so rather than implying a green check means "this model is good".
|
|
14
|
+
*
|
|
15
|
+
* Auth resolution mirrors the runtime (`runtime-model.ts`): third-party
|
|
16
|
+
* providers carry an inline key from `provider_config.json`, builtins use their
|
|
17
|
+
* own OAuth/config credentials. A provider with no discoverable key is reported
|
|
18
|
+
* as `no_key` instead of being sent an anonymous request — a 401 tells the user
|
|
19
|
+
* nothing they did not already know, and some providers count it against the
|
|
20
|
+
* account.
|
|
21
|
+
*/
|
|
22
|
+
export interface ConnectivityResult {
|
|
23
|
+
/** `success` means the provider answered a legal request without error. */
|
|
24
|
+
success: boolean;
|
|
25
|
+
/** HTTP status when a response was received at all. */
|
|
26
|
+
status?: number;
|
|
27
|
+
/** The provider's message, truncated — shown verbatim to the user. */
|
|
28
|
+
message?: string;
|
|
29
|
+
/** Why the probe could not run (as opposed to: ran and failed). */
|
|
30
|
+
reason?: "no_key" | "no_base_url" | "unknown_provider";
|
|
31
|
+
/** Round-trip time, for the "it answered in 812ms" note. */
|
|
32
|
+
elapsedMs?: number;
|
|
33
|
+
}
|
|
34
|
+
/** A resolved endpoint + credential for one probe. */
|
|
35
|
+
interface ResolvedTarget {
|
|
36
|
+
baseUrl: string;
|
|
37
|
+
apiKey?: string;
|
|
38
|
+
apiType: string;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Resolve what to probe from the personal provider config.
|
|
42
|
+
*
|
|
43
|
+
* Returns a `reason` instead of throwing when the provider cannot be probed —
|
|
44
|
+
* "not configured yet" is a normal state for a half-filled form, and an error
|
|
45
|
+
* toast for it reads like a bug.
|
|
46
|
+
*/
|
|
47
|
+
export declare function resolveTarget(providerId: string, modelId: string): Promise<{
|
|
48
|
+
target?: ResolvedTarget;
|
|
49
|
+
result?: ConnectivityResult;
|
|
50
|
+
}>;
|
|
51
|
+
/** Join a base URL and a path without doubling or dropping the separator. */
|
|
52
|
+
export declare function joinUrl(baseUrl: string, path: string): string;
|
|
53
|
+
/** The request one probe sends, per API format. */
|
|
54
|
+
export interface ProbeRequest {
|
|
55
|
+
url: string;
|
|
56
|
+
headers: Record<string, string>;
|
|
57
|
+
body: unknown;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Build the probe request for an API format.
|
|
61
|
+
*
|
|
62
|
+
* Both formats get the same intent — "reply with one token" — spelled the way
|
|
63
|
+
* each protocol expects. `max_tokens: 1` with a trivial prompt keeps the cost
|
|
64
|
+
* at essentially zero; a model that rejects `max_tokens: 1` is itself a useful
|
|
65
|
+
* finding, so no special-casing is attempted.
|
|
66
|
+
*/
|
|
67
|
+
export declare function buildProbeRequest(target: ResolvedTarget, modelId: string): ProbeRequest;
|
|
68
|
+
/** Trim a provider's error body to something a toast can show. */
|
|
69
|
+
export declare function summariseError(status: number, text: string): string;
|
|
70
|
+
/**
|
|
71
|
+
* Probe one model.
|
|
72
|
+
*
|
|
73
|
+
* Never throws for a provider-side failure: every outcome is a
|
|
74
|
+
* {@link ConnectivityResult}, because the caller paints it inline rather than
|
|
75
|
+
* failing a form submit.
|
|
76
|
+
*/
|
|
77
|
+
export declare function testModelConnectivity(providerId: string, modelId: string, fetchImpl?: typeof globalThis.fetch): Promise<ConnectivityResult>;
|
|
78
|
+
export {};
|
|
79
|
+
//# sourceMappingURL=model-connectivity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-connectivity.d.ts","sourceRoot":"","sources":["../../src/settings/model-connectivity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAUH,MAAM,WAAW,kBAAkB;IACjC,2EAA2E;IAC3E,OAAO,EAAE,OAAO,CAAC;IACjB,uDAAuD;IACvD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sEAAsE;IACtE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mEAAmE;IACnE,MAAM,CAAC,EAAE,QAAQ,GAAG,aAAa,GAAG,kBAAkB,CAAC;IACvD,4DAA4D;IAC5D,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,sDAAsD;AACtD,UAAU,cAAc;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;GAMG;AACH,wBAAsB,aAAa,CACjC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC;IAAE,MAAM,CAAC,EAAE,cAAc,CAAC;IAAC,MAAM,CAAC,EAAE,kBAAkB,CAAA;CAAE,CAAC,CAenE;AAED,6EAA6E;AAC7E,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAE7D;AAED,mDAAmD;AACnD,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,IAAI,EAAE,OAAO,CAAC;CACf;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,GAAG,YAAY,CAuCvF;AAED,kEAAkE;AAClE,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAsBnE;AAED;;;;;;GAMG;AACH,wBAAsB,qBAAqB,CACzC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,SAAS,GAAE,OAAO,UAAU,CAAC,KAAwB,GACpD,OAAO,CAAC,kBAAkB,CAAC,CAiC7B"}
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Model connectivity test: one minimal round-trip against a provider.
|
|
3
|
+
*
|
|
4
|
+
* The settings UI needs to answer "does this model actually work" without
|
|
5
|
+
* sending a real prompt, which would cost tokens, pollute the session history
|
|
6
|
+
* and (for a broken config) fail far from the field the user just edited. So
|
|
7
|
+
* this module sends the smallest legal request for the provider's API format and
|
|
8
|
+
* reports what came back.
|
|
9
|
+
*
|
|
10
|
+
* What it deliberately is NOT: a full model call. No streaming, no tools, no
|
|
11
|
+
* system prompt, one token of output. A provider that answers `200` here can
|
|
12
|
+
* still reject a real turn (quota, tool support, context), and the messages say
|
|
13
|
+
* so rather than implying a green check means "this model is good".
|
|
14
|
+
*
|
|
15
|
+
* Auth resolution mirrors the runtime (`runtime-model.ts`): third-party
|
|
16
|
+
* providers carry an inline key from `provider_config.json`, builtins use their
|
|
17
|
+
* own OAuth/config credentials. A provider with no discoverable key is reported
|
|
18
|
+
* as `no_key` instead of being sent an anonymous request — a 401 tells the user
|
|
19
|
+
* nothing they did not already know, and some providers count it against the
|
|
20
|
+
* account.
|
|
21
|
+
*/
|
|
22
|
+
import { readProviderConfig } from "../settings/provider-config.js";
|
|
23
|
+
/** The timeout for one probe (ms). Slow providers exist; a hang is worse. */
|
|
24
|
+
const TIMEOUT_MS = 20_000;
|
|
25
|
+
/** How much of a failure body is echoed back to the UI. */
|
|
26
|
+
const MAX_ERROR_CHARS = 400;
|
|
27
|
+
/**
|
|
28
|
+
* Resolve what to probe from the personal provider config.
|
|
29
|
+
*
|
|
30
|
+
* Returns a `reason` instead of throwing when the provider cannot be probed —
|
|
31
|
+
* "not configured yet" is a normal state for a half-filled form, and an error
|
|
32
|
+
* toast for it reads like a bug.
|
|
33
|
+
*/
|
|
34
|
+
export async function resolveTarget(providerId, modelId) {
|
|
35
|
+
const doc = await readProviderConfig();
|
|
36
|
+
const rule = doc.config.providerConfigRules.providerRules.find((r) => r.providerId === providerId);
|
|
37
|
+
if (!rule)
|
|
38
|
+
return { result: { success: false, reason: "unknown_provider" } };
|
|
39
|
+
const baseUrl = rule.config?.api?.baseUrl;
|
|
40
|
+
if (!baseUrl)
|
|
41
|
+
return { result: { success: false, reason: "no_base_url" } };
|
|
42
|
+
const apiKey = rule.config?.access?.apiKey;
|
|
43
|
+
if (!apiKey)
|
|
44
|
+
return { result: { success: false, reason: "no_key" } };
|
|
45
|
+
// The rule's declared format wins; the kind in `config.json` is the backstop
|
|
46
|
+
// for a provider that predates the field.
|
|
47
|
+
const apiType = rule.config?.api?.type ?? "openai-chat-completions";
|
|
48
|
+
void modelId;
|
|
49
|
+
return { target: { baseUrl, apiKey, apiType } };
|
|
50
|
+
}
|
|
51
|
+
/** Join a base URL and a path without doubling or dropping the separator. */
|
|
52
|
+
export function joinUrl(baseUrl, path) {
|
|
53
|
+
return `${baseUrl.replace(/\/+$/u, "")}/${path.replace(/^\/+/u, "")}`;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Build the probe request for an API format.
|
|
57
|
+
*
|
|
58
|
+
* Both formats get the same intent — "reply with one token" — spelled the way
|
|
59
|
+
* each protocol expects. `max_tokens: 1` with a trivial prompt keeps the cost
|
|
60
|
+
* at essentially zero; a model that rejects `max_tokens: 1` is itself a useful
|
|
61
|
+
* finding, so no special-casing is attempted.
|
|
62
|
+
*/
|
|
63
|
+
export function buildProbeRequest(target, modelId) {
|
|
64
|
+
const prompt = "ping";
|
|
65
|
+
if (target.apiType === "anthropic-messages") {
|
|
66
|
+
return {
|
|
67
|
+
url: joinUrl(target.baseUrl, "messages"),
|
|
68
|
+
headers: {
|
|
69
|
+
"content-type": "application/json",
|
|
70
|
+
"anthropic-version": "2023-06-01",
|
|
71
|
+
"x-api-key": target.apiKey ?? "",
|
|
72
|
+
},
|
|
73
|
+
body: {
|
|
74
|
+
model: modelId,
|
|
75
|
+
max_tokens: 1,
|
|
76
|
+
messages: [{ role: "user", content: prompt }],
|
|
77
|
+
},
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
if (target.apiType === "openai-responses") {
|
|
81
|
+
return {
|
|
82
|
+
url: joinUrl(target.baseUrl, "responses"),
|
|
83
|
+
headers: {
|
|
84
|
+
"content-type": "application/json",
|
|
85
|
+
authorization: `Bearer ${target.apiKey ?? ""}`,
|
|
86
|
+
},
|
|
87
|
+
body: { model: modelId, input: prompt, max_output_tokens: 16 },
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
return {
|
|
91
|
+
url: joinUrl(target.baseUrl, "chat/completions"),
|
|
92
|
+
headers: {
|
|
93
|
+
"content-type": "application/json",
|
|
94
|
+
authorization: `Bearer ${target.apiKey ?? ""}`,
|
|
95
|
+
},
|
|
96
|
+
body: {
|
|
97
|
+
model: modelId,
|
|
98
|
+
max_tokens: 1,
|
|
99
|
+
messages: [{ role: "user", content: prompt }],
|
|
100
|
+
},
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
/** Trim a provider's error body to something a toast can show. */
|
|
104
|
+
export function summariseError(status, text) {
|
|
105
|
+
const trimmed = text.trim();
|
|
106
|
+
if (!trimmed)
|
|
107
|
+
return `HTTP ${status}`;
|
|
108
|
+
// JSON error envelopes are the common case and unreadable raw.
|
|
109
|
+
try {
|
|
110
|
+
const parsed = JSON.parse(trimmed);
|
|
111
|
+
const detail = typeof parsed.error === "string"
|
|
112
|
+
? parsed.error
|
|
113
|
+
: typeof parsed.error?.message === "string"
|
|
114
|
+
? parsed.error.message
|
|
115
|
+
: typeof parsed.message === "string"
|
|
116
|
+
? parsed.message
|
|
117
|
+
: undefined;
|
|
118
|
+
if (detail)
|
|
119
|
+
return `HTTP ${status}: ${detail.slice(0, MAX_ERROR_CHARS)}`;
|
|
120
|
+
}
|
|
121
|
+
catch {
|
|
122
|
+
// Not JSON — fall through to the raw text.
|
|
123
|
+
}
|
|
124
|
+
return `HTTP ${status}: ${trimmed.slice(0, MAX_ERROR_CHARS)}`;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Probe one model.
|
|
128
|
+
*
|
|
129
|
+
* Never throws for a provider-side failure: every outcome is a
|
|
130
|
+
* {@link ConnectivityResult}, because the caller paints it inline rather than
|
|
131
|
+
* failing a form submit.
|
|
132
|
+
*/
|
|
133
|
+
export async function testModelConnectivity(providerId, modelId, fetchImpl = globalThis.fetch) {
|
|
134
|
+
const { target, result } = await resolveTarget(providerId, modelId);
|
|
135
|
+
if (!target)
|
|
136
|
+
return result ?? { success: false, reason: "unknown_provider" };
|
|
137
|
+
const request = buildProbeRequest(target, modelId);
|
|
138
|
+
const started = Date.now();
|
|
139
|
+
try {
|
|
140
|
+
const response = await fetchImpl(request.url, {
|
|
141
|
+
method: "POST",
|
|
142
|
+
headers: request.headers,
|
|
143
|
+
body: JSON.stringify(request.body),
|
|
144
|
+
signal: AbortSignal.timeout(TIMEOUT_MS),
|
|
145
|
+
});
|
|
146
|
+
const elapsedMs = Date.now() - started;
|
|
147
|
+
if (response.ok)
|
|
148
|
+
return { success: true, status: response.status, elapsedMs };
|
|
149
|
+
const text = await response.text().catch(() => "");
|
|
150
|
+
return {
|
|
151
|
+
success: false,
|
|
152
|
+
status: response.status,
|
|
153
|
+
message: summariseError(response.status, text),
|
|
154
|
+
elapsedMs,
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
catch (error) {
|
|
158
|
+
const elapsedMs = Date.now() - started;
|
|
159
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
160
|
+
// A timeout is the most common "network" failure and deserves its own
|
|
161
|
+
// wording — "The operation was aborted" is not a useful message.
|
|
162
|
+
const timedOut = /timed? ?out|abort/iu.test(message);
|
|
163
|
+
return {
|
|
164
|
+
success: false,
|
|
165
|
+
message: timedOut ? `no answer within ${TIMEOUT_MS / 1000}s` : message,
|
|
166
|
+
elapsedMs,
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
//# sourceMappingURL=model-connectivity.js.map
|