@alan-ai-hq/agent-manager-darwin-arm64 0.1.158 → 0.1.159

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/alan-agent.cjs CHANGED
@@ -25967,6 +25967,12 @@ var init_event = __esm({
25967
25967
  });
25968
25968
 
25969
25969
  // ../shared/dist/agent/acp/reduce.js
25970
+ function upsertMcpServers(current, reported) {
25971
+ const byName = new Map((current ?? []).map((server) => [server.name, server]));
25972
+ for (const server of reported)
25973
+ byName.set(server.name, server);
25974
+ return [...byName.values()];
25975
+ }
25970
25976
  function emptyTranscript() {
25971
25977
  return { entries: [], state: "idle", notices: [], unknown: [] };
25972
25978
  }
@@ -26123,6 +26129,12 @@ ${update.description}` : update.title,
26123
26129
  state.thinkingTokens = update.estimated;
26124
26130
  return;
26125
26131
  }
26132
+ case "_alan/mcp_servers": {
26133
+ if (!isUpdate(update, "_alan/mcp_servers"))
26134
+ return;
26135
+ state.mcpServers = upsertMcpServers(state.mcpServers, update.servers);
26136
+ return;
26137
+ }
26126
26138
  // Owned by the tool call that references it, but kept so a terminal-aware
26127
26139
  // renderer can still consume the raw update.
26128
26140
  case "terminal_update":
@@ -26933,6 +26945,8 @@ function mergeTranscriptMessages(messages, cache2) {
26933
26945
  merged.usage = state.usage;
26934
26946
  if (state.title)
26935
26947
  merged.title = state.title;
26948
+ if (state.mcpServers)
26949
+ merged.mcpServers = upsertMcpServers(merged.mcpServers, state.mcpServers);
26936
26950
  updateOffset += state.updateCount ?? 0;
26937
26951
  }
26938
26952
  merged.updateCount = updateOffset;
@@ -29778,16 +29792,16 @@ function externalServerConfig(server) {
29778
29792
  };
29779
29793
  }
29780
29794
  function claudeMcpConfig(mcp) {
29781
- const mcpServers = /* @__PURE__ */ Object.create(null);
29795
+ const mcpServers2 = /* @__PURE__ */ Object.create(null);
29782
29796
  for (const [name, server] of Object.entries(mcp.externalServers ?? {})) {
29783
- mcpServers[name] = externalServerConfig(server);
29797
+ mcpServers2[name] = externalServerConfig(server);
29784
29798
  }
29785
- mcpServers.alan = {
29799
+ mcpServers2.alan = {
29786
29800
  type: "http",
29787
29801
  url: mcp.alanMcpUrl,
29788
29802
  headers: managedMcpHeaders(mcp.identity)
29789
29803
  };
29790
- return { mcpServers };
29804
+ return { mcpServers: mcpServers2 };
29791
29805
  }
29792
29806
  function carriesCredential(mcp) {
29793
29807
  return mcp.identity.scope === "conversation" && mcp.identity.authorization !== void 0;
@@ -30012,11 +30026,27 @@ function parseStreamEvent(event, state) {
30012
30026
  function stringList(value2) {
30013
30027
  return asArray(value2).map((item) => asString(item)).filter(Boolean);
30014
30028
  }
30029
+ function mcpServers(value2) {
30030
+ const servers = [];
30031
+ for (const item of asArray(value2)) {
30032
+ const record2 = asRecord(item);
30033
+ const name = asString(record2?.name);
30034
+ if (!record2 || !name) continue;
30035
+ const source = asString(record2.source);
30036
+ servers.push({
30037
+ name,
30038
+ status: CLAUDE_MCP_STATUS[asString(record2.status)] ?? "unknown",
30039
+ ...source ? { source } : {}
30040
+ });
30041
+ }
30042
+ return servers;
30043
+ }
30015
30044
  function initUpdates(event, state) {
30016
30045
  const model = asString(event.model);
30017
30046
  if (model) state.model = model;
30018
30047
  const tools = stringList(event.tools);
30019
30048
  const slashCommands = stringList(event.slash_commands);
30049
+ const servers = mcpServers(event.mcp_servers);
30020
30050
  return [
30021
30051
  {
30022
30052
  sessionUpdate: "_alan/log",
@@ -30030,7 +30060,8 @@ function initUpdates(event, state) {
30030
30060
  ...tools.length > 0 ? { [TOOLS_META]: tools } : {},
30031
30061
  ...slashCommands.length > 0 ? { [SLASH_COMMANDS_META]: slashCommands } : {}
30032
30062
  }
30033
- }
30063
+ },
30064
+ ...servers.length > 0 ? [{ sessionUpdate: "_alan/mcp_servers", servers }] : []
30034
30065
  ];
30035
30066
  }
30036
30067
  function thinkingTokens(event) {
@@ -30984,7 +31015,7 @@ function claudeTurnClosingUpdates(records, state) {
30984
31015
  function readClaudeTranscriptTurns(chunk, baseOffset, skipped) {
30985
31016
  return readTranscriptTurns(claudeTranscriptFile, chunk, baseOffset, skipped);
30986
31017
  }
30987
- var import_crypto7, import_fs6, import_path6, import_crypto8, import_promises31, EDIT_TOOLS, ThoughtBlocks, UNDERSTOOD_SYSTEM_SUBTYPES, RATE_LIMIT_WARN_AT, CLAUDE_GRAMMAR_NAME, SUBAGENT_TOOL_NAMES, controlResponseSchema, STOPPED_STATUSES, TaskRecords, TERMINAL_BACKGROUND_STATUSES, NON_TERMINAL_BACKGROUND_STATUSES, ASYNC_LAUNCH_ACK, BackgroundTasks, FAILED_STATUSES, STOPPED_BY_USER_TEXT, ClaudeTurn, STDERR_TAIL_LINES2, MAX_EARLY_LINES, UNSUPPORTED_STOP, OUTPUT_CLOSED_REASON, ClaudeSession, DEFAULTS, READ_ONLY_DISALLOWED_TOOLS, DEFAULT_MCP_TIMEOUT_MS, SYNTHETIC_MODEL, INTERRUPT_MARKER, NON_PROMPT_PREFIXES, PRELUDE_TYPES, claudeTranscriptFile;
31018
+ var import_crypto7, import_fs6, import_path6, import_crypto8, import_promises31, EDIT_TOOLS, ThoughtBlocks, UNDERSTOOD_SYSTEM_SUBTYPES, CLAUDE_MCP_STATUS, RATE_LIMIT_WARN_AT, CLAUDE_GRAMMAR_NAME, SUBAGENT_TOOL_NAMES, controlResponseSchema, STOPPED_STATUSES, TaskRecords, TERMINAL_BACKGROUND_STATUSES, NON_TERMINAL_BACKGROUND_STATUSES, ASYNC_LAUNCH_ACK, BackgroundTasks, FAILED_STATUSES, STOPPED_BY_USER_TEXT, ClaudeTurn, STDERR_TAIL_LINES2, MAX_EARLY_LINES, UNSUPPORTED_STOP, OUTPUT_CLOSED_REASON, ClaudeSession, DEFAULTS, READ_ONLY_DISALLOWED_TOOLS, DEFAULT_MCP_TIMEOUT_MS, SYNTHETIC_MODEL, INTERRUPT_MARKER, NON_PROMPT_PREFIXES, PRELUDE_TYPES, claudeTranscriptFile;
30988
31019
  var init_claude = __esm({
30989
31020
  "../agent-core/dist/providers/claude.js"() {
30990
31021
  "use strict";
@@ -31053,6 +31084,13 @@ var init_claude = __esm({
31053
31084
  "status",
31054
31085
  "commands_changed"
31055
31086
  ]);
31087
+ CLAUDE_MCP_STATUS = {
31088
+ connected: "connected",
31089
+ pending: "starting",
31090
+ "needs-auth": "needs_auth",
31091
+ failed: "failed",
31092
+ disabled: "disabled"
31093
+ };
31056
31094
  RATE_LIMIT_WARN_AT = 0.8;
31057
31095
  CLAUDE_GRAMMAR_NAME = "claude_cli";
31058
31096
  SUBAGENT_TOOL_NAMES = /* @__PURE__ */ new Set(["agent", "task"]);
@@ -33840,7 +33878,7 @@ function codexTurnInput(run2, context) {
33840
33878
  ...images.length ? { imagePaths: images.map((image) => image.path) } : {}
33841
33879
  };
33842
33880
  }
33843
- var import_fs7, import_path7, import_crypto9, import_crypto10, import_crypto11, import_crypto12, TokenRefresher, MCP_STARTUP_TIMEOUT_SEC, FIELD_TYPES, YES_NO, ACCEPT_DECLINE, MAX_INLINE_GENERATED_IMAGE_BYTES, PNG_SIGNATURE2, JPEG_NON_FRAME_MARKERS, IMAGE_GEN_CALL, PROMPT_LITERAL, RELOCATE_EVERY_MS, CodexImageGenerationFold, CodexRolloutImages, CodexRateLimits, USER_INPUT_METHOD, PERMISSIONS_METHOD, ELICITATION_METHOD, COMMAND_OR_FILE, LEGACY, DECISIONS, COORDINATION_TOOLS, SETTLED_AGENT, STATUS, CHANGE_OPERATIONS, SILENT_ON_START, IGNORED_ITEMS, PLAN_STATUS, WORKER_LIFECYCLE, INFO_KINDS, SILENT, CodexTurn, STDERR_TAIL_LINES3, MAX_BETWEEN_UPDATES, UNSUPPORTED_REQUEST, DECLINED_ELICITATION, IMAGE_CATCH_UP_MS, IMAGE_POLL_MS, CodexSession, CODEX_MIN_VERSION, CODEX_REQUIREMENT, CODEX_TESTED_LINE, DEFAULTS2, CLIENT_INFO, STATUS2, EXITED_WITHOUT_RESPONSE, CodexExecTurn, DEFAULTS22, CodexExecSession, INJECTED_USER_PREFIXES, SHELL_TOOL_NAMES, ANNOUNCING_ITEM_TYPES, OUTPUT_MARKER, OPEN_PAGE_ACTIONS, FIND_IN_PAGE_ACTIONS, FILE_OPERATIONS, UNDERSTOOD_ITEM_TYPES, PRELUDE_TYPES2, PRELUDE_EVENTS, codexRolloutFile;
33881
+ var import_fs7, import_path7, import_crypto9, import_crypto10, import_crypto11, import_crypto12, TokenRefresher, MCP_STARTUP_TIMEOUT_SEC, FIELD_TYPES, YES_NO, ACCEPT_DECLINE, MAX_INLINE_GENERATED_IMAGE_BYTES, PNG_SIGNATURE2, JPEG_NON_FRAME_MARKERS, IMAGE_GEN_CALL, PROMPT_LITERAL, RELOCATE_EVERY_MS, CodexImageGenerationFold, CodexRolloutImages, CodexRateLimits, USER_INPUT_METHOD, PERMISSIONS_METHOD, ELICITATION_METHOD, COMMAND_OR_FILE, LEGACY, DECISIONS, COORDINATION_TOOLS, SETTLED_AGENT, STATUS, CHANGE_OPERATIONS, SILENT_ON_START, IGNORED_ITEMS, PLAN_STATUS, CODEX_MCP_STATUS, WORKER_LIFECYCLE, INFO_KINDS, SILENT, CodexTurn, STDERR_TAIL_LINES3, MAX_BETWEEN_UPDATES, UNSUPPORTED_REQUEST, DECLINED_ELICITATION, IMAGE_CATCH_UP_MS, IMAGE_POLL_MS, CodexSession, CODEX_MIN_VERSION, CODEX_REQUIREMENT, CODEX_TESTED_LINE, DEFAULTS2, CLIENT_INFO, STATUS2, EXITED_WITHOUT_RESPONSE, CodexExecTurn, DEFAULTS22, CodexExecSession, INJECTED_USER_PREFIXES, SHELL_TOOL_NAMES, ANNOUNCING_ITEM_TYPES, OUTPUT_MARKER, OPEN_PAGE_ACTIONS, FIND_IN_PAGE_ACTIONS, FILE_OPERATIONS, UNDERSTOOD_ITEM_TYPES, PRELUDE_TYPES2, PRELUDE_EVENTS, codexRolloutFile;
33844
33882
  var init_codex = __esm({
33845
33883
  "../agent-core/dist/providers/codex.js"() {
33846
33884
  "use strict";
@@ -34133,6 +34171,12 @@ var init_codex = __esm({
34133
34171
  ["inProgress", "in_progress"],
34134
34172
  ["completed", "completed"]
34135
34173
  ]);
34174
+ CODEX_MCP_STATUS = {
34175
+ starting: "starting",
34176
+ ready: "connected",
34177
+ failed: "failed",
34178
+ cancelled: "failed"
34179
+ };
34136
34180
  WORKER_LIFECYCLE = /* @__PURE__ */ new Set([
34137
34181
  "turn/started",
34138
34182
  "turn/completed",
@@ -34284,20 +34328,29 @@ var init_codex = __esm({
34284
34328
  )
34285
34329
  ];
34286
34330
  }
34331
+ #mcpStatus(params) {
34332
+ const name = asString(params.name);
34333
+ if (!name) return [];
34334
+ const reported = asString(params.status);
34335
+ const reason = asString(params.error) || asString(params.failureReason);
34336
+ const status = CODEX_MCP_STATUS[reported] ?? "unknown";
34337
+ const listed = {
34338
+ sessionUpdate: "_alan/mcp_servers",
34339
+ servers: [{ name, status, ...status === "failed" && reason ? { error: reason } : {} }]
34340
+ };
34341
+ if (reported !== "failed") return [listed];
34342
+ return [listed, ...this.#mcpFailure(name, reason)];
34343
+ }
34287
34344
  /**
34288
34345
  * Only Alan's own MCP server failing matters in the chat: its tools are gone for the session.
34289
34346
  * The user's other servers (and their logins) belong to their Codex setup, not to Alan.
34290
34347
  */
34291
- #mcpStatus(params) {
34292
- if (asString(params.status) !== "failed") return [];
34293
- const name = asString(params.name);
34348
+ #mcpFailure(name, reason) {
34294
34349
  if (canonicalizeManagedMcpServerName(name) !== MANAGED_MCP_SERVER_NAME) {
34295
- const reason2 = asString(params.error) || asString(params.failureReason);
34296
34350
  return [
34297
- logUpdate("codex/mcp", `MCP server ${name} failed to start${reason2 ? `: ${reason2}` : "."}`)
34351
+ logUpdate("codex/mcp", `MCP server ${name} failed to start${reason ? `: ${reason}` : "."}`)
34298
34352
  ];
34299
34353
  }
34300
- const reason = asString(params.error) || asString(params.failureReason);
34301
34354
  const key = `mcp_server_failed\0${reason}`;
34302
34355
  if (this.#memory.shownWarnings.has(key)) return [];
34303
34356
  this.#memory.shownWarnings.add(key);
@@ -47252,7 +47305,8 @@ var init_persistent = __esm({
47252
47305
  "user_message",
47253
47306
  "user_message_chunk",
47254
47307
  "_alan/log",
47255
- "_alan/thinking_tokens"
47308
+ "_alan/thinking_tokens",
47309
+ "_alan/mcp_servers"
47256
47310
  ]);
47257
47311
  FIRST_OUTPUT_TIMEOUT_MS = 3e5;
47258
47312
  }
@@ -57224,7 +57278,7 @@ var require_websocket_server = __commonJS({
57224
57278
  // package.json
57225
57279
  var package_default = {
57226
57280
  name: "@alan-ai-hq/agent-manager",
57227
- version: "0.1.158",
57281
+ version: "0.1.159",
57228
57282
  private: true,
57229
57283
  type: "module",
57230
57284
  description: "Alan machine runtime (alan-agent): identity, link, reconciler, session holders, run log, uploader, local API",
package/alan-holder.cjs CHANGED
@@ -27868,16 +27868,16 @@ function externalServerConfig(server) {
27868
27868
  };
27869
27869
  }
27870
27870
  function claudeMcpConfig(mcp) {
27871
- const mcpServers = /* @__PURE__ */ Object.create(null);
27871
+ const mcpServers2 = /* @__PURE__ */ Object.create(null);
27872
27872
  for (const [name, server] of Object.entries(mcp.externalServers ?? {})) {
27873
- mcpServers[name] = externalServerConfig(server);
27873
+ mcpServers2[name] = externalServerConfig(server);
27874
27874
  }
27875
- mcpServers.alan = {
27875
+ mcpServers2.alan = {
27876
27876
  type: "http",
27877
27877
  url: mcp.alanMcpUrl,
27878
27878
  headers: managedMcpHeaders(mcp.identity)
27879
27879
  };
27880
- return { mcpServers };
27880
+ return { mcpServers: mcpServers2 };
27881
27881
  }
27882
27882
  function carriesCredential(mcp) {
27883
27883
  return mcp.identity.scope === "conversation" && mcp.identity.authorization !== void 0;
@@ -28102,11 +28102,27 @@ function parseStreamEvent(event, state) {
28102
28102
  function stringList(value) {
28103
28103
  return asArray(value).map((item) => asString(item)).filter(Boolean);
28104
28104
  }
28105
+ function mcpServers(value) {
28106
+ const servers = [];
28107
+ for (const item of asArray(value)) {
28108
+ const record2 = asRecord(item);
28109
+ const name = asString(record2?.name);
28110
+ if (!record2 || !name) continue;
28111
+ const source = asString(record2.source);
28112
+ servers.push({
28113
+ name,
28114
+ status: CLAUDE_MCP_STATUS[asString(record2.status)] ?? "unknown",
28115
+ ...source ? { source } : {}
28116
+ });
28117
+ }
28118
+ return servers;
28119
+ }
28105
28120
  function initUpdates(event, state) {
28106
28121
  const model = asString(event.model);
28107
28122
  if (model) state.model = model;
28108
28123
  const tools = stringList(event.tools);
28109
28124
  const slashCommands = stringList(event.slash_commands);
28125
+ const servers = mcpServers(event.mcp_servers);
28110
28126
  return [
28111
28127
  {
28112
28128
  sessionUpdate: "_alan/log",
@@ -28120,7 +28136,8 @@ function initUpdates(event, state) {
28120
28136
  ...tools.length > 0 ? { [TOOLS_META]: tools } : {},
28121
28137
  ...slashCommands.length > 0 ? { [SLASH_COMMANDS_META]: slashCommands } : {}
28122
28138
  }
28123
- }
28139
+ },
28140
+ ...servers.length > 0 ? [{ sessionUpdate: "_alan/mcp_servers", servers }] : []
28124
28141
  ];
28125
28142
  }
28126
28143
  function thinkingTokens(event) {
@@ -28880,7 +28897,7 @@ async function claudeTurnInput(run, context) {
28880
28897
  );
28881
28898
  return { turnId: run.runId, text: text2, ...encoded.length ? { images: encoded } : {} };
28882
28899
  }
28883
- var import_crypto7, import_fs6, import_path6, import_crypto8, import_promises15, EDIT_TOOLS, ThoughtBlocks, UNDERSTOOD_SYSTEM_SUBTYPES, RATE_LIMIT_WARN_AT, CLAUDE_GRAMMAR_NAME, SUBAGENT_TOOL_NAMES, controlResponseSchema, STOPPED_STATUSES, TaskRecords, TERMINAL_BACKGROUND_STATUSES, NON_TERMINAL_BACKGROUND_STATUSES, ASYNC_LAUNCH_ACK, BackgroundTasks, FAILED_STATUSES, STOPPED_BY_USER_TEXT, ClaudeTurn, STDERR_TAIL_LINES2, MAX_EARLY_LINES, UNSUPPORTED_STOP, OUTPUT_CLOSED_REASON, ClaudeSession, DEFAULTS, READ_ONLY_DISALLOWED_TOOLS, DEFAULT_MCP_TIMEOUT_MS;
28900
+ var import_crypto7, import_fs6, import_path6, import_crypto8, import_promises15, EDIT_TOOLS, ThoughtBlocks, UNDERSTOOD_SYSTEM_SUBTYPES, CLAUDE_MCP_STATUS, RATE_LIMIT_WARN_AT, CLAUDE_GRAMMAR_NAME, SUBAGENT_TOOL_NAMES, controlResponseSchema, STOPPED_STATUSES, TaskRecords, TERMINAL_BACKGROUND_STATUSES, NON_TERMINAL_BACKGROUND_STATUSES, ASYNC_LAUNCH_ACK, BackgroundTasks, FAILED_STATUSES, STOPPED_BY_USER_TEXT, ClaudeTurn, STDERR_TAIL_LINES2, MAX_EARLY_LINES, UNSUPPORTED_STOP, OUTPUT_CLOSED_REASON, ClaudeSession, DEFAULTS, READ_ONLY_DISALLOWED_TOOLS, DEFAULT_MCP_TIMEOUT_MS;
28884
28901
  var init_claude = __esm({
28885
28902
  "../agent-core/dist/providers/claude.js"() {
28886
28903
  "use strict";
@@ -28949,6 +28966,13 @@ var init_claude = __esm({
28949
28966
  "status",
28950
28967
  "commands_changed"
28951
28968
  ]);
28969
+ CLAUDE_MCP_STATUS = {
28970
+ connected: "connected",
28971
+ pending: "starting",
28972
+ "needs-auth": "needs_auth",
28973
+ failed: "failed",
28974
+ disabled: "disabled"
28975
+ };
28952
28976
  RATE_LIMIT_WARN_AT = 0.8;
28953
28977
  CLAUDE_GRAMMAR_NAME = "claude_cli";
28954
28978
  SUBAGENT_TOOL_NAMES = /* @__PURE__ */ new Set(["agent", "task"]);
@@ -31092,7 +31116,7 @@ function codexTurnInput(run, context) {
31092
31116
  ...images.length ? { imagePaths: images.map((image) => image.path) } : {}
31093
31117
  };
31094
31118
  }
31095
- var import_fs7, import_path7, import_crypto9, import_crypto10, import_crypto11, import_crypto12, TokenRefresher, MCP_STARTUP_TIMEOUT_SEC, FIELD_TYPES, YES_NO, ACCEPT_DECLINE, MAX_INLINE_GENERATED_IMAGE_BYTES, PNG_SIGNATURE2, JPEG_NON_FRAME_MARKERS, IMAGE_GEN_CALL, PROMPT_LITERAL, RELOCATE_EVERY_MS, CodexImageGenerationFold, CodexRolloutImages, CodexRateLimits, USER_INPUT_METHOD, PERMISSIONS_METHOD, ELICITATION_METHOD, COMMAND_OR_FILE, LEGACY, DECISIONS, COORDINATION_TOOLS, SETTLED_AGENT, STATUS, CHANGE_OPERATIONS, SILENT_ON_START, IGNORED_ITEMS, PLAN_STATUS, WORKER_LIFECYCLE, INFO_KINDS, SILENT, CodexTurn, STDERR_TAIL_LINES3, MAX_BETWEEN_UPDATES, UNSUPPORTED_REQUEST, DECLINED_ELICITATION, IMAGE_CATCH_UP_MS, IMAGE_POLL_MS, CodexSession, CODEX_MIN_VERSION, CODEX_REQUIREMENT, CODEX_TESTED_LINE, DEFAULTS2, CLIENT_INFO, STATUS2, EXITED_WITHOUT_RESPONSE, CodexExecTurn, DEFAULTS22, CodexExecSession;
31119
+ var import_fs7, import_path7, import_crypto9, import_crypto10, import_crypto11, import_crypto12, TokenRefresher, MCP_STARTUP_TIMEOUT_SEC, FIELD_TYPES, YES_NO, ACCEPT_DECLINE, MAX_INLINE_GENERATED_IMAGE_BYTES, PNG_SIGNATURE2, JPEG_NON_FRAME_MARKERS, IMAGE_GEN_CALL, PROMPT_LITERAL, RELOCATE_EVERY_MS, CodexImageGenerationFold, CodexRolloutImages, CodexRateLimits, USER_INPUT_METHOD, PERMISSIONS_METHOD, ELICITATION_METHOD, COMMAND_OR_FILE, LEGACY, DECISIONS, COORDINATION_TOOLS, SETTLED_AGENT, STATUS, CHANGE_OPERATIONS, SILENT_ON_START, IGNORED_ITEMS, PLAN_STATUS, CODEX_MCP_STATUS, WORKER_LIFECYCLE, INFO_KINDS, SILENT, CodexTurn, STDERR_TAIL_LINES3, MAX_BETWEEN_UPDATES, UNSUPPORTED_REQUEST, DECLINED_ELICITATION, IMAGE_CATCH_UP_MS, IMAGE_POLL_MS, CodexSession, CODEX_MIN_VERSION, CODEX_REQUIREMENT, CODEX_TESTED_LINE, DEFAULTS2, CLIENT_INFO, STATUS2, EXITED_WITHOUT_RESPONSE, CodexExecTurn, DEFAULTS22, CodexExecSession;
31096
31120
  var init_codex = __esm({
31097
31121
  "../agent-core/dist/providers/codex.js"() {
31098
31122
  "use strict";
@@ -31385,6 +31409,12 @@ var init_codex = __esm({
31385
31409
  ["inProgress", "in_progress"],
31386
31410
  ["completed", "completed"]
31387
31411
  ]);
31412
+ CODEX_MCP_STATUS = {
31413
+ starting: "starting",
31414
+ ready: "connected",
31415
+ failed: "failed",
31416
+ cancelled: "failed"
31417
+ };
31388
31418
  WORKER_LIFECYCLE = /* @__PURE__ */ new Set([
31389
31419
  "turn/started",
31390
31420
  "turn/completed",
@@ -31536,20 +31566,29 @@ var init_codex = __esm({
31536
31566
  )
31537
31567
  ];
31538
31568
  }
31569
+ #mcpStatus(params) {
31570
+ const name = asString(params.name);
31571
+ if (!name) return [];
31572
+ const reported = asString(params.status);
31573
+ const reason = asString(params.error) || asString(params.failureReason);
31574
+ const status = CODEX_MCP_STATUS[reported] ?? "unknown";
31575
+ const listed = {
31576
+ sessionUpdate: "_alan/mcp_servers",
31577
+ servers: [{ name, status, ...status === "failed" && reason ? { error: reason } : {} }]
31578
+ };
31579
+ if (reported !== "failed") return [listed];
31580
+ return [listed, ...this.#mcpFailure(name, reason)];
31581
+ }
31539
31582
  /**
31540
31583
  * Only Alan's own MCP server failing matters in the chat: its tools are gone for the session.
31541
31584
  * The user's other servers (and their logins) belong to their Codex setup, not to Alan.
31542
31585
  */
31543
- #mcpStatus(params) {
31544
- if (asString(params.status) !== "failed") return [];
31545
- const name = asString(params.name);
31586
+ #mcpFailure(name, reason) {
31546
31587
  if (canonicalizeManagedMcpServerName(name) !== MANAGED_MCP_SERVER_NAME) {
31547
- const reason2 = asString(params.error) || asString(params.failureReason);
31548
31588
  return [
31549
- logUpdate("codex/mcp", `MCP server ${name} failed to start${reason2 ? `: ${reason2}` : "."}`)
31589
+ logUpdate("codex/mcp", `MCP server ${name} failed to start${reason ? `: ${reason}` : "."}`)
31550
31590
  ];
31551
31591
  }
31552
- const reason = asString(params.error) || asString(params.failureReason);
31553
31592
  const key = `mcp_server_failed\0${reason}`;
31554
31593
  if (this.#memory.shownWarnings.has(key)) return [];
31555
31594
  this.#memory.shownWarnings.add(key);
@@ -42003,7 +42042,8 @@ var init_persistent = __esm({
42003
42042
  "user_message",
42004
42043
  "user_message_chunk",
42005
42044
  "_alan/log",
42006
- "_alan/thinking_tokens"
42045
+ "_alan/thinking_tokens",
42046
+ "_alan/mcp_servers"
42007
42047
  ]);
42008
42048
  FIRST_OUTPUT_TIMEOUT_MS = 3e5;
42009
42049
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alan-ai-hq/agent-manager-darwin-arm64",
3
- "version": "0.1.158",
3
+ "version": "0.1.159",
4
4
  "description": "Alan machine runtime (alan-agent) for one platform: the official Node.js binary, the runtime bundle and its launcher. Installed by @alan-ai-hq/agent-manager.",
5
5
  "license": "SEE LICENSE IN LICENSE",
6
6
  "homepage": "https://tryalan.ai",