overmind-mcp 2.8.23 → 2.8.25

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.
@@ -1 +1 @@
1
- {"version":3,"file":"envUtils.d.ts","sourceRoot":"","sources":["../../src/lib/envUtils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,KAAK,cAAc,GACf,MAAM,GACN,MAAM,GACN,OAAO,GACP,IAAI,GACJ,SAAS,GACT,cAAc,EAAE,GAChB;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAAA;CAAE,CAAC;AAMtC,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,cAAc,EACnB,OAAO,GAAE,OAAO,CAAC,MAAM,CAAiB,GACvC,cAAc,CA8BhB;AAED,6FAA6F;AAC7F,wBAAgB,qBAAqB,IAAI,MAAM,EAAE,CAIhD"}
1
+ {"version":3,"file":"envUtils.d.ts","sourceRoot":"","sources":["../../src/lib/envUtils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,KAAK,cAAc,GACf,MAAM,GACN,MAAM,GACN,OAAO,GACP,IAAI,GACJ,SAAS,GACT,cAAc,EAAE,GAChB;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAAA;CAAE,CAAC;AAMtC,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,cAAc,EACnB,OAAO,GAAE,OAAO,CAAC,MAAM,CAAiB,GACvC,cAAc,CAsChB;AAED,6FAA6F;AAC7F,wBAAgB,qBAAqB,IAAI,MAAM,EAAE,CAIhD"}
@@ -7,9 +7,18 @@
7
7
  const unresolvedVars = [];
8
8
  export function interpolateEnvVars(obj, visited = new WeakSet()) {
9
9
  if (typeof obj === 'string') {
10
- // Replace unresolved vars with empty string and track which keys are missing
11
- return obj.replace(/\$(\w+)|\${(\w+)}/g, (_, name1, name2) => {
12
- const name = name1 || name2;
10
+ // Match $VAR and ${VAR}. The closing '}' MUST be inside the match so it does
11
+ // not leak into the output. The previous regex `\$(\w+)|\${\w+}` (a) had only
12
+ // one capture group (so `name2` was always undefined, and `${VAR}` crashed
13
+ // on `process.env[undefined]`), and (b) did not consume the '}' — leaking
14
+ // it as literal text. Fixed: explicit capture group on each alternation branch,
15
+ // closing brace consumed by the first branch.
16
+ return obj.replace(/\$\{(\w+)\}|\$(\w+)/g, (_, braced, bare) => {
17
+ const name = braced || bare;
18
+ // Defensive: should never happen, but if name is undefined (no capture
19
+ // matched), treat as literal text rather than crashing on process.env[undefined].
20
+ if (name === undefined)
21
+ return _;
13
22
  const value = process.env[name];
14
23
  if (value === undefined)
15
24
  unresolvedVars.push(name);
@@ -1 +1 @@
1
- {"version":3,"file":"envUtils.js","sourceRoot":"","sources":["../../src/lib/envUtils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAWH,+EAA+E;AAC/E,oFAAoF;AACpF,MAAM,cAAc,GAAa,EAAE,CAAC;AAEpC,MAAM,UAAU,kBAAkB,CAChC,GAAmB,EACnB,UAA2B,IAAI,OAAO,EAAE;IAExC,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5B,6EAA6E;QAC7E,OAAO,GAAG,CAAC,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;YAC3D,MAAM,IAAI,GAAG,KAAK,IAAI,KAAK,CAAC;YAC5B,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAChC,IAAI,KAAK,KAAK,SAAS;gBAAE,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnD,OAAO,KAAK,IAAI,EAAE,CAAC;QACrB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,kBAAkB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IAC9D,CAAC;IAED,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5C,+BAA+B;QAC/B,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACrB,OAAO,GAAG,CAAC,CAAC,cAAc;QAC5B,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAEjB,MAAM,MAAM,GAAmC,EAAE,CAAC;QAClD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/C,MAAM,CAAC,GAAG,CAAC,GAAG,kBAAkB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACnD,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED,6FAA6F;AAC7F,MAAM,UAAU,qBAAqB;IACnC,MAAM,IAAI,GAAG,CAAC,GAAG,cAAc,CAAC,CAAC;IACjC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC;IAC1B,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"envUtils.js","sourceRoot":"","sources":["../../src/lib/envUtils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAWH,+EAA+E;AAC/E,oFAAoF;AACpF,MAAM,cAAc,GAAa,EAAE,CAAC;AAEpC,MAAM,UAAU,kBAAkB,CAChC,GAAmB,EACnB,UAA2B,IAAI,OAAO,EAAE;IAExC,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5B,6EAA6E;QAC7E,8EAA8E;QAC9E,2EAA2E;QAC3E,0EAA0E;QAC1E,gFAAgF;QAChF,8CAA8C;QAC9C,OAAO,GAAG,CAAC,OAAO,CAAC,sBAAsB,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;YAC7D,MAAM,IAAI,GAAG,MAAM,IAAI,IAAI,CAAC;YAC5B,uEAAuE;YACvE,kFAAkF;YAClF,IAAI,IAAI,KAAK,SAAS;gBAAE,OAAO,CAAC,CAAC;YACjC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAChC,IAAI,KAAK,KAAK,SAAS;gBAAE,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnD,OAAO,KAAK,IAAI,EAAE,CAAC;QACrB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,kBAAkB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IAC9D,CAAC;IAED,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5C,+BAA+B;QAC/B,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACrB,OAAO,GAAG,CAAC,CAAC,cAAc;QAC5B,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAEjB,MAAM,MAAM,GAAmC,EAAE,CAAC;QAClD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/C,MAAM,CAAC,GAAG,CAAC,GAAG,kBAAkB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACnD,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED,6FAA6F;AAC7F,MAAM,UAAU,qBAAqB;IACnC,MAAM,IAAI,GAAG,CAAC,GAAG,cAAc,CAAC,CAAC;IACjC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC;IAC1B,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"NousHermesRunner.d.ts","sourceRoot":"","sources":["../../src/services/NousHermesRunner.ts"],"names":[],"mappings":"AA2DA,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAsFD;;;;;;GAMG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,SAAS,CAAgB;IACjC,OAAO,CAAC,OAAO,CAAoB;;IAMnC,gBAAgB,IAAI,IAAI;IAclB,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC;IAkC3D,gBAAgB,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC;CAi1B1E"}
1
+ {"version":3,"file":"NousHermesRunner.d.ts","sourceRoot":"","sources":["../../src/services/NousHermesRunner.ts"],"names":[],"mappings":"AA2DA,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAsFD;;;;;;GAMG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,SAAS,CAAgB;IACjC,OAAO,CAAC,OAAO,CAAoB;;IAMnC,gBAAgB,IAAI,IAAI;IAclB,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC;IAkC3D,gBAAgB,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC;CAi2B1E"}
@@ -425,6 +425,12 @@ export class NousHermesRunner {
425
425
  // OpenRouter → "sk-or-..." → env OPENROUTER_API_KEY (BLOCKED for LLM)
426
426
  // Mistral → (variable) → env MISTRAL_API_KEY_*
427
427
  // Other → unknown → env ANTHROPIC_AUTH_TOKEN (default Anthropic)
428
+ //
429
+ // NOTE: This function-local copy mirrors the canonical implementation in
430
+ // src/services/hermesTokenResolver.ts. The runner uses these local closures
431
+ // so it doesn't have to thread env/logger through every call site; the
432
+ // canonical exported versions exist for testing and for any future caller
433
+ // that wants the same behavior without instantiating NousHermesRunner.
428
434
  const TOKEN_PREFIX_PROVIDERS = [
429
435
  // Z.AI: c78a134949fc4c369911c24e9fa4b84c.OZhHX5Obs6qF1ISt (32hex.32hex — 2 blocks)
430
436
  { test: (t) => /^[0-9a-f]{32}\.[0-9a-zA-Z]+$/i.test(t), provider: 'zai', envKey: 'ZAI_ANTHROPIC_FALLBACK_KEY' },
@@ -453,42 +459,10 @@ export class NousHermesRunner {
453
459
  // ============================================================
454
460
  // TOKEN RESOLUTION ORDER (settings.env first, then process.env, then detection)
455
461
  // ============================================================
456
- // IMPORTANT — provider/credentials mapping (Hermes v0.16.0):
457
- // minimax-cn → MINIMAX_CN_API_KEY (NOT ANTHROPIC_AUTH_TOKEN)
458
- // minimax → MINIMAX_API_KEY
459
- // zai → GLM_API_KEY or ZAI_ANTHROPIC_FALLBACK_KEY
460
- // z-ai (alt) → Z_AI_API_KEY
461
- // anthropic → ANTHROPIC_AUTH_TOKEN (any of _1.._5, _E, _F, _Y)
462
- //
463
- // The agent's settings_<name>.json MUST use the env var name that matches
464
- // its ANTHROPIC_PROVIDER value, otherwise Hermes upstream will silently
465
- // 401 even though Overmind has the key. The minimax plugin in Hermes
466
- // (plugins/model-providers/minimax/init.py) decides the env var name — not Overmind.
467
- //
468
- // Resolution order (NEW in 2.8.16+):
469
- // 1. settings_<agent>.json env block (explicit, agent-specific — WINS)
470
- // 2. agent's .hermes/.env (isolated override)
471
- // 3. process.env (global .env via systemd EnvironmentFile)
472
- // 4. Detection by token prefix (subtilisation — last resort, maps to right provider)
473
- //
474
- // (Full list moved to top of scope for use in RAW pre-interpolation capture.)
475
- // See const TOKEN_KEYS at top of runHermesAgent() function.
476
- /**
477
- * Resolve a token with explicit settings priority + provider detection.
478
- *
479
- * Strategy:
480
- * 1. Read settings_<agent>.json env block.
481
- * - If user set a LITERAL token (e.g. "sk-cp-..."), use it directly.
482
- * - If user set a $VAR REFERENCE (e.g. "$GLM_API_KEY_Y"), RESOLVE IT.
483
- * - If $VAR is found in process.env → use the resolved value.
484
- * - If $VAR is NOT found in process.env → FAIL LOUD. Do NOT silently
485
- * fall back to TOKEN_KEYS (the user explicitly said "use THIS var").
486
- * - If user set something else (e.g. template, expression), try to resolve.
487
- * 2. If no settings token (or settings has no env block at all), fall back
488
- * to TOKEN_KEYS iteration in priority order from process.env.
489
- * 3. For each candidate, sniff the token prefix to know which provider it
490
- * belongs to, and re-map to the right env var name for that provider.
491
- */
462
+ // See src/services/hermesTokenResolver.ts for the canonical exported version
463
+ // and the rationale for the 3-pass strategy. The local closure below
464
+ // captures agentCustomEnv, TOKEN_KEYS, agentName, logger, and tmpSettingsPath
465
+ // from the enclosing scope so call sites stay terse.
492
466
  function resolveTokenWithDetection(explicitSettingsTokens) {
493
467
  // Step 1: settings_<agent>.json env block takes ABSOLUTE priority
494
468
  // (whatever the user explicitly set in their agent config wins)
@@ -520,21 +494,47 @@ export class NousHermesRunner {
520
494
  logger.info({ agentName, tokenKey: t.key, detectedProvider: detected.provider, mappedTo: detected.envKey }, '[SUBTILISATION] Using explicit settings_<agent>.json token, re-mapping to detected provider env var.');
521
495
  return { tokenEnvKey: t.key, tokenValue: resolvedValue, detectedProvider: detected.provider, source: 'settings-explicit' };
522
496
  }
523
- // Step 2: iterate TOKEN_KEYS in priority order, picking the first non-empty
497
+ const candidates = [];
524
498
  for (const tk of TOKEN_KEYS) {
525
499
  const v = agentCustomEnv[tk];
526
500
  if (v && typeof v === 'string' && v.length > 0) {
527
- const detected = detectTokenProvider(v);
528
- // If the env-var name doesn't match the detected provider, re-map.
529
- // (e.g. ANTHROPIC_AUTH_TOKEN=sk-cp-... → real env should be MINIMAX_API_KEY)
530
- if (detected.envKey !== tk && detected.provider !== 'unknown') {
531
- logger.info({ agentName, sourceKey: tk, detectedProvider: detected.provider, remappedTo: detected.envKey }, '[SUBTILISATION] Token prefix detected provider mismatch — re-mapping env var.');
532
- return { tokenEnvKey: detected.envKey, tokenValue: v, detectedProvider: detected.provider, source: 'detected' };
533
- }
534
- return { tokenEnvKey: tk, tokenValue: v, detectedProvider: detected.provider, source: 'env-fallback' };
501
+ candidates.push({ key: tk, value: v, detected: detectTokenProvider(v) });
535
502
  }
536
503
  }
537
- return null;
504
+ if (candidates.length === 0)
505
+ return null;
506
+ // Pass A: any candidate whose env-var name already matches its detected provider
507
+ // (e.g. MINIMAX_API_KEY=sk-cp-... → detected.envKey='MINIMAX_API_KEY' → match).
508
+ // TOKEN_KEYS ordering means provider-specific keys come first, so this preserves
509
+ // the user's explicit choice over a generic-key re-map.
510
+ for (const c of candidates) {
511
+ if (c.detected.provider !== 'unknown' && c.detected.envKey === c.key) {
512
+ return {
513
+ tokenEnvKey: c.key,
514
+ tokenValue: c.value,
515
+ detectedProvider: c.detected.provider,
516
+ source: 'env-fallback',
517
+ };
518
+ }
519
+ }
520
+ // Pass B: re-map the first candidate to the right provider env-var name.
521
+ const first = candidates[0];
522
+ if (first.detected.provider !== 'unknown' && first.detected.envKey !== first.key) {
523
+ logger.info({ agentName, sourceKey: first.key, detectedProvider: first.detected.provider, remappedTo: first.detected.envKey }, '[SUBTILISATION] Token prefix detected provider mismatch — re-mapping env var.');
524
+ return {
525
+ tokenEnvKey: first.detected.envKey,
526
+ tokenValue: first.value,
527
+ detectedProvider: first.detected.provider,
528
+ source: 'detected',
529
+ };
530
+ }
531
+ // Pass C (rare): all candidates have provider='unknown' or envKey already matches.
532
+ return {
533
+ tokenEnvKey: first.key,
534
+ tokenValue: first.value,
535
+ detectedProvider: first.detected.provider,
536
+ source: 'env-fallback',
537
+ };
538
538
  }
539
539
  const getAvailableFallbacks = () => {
540
540
  const fb = [];
@@ -1 +1 @@
1
- {"version":3,"file":"NousHermesRunner.js","sourceRoot":"","sources":["../../src/services/NousHermesRunner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"NousHermesRunner.js","sourceRoot":"","sources":["../../src/services/NousHermesRunner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,74 @@
1
+ /**
2
+ * Hermes token resolution — canonical, side-effect-free implementation.
3
+ *
4
+ * This module exists for two reasons:
5
+ *
6
+ * 1. **Testability.** The `NousHermesRunner` defines these helpers as
7
+ * function-local closures (so call sites can capture `agentCustomEnv`,
8
+ * `TOKEN_KEYS`, `agentName`, `logger`, `tmpSettingsPath` from the
9
+ * enclosing scope without ceremony). That makes the logic untestable
10
+ * in isolation. This module is the canonical, parameterized version.
11
+ * Any divergence between the local closure and this module is a bug —
12
+ * keep them in sync.
13
+ *
14
+ * 2. **Audit surface.** When debugging "why did the runner pick
15
+ * `MINIMAX_API_KEY` over `ANTHROPIC_AUTH_TOKEN`?", you can import
16
+ * `resolveTokenWithDetection` from this module in a REPL or a one-off
17
+ * script and replay the decision without spinning up a Hermes run.
18
+ *
19
+ * Token detection convention (Hermes v0.16.0):
20
+ * MiniMax → "sk-cp-..." → env MINIMAX_API_KEY
21
+ * Z.AI / GLM → "32hex.32hex" → env ZAI_ANTHROPIC_FALLBACK_KEY
22
+ * e.g. "c78a134949fc4c369911c24e9fa4b84c.OZhHX5Obs6qF1ISt"
23
+ * Z.AI alt → 32-char hex (single block, no dot)
24
+ * e.g. "5f650035e5a845549e4765184d8179b1"
25
+ * Anthropic → "sk-ant-..." → env ANTHROPIC_AUTH_TOKEN
26
+ * OpenAI → "sk-..." → env OPENAI_API_KEY
27
+ * OpenRouter → "sk-or-..." → env OPENROUTER_API_KEY (BLOCKED for LLM)
28
+ * Mistral → (variable) → env MISTRAL_API_KEY_*
29
+ * Other → unknown → env ANTHROPIC_AUTH_TOKEN
30
+ */
31
+ export interface ProviderDetection {
32
+ provider: string;
33
+ envKey: string;
34
+ }
35
+ export declare const TOKEN_PREFIX_PROVIDERS: ReadonlyArray<{
36
+ test: (t: string) => boolean;
37
+ provider: string;
38
+ envKey: string;
39
+ }>;
40
+ export declare function detectTokenProvider(token: string): ProviderDetection;
41
+ export interface ResolvedToken {
42
+ tokenEnvKey: string;
43
+ tokenValue: string;
44
+ detectedProvider: string;
45
+ source: 'settings-explicit' | 'env-fallback' | 'detected';
46
+ }
47
+ export interface ResolverLogger {
48
+ info: (obj: object, msg?: string) => void;
49
+ error: (obj: object, msg?: string) => void;
50
+ }
51
+ /**
52
+ * Resolve a token with explicit settings priority + provider detection.
53
+ *
54
+ * Strategy:
55
+ * 1. Read settings_<agent>.json env block (explicitSettingsTokens).
56
+ * - Literal token (e.g. "sk-cp-...") → use it directly.
57
+ * - $VAR reference (e.g. "$GLM_API_KEY_Y") → resolve against process.env.
58
+ * Missing? FAIL LOUD (no silent fallback).
59
+ * 2. No settings token → iterate tokenKeys in priority order. THREE PASSES:
60
+ * Pass A: prefer a candidate whose env-var NAME already matches its
61
+ * detected provider (preserves explicit user choice over
62
+ * generic-key re-map).
63
+ * Pass B: re-map the first candidate to the right provider env-var
64
+ * name (subtilisation).
65
+ * Pass C: rare — everything aligned already, return as-is.
66
+ *
67
+ * @throws {Error} `MISSING_ENV_VAR: ...` when settings references a $VAR that
68
+ * is not in process.env.
69
+ */
70
+ export declare function resolveTokenWithDetection(agentName: string | undefined, explicitSettingsTokens: ReadonlyArray<{
71
+ key: string;
72
+ value: string;
73
+ }>, agentCustomEnv: Record<string, string | undefined>, tokenKeys: ReadonlyArray<string>, logger: ResolverLogger): ResolvedToken | null;
74
+ //# sourceMappingURL=hermesTokenResolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hermesTokenResolver.d.ts","sourceRoot":"","sources":["../../src/services/hermesTokenResolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,eAAO,MAAM,sBAAsB,EAAE,aAAa,CAAC;IACjD,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB,CAiBA,CAAC;AAEF,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,iBAAiB,CAKpE;AAED,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;IACzB,MAAM,EAAE,mBAAmB,GAAG,cAAc,GAAG,UAAU,CAAC;CAC3D;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CAC5C;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,sBAAsB,EAAE,aAAa,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,EACrE,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,EAClD,SAAS,EAAE,aAAa,CAAC,MAAM,CAAC,EAChC,MAAM,EAAE,cAAc,GACrB,aAAa,GAAG,IAAI,CAmFtB"}
@@ -0,0 +1,140 @@
1
+ /**
2
+ * Hermes token resolution — canonical, side-effect-free implementation.
3
+ *
4
+ * This module exists for two reasons:
5
+ *
6
+ * 1. **Testability.** The `NousHermesRunner` defines these helpers as
7
+ * function-local closures (so call sites can capture `agentCustomEnv`,
8
+ * `TOKEN_KEYS`, `agentName`, `logger`, `tmpSettingsPath` from the
9
+ * enclosing scope without ceremony). That makes the logic untestable
10
+ * in isolation. This module is the canonical, parameterized version.
11
+ * Any divergence between the local closure and this module is a bug —
12
+ * keep them in sync.
13
+ *
14
+ * 2. **Audit surface.** When debugging "why did the runner pick
15
+ * `MINIMAX_API_KEY` over `ANTHROPIC_AUTH_TOKEN`?", you can import
16
+ * `resolveTokenWithDetection` from this module in a REPL or a one-off
17
+ * script and replay the decision without spinning up a Hermes run.
18
+ *
19
+ * Token detection convention (Hermes v0.16.0):
20
+ * MiniMax → "sk-cp-..." → env MINIMAX_API_KEY
21
+ * Z.AI / GLM → "32hex.32hex" → env ZAI_ANTHROPIC_FALLBACK_KEY
22
+ * e.g. "c78a134949fc4c369911c24e9fa4b84c.OZhHX5Obs6qF1ISt"
23
+ * Z.AI alt → 32-char hex (single block, no dot)
24
+ * e.g. "5f650035e5a845549e4765184d8179b1"
25
+ * Anthropic → "sk-ant-..." → env ANTHROPIC_AUTH_TOKEN
26
+ * OpenAI → "sk-..." → env OPENAI_API_KEY
27
+ * OpenRouter → "sk-or-..." → env OPENROUTER_API_KEY (BLOCKED for LLM)
28
+ * Mistral → (variable) → env MISTRAL_API_KEY_*
29
+ * Other → unknown → env ANTHROPIC_AUTH_TOKEN
30
+ */
31
+ export const TOKEN_PREFIX_PROVIDERS = [
32
+ // Z.AI: c78a134949fc4c369911c24e9fa4b84c.OZhHX5Obs6qF1ISt (32hex.32hex — 2 blocks)
33
+ { test: (t) => /^[0-9a-f]{32}\.[0-9a-zA-Z]+$/i.test(t), provider: 'zai', envKey: 'ZAI_ANTHROPIC_FALLBACK_KEY' },
34
+ // Z.AI: 5f6500...q3m3 (32-char hex single block, no dot, no dashes)
35
+ { test: (t) => /^[0-9a-f]{32}$/i.test(t), provider: 'zai', envKey: 'ZAI_ANTHROPIC_FALLBACK_KEY' },
36
+ // MiniMax: sk-cp-...
37
+ { test: (t) => t.startsWith('sk-cp-'), provider: 'minimax', envKey: 'MINIMAX_API_KEY' },
38
+ // MiniMax: sk-mm-... (alternative prefix)
39
+ { test: (t) => t.startsWith('sk-mm-'), provider: 'minimax', envKey: 'MINIMAX_API_KEY' },
40
+ // Anthropic
41
+ { test: (t) => t.startsWith('sk-ant-'), provider: 'anthropic', envKey: 'ANTHROPIC_AUTH_TOKEN' },
42
+ // OpenRouter (BLOCKED for LLM, but we still detect it for diagnostic)
43
+ { test: (t) => t.startsWith('sk-or-'), provider: 'openrouter', envKey: 'OPENROUTER_API_KEY' },
44
+ // OpenAI (no -ant, no -cp, no -or)
45
+ { test: (t) => t.startsWith('sk-'), provider: 'openai', envKey: 'OPENAI_API_KEY' },
46
+ // Generic 16+ hex without dot — probably a Z.AI token variant
47
+ { test: (t) => /^[0-9a-f]{16,}$/i.test(t), provider: 'zai', envKey: 'ZAI_ANTHROPIC_FALLBACK_KEY' },
48
+ ];
49
+ export function detectTokenProvider(token) {
50
+ for (const rule of TOKEN_PREFIX_PROVIDERS) {
51
+ if (rule.test(token))
52
+ return { provider: rule.provider, envKey: rule.envKey };
53
+ }
54
+ return { provider: 'unknown', envKey: 'ANTHROPIC_AUTH_TOKEN' };
55
+ }
56
+ /**
57
+ * Resolve a token with explicit settings priority + provider detection.
58
+ *
59
+ * Strategy:
60
+ * 1. Read settings_<agent>.json env block (explicitSettingsTokens).
61
+ * - Literal token (e.g. "sk-cp-...") → use it directly.
62
+ * - $VAR reference (e.g. "$GLM_API_KEY_Y") → resolve against process.env.
63
+ * Missing? FAIL LOUD (no silent fallback).
64
+ * 2. No settings token → iterate tokenKeys in priority order. THREE PASSES:
65
+ * Pass A: prefer a candidate whose env-var NAME already matches its
66
+ * detected provider (preserves explicit user choice over
67
+ * generic-key re-map).
68
+ * Pass B: re-map the first candidate to the right provider env-var
69
+ * name (subtilisation).
70
+ * Pass C: rare — everything aligned already, return as-is.
71
+ *
72
+ * @throws {Error} `MISSING_ENV_VAR: ...` when settings references a $VAR that
73
+ * is not in process.env.
74
+ */
75
+ export function resolveTokenWithDetection(agentName, explicitSettingsTokens, agentCustomEnv, tokenKeys, logger) {
76
+ // Step 1: settings_<agent>.json env block takes ABSOLUTE priority
77
+ if (explicitSettingsTokens.length > 0) {
78
+ const t = explicitSettingsTokens[0];
79
+ let resolvedValue = t.value;
80
+ if (typeof t.value === 'string' && t.value.startsWith('$')) {
81
+ const varName = t.value.slice(1);
82
+ const fromEnv = process.env[varName];
83
+ if (!fromEnv || fromEnv.length === 0) {
84
+ logger.error({
85
+ agentName,
86
+ requestedVar: varName,
87
+ requestedKey: t.key,
88
+ }, '[FAIL-LOUD] settings_<agent>.json references $' + varName + ' but it is not set in process.env. ' +
89
+ 'Either export it in the parent .env, or fix the reference in settings_<agent>.json. ' +
90
+ 'Refusing to fall back to a different credential.');
91
+ throw new Error(`MISSING_ENV_VAR: settings_<agent>.json env.${t.key}="$` + varName + '" ' +
92
+ `but process.env.${varName} is empty. Add it to /home/demon/.overmind/.env or fix the settings reference.`);
93
+ }
94
+ resolvedValue = fromEnv;
95
+ logger.info({ agentName, sourceKey: t.key, referencedVar: varName, resolvedLen: resolvedValue.length }, '[SUBTILISATION] Resolved $VAR reference from settings_<agent>.json against process.env.');
96
+ }
97
+ const detected = detectTokenProvider(resolvedValue);
98
+ logger.info({ agentName, tokenKey: t.key, detectedProvider: detected.provider, mappedTo: detected.envKey }, '[SUBTILISATION] Using explicit settings_<agent>.json token, re-mapping to detected provider env var.');
99
+ return { tokenEnvKey: t.key, tokenValue: resolvedValue, detectedProvider: detected.provider, source: 'settings-explicit' };
100
+ }
101
+ const candidates = [];
102
+ for (const tk of tokenKeys) {
103
+ const v = agentCustomEnv[tk];
104
+ if (v && typeof v === 'string' && v.length > 0) {
105
+ candidates.push({ key: tk, value: v, detected: detectTokenProvider(v) });
106
+ }
107
+ }
108
+ if (candidates.length === 0)
109
+ return null;
110
+ // Pass A: prefer the candidate whose env-var name ALREADY matches its detected provider.
111
+ for (const c of candidates) {
112
+ if (c.detected.provider !== 'unknown' && c.detected.envKey === c.key) {
113
+ return {
114
+ tokenEnvKey: c.key,
115
+ tokenValue: c.value,
116
+ detectedProvider: c.detected.provider,
117
+ source: 'env-fallback',
118
+ };
119
+ }
120
+ }
121
+ // Pass B: re-map the first candidate to the right provider env-var.
122
+ const first = candidates[0];
123
+ if (first.detected.provider !== 'unknown' && first.detected.envKey !== first.key) {
124
+ logger.info({ agentName, sourceKey: first.key, detectedProvider: first.detected.provider, remappedTo: first.detected.envKey }, '[SUBTILISATION] Token prefix detected provider mismatch — re-mapping env var.');
125
+ return {
126
+ tokenEnvKey: first.detected.envKey,
127
+ tokenValue: first.value,
128
+ detectedProvider: first.detected.provider,
129
+ source: 'detected',
130
+ };
131
+ }
132
+ // Pass C: rare — everything aligned already or all providers unknown.
133
+ return {
134
+ tokenEnvKey: first.key,
135
+ tokenValue: first.value,
136
+ detectedProvider: first.detected.provider,
137
+ source: 'env-fallback',
138
+ };
139
+ }
140
+ //# sourceMappingURL=hermesTokenResolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hermesTokenResolver.js","sourceRoot":"","sources":["../../src/services/hermesTokenResolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAOH,MAAM,CAAC,MAAM,sBAAsB,GAI9B;IACH,mFAAmF;IACnF,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,+BAA+B,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,4BAA4B,EAAE;IAC/G,oEAAoE;IACpE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,4BAA4B,EAAE;IACjG,qBAAqB;IACrB,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,iBAAiB,EAAE;IACvF,0CAA0C;IAC1C,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,iBAAiB,EAAE;IACvF,YAAY;IACZ,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,sBAAsB,EAAE;IAC/F,sEAAsE;IACtE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,oBAAoB,EAAE;IAC7F,mCAAmC;IACnC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,gBAAgB,EAAE;IAClF,8DAA8D;IAC9D,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,4BAA4B,EAAE;CACnG,CAAC;AAEF,MAAM,UAAU,mBAAmB,CAAC,KAAa;IAC/C,KAAK,MAAM,IAAI,IAAI,sBAAsB,EAAE,CAAC;QAC1C,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;YAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;IAChF,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,sBAAsB,EAAE,CAAC;AACjE,CAAC;AAcD;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,yBAAyB,CACvC,SAA6B,EAC7B,sBAAqE,EACrE,cAAkD,EAClD,SAAgC,EAChC,MAAsB;IAEtB,kEAAkE;IAClE,IAAI,sBAAsB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtC,MAAM,CAAC,GAAG,sBAAsB,CAAC,CAAC,CAAC,CAAC;QACpC,IAAI,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC;QAC5B,IAAI,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,IAAI,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3D,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACjC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACrC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACrC,MAAM,CAAC,KAAK,CACV;oBACE,SAAS;oBACT,YAAY,EAAE,OAAO;oBACrB,YAAY,EAAE,CAAC,CAAC,GAAG;iBACpB,EACD,gDAAgD,GAAG,OAAO,GAAG,qCAAqC;oBAClG,sFAAsF;oBACtF,kDAAkD,CACnD,CAAC;gBACF,MAAM,IAAI,KAAK,CACb,8CAA8C,CAAC,CAAC,GAAG,KAAK,GAAG,OAAO,GAAG,IAAI;oBACzE,mBAAmB,OAAO,gFAAgF,CAC3G,CAAC;YACJ,CAAC;YACD,aAAa,GAAG,OAAO,CAAC;YACxB,MAAM,CAAC,IAAI,CACT,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC,GAAG,EAAE,aAAa,EAAE,OAAO,EAAE,WAAW,EAAE,aAAa,CAAC,MAAM,EAAE,EAC1F,yFAAyF,CAC1F,CAAC;QACJ,CAAC;QACD,MAAM,QAAQ,GAAG,mBAAmB,CAAC,aAAa,CAAC,CAAC;QACpD,MAAM,CAAC,IAAI,CACT,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC,GAAG,EAAE,gBAAgB,EAAE,QAAQ,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,MAAM,EAAE,EAC9F,sGAAsG,CACvG,CAAC;QACF,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC,GAAG,EAAE,UAAU,EAAE,aAAa,EAAE,gBAAgB,EAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAAC;IAC7H,CAAC;IAID,MAAM,UAAU,GAAgB,EAAE,CAAC;IACnC,KAAK,MAAM,EAAE,IAAI,SAAS,EAAE,CAAC;QAC3B,MAAM,CAAC,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC;QAC7B,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/C,UAAU,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC3E,CAAC;IACH,CAAC;IACD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAEzC,yFAAyF;IACzF,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;QAC3B,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,KAAK,SAAS,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC;YACrE,OAAO;gBACL,WAAW,EAAE,CAAC,CAAC,GAAG;gBAClB,UAAU,EAAE,CAAC,CAAC,KAAK;gBACnB,gBAAgB,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ;gBACrC,MAAM,EAAE,cAAc;aACvB,CAAC;QACJ,CAAC;IACH,CAAC;IAED,oEAAoE;IACpE,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;IAC5B,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,KAAK,SAAS,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,KAAK,CAAC,GAAG,EAAE,CAAC;QACjF,MAAM,CAAC,IAAI,CACT,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,GAAG,EAAE,gBAAgB,EAAE,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,EACjH,+EAA+E,CAChF,CAAC;QACF,OAAO;YACL,WAAW,EAAE,KAAK,CAAC,QAAQ,CAAC,MAAM;YAClC,UAAU,EAAE,KAAK,CAAC,KAAK;YACvB,gBAAgB,EAAE,KAAK,CAAC,QAAQ,CAAC,QAAQ;YACzC,MAAM,EAAE,UAAU;SACnB,CAAC;IACJ,CAAC;IAED,sEAAsE;IACtE,OAAO;QACL,WAAW,EAAE,KAAK,CAAC,GAAG;QACtB,UAAU,EAAE,KAAK,CAAC,KAAK;QACvB,gBAAgB,EAAE,KAAK,CAAC,QAAQ,CAAC,QAAQ;QACzC,MAAM,EAAE,cAAc;KACvB,CAAC;AACJ,CAAC"}
@@ -5,15 +5,22 @@
5
5
  Chaque variable suit cette priorite (la premiere gagne):
6
6
 
7
7
  ```
8
- HERMES_HOME/.env (C:\Users\Deamon\AppData\Local\hermes\.env)
9
-
10
- settings_[agent].json → env (apres interpolation $VAR par process.env)
8
+ process.env (env du parent, herite par le spawn)
11
9
 
12
10
  Workflow/.env (C:\Users\Deamon\Desktop\Backup\Serveur MCP\Workflow\.env)
13
11
 
14
- process.env (env du parent, herite par le spawn)
12
+ settings_[agent].json → env (apres interpolation $VAR par process.env)
13
+
14
+ HERMES_HOME/.env (C:\Users\Deamon\AppData\Local\hermes\.env) ← DERNIER MOT
15
15
  ```
16
16
 
17
+ **Detail du code** (`NousHermesRunner.ts` l.268-456):
18
+ 1. `agentCustomEnv = { ...process.env, ...settings.env }` (line 268 puis 384)
19
+ 2. Puis lit `overmindHermesSubPath/.env` (le `.hermes/.env` de l'agent) et fait `agentCustomEnv[key] = value` (line 437-456) — ce qui OVERRIDE tout ce qui precede.
20
+ 3. Finalement ecrit ce `agentCustomEnv` dans le `.env` final de l'agent (line 722-732) avec dedup sur les cles `*api_key` / `*auth_token`.
21
+
22
+ Donc le `.hermes/.env` de l'agent a **toujours le dernier mot**. Si tu mets `MINIMAX_API_KEY=*** dans le .hermes/.env, il ecrase `MINIMAX_API_KEY` du process.env et du settings.
23
+
17
24
  **MAIS** pour `OPENROUTER_API_KEY` uniquement:
18
25
  - Hermes lit d'abord `HERMES_HOME/.env` puis `os.environ`
19
26
  - Si present dans `auth.json` avec status `exhausted` → skip
@@ -147,6 +154,27 @@ MINIMAX_CN_API_KEY=ton_token_minimax_ici
147
154
 
148
155
  ## Comment Hermes decide quel provider utiliser
149
156
 
157
+ Il y a DEUX niveaux de decision:
158
+
159
+ ### Niveau 1: Overmind runner (avant spawn)
160
+
161
+ `NousHermesRunner.writeAuthJson()` (l.782-918) vote entre 3 signaux pour determiner le `effectiveProvider` qui sera seed dans `auth.json` et le `.env` de l'agent:
162
+
163
+ 1. **Token prefix** (le plus fiable) — `detectTokenProvider()` reconnait:
164
+ - `sk-cp-...` ou `sk-mm-...` → `minimax`
165
+ - `32hex.32hex` ou 32-char hex → `zai`
166
+ - `sk-ant-...` → `anthropic`
167
+ - `sk-or-...` → `openrouter` (mais BLOQUE pour LLM par la suite)
168
+ - `sk-...` (autre) → `openai`
169
+ 2. **BASE_URL** (tres fiable, plus specifique que le token pour CN vs GLOBAL) — `api.minimaxi.com` → `minimax-cn`, `api.minimax.com` → `minimax`, `api.z.ai/api/coding/paas/v4` → `zai`, `anthropic.com` → `anthropic`, `openai.com` → `openai`.
170
+ 3. **ANTHROPIC_PROVIDER** hint du settings (le moins fiable).
171
+
172
+ **Cas special CN vs GLOBAL**: `sk-cp-` est ambigu entre `minimax` et `minimax-cn` (meme prefix). Si l'URL dit `minimaxi` (avec le `i`), c'est CN. Si `minimax` (sans le `i`), c'est GLOBAL. **L'URL gagne dans ce cas precis** parce qu'elle est la seule a desambiguïser.
173
+
174
+ ### Niveau 2: Hermes upstream (apres spawn)
175
+
176
+ Hermes relit son `auth.json` + `HERMES_HOME/.env` + `os.environ` avec sa propre logique (dans `hermes_cli/auth.py`):
177
+
150
178
  ```
151
179
  1. Si `provider` explicite dans config.yaml → utilise ce provider
152
180
  2. Sinon si `ANTHROPIC_BASE_URL` contient openrouter → "openrouter"
@@ -156,7 +184,7 @@ MINIMAX_CN_API_KEY=ton_token_minimax_ici
156
184
  4. Sinon fallback: model.default dans config.yaml
157
185
  ```
158
186
 
159
- Le model resolve le provider. Donc `ANTHROPIC_MODEL=glm-5.1` sans provider explicite `zai`. `ANTHROPIC_MODEL=MiniMax-M2.7` `minimax-cn`.
187
+ **Le runner a deja vote au Niveau 1** — donc ce que tu mets dans `auth.json` (via `writeAuthJson()`) determine ce qu'Hermes verra au Niveau 2. Si le runner a seed `minimax-cn` mais que `config.yaml` dit `provider: minimax`, Hermes va probablement se plaindre. **Garde les deux alignes** ou laisse le runner ecrire le `config.yaml` (ce qu'il fait deja a chaque run).
160
188
 
161
189
  ---
162
190
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "overmind-mcp",
3
- "version": "2.8.23",
3
+ "version": "2.8.25",
4
4
  "description": "Orchestrateur universel agents IA multi-modeles via MCP. Inclut le protocole 'Custom-Nickname' pour identifier vos agents avec des surnoms originaux (The Chaos Prophet, Shadow Sniper, etc.), l'isolation mémoire (Private Memory Context) et le support pour QwenCli et Nous Hermes. Installation automatique des dépendances Docker (PostgreSQL, pgvector) inclus.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -0,0 +1,179 @@
1
+ #!/usr/bin/env python3
2
+ """Post l'embed du wrapper Overmind Bridge sur Discord."""
3
+ import os
4
+ import json
5
+ import urllib.request
6
+ import urllib.error
7
+
8
+ # Récupère le token depuis .env
9
+ env_path = r"C:\Users\Deamon\Desktop\Backup\Serveur MCP\discord_llm\.env"
10
+ TOKEN_PREFIX = "DISCORD_BOT_TOKEN"
11
+ token = None
12
+ with open(env_path, 'r', encoding='utf-8') as f:
13
+ for line in f:
14
+ if line.startswith(TOKEN_PREFIX + "="):
15
+ token = line.split('=', 1)[1].strip()
16
+ break
17
+ if not token:
18
+ raise SystemExit("Token non trouve dans .env")
19
+
20
+ CHANNEL_ID = "1491078210279182500"
21
+
22
+ embed = {
23
+ "title": "🌉 Overmind Bridge — Couche RPC unifiée",
24
+ "description": (
25
+ "Couche **JSON-RPC 2.0** stable au-dessus du serveur MCP Overmind.\n"
26
+ "Transforme n'importe quel client HTTP (curl, Discord, SMS, autre agent) "
27
+ "en orchestrateur multi-agents avec **15 methodes RPC**, session store, "
28
+ "circuit breaker, retry, et webhook adapter prets a l'emploi.\n\n"
29
+ "Paquetage prod : `import { ... } from 'overmind-mcp/bridge'`"
30
+ ),
31
+ "color": 0x5865F2,
32
+ "fields": [
33
+ {
34
+ "name": "⚡ Demarrage rapide",
35
+ "value": (
36
+ "```\n"
37
+ "POST /rpc\n"
38
+ "Content-Type: application/json\n\n"
39
+ "{\n"
40
+ ' "jsonrpc": "2.0",\n'
41
+ ' "id": 1,\n'
42
+ ' "method": "agent.run",\n'
43
+ ' "params": {\n'
44
+ ' "agentName": "sniperbot_analyst",\n'
45
+ ' "runner": "hermes",\n'
46
+ ' "prompt": "...",\n'
47
+ ' "externalKey": "+1418..."\n'
48
+ " }\n"
49
+ "}\n"
50
+ "```"
51
+ ),
52
+ "inline": False
53
+ },
54
+ {
55
+ "name": "📚 15 methodes RPC (5 categories)",
56
+ "value": (
57
+ "▸ **Health** : `health.ping`\n"
58
+ "▸ **Agent** : `agent.run` · `agent.a2a` · `agent.status` · `agent.list` · `agent.kill`\n"
59
+ "▸ **MessageLog** : `message.history` · `message.get` · `message.replay` · `message.stats`\n"
60
+ "▸ **Session** : `session.get` · `session.list` · `session.delete` · `session.stats`\n"
61
+ "▸ **Webhook** : `webhook.sms` (voipms · twilio · discord · generic)"
62
+ ),
63
+ "inline": False
64
+ },
65
+ {
66
+ "name": "🛡️ Features production",
67
+ "value": (
68
+ "✅ Circuit breaker (5 echecs → open 30s)\n"
69
+ "✅ Triple timeout (connect + body + per-chunk)\n"
70
+ "✅ Retry auto sur ETIMEDOUT/EBODYREAD/ECONNRESET\n"
71
+ "✅ SessionStore multi-tenant (phone, userId, channelId)\n"
72
+ "✅ DirectiveParser (auto-update SESSION_ID: reponse)\n"
73
+ "✅ AgentRegistry + mutex (1 run par agent)\n"
74
+ "✅ MessageLog Postgres (optionnel)\n"
75
+ "✅ Path traversal bloque\n"
76
+ "✅ JSON-RPC 2.0 strict (batch + error codes)"
77
+ ),
78
+ "inline": False
79
+ },
80
+ {
81
+ "name": "🏗️ Architecture (3 couches)",
82
+ "value": (
83
+ "```\n"
84
+ "Client → BridgeProxy\n"
85
+ " ↓\n"
86
+ " OverBridgeService (session + types)\n"
87
+ " ↓\n"
88
+ " OverBridgeServer (HTTP + /rpc + /webhook)\n"
89
+ " ↓\n"
90
+ " Overmind MCP :3099 (run_agent)\n"
91
+ "```"
92
+ ),
93
+ "inline": False
94
+ },
95
+ {
96
+ "name": "📊 Codes d'erreur (JSON-RPC 2.0)",
97
+ "value": (
98
+ "▸ `-32700` PARSE_ERROR (JSON malforme)\n"
99
+ "▸ `-32600` INVALID_REQUEST\n"
100
+ "▸ `-32601` METHOD_NOT_FOUND\n"
101
+ "▸ `-32602` INVALID_PARAMS\n"
102
+ "▸ `-32603` INTERNAL_ERROR\n"
103
+ "▸ `-32003` FEATURE_DISABLED (ex: MessageLog off)\n"
104
+ "▸ `-32004` NOT_FOUND (ex: UUID inconnu)"
105
+ ),
106
+ "inline": False
107
+ },
108
+ {
109
+ "name": "🔌 Endpoints HTTP",
110
+ "value": (
111
+ "▸ `POST /rpc` — JSON-RPC 2.0 principal\n"
112
+ "▸ `GET /health` — Liveness probe (K8s/Docker)\n"
113
+ "▸ `POST /webhook/:provider` — voipms/twilio/discord/generic\n"
114
+ "▸ `GET /f/:filename` — Static files (path traversal bloque)"
115
+ ),
116
+ "inline": False
117
+ },
118
+ {
119
+ "name": "🚀 Clients deja migres",
120
+ "value": (
121
+ "✅ **discord_llm v5.0** — 100% aligne sur le wrapper, expose `/rpc` + 11 methodes testees sur sniperbot_analyst\n"
122
+ "🔄 **bt-sms** — migration prevue (copy-paste du pattern discord_llm)"
123
+ ),
124
+ "inline": False
125
+ },
126
+ {
127
+ "name": "🧪 Test live (sniperbot_analyst)",
128
+ "value": (
129
+ "```bash\n"
130
+ "# 1. Run agent avec session multi-tenant\n"
131
+ "curl -X POST http://127.0.0.1:3001/rpc -d '...agent.run...'\n"
132
+ "# 2. A2A loopback\n"
133
+ "curl -X POST http://127.0.0.1:3001/rpc -d '...agent.a2a...'\n"
134
+ "# 3. Webhook VoIP.ms → auto-dispatch\n"
135
+ "curl -X POST http://127.0.0.1:3001/rpc -d '...webhook.sms...'\n"
136
+ "```\n"
137
+ "Tous testes ✅ sur discord_llm v5.0"
138
+ ),
139
+ "inline": False
140
+ }
141
+ ],
142
+ "footer": {
143
+ "text": "Overmind Bridge v5.0 · discord_llm v5.0 · sniperbot_analyst sur runner=hermes (glm-5.1)"
144
+ }
145
+ }
146
+
147
+ payload = {"embeds": [embed]}
148
+ data = json.dumps(payload).encode('utf-8')
149
+
150
+ req = urllib.request.Request(
151
+ f"https://discord.com/api/v10/channels/{CHANNEL_ID}/messages",
152
+ data=data,
153
+ method='POST',
154
+ headers={
155
+ 'Authorization': f'Bot {token}',
156
+ 'Content-Type': 'application/json',
157
+ 'User-Agent': 'DiscordBot (overmind-bridge, 5.0.0)',
158
+ }
159
+ )
160
+
161
+ try:
162
+ with urllib.request.urlopen(req, timeout=30) as resp:
163
+ body = resp.read().decode('utf-8')
164
+ result = json.loads(body)
165
+ print(f"OK: embed poste")
166
+ print(f" message_id = {result.get('id')}")
167
+ print(f" channel_id = {result.get('channel_id')}")
168
+ guild = result.get('guild_id')
169
+ if guild:
170
+ print(f" url = https://discord.com/channels/{guild}/{result.get('channel_id')}/{result.get('id')}")
171
+ else:
172
+ print(f" url = https://discord.com/channels/@me/{result.get('channel_id')}/{result.get('id')}")
173
+ except urllib.error.HTTPError as e:
174
+ print(f"ERREUR HTTP {e.code}: {e.reason}")
175
+ try:
176
+ print(f" body: {e.read().decode('utf-8')[:1000]}")
177
+ except: pass
178
+ except Exception as e:
179
+ print(f"ERREUR: {e}")
@@ -0,0 +1,234 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Test standalone des nouvelles fonctionnalités RPC du wrapper.
4
+ *
5
+ * Lance un OverBridgeServer sur :3100 qui pointe vers le MCP live (:3099)
6
+ * et exerce chaque méthode RPC documentée.
7
+ *
8
+ * Usage: node scripts/test-wrapper-rpc.mjs
9
+ */
10
+
11
+ import { OverBridgeService, OverBridgeServer } from '../dist/bridge/index.js';
12
+
13
+ const WRAPPER_PORT = 3100;
14
+ const UPSTREAM_MCP = process.env.MCP_URL || 'http://localhost:3099/mcp';
15
+ const BASE = `http://127.0.0.1:${WRAPPER_PORT}`;
16
+ let pass = 0;
17
+ let fail = 0;
18
+ const results = [];
19
+
20
+ const service = new OverBridgeService(
21
+ { mcpUrl: UPSTREAM_MCP, defaultTimeoutMs: 60_000, agentTimeoutMs: 180_000 },
22
+ {
23
+ debug: (m) => console.log(` [debug] ${m}`),
24
+ info: (m) => console.log(` [info] ${m}`),
25
+ warn: (m) => console.log(` [warn] ${m}`),
26
+ error: (m) => console.log(` [error] ${m}`),
27
+ },
28
+ );
29
+
30
+ const server = new OverBridgeServer(
31
+ service,
32
+ {
33
+ port: WRAPPER_PORT,
34
+ host: '127.0.0.1',
35
+ postgres: {
36
+ host: 'localhost', port: 5432, user: 'postgres', password: '', database: 'overmind_memory',
37
+ },
38
+ enableMessageLog: false, // on désactive MessageLog (pas de Postgres ici)
39
+ enableSessionStore: true, // multi-tenant (in-memory)
40
+ enableDirectives: true,
41
+ enableWebhooks: true,
42
+ healthCheckIntervalMs: 0, // pas de heartbeat
43
+ jsonBodyLimit: '5mb',
44
+ },
45
+ {
46
+ debug: () => {},
47
+ info: (m) => console.log(` [server] ${m}`),
48
+ warn: (m) => console.log(` [server.warn] ${m}`),
49
+ error: (m) => console.log(` [server.error] ${m}`),
50
+ },
51
+ );
52
+
53
+ async function rpc(method, params = {}, id = 1) {
54
+ const res = await fetch(`${BASE}/rpc`, {
55
+ method: 'POST',
56
+ headers: { 'Content-Type': 'application/json', 'Accept': 'application/json' },
57
+ body: JSON.stringify({ jsonrpc: '2.0', id, method, params }),
58
+ });
59
+ return await res.json();
60
+ }
61
+
62
+ function check(name, ok, detail = '') {
63
+ if (ok) { pass++; results.push(` PASS ${name}${detail ? ' - ' + detail : ''}`); }
64
+ else { fail++; results.push(` FAIL ${name}${detail ? ' - ' + detail : ''}`); }
65
+ }
66
+
67
+ async function main() {
68
+ console.log('═══════════════════════════════════════════════════════');
69
+ console.log(' Test Standalone - Wrapper RPC');
70
+ console.log(` Wrapper: ${BASE}/rpc`);
71
+ console.log(` Upstream MCP: ${UPSTREAM_MCP}`);
72
+ console.log('═══════════════════════════════════════════════════════');
73
+
74
+ await server.start();
75
+ console.log('');
76
+
77
+ // ─── 1. health.ping ──────────────────────────────────────────
78
+ {
79
+ const r = await rpc('health.ping');
80
+ check('health.ping', r.result?.pong === true, `pong=${r.result?.pong}`);
81
+ }
82
+
83
+ // ─── 2. agent.list (filtre runner=hermes) ───────────────────
84
+ {
85
+ const r = await rpc('agent.list', { runner: 'hermes' });
86
+ const agents = JSON.parse(r.result?.agents?.[0] || '[]');
87
+ // Le retour est wrappé dans content[0].text (format MCP).
88
+ // On accepte si pas d'erreur.
89
+ check('agent.list (runner=hermes)', !r.error, `agents.length=${r.result?.stats?.total}`);
90
+ }
91
+
92
+ // ─── 3. agent.status (state local) ──────────────────────────
93
+ {
94
+ const r = await rpc('agent.status', { agentName: 'sniperbot_analyst' });
95
+ const hasLocal = r.result?.local !== undefined;
96
+ check('agent.status', hasLocal, hasLocal ? `status=${r.result.local.status}` : JSON.stringify(r).slice(0,200));
97
+ }
98
+
99
+ // ─── 4. agent.run AVEC externalKey (SessionStore) ──────────
100
+ {
101
+ const r = await rpc('agent.run', {
102
+ agentName: 'sniperbot_analyst',
103
+ runner: 'hermes',
104
+ prompt: 'Test SessionStore — reponds juste OK',
105
+ externalKey: 'sniper-test-phone-001',
106
+ });
107
+ const hasSession = r.result?.sessionId !== undefined;
108
+ check('agent.run + externalKey', hasSession && !r.error?.message?.includes('Invalid'),
109
+ `sessionId=${r.result?.sessionId}, content[0]=${r.result?.content?.[0]?.text?.slice(0,80)}`);
110
+ }
111
+
112
+ // ─── 5. session.get ───────────────────────────────────────
113
+ {
114
+ const r = await rpc('session.get', {
115
+ externalKey: 'sniper-test-phone-001',
116
+ agentName: 'sniperbot_analyst',
117
+ });
118
+ const found = r.result?.session !== null && r.result?.session !== undefined;
119
+ check('session.get', found, `sessionId=${r.result?.session?.sessionId?.slice(0,20)}...`);
120
+ }
121
+
122
+ // ─── 6. session.list ──────────────────────────────────────
123
+ {
124
+ const r = await rpc('session.list', {});
125
+ const list = r.result?.sessions || [];
126
+ check('session.list', Array.isArray(list) && list.length > 0, `count=${list.length}`);
127
+ }
128
+
129
+ // ─── 7. session.stats ─────────────────────────────────────
130
+ {
131
+ const r = await rpc('session.stats', {});
132
+ const total = r.result?.total;
133
+ check('session.stats', typeof total === 'number', `total=${total}, byAgent=${JSON.stringify(r.result?.byAgent)}`);
134
+ }
135
+
136
+ // ─── 8. webhook.sms avec autoDispatch (voipms → sniperbot) ─
137
+ {
138
+ const r = await rpc('webhook.sms', {
139
+ provider: 'voipms',
140
+ payload: {
141
+ from: '+14181234567',
142
+ to: '+14187654321',
143
+ message: 'BTC test via webhook',
144
+ id: 'msg-test-001',
145
+ date: new Date().toISOString(),
146
+ },
147
+ externalKey: 'sniper-test-phone-001',
148
+ autoDispatch: {
149
+ agentName: 'sniperbot_analyst',
150
+ runner: 'hermes',
151
+ },
152
+ });
153
+ const dispatched = r.result?.messageId !== undefined || r.result?.content !== undefined;
154
+ check('webhook.sms + autoDispatch', dispatched || !r.error,
155
+ dispatched ? `messageId=${r.result?.messageId?.slice(0,8)}...` : JSON.stringify(r).slice(0,200));
156
+ }
157
+
158
+ // ─── 9. batch RPC (array de 3 requêtes) ───────────────────
159
+ {
160
+ const batch = await fetch(`${BASE}/rpc`, {
161
+ method: 'POST',
162
+ headers: { 'Content-Type': 'application/json' },
163
+ body: JSON.stringify([
164
+ { jsonrpc: '2.0', id: 1, method: 'health.ping', params: {} },
165
+ { jsonrpc: '2.0', id: 2, method: 'health.ping', params: {} },
166
+ { jsonrpc: '2.0', id: 3, method: 'health.ping', params: {} },
167
+ ]),
168
+ });
169
+ const arr = await batch.json();
170
+ const allOk = Array.isArray(arr) && arr.length === 3 && arr.every((r) => r.result?.pong === true);
171
+ check('batch RPC (3 requêtes)', allOk, `count=${arr.length}`);
172
+ }
173
+
174
+ // ─── 10. method unknown → -32601 ──────────────────────────
175
+ {
176
+ const r = await rpc('does.not.exist', {});
177
+ check('method unknown → -32601', r.error?.code === -32601, `code=${r.error?.code}`);
178
+ }
179
+
180
+ // ─── 11. params invalides → -32602 ────────────────────────
181
+ {
182
+ const r = await rpc('agent.run', {}); // manque agentName, runner, prompt
183
+ check('params invalides → -32602', r.error?.code === -32602, `code=${r.error?.code}, issues=${r.error?.data?.length || 0}`);
184
+ }
185
+
186
+ // ─── 12. /health endpoint HTTP ────────────────────────────
187
+ {
188
+ const r = await fetch(`${BASE}/health`).then((r) => r.json());
189
+ const hasFields = r.status && r.mcp && r.features !== undefined;
190
+ check('GET /health', hasFields, `status=${r.status}, features.sessionStore=${r.features?.sessionStore}`);
191
+ }
192
+
193
+ // ─── 13. /webhook/:provider endpoint HTTP ───────────────────
194
+ {
195
+ const r = await fetch(`${BASE}/webhook/voipms`, {
196
+ method: 'POST',
197
+ headers: { 'Content-Type': 'application/json' },
198
+ body: JSON.stringify({ from: '+14181112222', message: 'hi', id: 'm1' }),
199
+ });
200
+ const j = await r.json();
201
+ check('POST /webhook/voipms', j.received === true, `provider=${j.provider}, externalKey=${j.externalKey}`);
202
+ }
203
+
204
+ // ─── 14. path traversal bloqué sur /f/ ────────────────────
205
+ {
206
+ const r = await fetch(`${BASE}/f/..%2Fetc%2Fpasswd`);
207
+ const status = r.status;
208
+ check('path traversal bloqué', status === 403 || status === 400, `status=${status}`);
209
+ }
210
+
211
+ // ─── 15. session.delete ───────────────────────────────────
212
+ {
213
+ const r = await rpc('session.delete', {
214
+ externalKey: 'sniper-test-phone-001',
215
+ agentName: 'sniperbot_analyst',
216
+ });
217
+ check('session.delete', r.result?.deleted === true, `deleted=${r.result?.deleted}`);
218
+ }
219
+
220
+ // ─── Cleanup ─────────────────────────────────────────────
221
+ await server.stop();
222
+ console.log('');
223
+ console.log('═══════════════════════════════════════════════════════');
224
+ for (const line of results) console.log(line);
225
+ console.log('═══════════════════════════════════════════════════════');
226
+ console.log(` ${pass} pass, ${fail} fail`);
227
+ console.log('═══════════════════════════════════════════════════════');
228
+ process.exit(fail > 0 ? 1 : 0);
229
+ }
230
+
231
+ main().catch((err) => {
232
+ console.error('FATAL:', err);
233
+ process.exit(1);
234
+ });