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.
@@ -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 of this module is deliberately narrow (ADR for the settings API):
12
- * frontmatter fields the app's own form exposes as first-class inputs
13
- * (`name`, `description`, `color`, `model`, `thoughtLevel`), plus create /
14
- * delete / enable. The system-prompt body and the advanced lists (tools,
15
- * skills, permissionMode, maxTurns, …) are NOT exposed — a body round-trip
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
- * Consequences of that split, which callers must know:
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
- * - Creating an agent writes a minimal template body; a user who wants a real
22
- * prompt edits the file (or the app opens it in an editor).
23
- * - Editing an agent REWRITES its frontmatter from the parsed model, so any
24
- * advanced field the user set by hand is preserved verbatim in the body of
25
- * the file but its frontmatter keys are re-emitted in canonical order.
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) and seeds a minimal body so the agent is immediately usable.
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
- const content = serializeAgentMarkdown(frontmatter, TEMPLATE_BODY);
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: TEMPLATE_BODY.trim(),
534
+ systemPrompt: body.trim(),
470
535
  enabled: true,
471
536
  readOnly: false,
472
537
  };
473
538
  }
474
539
  /**
475
- * Update an agent's editable frontmatter fields.
540
+ * Update an agent's editable fields.
476
541
  *
477
- * Only the fields present in `patch` change; the body and every other
478
- * frontmatter key are carried through from the file. `model`/`thoughtLevel`
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 applyModel = (key, value) => {
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
- applyModel("model", patch.model);
520
- applyModel("thoughtLevel", patch.thoughtLevel);
521
- const next = {
522
- ...fm,
523
- name: typeof fm.name === "string" ? fm.name : name,
524
- description: typeof fm.description === "string" ? fm.description : "",
525
- };
526
- // Round-trip check: what we serialize must parse back to the same fields, or
527
- // an escaping mistake would silently rewrite the user's agent. Every key is
528
- // checked, not just the editable five — an unknown field (one the user added
529
- // by hand, or a newer app version introduced) is exactly where a serialization
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 before = next[key];
548
- if (before === undefined)
607
+ const value = patch[key];
608
+ if (value === undefined)
549
609
  continue;
550
- const after = roundTrip[key];
551
- const left = Array.isArray(before) ? before.join("\u0000") : "";
552
- const right = Array.isArray(after) ? after.join("\u0000") : "";
553
- if (left !== right) {
554
- throw new Error(`frontmatter round-trip failed for '${key}' — not writing`);
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: split.body.trim(),
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