@openacp/cli 0.4.11 → 0.5.1

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 (74) hide show
  1. package/README.md +41 -3
  2. package/dist/agent-catalog-LAAVBVLY.js +10 -0
  3. package/dist/agent-dependencies-FCLRGMZM.js +23 -0
  4. package/dist/agent-registry-KZANAFXQ.js +8 -0
  5. package/dist/agent-store-ZBXGOFPH.js +8 -0
  6. package/dist/chunk-5HGXUCMX.js +83 -0
  7. package/dist/chunk-5HGXUCMX.js.map +1 -0
  8. package/dist/chunk-5MH66WUY.js +424 -0
  9. package/dist/chunk-5MH66WUY.js.map +1 -0
  10. package/dist/{chunk-FKOARMAE.js → chunk-776VAU3T.js} +3 -3
  11. package/dist/chunk-GUHCS6X7.js +282 -0
  12. package/dist/chunk-GUHCS6X7.js.map +1 -0
  13. package/dist/{chunk-3DIPXFZJ.js → chunk-IRGYTNLP.js} +2 -2
  14. package/dist/chunk-IURZ4QHG.js +91 -0
  15. package/dist/chunk-IURZ4QHG.js.map +1 -0
  16. package/dist/{chunk-WYZFGHHI.js → chunk-JRF4G4X7.js} +60 -24
  17. package/dist/chunk-JRF4G4X7.js.map +1 -0
  18. package/dist/chunk-NAMYZIS5.js +1 -0
  19. package/dist/{chunk-ZW444AQY.js → chunk-NDR5JCS7.js} +2 -2
  20. package/dist/{chunk-66RVSUAR.js → chunk-PHC67OP4.js} +567 -103
  21. package/dist/chunk-PHC67OP4.js.map +1 -0
  22. package/dist/{chunk-W7QQA6CW.js → chunk-QODDJ4PH.js} +83 -36
  23. package/dist/chunk-QODDJ4PH.js.map +1 -0
  24. package/dist/{chunk-YRJEZD7R.js → chunk-VBEWSWVL.js} +2 -2
  25. package/dist/{chunk-C33LTDZV.js → chunk-Z46LGZ7R.js} +21 -8
  26. package/dist/chunk-Z46LGZ7R.js.map +1 -0
  27. package/dist/cli.js +440 -64
  28. package/dist/cli.js.map +1 -1
  29. package/dist/{config-XURP6B3S.js → config-PCPIBPUA.js} +2 -2
  30. package/dist/config-editor-RGV6VKPZ.js +12 -0
  31. package/dist/{config-registry-OGX4YM2U.js → config-registry-SNKA2EH2.js} +2 -2
  32. package/dist/{daemon-GWJM2S4A.js → daemon-JZLFRUW6.js} +3 -3
  33. package/dist/daemon-JZLFRUW6.js.map +1 -0
  34. package/dist/data/registry-snapshot.json +876 -0
  35. package/dist/doctor-N2HKKUUQ.js +9 -0
  36. package/dist/doctor-N2HKKUUQ.js.map +1 -0
  37. package/dist/index.d.ts +138 -17
  38. package/dist/index.js +24 -15
  39. package/dist/integrate-X7LI6MUO.js +257 -0
  40. package/dist/integrate-X7LI6MUO.js.map +1 -0
  41. package/dist/{main-2QKD2EI2.js → main-DSQBCJHR.js} +18 -15
  42. package/dist/{main-2QKD2EI2.js.map → main-DSQBCJHR.js.map} +1 -1
  43. package/dist/{menu-CARRTW2F.js → menu-J5YVH665.js} +2 -4
  44. package/dist/menu-J5YVH665.js.map +1 -0
  45. package/dist/{setup-TTOL7XAN.js → setup-3A3XDGCM.js} +4 -3
  46. package/dist/setup-3A3XDGCM.js.map +1 -0
  47. package/dist/suggest-RST5VOHB.js +36 -0
  48. package/dist/suggest-RST5VOHB.js.map +1 -0
  49. package/package.json +11 -2
  50. package/dist/agent-registry-7HC6D4CH.js +0 -7
  51. package/dist/chunk-66RVSUAR.js.map +0 -1
  52. package/dist/chunk-BGKQHQB4.js +0 -276
  53. package/dist/chunk-BGKQHQB4.js.map +0 -1
  54. package/dist/chunk-C33LTDZV.js.map +0 -1
  55. package/dist/chunk-VA2M52CM.js +0 -15
  56. package/dist/chunk-VA2M52CM.js.map +0 -1
  57. package/dist/chunk-W7QQA6CW.js.map +0 -1
  58. package/dist/chunk-WYZFGHHI.js.map +0 -1
  59. package/dist/config-editor-AALY3URF.js +0 -11
  60. package/dist/doctor-X477CVZN.js +0 -9
  61. package/dist/integrate-WUPLRJD3.js +0 -145
  62. package/dist/integrate-WUPLRJD3.js.map +0 -1
  63. /package/dist/{agent-registry-7HC6D4CH.js.map → agent-catalog-LAAVBVLY.js.map} +0 -0
  64. /package/dist/{config-XURP6B3S.js.map → agent-dependencies-FCLRGMZM.js.map} +0 -0
  65. /package/dist/{config-editor-AALY3URF.js.map → agent-registry-KZANAFXQ.js.map} +0 -0
  66. /package/dist/{config-registry-OGX4YM2U.js.map → agent-store-ZBXGOFPH.js.map} +0 -0
  67. /package/dist/{chunk-FKOARMAE.js.map → chunk-776VAU3T.js.map} +0 -0
  68. /package/dist/{chunk-3DIPXFZJ.js.map → chunk-IRGYTNLP.js.map} +0 -0
  69. /package/dist/{daemon-GWJM2S4A.js.map → chunk-NAMYZIS5.js.map} +0 -0
  70. /package/dist/{chunk-ZW444AQY.js.map → chunk-NDR5JCS7.js.map} +0 -0
  71. /package/dist/{chunk-YRJEZD7R.js.map → chunk-VBEWSWVL.js.map} +0 -0
  72. /package/dist/{doctor-X477CVZN.js.map → config-PCPIBPUA.js.map} +0 -0
  73. /package/dist/{menu-CARRTW2F.js.map → config-editor-RGV6VKPZ.js.map} +0 -0
  74. /package/dist/{setup-TTOL7XAN.js.map → config-registry-SNKA2EH2.js.map} +0 -0
@@ -4,12 +4,15 @@ import {
4
4
 
5
5
  // src/core/config.ts
6
6
  import { z } from "zod";
7
- import * as fs from "fs";
8
- import * as path from "path";
9
- import * as os from "os";
7
+ import * as fs2 from "fs";
8
+ import * as path2 from "path";
9
+ import * as os2 from "os";
10
10
  import { EventEmitter } from "events";
11
11
 
12
12
  // src/core/config-migrations.ts
13
+ import * as fs from "fs";
14
+ import * as path from "path";
15
+ import * as os from "os";
13
16
  var log = createChildLogger({ module: "config-migrations" });
14
17
  var migrations = [
15
18
  {
@@ -52,6 +55,39 @@ var migrations = [
52
55
  }
53
56
  return changed;
54
57
  }
58
+ },
59
+ {
60
+ name: "migrate-agents-to-store",
61
+ apply(raw) {
62
+ const agentsJsonPath = path.join(os.homedir(), ".openacp", "agents.json");
63
+ if (fs.existsSync(agentsJsonPath)) return false;
64
+ const agents = raw.agents;
65
+ if (!agents || Object.keys(agents).length === 0) return false;
66
+ const COMMAND_TO_REGISTRY = {
67
+ "claude-agent-acp": "claude-acp",
68
+ "codex": "codex-acp"
69
+ };
70
+ const installed = {};
71
+ for (const [key, cfg] of Object.entries(agents)) {
72
+ const registryId = COMMAND_TO_REGISTRY[cfg.command] ?? null;
73
+ installed[key] = {
74
+ registryId,
75
+ name: key.charAt(0).toUpperCase() + key.slice(1),
76
+ version: "unknown",
77
+ distribution: "custom",
78
+ command: cfg.command,
79
+ args: cfg.args ?? [],
80
+ env: cfg.env ?? {},
81
+ workingDirectory: cfg.workingDirectory ?? void 0,
82
+ installedAt: (/* @__PURE__ */ new Date()).toISOString(),
83
+ binaryPath: null
84
+ };
85
+ }
86
+ fs.mkdirSync(path.dirname(agentsJsonPath), { recursive: true });
87
+ fs.writeFileSync(agentsJsonPath, JSON.stringify({ version: 1, installed }, null, 2));
88
+ raw.agents = {};
89
+ return true;
90
+ }
55
91
  }
56
92
  ];
57
93
  function applyMigrations(raw, migrationList = migrations) {
@@ -71,7 +107,7 @@ var BaseChannelSchema = z.object({
71
107
  adapter: z.string().optional()
72
108
  // package name for plugin adapters
73
109
  }).passthrough();
74
- var PLUGINS_DIR = path.join(os.homedir(), ".openacp", "plugins");
110
+ var PLUGINS_DIR = path2.join(os2.homedir(), ".openacp", "plugins");
75
111
  var AgentSchema = z.object({
76
112
  command: z.string(),
77
113
  args: z.array(z.string()).default([]),
@@ -99,7 +135,7 @@ var TunnelSchema = z.object({
99
135
  }).default({});
100
136
  var ConfigSchema = z.object({
101
137
  channels: z.record(z.string(), BaseChannelSchema),
102
- agents: z.record(z.string(), AgentSchema),
138
+ agents: z.record(z.string(), AgentSchema).optional().default({}),
103
139
  defaultAgent: z.string(),
104
140
  workspace: z.object({
105
141
  baseDir: z.string().default("~/openacp-workspace")
@@ -127,7 +163,7 @@ var ConfigSchema = z.object({
127
163
  });
128
164
  function expandHome(p) {
129
165
  if (p.startsWith("~")) {
130
- return path.join(os.homedir(), p.slice(1));
166
+ return path2.join(os2.homedir(), p.slice(1));
131
167
  }
132
168
  return p;
133
169
  }
@@ -170,10 +206,10 @@ var ConfigManager = class extends EventEmitter {
170
206
  this.configPath = process.env.OPENACP_CONFIG_PATH || expandHome("~/.openacp/config.json");
171
207
  }
172
208
  async load() {
173
- const dir = path.dirname(this.configPath);
174
- fs.mkdirSync(dir, { recursive: true });
175
- if (!fs.existsSync(this.configPath)) {
176
- fs.writeFileSync(
209
+ const dir = path2.dirname(this.configPath);
210
+ fs2.mkdirSync(dir, { recursive: true });
211
+ if (!fs2.existsSync(this.configPath)) {
212
+ fs2.writeFileSync(
177
213
  this.configPath,
178
214
  JSON.stringify(DEFAULT_CONFIG, null, 2)
179
215
  );
@@ -183,10 +219,10 @@ var ConfigManager = class extends EventEmitter {
183
219
  );
184
220
  process.exit(1);
185
221
  }
186
- const raw = JSON.parse(fs.readFileSync(this.configPath, "utf-8"));
222
+ const raw = JSON.parse(fs2.readFileSync(this.configPath, "utf-8"));
187
223
  const { changed: configUpdated } = applyMigrations(raw);
188
224
  if (configUpdated) {
189
- fs.writeFileSync(this.configPath, JSON.stringify(raw, null, 2));
225
+ fs2.writeFileSync(this.configPath, JSON.stringify(raw, null, 2));
190
226
  }
191
227
  this.applyEnvOverrides(raw);
192
228
  const result = ConfigSchema.safeParse(raw);
@@ -207,15 +243,15 @@ var ConfigManager = class extends EventEmitter {
207
243
  }
208
244
  async save(updates, changePath) {
209
245
  const oldConfig = this.config ? structuredClone(this.config) : void 0;
210
- const raw = JSON.parse(fs.readFileSync(this.configPath, "utf-8"));
246
+ const raw = JSON.parse(fs2.readFileSync(this.configPath, "utf-8"));
211
247
  this.deepMerge(raw, updates);
212
- fs.writeFileSync(this.configPath, JSON.stringify(raw, null, 2));
248
+ fs2.writeFileSync(this.configPath, JSON.stringify(raw, null, 2));
213
249
  const result = ConfigSchema.safeParse(raw);
214
250
  if (result.success) {
215
251
  this.config = result.data;
216
252
  }
217
253
  if (changePath) {
218
- const { getConfigValue } = await import("./config-registry-OGX4YM2U.js");
254
+ const { getConfigValue } = await import("./config-registry-SNKA2EH2.js");
219
255
  const value = getConfigValue(this.config, changePath);
220
256
  const oldValue = oldConfig ? getConfigValue(oldConfig, changePath) : void 0;
221
257
  this.emit("config:changed", { path: changePath, value, oldValue });
@@ -224,29 +260,29 @@ var ConfigManager = class extends EventEmitter {
224
260
  resolveWorkspace(input) {
225
261
  if (!input) {
226
262
  const resolved2 = expandHome(this.config.workspace.baseDir);
227
- fs.mkdirSync(resolved2, { recursive: true });
263
+ fs2.mkdirSync(resolved2, { recursive: true });
228
264
  return resolved2;
229
265
  }
230
266
  if (input.startsWith("/") || input.startsWith("~")) {
231
267
  const resolved2 = expandHome(input);
232
- fs.mkdirSync(resolved2, { recursive: true });
268
+ fs2.mkdirSync(resolved2, { recursive: true });
233
269
  return resolved2;
234
270
  }
235
271
  const name = input.toLowerCase();
236
- const resolved = path.join(expandHome(this.config.workspace.baseDir), name);
237
- fs.mkdirSync(resolved, { recursive: true });
272
+ const resolved = path2.join(expandHome(this.config.workspace.baseDir), name);
273
+ fs2.mkdirSync(resolved, { recursive: true });
238
274
  return resolved;
239
275
  }
240
276
  async exists() {
241
- return fs.existsSync(this.configPath);
277
+ return fs2.existsSync(this.configPath);
242
278
  }
243
279
  getConfigPath() {
244
280
  return this.configPath;
245
281
  }
246
282
  async writeNew(config) {
247
- const dir = path.dirname(this.configPath);
248
- fs.mkdirSync(dir, { recursive: true });
249
- fs.writeFileSync(this.configPath, JSON.stringify(config, null, 2));
283
+ const dir = path2.dirname(this.configPath);
284
+ fs2.mkdirSync(dir, { recursive: true });
285
+ fs2.writeFileSync(this.configPath, JSON.stringify(config, null, 2));
250
286
  }
251
287
  applyEnvOverrides(raw) {
252
288
  const overrides = [
@@ -314,4 +350,4 @@ export {
314
350
  expandHome,
315
351
  ConfigManager
316
352
  };
317
- //# sourceMappingURL=chunk-WYZFGHHI.js.map
353
+ //# sourceMappingURL=chunk-JRF4G4X7.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/core/config.ts","../../src/core/config-migrations.ts"],"sourcesContent":["import { z } from \"zod\";\nimport * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport * as os from \"node:os\";\nimport { EventEmitter } from \"node:events\";\nimport { applyMigrations } from \"./config-migrations.js\";\nimport { createChildLogger } from \"./log.js\";\nconst log = createChildLogger({ module: \"config\" });\n\nconst BaseChannelSchema = z\n .object({\n enabled: z.boolean().default(false),\n adapter: z.string().optional(), // package name for plugin adapters\n })\n .passthrough();\n\nexport const PLUGINS_DIR = path.join(os.homedir(), \".openacp\", \"plugins\");\n\nconst AgentSchema = z.object({\n command: z.string(),\n args: z.array(z.string()).default([]),\n workingDirectory: z.string().optional(),\n env: z.record(z.string(), z.string()).default({}),\n});\n\nconst LoggingSchema = z\n .object({\n level: z\n .enum([\"silent\", \"debug\", \"info\", \"warn\", \"error\", \"fatal\"])\n .default(\"info\"),\n logDir: z.string().default(\"~/.openacp/logs\"),\n maxFileSize: z.union([z.string(), z.number()]).default(\"10m\"),\n maxFiles: z.number().default(7),\n sessionLogRetentionDays: z.number().default(30),\n })\n .default({});\n\nexport type LoggingConfig = z.infer<typeof LoggingSchema>;\n\nconst TunnelAuthSchema = z\n .object({\n enabled: z.boolean().default(false),\n token: z.string().optional(),\n })\n .default({});\n\nconst TunnelSchema = z\n .object({\n enabled: z.boolean().default(false),\n port: z.number().default(3100),\n provider: z.enum([\"cloudflare\", \"ngrok\", \"bore\", \"tailscale\"]).default(\"cloudflare\"),\n options: z.record(z.string(), z.unknown()).default({}),\n storeTtlMinutes: z.number().default(60),\n auth: TunnelAuthSchema,\n })\n .default({});\n\nexport type TunnelConfig = z.infer<typeof TunnelSchema>;\n\nexport const ConfigSchema = z.object({\n channels: z.record(z.string(), BaseChannelSchema),\n agents: z.record(z.string(), AgentSchema).optional().default({}),\n defaultAgent: z.string(),\n workspace: z\n .object({\n baseDir: z.string().default(\"~/openacp-workspace\"),\n })\n .default({}),\n security: z\n .object({\n allowedUserIds: z.array(z.string()).default([]),\n maxConcurrentSessions: z.number().default(20),\n sessionTimeoutMinutes: z.number().default(60),\n })\n .default({}),\n logging: LoggingSchema,\n runMode: z.enum(['foreground', 'daemon']).default('foreground'),\n autoStart: z.boolean().default(false),\n api: z.object({\n port: z.number().default(21420),\n host: z.string().default('127.0.0.1'),\n }).default({}),\n sessionStore: z\n .object({\n ttlDays: z.number().default(30),\n })\n .default({}),\n tunnel: TunnelSchema,\n integrations: z.record(z.string(), z.object({\n installed: z.boolean(),\n installedAt: z.string().optional(),\n })).default({}),\n});\n\nexport type Config = z.infer<typeof ConfigSchema>;\n\nexport function expandHome(p: string): string {\n if (p.startsWith(\"~\")) {\n return path.join(os.homedir(), p.slice(1));\n }\n return p;\n}\n\nconst DEFAULT_CONFIG = {\n channels: {\n telegram: {\n enabled: false,\n botToken: \"YOUR_BOT_TOKEN_HERE\",\n chatId: 0,\n notificationTopicId: null,\n assistantTopicId: null,\n },\n },\n agents: {\n claude: { command: \"claude-agent-acp\", args: [], env: {} },\n codex: { command: \"codex\", args: [\"--acp\"], env: {} },\n },\n defaultAgent: \"claude\",\n workspace: { baseDir: \"~/openacp-workspace\" },\n security: {\n allowedUserIds: [],\n maxConcurrentSessions: 20,\n sessionTimeoutMinutes: 60,\n },\n sessionStore: { ttlDays: 30 },\n tunnel: {\n enabled: true,\n port: 3100,\n provider: \"cloudflare\",\n options: {},\n storeTtlMinutes: 60,\n auth: { enabled: false },\n },\n};\n\nexport class ConfigManager extends EventEmitter {\n private config!: Config;\n private configPath: string;\n\n constructor() {\n super();\n this.configPath =\n process.env.OPENACP_CONFIG_PATH || expandHome(\"~/.openacp/config.json\");\n }\n\n async load(): Promise<void> {\n // 1. Ensure directory exists\n const dir = path.dirname(this.configPath);\n fs.mkdirSync(dir, { recursive: true });\n\n // 2. If config file doesn't exist, create default\n if (!fs.existsSync(this.configPath)) {\n fs.writeFileSync(\n this.configPath,\n JSON.stringify(DEFAULT_CONFIG, null, 2),\n );\n log.info({ configPath: this.configPath }, \"Config created\");\n log.info(\n \"Please edit it with your Telegram bot token and chat ID, then restart.\",\n );\n process.exit(1);\n }\n\n // 3. Read and parse\n const raw = JSON.parse(fs.readFileSync(this.configPath, \"utf-8\"));\n\n // 3.5. Auto-migrate config\n const { changed: configUpdated } = applyMigrations(raw);\n if (configUpdated) {\n fs.writeFileSync(this.configPath, JSON.stringify(raw, null, 2));\n }\n\n // 4. Apply env var overrides\n this.applyEnvOverrides(raw);\n\n // 5. Validate with Zod\n const result = ConfigSchema.safeParse(raw);\n if (!result.success) {\n log.error(\"Config validation failed\");\n for (const issue of result.error.issues) {\n log.error(\n { path: issue.path.join(\".\"), message: issue.message },\n \"Validation error\",\n );\n }\n process.exit(1);\n }\n this.config = result.data;\n }\n\n get(): Config {\n return this.config;\n }\n\n async save(updates: Record<string, unknown>, changePath?: string): Promise<void> {\n const oldConfig = this.config ? structuredClone(this.config) : undefined;\n // Read current file, merge updates, write back\n const raw = JSON.parse(fs.readFileSync(this.configPath, \"utf-8\"));\n this.deepMerge(raw, updates);\n fs.writeFileSync(this.configPath, JSON.stringify(raw, null, 2));\n // Re-validate and update in-memory config\n const result = ConfigSchema.safeParse(raw);\n if (result.success) {\n this.config = result.data;\n }\n // Emit change event if path provided\n if (changePath) {\n const { getConfigValue } = await import('./config-registry.js')\n const value = getConfigValue(this.config, changePath)\n const oldValue = oldConfig ? getConfigValue(oldConfig, changePath) : undefined\n this.emit('config:changed', { path: changePath, value, oldValue })\n }\n }\n\n resolveWorkspace(input?: string): string {\n if (!input) {\n const resolved = expandHome(this.config.workspace.baseDir);\n fs.mkdirSync(resolved, { recursive: true });\n return resolved;\n }\n if (input.startsWith(\"/\") || input.startsWith(\"~\")) {\n const resolved = expandHome(input);\n fs.mkdirSync(resolved, { recursive: true });\n return resolved;\n }\n // Named workspace → lowercase, under baseDir\n const name = input.toLowerCase();\n const resolved = path.join(expandHome(this.config.workspace.baseDir), name);\n fs.mkdirSync(resolved, { recursive: true });\n return resolved;\n }\n\n async exists(): Promise<boolean> {\n return fs.existsSync(this.configPath);\n }\n\n getConfigPath(): string {\n return this.configPath;\n }\n\n async writeNew(config: Config): Promise<void> {\n const dir = path.dirname(this.configPath);\n fs.mkdirSync(dir, { recursive: true });\n fs.writeFileSync(this.configPath, JSON.stringify(config, null, 2));\n }\n\n private applyEnvOverrides(raw: Record<string, unknown>): void {\n const overrides: [string, string[]][] = [\n [\"OPENACP_TELEGRAM_BOT_TOKEN\", [\"channels\", \"telegram\", \"botToken\"]],\n [\"OPENACP_TELEGRAM_CHAT_ID\", [\"channels\", \"telegram\", \"chatId\"]],\n [\"OPENACP_DEFAULT_AGENT\", [\"defaultAgent\"]],\n [\"OPENACP_RUN_MODE\", [\"runMode\"]],\n [\"OPENACP_API_PORT\", [\"api\", \"port\"]],\n ];\n for (const [envVar, configPath] of overrides) {\n const value = process.env[envVar];\n if (value !== undefined) {\n let target = raw as Record<string, any>;\n for (let i = 0; i < configPath.length - 1; i++) {\n if (!target[configPath[i]]) target[configPath[i]] = {};\n target = target[configPath[i]];\n }\n const key = configPath[configPath.length - 1];\n // Convert numeric fields to number\n target[key] = (key === \"chatId\" || key === \"port\") ? Number(value) : value;\n }\n }\n\n // Logging env var overrides\n if (process.env.OPENACP_LOG_LEVEL) {\n raw.logging = raw.logging || {};\n (raw.logging as Record<string, unknown>).level =\n process.env.OPENACP_LOG_LEVEL;\n }\n if (process.env.OPENACP_LOG_DIR) {\n raw.logging = raw.logging || {};\n (raw.logging as Record<string, unknown>).logDir =\n process.env.OPENACP_LOG_DIR;\n }\n if (process.env.OPENACP_DEBUG && !process.env.OPENACP_LOG_LEVEL) {\n raw.logging = raw.logging || {};\n (raw.logging as Record<string, unknown>).level = \"debug\";\n }\n\n // Tunnel env var overrides\n if (process.env.OPENACP_TUNNEL_ENABLED) {\n raw.tunnel = raw.tunnel || {};\n (raw.tunnel as Record<string, unknown>).enabled =\n process.env.OPENACP_TUNNEL_ENABLED === \"true\";\n }\n if (process.env.OPENACP_TUNNEL_PORT) {\n raw.tunnel = raw.tunnel || {};\n (raw.tunnel as Record<string, unknown>).port = Number(\n process.env.OPENACP_TUNNEL_PORT,\n );\n }\n if (process.env.OPENACP_TUNNEL_PROVIDER) {\n raw.tunnel = raw.tunnel || {};\n (raw.tunnel as Record<string, unknown>).provider =\n process.env.OPENACP_TUNNEL_PROVIDER;\n }\n }\n\n private deepMerge(\n target: Record<string, any>,\n source: Record<string, any>,\n ): void {\n for (const key of Object.keys(source)) {\n if (\n source[key] &&\n typeof source[key] === \"object\" &&\n !Array.isArray(source[key])\n ) {\n if (!target[key]) target[key] = {};\n this.deepMerge(target[key], source[key]);\n } else {\n target[key] = source[key];\n }\n }\n }\n}\n","import * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport * as os from \"node:os\";\nimport { createChildLogger } from \"./log.js\";\nconst log = createChildLogger({ module: \"config-migrations\" });\n\ntype RawConfig = Record<string, unknown>;\n\nexport interface Migration {\n name: string;\n apply: (raw: RawConfig) => boolean; // returns true if config was modified\n}\n\nexport const migrations: Migration[] = [\n {\n name: \"add-tunnel-section\",\n apply(raw) {\n if (raw.tunnel) return false;\n raw.tunnel = {\n enabled: true,\n port: 3100,\n provider: \"cloudflare\",\n options: {},\n storeTtlMinutes: 60,\n auth: { enabled: false },\n };\n log.info(\"Added tunnel section to config (enabled by default with cloudflare)\");\n return true;\n },\n },\n {\n name: \"fix-agent-commands\",\n apply(raw) {\n const COMMAND_MIGRATIONS: Record<string, string[]> = {\n \"claude-agent-acp\": [\"claude\", \"claude-code\"],\n };\n\n const agents = raw.agents;\n if (!agents || typeof agents !== \"object\") return false;\n\n let changed = false;\n for (const [agentName, agentDef] of Object.entries(agents as Record<string, any>)) {\n if (!agentDef?.command) continue;\n for (const [correctCmd, legacyCmds] of Object.entries(COMMAND_MIGRATIONS)) {\n if (legacyCmds.includes(agentDef.command)) {\n log.warn(\n { agent: agentName, oldCommand: agentDef.command, newCommand: correctCmd },\n `Auto-migrating agent command: \"${agentDef.command}\" → \"${correctCmd}\"`,\n );\n agentDef.command = correctCmd;\n changed = true;\n }\n }\n }\n return changed;\n },\n },\n {\n name: \"migrate-agents-to-store\",\n apply(raw) {\n const agentsJsonPath = path.join(os.homedir(), \".openacp\", \"agents.json\");\n if (fs.existsSync(agentsJsonPath)) return false;\n\n const agents = raw.agents as Record<string, any> | undefined;\n if (!agents || Object.keys(agents).length === 0) return false;\n\n const COMMAND_TO_REGISTRY: Record<string, string> = {\n \"claude-agent-acp\": \"claude-acp\",\n \"codex\": \"codex-acp\",\n };\n\n const installed: Record<string, any> = {};\n for (const [key, cfg] of Object.entries(agents)) {\n const registryId = COMMAND_TO_REGISTRY[cfg.command] ?? null;\n installed[key] = {\n registryId,\n name: key.charAt(0).toUpperCase() + key.slice(1),\n version: \"unknown\",\n distribution: \"custom\",\n command: cfg.command,\n args: cfg.args ?? [],\n env: cfg.env ?? {},\n workingDirectory: cfg.workingDirectory ?? undefined,\n installedAt: new Date().toISOString(),\n binaryPath: null,\n };\n }\n\n fs.mkdirSync(path.dirname(agentsJsonPath), { recursive: true });\n fs.writeFileSync(agentsJsonPath, JSON.stringify({ version: 1, installed }, null, 2));\n\n raw.agents = {};\n return true;\n },\n },\n];\n\n/**\n * Apply all migrations to raw config (mutates in place).\n * Returns whether any changes were made.\n */\nexport function applyMigrations(\n raw: RawConfig,\n migrationList: Migration[] = migrations,\n): { changed: boolean } {\n let changed = false;\n for (const migration of migrationList) {\n if (migration.apply(raw)) {\n changed = true;\n }\n }\n return { changed };\n}\n"],"mappings":"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","names":["fs","path","os","log","resolved"]}
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=chunk-NAMYZIS5.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  PLUGINS_DIR
3
- } from "./chunk-WYZFGHHI.js";
3
+ } from "./chunk-JRF4G4X7.js";
4
4
  import {
5
5
  createChildLogger
6
6
  } from "./chunk-ESOPMQAY.js";
@@ -60,4 +60,4 @@ export {
60
60
  listPlugins,
61
61
  loadAdapterFactory
62
62
  };
63
- //# sourceMappingURL=chunk-ZW444AQY.js.map
63
+ //# sourceMappingURL=chunk-NDR5JCS7.js.map