@geminilight/mindos 1.0.29 → 1.1.4

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.
Files changed (102) hide show
  1. package/README_zh.md +3 -3
  2. package/dist/agent-runtime/claude-code-cli.d.ts +1 -1
  3. package/dist/agent-runtime/claude-code-cli.d.ts.map +1 -1
  4. package/dist/agent-runtime/claude-code-cli.js +7 -6
  5. package/dist/agent-runtime/claude-code-cli.js.map +1 -1
  6. package/dist/agent-runtime/claude-code-sdk.d.ts +17 -0
  7. package/dist/agent-runtime/claude-code-sdk.d.ts.map +1 -1
  8. package/dist/agent-runtime/claude-code-sdk.js +145 -7
  9. package/dist/agent-runtime/claude-code-sdk.js.map +1 -1
  10. package/dist/agent-runtime/codex-app-server.d.ts +7 -4
  11. package/dist/agent-runtime/codex-app-server.d.ts.map +1 -1
  12. package/dist/agent-runtime/codex-app-server.js +28 -16
  13. package/dist/agent-runtime/codex-app-server.js.map +1 -1
  14. package/dist/agent-runtime/codex-env.d.ts +41 -0
  15. package/dist/agent-runtime/codex-env.d.ts.map +1 -0
  16. package/dist/agent-runtime/codex-env.js +278 -0
  17. package/dist/agent-runtime/codex-env.js.map +1 -0
  18. package/dist/agent-runtime/index.d.ts +2 -0
  19. package/dist/agent-runtime/index.d.ts.map +1 -1
  20. package/dist/agent-runtime/index.js +2 -0
  21. package/dist/agent-runtime/index.js.map +1 -1
  22. package/dist/agent-runtime/run.d.ts +7 -0
  23. package/dist/agent-runtime/run.d.ts.map +1 -1
  24. package/dist/agent-runtime/run.js +238 -42
  25. package/dist/agent-runtime/run.js.map +1 -1
  26. package/dist/agent-runtime/runtime-env.d.ts +28 -0
  27. package/dist/agent-runtime/runtime-env.d.ts.map +1 -0
  28. package/dist/agent-runtime/runtime-env.js +66 -0
  29. package/dist/agent-runtime/runtime-env.js.map +1 -0
  30. package/dist/agent-runtime/runtime-errors.d.ts +20 -0
  31. package/dist/agent-runtime/runtime-errors.d.ts.map +1 -0
  32. package/dist/agent-runtime/runtime-errors.js +95 -0
  33. package/dist/agent-runtime/runtime-errors.js.map +1 -0
  34. package/dist/client.d.ts +0 -1
  35. package/dist/client.d.ts.map +1 -1
  36. package/dist/client.js.map +1 -1
  37. package/dist/knowledge/audit/index.d.ts +4 -0
  38. package/dist/knowledge/audit/index.d.ts.map +1 -1
  39. package/dist/knowledge/audit/index.js +92 -8
  40. package/dist/knowledge/audit/index.js.map +1 -1
  41. package/dist/protocols/acp/agent-descriptors.js +7 -1
  42. package/dist/protocols/acp/agent-descriptors.js.map +1 -1
  43. package/dist/protocols/acp/index.js +10 -10
  44. package/dist/protocols/acp/subprocess.d.ts +1 -1
  45. package/dist/protocols/acp/subprocess.d.ts.map +1 -1
  46. package/dist/protocols/acp/subprocess.js +3 -3
  47. package/dist/protocols/acp/subprocess.js.map +1 -1
  48. package/dist/server/contract.d.ts.map +1 -1
  49. package/dist/server/contract.js +2 -0
  50. package/dist/server/contract.js.map +1 -1
  51. package/dist/server/handlers/a2a.d.ts +7 -0
  52. package/dist/server/handlers/a2a.d.ts.map +1 -1
  53. package/dist/server/handlers/a2a.js +5 -1
  54. package/dist/server/handlers/a2a.js.map +1 -1
  55. package/dist/server/handlers/agent-capabilities.d.ts +60 -0
  56. package/dist/server/handlers/agent-capabilities.d.ts.map +1 -0
  57. package/dist/server/handlers/agent-capabilities.js +178 -0
  58. package/dist/server/handlers/agent-capabilities.js.map +1 -0
  59. package/dist/server/handlers/agent-runtime-codex.d.ts +3 -0
  60. package/dist/server/handlers/agent-runtime-codex.d.ts.map +1 -1
  61. package/dist/server/handlers/agent-runtime-codex.js +42 -5
  62. package/dist/server/handlers/agent-runtime-codex.js.map +1 -1
  63. package/dist/server/handlers/agent-runtimes.d.ts +10 -0
  64. package/dist/server/handlers/agent-runtimes.d.ts.map +1 -1
  65. package/dist/server/handlers/agent-runtimes.js +142 -102
  66. package/dist/server/handlers/agent-runtimes.js.map +1 -1
  67. package/dist/server/handlers/im-activity.d.ts.map +1 -1
  68. package/dist/server/handlers/im-activity.js +26 -1
  69. package/dist/server/handlers/im-activity.js.map +1 -1
  70. package/dist/server/handlers/mcp-status.d.ts +7 -1
  71. package/dist/server/handlers/mcp-status.d.ts.map +1 -1
  72. package/dist/server/handlers/mcp-status.js +14 -1
  73. package/dist/server/handlers/mcp-status.js.map +1 -1
  74. package/dist/server/handlers/settings.d.ts +3 -0
  75. package/dist/server/handlers/settings.d.ts.map +1 -1
  76. package/dist/server/handlers/settings.js +5 -0
  77. package/dist/server/handlers/settings.js.map +1 -1
  78. package/dist/server/handlers/sync.d.ts +1 -0
  79. package/dist/server/handlers/sync.d.ts.map +1 -1
  80. package/dist/server/handlers/sync.js +230 -3
  81. package/dist/server/handlers/sync.js.map +1 -1
  82. package/dist/server/http.js +5 -1
  83. package/dist/server/http.js.map +1 -1
  84. package/dist/server/index.d.ts +3 -2
  85. package/dist/server/index.d.ts.map +1 -1
  86. package/dist/server/index.js +3 -2
  87. package/dist/server/index.js.map +1 -1
  88. package/dist/server/route-ownership.d.ts.map +1 -1
  89. package/dist/server/route-ownership.js +3 -0
  90. package/dist/server/route-ownership.js.map +1 -1
  91. package/dist/server/runtime.d.ts +1 -0
  92. package/dist/server/runtime.d.ts.map +1 -1
  93. package/dist/server/runtime.js.map +1 -1
  94. package/dist/session/index.d.ts +2 -0
  95. package/dist/session/index.d.ts.map +1 -1
  96. package/dist/session/index.js +47 -12
  97. package/dist/session/index.js.map +1 -1
  98. package/dist/session/redaction.d.ts +3 -0
  99. package/dist/session/redaction.d.ts.map +1 -0
  100. package/dist/session/redaction.js +47 -0
  101. package/dist/session/redaction.js.map +1 -0
  102. package/package.json +10 -10
@@ -1,5 +1,8 @@
1
1
  import { createCodexAppServerClient, createCodexAppServerStdioTransport, } from '../../agent-runtime/codex-app-server.js';
2
+ import { compactRuntimeFailureMessage } from '../../agent-runtime/runtime-errors.js';
3
+ import { resolveCommandPath } from '../../protocols/acp/index.js';
2
4
  import { errorResponse, json } from '../response.js';
5
+ import { defaultCheckNativeRuntimeHealth, } from './agent-runtimes.js';
3
6
  const NO_STORE_HEADERS = { 'Cache-Control': 'no-store' };
4
7
  const MAX_THREAD_LIST_LIMIT = 100;
5
8
  export async function handleCodexThreadsGet(searchParams, services = {}) {
@@ -12,7 +15,7 @@ export async function handleCodexThreadsGet(searchParams, services = {}) {
12
15
  });
13
16
  }
14
17
  catch (error) {
15
- return errorResponse(error);
18
+ return codexThreadErrorResponse(error);
16
19
  }
17
20
  }
18
21
  export async function handleCodexThreadGet(threadId, searchParams, services = {}) {
@@ -28,7 +31,7 @@ export async function handleCodexThreadGet(threadId, searchParams, services = {}
28
31
  });
29
32
  }
30
33
  catch (error) {
31
- return errorResponse(error);
34
+ return codexThreadErrorResponse(error);
32
35
  }
33
36
  }
34
37
  export async function handleCodexThreadForkPost(threadId, body, services = {}) {
@@ -42,7 +45,7 @@ export async function handleCodexThreadForkPost(threadId, body, services = {}) {
42
45
  });
43
46
  }
44
47
  catch (error) {
45
- return errorResponse(error);
48
+ return codexThreadErrorResponse(error);
46
49
  }
47
50
  }
48
51
  export async function handleCodexThreadArchivePost(threadId, services = {}) {
@@ -54,7 +57,7 @@ export async function handleCodexThreadArchivePost(threadId, services = {}) {
54
57
  return json({ ok: true }, { headers: NO_STORE_HEADERS });
55
58
  }
56
59
  catch (error) {
57
- return errorResponse(error);
60
+ return codexThreadErrorResponse(error);
58
61
  }
59
62
  }
60
63
  export async function handleCodexThreadUnarchivePost(threadId, services = {}) {
@@ -67,10 +70,28 @@ export async function handleCodexThreadUnarchivePost(threadId, services = {}) {
67
70
  });
68
71
  }
69
72
  catch (error) {
70
- return errorResponse(error);
73
+ return codexThreadErrorResponse(error);
71
74
  }
72
75
  }
76
+ class CodexThreadRuntimeUnavailableError extends Error {
77
+ constructor(message) {
78
+ super(message);
79
+ this.name = 'CodexThreadRuntimeUnavailableError';
80
+ }
81
+ }
82
+ function codexThreadErrorResponse(error) {
83
+ const status = error instanceof CodexThreadRuntimeUnavailableError ? 409 : 500;
84
+ const message = error instanceof Error ? error.message : String(error);
85
+ const compactError = new Error(compactRuntimeFailureMessage(message, {
86
+ runtime: 'codex',
87
+ fallback: 'Codex app-server error',
88
+ }));
89
+ if (error instanceof Error)
90
+ compactError.name = error.name;
91
+ return errorResponse(compactError, status);
92
+ }
73
93
  async function withCodexClient(services, run) {
94
+ await ensureCodexThreadRuntimeAvailable(services);
74
95
  const client = await (services.createCodexClient?.() ?? createCodexAppServerClient(createCodexAppServerStdioTransport()));
75
96
  try {
76
97
  await client.initialize();
@@ -80,6 +101,22 @@ async function withCodexClient(services, run) {
80
101
  await client.close?.();
81
102
  }
82
103
  }
104
+ async function ensureCodexThreadRuntimeAvailable(services) {
105
+ if (services.createCodexClient)
106
+ return;
107
+ const resolveRuntimeCommand = services.resolveRuntimeCommand ?? resolveCommandPath;
108
+ const binaryPath = await resolveRuntimeCommand('codex');
109
+ if (!binaryPath) {
110
+ throw new CodexThreadRuntimeUnavailableError('Codex executable was not detected. Install Codex or start MindOS from an environment where the codex command is available.');
111
+ }
112
+ const health = await (services.checkCodexRuntimeHealth?.(binaryPath) ?? defaultCheckNativeRuntimeHealth({
113
+ runtime: 'codex',
114
+ agent: { id: 'codex-acp', name: 'Codex', binaryPath },
115
+ }));
116
+ if (health.status !== 'available') {
117
+ throw new CodexThreadRuntimeUnavailableError(`Codex is ${health.status === 'signed-out' ? 'signed out' : 'unavailable'}.${health.reason ? ` ${health.reason}` : ''}`);
118
+ }
119
+ }
83
120
  function parseThreadListParams(searchParams) {
84
121
  const limit = parseLimit(searchParams.get('limit'));
85
122
  if (limit instanceof Error)
@@ -1 +1 @@
1
- {"version":3,"file":"agent-runtime-codex.js","sourceRoot":"","sources":["../../../src/server/handlers/agent-runtime-codex.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent-runtime-codex.js","sourceRoot":"","sources":["../../../src/server/handlers/agent-runtime-codex.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,6 @@
1
1
  import { type AcpAgentOverride } from '../../protocols/acp/index.js';
2
+ import { type CodexShellEnvValueReader } from '../../agent-runtime/codex-env.js';
3
+ import type { AgentRuntimeEnvironmentSettings } from '../../agent-runtime/runtime-env.js';
2
4
  import { type MindosServerResponse } from '../response.js';
3
5
  export type AgentRuntimeKind = 'mindos' | 'acp' | 'codex' | 'claude';
4
6
  export type AgentRuntimeStatus = 'available' | 'missing' | 'signed-out' | 'error';
@@ -83,6 +85,7 @@ export type AgentRuntimePayload = {
83
85
  };
84
86
  export type AgentRuntimesSettings = {
85
87
  acpAgents?: Record<string, AcpAgentOverride>;
88
+ agentRuntimeEnv?: AgentRuntimeEnvironmentSettings;
86
89
  };
87
90
  export type NativeRuntimeHealthResult = {
88
91
  status: Exclude<AgentRuntimeStatus, 'missing'>;
@@ -117,8 +120,15 @@ export declare function checkCodexProviderEnvironment(input?: {
117
120
  env?: NodeJS.ProcessEnv;
118
121
  configText?: string;
119
122
  configPath?: string;
123
+ readShellEnvValue?: CodexShellEnvValueReader;
120
124
  }): NativeRuntimeHealthResult;
121
125
  export declare function defaultCheckNativeRuntimeHealth(input: NativeRuntimeHealthInput): Promise<NativeRuntimeHealthResult>;
126
+ export declare function checkClaudeRuntimeHealth(input: {
127
+ binaryPath: string;
128
+ timeoutMs?: number;
129
+ importSdk?: () => Promise<unknown>;
130
+ checkCliVersion?: (binaryPath: string, timeoutMs: number) => Promise<NativeRuntimeHealthResult>;
131
+ }): Promise<NativeRuntimeHealthResult>;
122
132
  export declare function handleAgentRuntimesGet(searchParams: URLSearchParams, services?: AgentRuntimesServices): Promise<MindosServerResponse<AgentRuntimesPayload | AgentRuntimePayload | {
123
133
  error: string;
124
134
  }>>;
@@ -1 +1 @@
1
- {"version":3,"file":"agent-runtimes.d.ts","sourceRoot":"","sources":["../../../src/server/handlers/agent-runtimes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent-runtimes.d.ts","sourceRoot":"","sources":["../../../src/server/handlers/agent-runtimes.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,7 @@
1
1
  import { detectLocalAcpAgents as defaultDetectLocalAcpAgents, resolveCommandPath, } from '../../protocols/acp/index.js';
2
+ import { readCodexConfigText, resolveCodexProviderEnvironment, } from '../../agent-runtime/codex-env.js';
3
+ import { compactRuntimeDiagnosticHints, summarizeRuntimeFailure, } from '../../agent-runtime/runtime-errors.js';
2
4
  import { spawn } from 'node:child_process';
3
- import { existsSync, readFileSync } from 'node:fs';
4
- import { homedir } from 'node:os';
5
- import { join } from 'node:path';
6
5
  import { errorResponse, json, privateCacheHeaders } from '../response.js';
7
6
  const mindosCapabilities = {
8
7
  ownsModelSelection: true,
@@ -80,15 +79,28 @@ const nativeRuntimeDefinitions = [
80
79
  function isRecord(value) {
81
80
  return !!value && typeof value === 'object' && !Array.isArray(value);
82
81
  }
83
- function classifyRuntimeFailure(message) {
82
+ function classifyRuntimeFailure(message, runtime) {
84
83
  const normalized = message.trim() || 'Runtime failed to start.';
84
+ const summary = summarizeRuntimeFailure(normalized, { runtime });
85
85
  if (/\b(login|log in|signin|sign in|auth|authentication|unauthori[sz]ed|credential|api key|token)\b/i.test(normalized)) {
86
- return { status: 'signed-out', reason: normalized };
86
+ return {
87
+ status: 'signed-out',
88
+ reason: summary.reason,
89
+ ...(summary.diagnosticHints ? { diagnosticHints: summary.diagnosticHints } : {}),
90
+ };
87
91
  }
88
92
  if (/missing environment variable/i.test(normalized)) {
89
- return { status: 'signed-out', reason: normalized };
93
+ return {
94
+ status: 'signed-out',
95
+ reason: summary.reason,
96
+ ...(summary.diagnosticHints ? { diagnosticHints: summary.diagnosticHints } : {}),
97
+ };
90
98
  }
91
- return { status: 'error', reason: normalized };
99
+ return {
100
+ status: 'error',
101
+ reason: summary.reason,
102
+ ...(summary.diagnosticHints ? { diagnosticHints: summary.diagnosticHints } : {}),
103
+ };
92
104
  }
93
105
  function isResolvedCommandSource(value) {
94
106
  return value === 'user-override' || value === 'descriptor' || value === 'registry';
@@ -163,9 +175,13 @@ function isClaudeAgent(agent) {
163
175
  }
164
176
  function nativeDescriptor(input) {
165
177
  const status = input.source ? input.source.status ?? 'available' : input.missing?.status ?? 'missing';
166
- const reason = input.source?.reason ?? input.missing?.reason;
178
+ const rawReason = input.source?.reason ?? input.missing?.reason;
179
+ const reasonSummary = rawReason ? summarizeRuntimeFailure(rawReason, { runtime: input.id }) : null;
180
+ const reason = reasonSummary?.reason;
181
+ const sourceDiagnosticHints = compactRuntimeDiagnosticHints(input.source?.diagnosticHints ?? input.missing?.diagnosticHints, { runtime: input.id }).filter((hint) => hint !== reason);
167
182
  const diagnosticHints = Array.from(new Set([
168
- ...(input.source?.diagnosticHints ?? input.missing?.diagnosticHints ?? []),
183
+ ...sourceDiagnosticHints,
184
+ ...(reasonSummary?.diagnosticHints ?? []),
169
185
  ...nativeRuntimeDiagnosticHints({
170
186
  id: input.id,
171
187
  name: input.name,
@@ -339,7 +355,7 @@ function buildAcpScopedPayload(input) {
339
355
  }));
340
356
  return { runtimes, installed, notInstalled };
341
357
  }
342
- async function checkProcessVersion(command, args, timeoutMs) {
358
+ async function checkProcessVersion(command, args, timeoutMs, runtime) {
343
359
  return new Promise((resolve) => {
344
360
  const child = spawn(command, args, { stdio: ['ignore', 'pipe', 'pipe'] });
345
361
  let stdout = '';
@@ -359,24 +375,24 @@ async function checkProcessVersion(command, args, timeoutMs) {
359
375
  }, timeoutMs);
360
376
  child.stdout.on('data', (chunk) => { stdout += String(chunk); });
361
377
  child.stderr.on('data', (chunk) => { stderr += String(chunk); });
362
- child.once('error', (error) => finish(classifyRuntimeFailure(error.message)));
378
+ child.once('error', (error) => finish(classifyRuntimeFailure(error.message, runtime)));
363
379
  child.once('exit', (code) => {
364
380
  if (code === 0) {
365
381
  finish({ status: 'available' });
366
382
  return;
367
383
  }
368
- finish(classifyRuntimeFailure((stderr || stdout || `${command} exited with code ${code ?? 'unknown'}`).trim()));
384
+ finish(classifyRuntimeFailure((stderr || stdout || `${command} exited with code ${code ?? 'unknown'}`).trim(), runtime));
369
385
  });
370
386
  });
371
387
  }
372
388
  async function checkCodexCliRuntime(command, timeoutMs) {
373
- const appServerHelp = await checkProcessVersion(command, ['app-server', '--help'], timeoutMs);
389
+ const appServerHelp = await checkProcessVersion(command, ['app-server', '--help'], timeoutMs, 'codex');
374
390
  if (appServerHelp.status !== 'available')
375
391
  return appServerHelp;
376
392
  const providerEnvironment = checkCodexProviderEnvironment();
377
393
  if (providerEnvironment.status !== 'available')
378
394
  return providerEnvironment;
379
- const loginStatus = await checkProcessVersion(command, ['login', 'status'], timeoutMs);
395
+ const loginStatus = await checkProcessVersion(command, ['login', 'status'], timeoutMs, 'codex');
380
396
  return mergeCodexProviderAndLoginHealth(providerEnvironment, loginStatus);
381
397
  }
382
398
  export function mergeCodexProviderAndLoginHealth(providerEnvironment, loginStatus) {
@@ -396,55 +412,36 @@ export function mergeCodexProviderAndLoginHealth(providerEnvironment, loginStatu
396
412
  }
397
413
  export function checkCodexProviderEnvironment(input = {}) {
398
414
  const env = input.env ?? process.env;
399
- const configText = input.configText ?? readCodexConfigText(input.configPath, env);
400
- if (!configText)
401
- return { status: 'available' };
402
- const provider = extractTomlStringValue(configText, 'model_provider');
403
- if (!provider)
404
- return { status: 'available' };
405
- const providerSection = extractTomlSection(configText, `model_providers.${provider}`);
406
- const envKey = providerSection ? extractTomlStringValue(providerSection, 'env_key') : undefined;
407
- if (!envKey || env[envKey])
415
+ const resolution = resolveCodexProviderEnvironment({
416
+ env,
417
+ configText: input.configText,
418
+ configPath: input.configPath,
419
+ readShellEnvValue: input.readShellEnvValue,
420
+ });
421
+ if (!resolution.envKey)
408
422
  return { status: 'available' };
423
+ if (resolution.value) {
424
+ return {
425
+ status: 'available',
426
+ ...(resolution.source === 'login-shell'
427
+ ? { diagnosticHints: [`Codex provider environment key ${resolution.envKey} was found through MindOS runtime environment fallback and will be injected only into Codex app-server.`] }
428
+ : {}),
429
+ };
430
+ }
431
+ const configText = input.configText ?? readCodexConfigText(input.configPath, env);
432
+ const provider = configText ? extractTomlStringValue(configText, 'model_provider') : undefined;
409
433
  return {
410
434
  status: 'signed-out',
411
- reason: `Codex model provider "${provider}" requires ${envKey}, but MindOS cannot see that environment variable. Export ${envKey} before starting MindOS, or switch Codex to a provider that does not require it.`,
435
+ reason: provider
436
+ ? `Codex model provider "${provider}" requires ${resolution.envKey}, but MindOS cannot see that environment variable in the app process, OS user environment, or login shell. Export ${resolution.envKey} in your shell profile or OS user environment before starting MindOS, or switch Codex to a provider that does not require it.`
437
+ : `Codex requires ${resolution.envKey}, but MindOS cannot see that environment variable in the app process, OS user environment, or login shell.`,
412
438
  };
413
439
  }
414
- function readCodexConfigText(configPath, env) {
415
- const resolvedPath = configPath ?? join(env.CODEX_HOME || join(homedir(), '.codex'), 'config.toml');
416
- try {
417
- if (!existsSync(resolvedPath))
418
- return undefined;
419
- return readFileSync(resolvedPath, 'utf8');
420
- }
421
- catch {
422
- return undefined;
423
- }
424
- }
425
440
  function extractTomlStringValue(text, key) {
426
441
  const escapedKey = escapeRegExp(key);
427
442
  const match = text.match(new RegExp(`^\\s*${escapedKey}\\s*=\\s*"([^"]*)"\\s*$`, 'm'));
428
443
  return match?.[1]?.trim() || undefined;
429
444
  }
430
- function extractTomlSection(text, sectionName) {
431
- const lines = text.split(/\r?\n/);
432
- const targetHeader = `[${sectionName}]`;
433
- const sectionLines = [];
434
- let inSection = false;
435
- for (const line of lines) {
436
- const trimmed = line.trim();
437
- if (trimmed.startsWith('[') && trimmed.endsWith(']')) {
438
- if (inSection)
439
- break;
440
- inSection = trimmed === targetHeader;
441
- continue;
442
- }
443
- if (inSection)
444
- sectionLines.push(line);
445
- }
446
- return inSection ? sectionLines.join('\n') : undefined;
447
- }
448
445
  function escapeRegExp(value) {
449
446
  return value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
450
447
  }
@@ -453,32 +450,52 @@ export async function defaultCheckNativeRuntimeHealth(input) {
453
450
  if (input.runtime === 'codex') {
454
451
  return checkCodexCliRuntime(input.agent.binaryPath, timeoutMs);
455
452
  }
456
- return checkClaudeSdkRuntime(input.agent.binaryPath, timeoutMs);
453
+ return checkClaudeRuntimeHealth({ binaryPath: input.agent.binaryPath, timeoutMs });
457
454
  }
458
- async function checkClaudeSdkRuntime(binaryPath, timeoutMs) {
459
- try {
460
- await withTimeout(import('@anthropic-ai/claude-agent-sdk'), timeoutMs, `Claude Agent SDK health check timed out after ${timeoutMs}ms.`);
455
+ export async function checkClaudeRuntimeHealth(input) {
456
+ const timeoutMs = input.timeoutMs ?? NATIVE_HEALTH_TIMEOUT_MS;
457
+ const binaryPath = input.binaryPath;
458
+ const importSdk = input.importSdk ?? (() => import('@anthropic-ai/claude-agent-sdk'));
459
+ const checkCliVersion = input.checkCliVersion ?? ((path, ms) => checkProcessVersion(path, ['--version'], ms, 'claude'));
460
+ if (!binaryPath.trim() || binaryPath.startsWith('sdk:')) {
461
461
  return {
462
- status: 'available',
462
+ status: 'error',
463
+ reason: 'Claude Code requires a local claude executable on the MindOS server PATH. MindOS does not bundle the Claude Agent SDK native runtime.',
463
464
  diagnosticHints: [
464
- binaryPath.startsWith('sdk:')
465
- ? 'Claude Agent SDK is bundled with MindOS; a global claude command is optional.'
466
- : `Claude CLI was also detected at ${binaryPath}; MindOS uses Claude Agent SDK first and falls back to CLI if needed.`,
465
+ 'Install Claude Code locally and restart MindOS so the server process can resolve the claude command.',
467
466
  ],
468
467
  };
469
468
  }
470
- catch (error) {
471
- if (!binaryPath.startsWith('sdk:')) {
472
- const fallback = await checkProcessVersion(binaryPath, ['--version'], timeoutMs);
469
+ const cliHealth = await checkCliVersion(binaryPath, timeoutMs);
470
+ if (cliHealth.status !== 'available')
471
+ return cliHealth;
472
+ try {
473
+ const sdk = await withTimeout(importSdk(), timeoutMs, `Claude Agent SDK health check timed out after ${timeoutMs}ms.`);
474
+ if (typeof sdk.query === 'function') {
473
475
  return {
474
- ...fallback,
476
+ status: 'available',
475
477
  diagnosticHints: [
476
- ...(fallback.diagnosticHints ?? []),
477
- `Claude Agent SDK is unavailable; MindOS will use CLI fallback. ${error instanceof Error ? error.message : String(error)}`,
478
+ ...(cliHealth.diagnosticHints ?? []),
479
+ `Claude Agent SDK bridge is available and will use the local Claude Code CLI at ${binaryPath}.`,
478
480
  ],
479
481
  };
480
482
  }
481
- throw error;
483
+ return {
484
+ status: 'available',
485
+ diagnosticHints: [
486
+ ...(cliHealth.diagnosticHints ?? []),
487
+ `Claude Code CLI is available at ${binaryPath}; Claude Agent SDK bridge did not expose query(), so MindOS will use CLI fallback.`,
488
+ ],
489
+ };
490
+ }
491
+ catch (error) {
492
+ return {
493
+ status: 'available',
494
+ diagnosticHints: [
495
+ ...(cliHealth.diagnosticHints ?? []),
496
+ `Claude Code CLI is available at ${binaryPath}; Claude Agent SDK bridge is unavailable, so MindOS will use CLI fallback. ${error instanceof Error ? error.message : String(error)}`,
497
+ ],
498
+ };
482
499
  }
483
500
  }
484
501
  async function applyNativeRuntimeHealth(installed, services) {
@@ -506,7 +523,7 @@ async function applyNativeRuntimeHealth(installed, services) {
506
523
  };
507
524
  }
508
525
  catch (error) {
509
- const result = classifyRuntimeFailure(error instanceof Error ? error.message : String(error));
526
+ const result = classifyRuntimeFailure(error instanceof Error ? error.message : String(error), runtime);
510
527
  return {
511
528
  ...(isRecord(raw) ? raw : detected),
512
529
  status: result.status,
@@ -519,40 +536,11 @@ async function applyNativeRuntimeHealth(installed, services) {
519
536
  async function detectNativeRuntimeDefinition(candidate, services) {
520
537
  const checkNativeRuntimeHealth = services.checkNativeRuntimeHealth ?? defaultCheckNativeRuntimeHealth;
521
538
  const resolveRuntimeCommand = services.resolveRuntimeCommand ?? resolveCommandPath;
539
+ if (candidate.runtime === 'claude') {
540
+ return detectClaudeNativeRuntimeDefinition(candidate, services);
541
+ }
522
542
  const binaryPath = await resolveRuntimeCommand(candidate.command);
523
543
  if (!binaryPath) {
524
- if (candidate.runtime === 'claude') {
525
- const sdkBinaryPath = 'sdk:@anthropic-ai/claude-agent-sdk';
526
- try {
527
- const health = await checkNativeRuntimeHealth({
528
- runtime: candidate.runtime,
529
- agent: { id: candidate.id, name: candidate.name, binaryPath: sdkBinaryPath },
530
- timeoutMs: NATIVE_HEALTH_TIMEOUT_MS,
531
- });
532
- return {
533
- id: candidate.id,
534
- name: candidate.name,
535
- binaryPath: sdkBinaryPath,
536
- status: health.status,
537
- reason: health.reason,
538
- diagnosticHints: [
539
- ...(health.diagnosticHints ?? []),
540
- 'Global claude command was not detected; CLI fallback will be unavailable until it is installed or on MindOS server PATH.',
541
- ],
542
- };
543
- }
544
- catch (error) {
545
- const result = classifyRuntimeFailure(error instanceof Error ? error.message : String(error));
546
- return {
547
- id: candidate.id,
548
- name: candidate.name,
549
- installCmd: candidate.installCmd,
550
- packageName: candidate.installCmd.match(/npm install -g (.+)/)?.[1],
551
- status: 'error',
552
- reason: `Claude Agent SDK is unavailable and the global claude command was not detected. ${result.reason ?? ''}`.trim(),
553
- };
554
- }
555
- }
556
544
  return {
557
545
  id: candidate.id,
558
546
  name: candidate.name,
@@ -579,7 +567,59 @@ async function detectNativeRuntimeDefinition(candidate, services) {
579
567
  };
580
568
  }
581
569
  catch (error) {
582
- const result = classifyRuntimeFailure(error instanceof Error ? error.message : String(error));
570
+ const result = classifyRuntimeFailure(error instanceof Error ? error.message : String(error), candidate.runtime);
571
+ return {
572
+ id: candidate.id,
573
+ name: candidate.name,
574
+ binaryPath,
575
+ resolvedCommand: { cmd: candidate.command, args: [], source: 'descriptor' },
576
+ status: result.status,
577
+ ...(result.reason ? { reason: result.reason } : {}),
578
+ };
579
+ }
580
+ }
581
+ async function detectClaudeNativeRuntimeDefinition(candidate, services) {
582
+ const checkNativeRuntimeHealth = services.checkNativeRuntimeHealth ?? defaultCheckNativeRuntimeHealth;
583
+ const resolveRuntimeCommand = services.resolveRuntimeCommand ?? resolveCommandPath;
584
+ const commandResolution = { failureReason: undefined };
585
+ const binaryPath = await withTimeout(resolveRuntimeCommand(candidate.command), RUNTIME_DETECTION_TIMEOUT_MS, `Claude Code executable detection timed out after ${RUNTIME_DETECTION_TIMEOUT_MS}ms.`).catch((error) => {
586
+ commandResolution.failureReason = error instanceof Error ? error.message : String(error);
587
+ return null;
588
+ });
589
+ if (!binaryPath) {
590
+ const timedOut = commandResolution.failureReason?.includes('timed out after');
591
+ return {
592
+ id: candidate.id,
593
+ name: candidate.name,
594
+ installCmd: candidate.installCmd,
595
+ packageName: candidate.installCmd.match(/npm install -g (.+)/)?.[1],
596
+ status: 'missing',
597
+ reason: timedOut
598
+ ? `${commandResolution.failureReason} MindOS does not bundle the Claude Agent SDK native runtime.`
599
+ : 'Claude Code executable was not detected. MindOS does not bundle the Claude Agent SDK native runtime.',
600
+ diagnosticHints: [
601
+ 'Install Claude Code locally or add claude to the PATH used to start MindOS.',
602
+ ],
603
+ };
604
+ }
605
+ try {
606
+ const health = await checkNativeRuntimeHealth({
607
+ runtime: candidate.runtime,
608
+ agent: { id: candidate.id, name: candidate.name, binaryPath },
609
+ timeoutMs: NATIVE_HEALTH_TIMEOUT_MS,
610
+ });
611
+ return {
612
+ id: candidate.id,
613
+ name: candidate.name,
614
+ binaryPath,
615
+ resolvedCommand: { cmd: candidate.command, args: [], source: 'descriptor' },
616
+ status: health.status,
617
+ ...(health.reason ? { reason: health.reason } : {}),
618
+ ...(health.diagnosticHints ? { diagnosticHints: health.diagnosticHints } : {}),
619
+ };
620
+ }
621
+ catch (error) {
622
+ const result = classifyRuntimeFailure(error instanceof Error ? error.message : String(error), candidate.runtime);
583
623
  return {
584
624
  id: candidate.id,
585
625
  name: candidate.name,