@openacp/cli 2026.403.6 → 2026.403.8

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/dist/cli.js CHANGED
@@ -11411,7 +11411,7 @@ var BYPASS_KEYWORDS;
11411
11411
  var init_bypass_detection = __esm({
11412
11412
  "src/core/utils/bypass-detection.ts"() {
11413
11413
  "use strict";
11414
- BYPASS_KEYWORDS = ["bypass", "dangerous", "auto_accept"];
11414
+ BYPASS_KEYWORDS = ["bypass", "dangerous", "auto_accept", "yolo"];
11415
11415
  }
11416
11416
  });
11417
11417
 
@@ -11683,9 +11683,7 @@ async function createSessionDirect(ctx, core, chatId, agentName, workspace, onCo
11683
11683
  message_thread_id: threadId,
11684
11684
  parse_mode: "HTML"
11685
11685
  });
11686
- const session = await core.handleNewSession("telegram", agentName, workspace);
11687
- session.threadId = String(threadId);
11688
- await core.sessionManager.patchRecord(session.id, { platform: { topicId: threadId } });
11686
+ const session = await core.handleNewSession("telegram", agentName, workspace, { threadId: String(threadId) });
11689
11687
  const finalName = `\u{1F504} ${session.agentName} \u2014 New Session`;
11690
11688
  try {
11691
11689
  await ctx.api.editForumTopic(chatId, threadId, { name: finalName });
@@ -18886,12 +18884,18 @@ ${stderr}`
18886
18884
  cwd: workingDirectory,
18887
18885
  mcpServers: resolvedMcp
18888
18886
  });
18887
+ log29.info(response, "newSession response");
18889
18888
  instance.sessionId = response.sessionId;
18890
18889
  instance.initialSessionResponse = response;
18891
18890
  instance.debugTracer = createDebugTracer(response.sessionId, workingDirectory);
18892
18891
  instance.setupCrashDetection();
18893
18892
  log29.info(
18894
- { sessionId: response.sessionId, durationMs: Date.now() - spawnStart },
18893
+ {
18894
+ sessionId: response.sessionId,
18895
+ durationMs: Date.now() - spawnStart,
18896
+ configOptions: response.configOptions ?? [],
18897
+ agentCapabilities: instance.agentCapabilities ?? null
18898
+ },
18895
18899
  "Agent spawn complete"
18896
18900
  );
18897
18901
  return instance;
@@ -18903,24 +18907,47 @@ ${stderr}`
18903
18907
  agentDef,
18904
18908
  workingDirectory
18905
18909
  );
18910
+ const resolvedMcp = _AgentInstance.mcpManager.resolve(mcpServers);
18906
18911
  try {
18907
- const response = await instance.connection.unstable_resumeSession({
18908
- sessionId: agentSessionId,
18909
- cwd: workingDirectory
18910
- });
18911
- instance.sessionId = response.sessionId;
18912
- instance.initialSessionResponse = response;
18913
- instance.debugTracer = createDebugTracer(response.sessionId, workingDirectory);
18914
- log29.info(
18915
- { sessionId: response.sessionId, durationMs: Date.now() - spawnStart },
18916
- "Agent resume complete"
18917
- );
18912
+ if (instance.agentCapabilities?.loadSession) {
18913
+ const response = await instance.connection.loadSession({
18914
+ sessionId: agentSessionId,
18915
+ cwd: workingDirectory,
18916
+ mcpServers: resolvedMcp
18917
+ });
18918
+ instance.sessionId = agentSessionId;
18919
+ instance.initialSessionResponse = response;
18920
+ instance.debugTracer = createDebugTracer(agentSessionId, workingDirectory);
18921
+ log29.info(
18922
+ {
18923
+ sessionId: agentSessionId,
18924
+ durationMs: Date.now() - spawnStart,
18925
+ agentCapabilities: instance.agentCapabilities ?? null
18926
+ },
18927
+ "Agent load complete"
18928
+ );
18929
+ } else {
18930
+ const response = await instance.connection.unstable_resumeSession({
18931
+ sessionId: agentSessionId,
18932
+ cwd: workingDirectory
18933
+ });
18934
+ instance.sessionId = response.sessionId;
18935
+ instance.initialSessionResponse = response;
18936
+ instance.debugTracer = createDebugTracer(response.sessionId, workingDirectory);
18937
+ log29.info(
18938
+ {
18939
+ sessionId: response.sessionId,
18940
+ durationMs: Date.now() - spawnStart,
18941
+ agentCapabilities: instance.agentCapabilities ?? null
18942
+ },
18943
+ "Agent resume complete"
18944
+ );
18945
+ }
18918
18946
  } catch (err) {
18919
18947
  log29.warn(
18920
18948
  { err, agentSessionId },
18921
18949
  "Resume failed, falling back to new session"
18922
18950
  );
18923
- const resolvedMcp = _AgentInstance.mcpManager.resolve(mcpServers);
18924
18951
  const response = await instance.connection.newSession({
18925
18952
  cwd: workingDirectory,
18926
18953
  mcpServers: resolvedMcp
@@ -19151,11 +19178,31 @@ ${stderr}`
19151
19178
  }
19152
19179
  // ── New ACP methods ──────────────────────────────────────────────────
19153
19180
  async setConfigOption(configId, value) {
19154
- return await this.connection.setSessionConfigOption({
19155
- sessionId: this.sessionId,
19156
- configId,
19157
- ...value
19158
- });
19181
+ try {
19182
+ return await this.connection.setSessionConfigOption({
19183
+ sessionId: this.sessionId,
19184
+ configId,
19185
+ ...value
19186
+ });
19187
+ } catch (err) {
19188
+ if (typeof err === "object" && err !== null && err.code === -32601) {
19189
+ if (configId === "mode" && value.type === "select") {
19190
+ await this.connection.setSessionMode({
19191
+ sessionId: this.sessionId,
19192
+ modeId: value.value
19193
+ });
19194
+ return { configOptions: [] };
19195
+ }
19196
+ if (configId === "model" && value.type === "select") {
19197
+ await this.connection.unstable_setSessionModel({
19198
+ sessionId: this.sessionId,
19199
+ modelId: value.value
19200
+ });
19201
+ return { configOptions: [] };
19202
+ }
19203
+ }
19204
+ throw err;
19205
+ }
19159
19206
  }
19160
19207
  async listSessions(cwd, cursor) {
19161
19208
  return await this.connection.listSessions({
@@ -19499,8 +19546,10 @@ Additionally, include a [TTS]...[/TTS] block with a spoken-friendly summary of y
19499
19546
  this.queue = new PromptQueue(
19500
19547
  (text6, attachments) => this.processPrompt(text6, attachments),
19501
19548
  (err) => {
19502
- this.fail("Prompt execution failed");
19503
19549
  this.log.error({ err }, "Prompt execution failed");
19550
+ const message = err instanceof Error ? err.message : String(err);
19551
+ this.fail(message);
19552
+ this.emit("agent_event", { type: "error", message: `Prompt execution failed: ${message}` });
19504
19553
  }
19505
19554
  );
19506
19555
  this.agentInstance.on("agent_event", (event) => {
@@ -19754,6 +19803,42 @@ ${result.text}` : result.text;
19754
19803
  setAgentCapabilities(caps) {
19755
19804
  this.agentCapabilities = caps;
19756
19805
  }
19806
+ /**
19807
+ * Hydrate configOptions and agentCapabilities from a spawn response.
19808
+ * Handles both the native configOptions format and legacy modes/models fields.
19809
+ */
19810
+ applySpawnResponse(resp, caps) {
19811
+ if (caps) this.agentCapabilities = caps;
19812
+ if (!resp) return;
19813
+ if (resp.configOptions) {
19814
+ this.configOptions = resp.configOptions;
19815
+ return;
19816
+ }
19817
+ const legacyOptions = [];
19818
+ if (resp.modes) {
19819
+ const m = resp.modes;
19820
+ legacyOptions.push({
19821
+ id: "mode",
19822
+ name: "Mode",
19823
+ category: "mode",
19824
+ type: "select",
19825
+ currentValue: m.currentModeId,
19826
+ options: m.availableModes.map((x) => ({ value: x.id, name: x.name, description: x.description }))
19827
+ });
19828
+ }
19829
+ if (resp.models) {
19830
+ const m = resp.models;
19831
+ legacyOptions.push({
19832
+ id: "model",
19833
+ name: "Model",
19834
+ category: "model",
19835
+ type: "select",
19836
+ currentValue: m.currentModelId,
19837
+ options: m.availableModels.map((x) => ({ value: x.modelId ?? x.id, name: x.name, description: x.description }))
19838
+ });
19839
+ }
19840
+ if (legacyOptions.length > 0) this.configOptions = legacyOptions;
19841
+ }
19757
19842
  getConfigOption(id) {
19758
19843
  return this.configOptions.find((o) => o.id === id);
19759
19844
  }
@@ -19773,8 +19858,13 @@ ${result.text}` : result.text;
19773
19858
  /** Send a config option change to the agent and update local state from the response. */
19774
19859
  async setConfigOption(configId, value) {
19775
19860
  const response = await this.agentInstance.setConfigOption(configId, value);
19776
- if (response.configOptions) {
19861
+ if (response.configOptions && response.configOptions.length > 0) {
19777
19862
  await this.updateConfigOptions(response.configOptions);
19863
+ } else if (value.type === "select") {
19864
+ const updated = this.configOptions.map(
19865
+ (o) => o.id === configId && o.type === "select" ? { ...o, currentValue: value.value } : o
19866
+ );
19867
+ await this.updateConfigOptions(updated);
19778
19868
  }
19779
19869
  }
19780
19870
  async updateConfigOptions(options) {
@@ -19838,6 +19928,8 @@ ${result.text}` : result.text;
19838
19928
  this.promptCount = 0;
19839
19929
  this.agentCapabilities = void 0;
19840
19930
  this.configOptions = [];
19931
+ this.latestCommands = null;
19932
+ this.applySpawnResponse(newAgent.initialSessionResponse, newAgent.agentCapabilities);
19841
19933
  this.log.info({ from: this.agentSwitchHistory.at(-1).agentName, to: agentName }, "Agent switched");
19842
19934
  }
19843
19935
  async destroy() {
@@ -20117,6 +20209,9 @@ var init_session_bridge = __esm({
20117
20209
  if (this.session.latestCommands !== null) {
20118
20210
  this.session.emit("agent_event", { type: "commands_update", commands: this.session.latestCommands });
20119
20211
  }
20212
+ if (this.session.configOptions.length > 0) {
20213
+ this.session.emit("agent_event", { type: "config_option_update", options: this.session.configOptions });
20214
+ }
20120
20215
  }
20121
20216
  disconnect() {
20122
20217
  if (!this.connected) return;
@@ -21058,17 +21153,7 @@ var init_session_factory = __esm({
21058
21153
  if (createParams.initialName) {
21059
21154
  session.name = createParams.initialName;
21060
21155
  }
21061
- const resp = agentInstance.initialSessionResponse;
21062
- if (resp) {
21063
- if (resp.configOptions) {
21064
- session.setInitialConfigOptions(resp.configOptions);
21065
- }
21066
- if (agentInstance.agentCapabilities) {
21067
- session.setAgentCapabilities(agentInstance.agentCapabilities);
21068
- }
21069
- } else if (agentInstance.agentCapabilities) {
21070
- session.setAgentCapabilities(agentInstance.agentCapabilities);
21071
- }
21156
+ session.applySpawnResponse(agentInstance.initialSessionResponse, agentInstance.agentCapabilities);
21072
21157
  this.sessionManager.registerSession(session);
21073
21158
  this.eventBus.emit("session:created", {
21074
21159
  sessionId: session.id,
@@ -21221,7 +21306,8 @@ var init_session_factory = __esm({
21221
21306
  channelId: params.channelId,
21222
21307
  agentName: params.agentName,
21223
21308
  workingDirectory: params.workingDirectory,
21224
- createThread: params.createThread
21309
+ createThread: params.createThread,
21310
+ threadId: params.threadId
21225
21311
  });
21226
21312
  if (contextResult) {
21227
21313
  session.setContext(contextResult.markdown);
@@ -22155,7 +22241,7 @@ function createPluginContext(opts) {
22155
22241
  }
22156
22242
  };
22157
22243
  const baseLog = opts.log ?? noopLog;
22158
- const log44 = typeof baseLog.child === "function" ? baseLog.child({ plugin: pluginName }) : baseLog;
22244
+ const log45 = typeof baseLog.child === "function" ? baseLog.child({ plugin: pluginName }) : baseLog;
22159
22245
  const storageImpl = new PluginStorageImpl(storagePath);
22160
22246
  const storage = {
22161
22247
  async get(key) {
@@ -22182,7 +22268,7 @@ function createPluginContext(opts) {
22182
22268
  const ctx = {
22183
22269
  pluginName,
22184
22270
  pluginConfig,
22185
- log: log44,
22271
+ log: log45,
22186
22272
  storage,
22187
22273
  on(event, handler) {
22188
22274
  requirePermission(permissions, "events:read", "on()");
@@ -22217,7 +22303,7 @@ function createPluginContext(opts) {
22217
22303
  const registry = serviceRegistry.get("command-registry");
22218
22304
  if (registry && typeof registry.register === "function") {
22219
22305
  registry.register(def, pluginName);
22220
- log44.debug(`Command '/${def.name}' registered`);
22306
+ log45.debug(`Command '/${def.name}' registered`);
22221
22307
  }
22222
22308
  },
22223
22309
  async sendMessage(_sessionId, _content) {
@@ -22738,9 +22824,9 @@ var init_assistant_manager = __esm({
22738
22824
  agentName: this.core.configManager.get().defaultAgent,
22739
22825
  workingDirectory: this.core.configManager.resolveWorkspace(),
22740
22826
  initialName: "Assistant",
22741
- isAssistant: true
22827
+ isAssistant: true,
22828
+ threadId
22742
22829
  });
22743
- session.threadId = threadId;
22744
22830
  this.sessions.set(channelId, session);
22745
22831
  const systemPrompt = this.registry.buildSystemPrompt(channelId);
22746
22832
  this.pendingSystemPrompts.set(channelId, systemPrompt);
@@ -24284,13 +24370,18 @@ function registerCategoryCommand(registry, core, category, commandName) {
24284
24370
  configOption.id,
24285
24371
  { type: "select", value: raw }
24286
24372
  );
24287
- if (response.configOptions) {
24373
+ if (response.configOptions && response.configOptions.length > 0) {
24288
24374
  session.configOptions = response.configOptions;
24375
+ } else {
24376
+ session.configOptions = session.configOptions.map(
24377
+ (o) => o.id === configOption.id && o.type === "select" ? { ...o, currentValue: raw } : o
24378
+ );
24289
24379
  }
24290
24380
  core.eventBus.emit("session:configChanged", { sessionId: session.id });
24291
24381
  return { type: "text", text: labels.successMsg(match.name, configOption.name) };
24292
24382
  } catch (err) {
24293
- const msg = err instanceof Error ? err.message : String(err);
24383
+ log41.error({ err, commandName, configId: configOption.id }, "setConfigOption failed");
24384
+ const msg = err instanceof Error ? err.message : typeof err === "object" && err !== null && typeof err.message === "string" ? err.message : String(err);
24294
24385
  return { type: "error", message: `Could not change ${commandName}: ${msg}` };
24295
24386
  }
24296
24387
  }
@@ -24351,8 +24442,12 @@ function registerDangerousCommand(registry, core) {
24351
24442
  modeConfig.id,
24352
24443
  { type: "select", value: targetValue }
24353
24444
  );
24354
- if (response.configOptions) {
24445
+ if (response.configOptions && response.configOptions.length > 0) {
24355
24446
  session.configOptions = response.configOptions;
24447
+ } else {
24448
+ session.configOptions = session.configOptions.map(
24449
+ (o) => o.id === modeConfig.id && o.type === "select" ? { ...o, currentValue: targetValue } : o
24450
+ );
24356
24451
  }
24357
24452
  core.eventBus.emit("session:configChanged", { sessionId: session.id });
24358
24453
  return {
@@ -24360,7 +24455,8 @@ function registerDangerousCommand(registry, core) {
24360
24455
  text: wantOn ? "\u2620\uFE0F **Bypass Permissions enabled** \u2014 all permission requests will be auto-approved. The agent can run any action without asking." : "\u{1F510} **Bypass Permissions disabled** \u2014 you will be asked to approve risky actions."
24361
24456
  };
24362
24457
  } catch (err) {
24363
- const msg = err instanceof Error ? err.message : String(err);
24458
+ log41.error({ err }, "setConfigOption failed (bypass toggle)");
24459
+ const msg = err instanceof Error ? err.message : typeof err === "object" && err !== null && typeof err.message === "string" ? err.message : String(err);
24364
24460
  return { type: "error", message: `Could not toggle bypass: ${msg}` };
24365
24461
  }
24366
24462
  }
@@ -24383,12 +24479,14 @@ function registerConfigCommands(registry, _core) {
24383
24479
  registerCategoryCommand(registry, core, "thought_level", "thought");
24384
24480
  registerDangerousCommand(registry, core);
24385
24481
  }
24386
- var CATEGORY_LABELS;
24482
+ var log41, CATEGORY_LABELS;
24387
24483
  var init_config6 = __esm({
24388
24484
  "src/core/commands/config.ts"() {
24389
24485
  "use strict";
24486
+ init_log();
24390
24487
  init_bypass_detection();
24391
24488
  init_bypass_detection();
24489
+ log41 = createChildLogger({ module: "commands/config" });
24392
24490
  CATEGORY_LABELS = {
24393
24491
  mode: {
24394
24492
  menuTitle: (cur) => `Choose session mode (current: ${cur})`,
@@ -24781,7 +24879,7 @@ function installAutoStart(logDir2) {
24781
24879
  fs46.mkdirSync(dir, { recursive: true });
24782
24880
  fs46.writeFileSync(LAUNCHD_PLIST_PATH, plist);
24783
24881
  execFileSync7("launchctl", ["load", LAUNCHD_PLIST_PATH], { stdio: "pipe" });
24784
- log41.info("LaunchAgent installed");
24882
+ log42.info("LaunchAgent installed");
24785
24883
  return { success: true };
24786
24884
  }
24787
24885
  if (process.platform === "linux") {
@@ -24791,13 +24889,13 @@ function installAutoStart(logDir2) {
24791
24889
  fs46.writeFileSync(SYSTEMD_SERVICE_PATH, unit);
24792
24890
  execFileSync7("systemctl", ["--user", "daemon-reload"], { stdio: "pipe" });
24793
24891
  execFileSync7("systemctl", ["--user", "enable", "openacp"], { stdio: "pipe" });
24794
- log41.info("systemd user service installed");
24892
+ log42.info("systemd user service installed");
24795
24893
  return { success: true };
24796
24894
  }
24797
24895
  return { success: false, error: "Unsupported platform" };
24798
24896
  } catch (e) {
24799
24897
  const msg = e.message;
24800
- log41.error({ err: msg }, "Failed to install auto-start");
24898
+ log42.error({ err: msg }, "Failed to install auto-start");
24801
24899
  return { success: false, error: msg };
24802
24900
  }
24803
24901
  }
@@ -24813,7 +24911,7 @@ function uninstallAutoStart() {
24813
24911
  } catch {
24814
24912
  }
24815
24913
  fs46.unlinkSync(LAUNCHD_PLIST_PATH);
24816
- log41.info("LaunchAgent removed");
24914
+ log42.info("LaunchAgent removed");
24817
24915
  }
24818
24916
  return { success: true };
24819
24917
  }
@@ -24825,14 +24923,14 @@ function uninstallAutoStart() {
24825
24923
  }
24826
24924
  fs46.unlinkSync(SYSTEMD_SERVICE_PATH);
24827
24925
  execFileSync7("systemctl", ["--user", "daemon-reload"], { stdio: "pipe" });
24828
- log41.info("systemd user service removed");
24926
+ log42.info("systemd user service removed");
24829
24927
  }
24830
24928
  return { success: true };
24831
24929
  }
24832
24930
  return { success: false, error: "Unsupported platform" };
24833
24931
  } catch (e) {
24834
24932
  const msg = e.message;
24835
- log41.error({ err: msg }, "Failed to uninstall auto-start");
24933
+ log42.error({ err: msg }, "Failed to uninstall auto-start");
24836
24934
  return { success: false, error: msg };
24837
24935
  }
24838
24936
  }
@@ -24845,12 +24943,12 @@ function isAutoStartInstalled() {
24845
24943
  }
24846
24944
  return false;
24847
24945
  }
24848
- var log41, LAUNCHD_LABEL, LAUNCHD_PLIST_PATH, SYSTEMD_SERVICE_PATH;
24946
+ var log42, LAUNCHD_LABEL, LAUNCHD_PLIST_PATH, SYSTEMD_SERVICE_PATH;
24849
24947
  var init_autostart = __esm({
24850
24948
  "src/cli/autostart.ts"() {
24851
24949
  "use strict";
24852
24950
  init_log();
24853
- log41 = createChildLogger({ module: "autostart" });
24951
+ log42 = createChildLogger({ module: "autostart" });
24854
24952
  LAUNCHD_LABEL = "com.openacp.daemon";
24855
24953
  LAUNCHD_PLIST_PATH = path53.join(os24.homedir(), "Library", "LaunchAgents", `${LAUNCHD_LABEL}.plist`);
24856
24954
  SYSTEMD_SERVICE_PATH = path53.join(os24.homedir(), ".config", "systemd", "user", "openacp.service");
@@ -24953,7 +25051,7 @@ async function setupIntegrations() {
24953
25051
  if (integration) {
24954
25052
  for (const item of integration.items) {
24955
25053
  const result = await item.install();
24956
- for (const log44 of result.logs) console.log(` ${log44}`);
25054
+ for (const log45 of result.logs) console.log(` ${log45}`);
24957
25055
  }
24958
25056
  }
24959
25057
  console.log("Claude CLI integration installed.\n");
@@ -25911,14 +26009,14 @@ async function runPostUpgradeChecks(config) {
25911
26009
  const { ensureCloudflared: ensureCloudflared2 } = await Promise.resolve().then(() => (init_install_cloudflared(), install_cloudflared_exports));
25912
26010
  await ensureCloudflared2();
25913
26011
  } catch (err) {
25914
- log43.warn(
26012
+ log44.warn(
25915
26013
  { err: err.message },
25916
26014
  "Could not install cloudflared. Tunnel may not work."
25917
26015
  );
25918
26016
  }
25919
26017
  } else {
25920
26018
  if (!commandExists(config.tunnel.provider)) {
25921
- log43.warn(
26019
+ log44.warn(
25922
26020
  `Tunnel provider "${config.tunnel.provider}" is not installed. Install it or switch to cloudflare (free, auto-installed).`
25923
26021
  );
25924
26022
  }
@@ -25930,7 +26028,7 @@ async function runPostUpgradeChecks(config) {
25930
26028
  if (integration) {
25931
26029
  const allInstalled = integration.items.every((item) => item.isInstalled());
25932
26030
  if (!allInstalled) {
25933
- log43.info(
26031
+ log44.info(
25934
26032
  'Claude CLI integration not installed. Run "openacp integrate claude" for session transfer + tunnel skill.'
25935
26033
  );
25936
26034
  }
@@ -25940,7 +26038,7 @@ async function runPostUpgradeChecks(config) {
25940
26038
  const { ensureJq: ensureJq2 } = await Promise.resolve().then(() => (init_install_jq(), install_jq_exports));
25941
26039
  await ensureJq2();
25942
26040
  } catch (err) {
25943
- log43.warn(
26041
+ log44.warn(
25944
26042
  { err: err.message },
25945
26043
  "Could not install jq. Handoff hooks may not work."
25946
26044
  );
@@ -25950,7 +26048,7 @@ async function runPostUpgradeChecks(config) {
25950
26048
  } catch {
25951
26049
  }
25952
26050
  if (!commandExists("unzip")) {
25953
- log43.warn(
26051
+ log44.warn(
25954
26052
  "unzip is not installed. Some agent installations (binary distribution) may fail. Install: brew install unzip (macOS) or apt install unzip (Linux)"
25955
26053
  );
25956
26054
  }
@@ -25963,20 +26061,20 @@ async function runPostUpgradeChecks(config) {
25963
26061
  (a) => a.distribution === "uvx"
25964
26062
  );
25965
26063
  if (hasUvxAgent && !commandExists("uvx")) {
25966
- log43.warn(
26064
+ log44.warn(
25967
26065
  "uvx is not installed but you have Python-based agents. Install: pip install uv"
25968
26066
  );
25969
26067
  }
25970
26068
  } catch {
25971
26069
  }
25972
26070
  }
25973
- var log43;
26071
+ var log44;
25974
26072
  var init_post_upgrade = __esm({
25975
26073
  "src/cli/post-upgrade.ts"() {
25976
26074
  "use strict";
25977
26075
  init_log();
25978
26076
  init_agent_dependencies();
25979
- log43 = createChildLogger({ module: "post-upgrade" });
26077
+ log44 = createChildLogger({ module: "post-upgrade" });
25980
26078
  }
25981
26079
  });
25982
26080
 
@@ -29711,7 +29809,7 @@ a "Handoff" slash command to Claude Code.
29711
29809
  if (uninstall) {
29712
29810
  console.log(`Removing ${agent}/${item.id}...`);
29713
29811
  const result = await item.uninstall();
29714
- for (const log44 of result.logs) console.log(` ${log44}`);
29812
+ for (const log45 of result.logs) console.log(` ${log45}`);
29715
29813
  if (result.success) {
29716
29814
  console.log(` ${item.name} removed.`);
29717
29815
  } else {
@@ -29721,7 +29819,7 @@ a "Handoff" slash command to Claude Code.
29721
29819
  } else {
29722
29820
  console.log(`Installing ${agent}/${item.id}...`);
29723
29821
  const result = await item.install();
29724
- for (const log44 of result.logs) console.log(` ${log44}`);
29822
+ for (const log45 of result.logs) console.log(` ${log45}`);
29725
29823
  if (result.success) {
29726
29824
  console.log(` ${item.name} installed.`);
29727
29825
  } else {