@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 +163 -65
- package/dist/cli.js.map +1 -1
- package/dist/index.d.ts +14 -0
- package/dist/index.js +124 -38
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
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
|
-
{
|
|
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
|
-
|
|
18908
|
-
|
|
18909
|
-
|
|
18910
|
-
|
|
18911
|
-
|
|
18912
|
-
|
|
18913
|
-
|
|
18914
|
-
|
|
18915
|
-
|
|
18916
|
-
|
|
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
|
-
|
|
19155
|
-
|
|
19156
|
-
|
|
19157
|
-
|
|
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
|
-
|
|
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
|
|
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:
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
|
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 {
|