@openacp/cli 2026.327.3 → 2026.328.2

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 (179) hide show
  1. package/README.md +13 -13
  2. package/dist/adapter-HGJENQCN.js +13 -0
  3. package/dist/agent-catalog-SZQQERV7.js +10 -0
  4. package/dist/{agent-dependencies-WS7Z2DFW.js → agent-dependencies-ED2ZTUHG.js} +1 -2
  5. package/dist/{agent-registry-5LZT7CUB.js → agent-registry-YOGP656W.js} +1 -2
  6. package/dist/agent-store-5UHZH2XI.js +8 -0
  7. package/dist/{api-client-AQPNKXI2.js → api-client-XTLRRFPX.js} +1 -2
  8. package/dist/api-server-DSUW637I.js +7 -0
  9. package/dist/api-server-WFB5K6FP.js +10 -0
  10. package/dist/{autostart-6JS565RY.js → autostart-CUPZMKKC.js} +3 -4
  11. package/dist/{chunk-WIIZNPCR.js → chunk-2KT6TROD.js} +12 -33
  12. package/dist/chunk-2KT6TROD.js.map +1 -0
  13. package/dist/{chunk-PPSMUECX.js → chunk-2R5XM3ES.js} +2 -2
  14. package/dist/{chunk-SNPYTMPR.js → chunk-3EWTPOF7.js} +2 -2
  15. package/dist/{chunk-YEULD3SG.js → chunk-3NAFXVQM.js} +7 -2
  16. package/dist/{chunk-YEULD3SG.js.map → chunk-3NAFXVQM.js.map} +1 -1
  17. package/dist/{chunk-QAQDGPB4.js → chunk-43JVXFYP.js} +3 -3
  18. package/dist/{chunk-KMMEFXIE.js → chunk-4B6PCWQP.js} +37 -9
  19. package/dist/chunk-4B6PCWQP.js.map +1 -0
  20. package/dist/{chunk-A6Y4GZM3.js → chunk-566W6INH.js} +2 -2
  21. package/dist/{chunk-ODUM3D6X.js → chunk-5HKQCYOI.js} +1 -39
  22. package/dist/chunk-5HKQCYOI.js.map +1 -0
  23. package/dist/{chunk-36YQ44D7.js → chunk-5TCXYDLR.js} +3 -3
  24. package/dist/{chunk-XIBG7LSL.js → chunk-6VR4GWOO.js} +238 -108
  25. package/dist/chunk-6VR4GWOO.js.map +1 -0
  26. package/dist/{chunk-WXVT3AOY.js → chunk-7ZCQF6QM.js} +8 -3
  27. package/dist/chunk-7ZCQF6QM.js.map +1 -0
  28. package/dist/{chunk-HUWOFP2H.js → chunk-E2SLHZAC.js} +8 -12
  29. package/dist/{chunk-HUWOFP2H.js.map → chunk-E2SLHZAC.js.map} +1 -1
  30. package/dist/{chunk-RBYBSSGO.js → chunk-FCTC7KDT.js} +2 -2
  31. package/dist/chunk-I53NEV3S.js +45 -0
  32. package/dist/chunk-I53NEV3S.js.map +1 -0
  33. package/dist/{chunk-2YCW3QDV.js → chunk-IXMIC4GQ.js} +8 -7
  34. package/dist/chunk-IXMIC4GQ.js.map +1 -0
  35. package/dist/{chunk-BLQUXO7S.js → chunk-IZ5UEZF7.js} +27 -2
  36. package/dist/chunk-IZ5UEZF7.js.map +1 -0
  37. package/dist/{chunk-QVMEF6FB.js → chunk-JOMDPFQ2.js} +10 -24
  38. package/dist/chunk-JOMDPFQ2.js.map +1 -0
  39. package/dist/{chunk-4GMLGCF2.js → chunk-JUFN4XMB.js} +2 -2
  40. package/dist/{chunk-AD3X6DGK.js → chunk-NT6FYV27.js} +75 -13
  41. package/dist/chunk-NT6FYV27.js.map +1 -0
  42. package/dist/{chunk-UMT7RU77.js → chunk-QBEQJFGL.js} +9 -9
  43. package/dist/{chunk-XMMAGAT4.js → chunk-R6KZYF7D.js} +8 -1
  44. package/dist/{chunk-XMMAGAT4.js.map → chunk-R6KZYF7D.js.map} +1 -1
  45. package/dist/{chunk-LP45RCA4.js → chunk-RXMWJHWH.js} +1007 -495
  46. package/dist/chunk-RXMWJHWH.js.map +1 -0
  47. package/dist/{chunk-SHTGQGAU.js → chunk-V2YZWYXT.js} +3 -3
  48. package/dist/{chunk-BQ6FR32N.js → chunk-VD3QSMVY.js} +2 -2
  49. package/dist/cli.js +141 -115
  50. package/dist/cli.js.map +1 -1
  51. package/dist/{config-I4FMCJGZ.js → config-UCAFCS5W.js} +3 -4
  52. package/dist/config-editor-OU6PUY66.js +10 -0
  53. package/dist/{config-registry-CUMNXFGK.js → config-registry-ZXAIJNYB.js} +2 -3
  54. package/dist/{context-XM6E22LM.js → context-7MPU7RL5.js} +1 -2
  55. package/dist/core-plugins-R2EVZAJV.js +22 -0
  56. package/dist/{daemon-PXO5QPCR.js → daemon-DTA6KYYY.js} +4 -5
  57. package/dist/{dev-loader-DRU3R7ZM.js → dev-loader-7P3HZCIA.js} +1 -3
  58. package/dist/{dev-loader-DRU3R7ZM.js.map → dev-loader-7P3HZCIA.js.map} +1 -1
  59. package/dist/doctor-D723IB2I.js +9 -0
  60. package/dist/file-service-HHB3JQIO.js +8 -0
  61. package/dist/index.d.ts +41 -150
  62. package/dist/index.js +63 -29
  63. package/dist/index.js.map +1 -1
  64. package/dist/{install-cloudflared-AN24L4DP.js → install-cloudflared-JRJ4BSOM.js} +3 -4
  65. package/dist/{install-cloudflared-AN24L4DP.js.map → install-cloudflared-JRJ4BSOM.js.map} +1 -1
  66. package/dist/{install-context-XPWTFT3J.js → install-context-EHYV5WRY.js} +2 -3
  67. package/dist/{install-context-XPWTFT3J.js.map → install-context-EHYV5WRY.js.map} +1 -1
  68. package/dist/{install-jq-CRVDJGF3.js → install-jq-ISTGT263.js} +3 -4
  69. package/dist/{install-jq-CRVDJGF3.js.map → install-jq-ISTGT263.js.map} +1 -1
  70. package/dist/{integrate-G6CVXTGT.js → integrate-JIEZYDOR.js} +1 -2
  71. package/dist/{integrate-G6CVXTGT.js.map → integrate-JIEZYDOR.js.map} +1 -1
  72. package/dist/{log-LZ7FTRKG.js → log-YZ243M5G.js} +4 -3
  73. package/dist/{main-UVTZ46WP.js → main-RRSX5SRL.js} +117 -40
  74. package/dist/main-RRSX5SRL.js.map +1 -0
  75. package/dist/{menu-YDQ2LWAR.js → menu-ALFN37IR.js} +1 -2
  76. package/dist/notifications-MO23S7S3.js +8 -0
  77. package/dist/{plugin-create-5HQRF2ID.js → plugin-create-EHL76ZZG.js} +1 -2
  78. package/dist/{plugin-create-5HQRF2ID.js.map → plugin-create-EHL76ZZG.js.map} +1 -1
  79. package/dist/plugin-installer-5XHORMLS.js +9 -0
  80. package/dist/{plugin-registry-WB3DR67H.js → plugin-registry-6J3YSFHF.js} +1 -2
  81. package/dist/{plugin-search-HQ4WQKOF.js → plugin-search-MGKAL5JM.js} +1 -2
  82. package/dist/{plugin-search-HQ4WQKOF.js.map → plugin-search-MGKAL5JM.js.map} +1 -1
  83. package/dist/{post-upgrade-3ADZRMYJ.js → post-upgrade-Y26S2ZQ7.js} +6 -7
  84. package/dist/{post-upgrade-3ADZRMYJ.js.map → post-upgrade-Y26S2ZQ7.js.map} +1 -1
  85. package/dist/{read-text-file-IRZM3QLM.js → read-text-file-DJBTITIB.js} +1 -2
  86. package/dist/{registry-client-AVGRE4CF.js → registry-client-GTBWLXYU.js} +1 -2
  87. package/dist/{security-YNRBW6S7.js → security-2BA265LN.js} +1 -2
  88. package/dist/{settings-manager-MD2U4ZV2.js → settings-manager-B4UN2LAC.js} +1 -2
  89. package/dist/{setup-EYAFK2WI.js → setup-OI6A3OXW.js} +109 -80
  90. package/dist/setup-OI6A3OXW.js.map +1 -0
  91. package/dist/speech-GB7PHVQZ.js +9 -0
  92. package/dist/{suggest-7D6B542M.js → suggest-RST5VOHB.js} +1 -3
  93. package/dist/{suggest-7D6B542M.js.map → suggest-RST5VOHB.js.map} +1 -1
  94. package/dist/telegram-UVIAXADE.js +7 -0
  95. package/dist/tunnel-4WNFC7GO.js +7 -0
  96. package/dist/{tunnel-service-QJPUYEKU.js → tunnel-service-I2NFUX3V.js} +3 -4
  97. package/dist/{tunnel-service-QJPUYEKU.js.map → tunnel-service-I2NFUX3V.js.map} +1 -1
  98. package/dist/{validators-WSTBNKRW.js → validators-GITLOFXC.js} +1 -2
  99. package/dist/{version-NQZBM5M7.js → version-AXXV6IV2.js} +1 -2
  100. package/package.json +1 -3
  101. package/dist/adapter-LC2QSDAS.js +0 -15
  102. package/dist/adapter-Y55NXX6I.js +0 -1006
  103. package/dist/adapter-Y55NXX6I.js.map +0 -1
  104. package/dist/agent-catalog-YHBFERYO.js +0 -11
  105. package/dist/agent-store-VSHNY5GT.js +0 -9
  106. package/dist/api-server-7G3ZUZRM.js +0 -8
  107. package/dist/api-server-CAYNPUF2.js +0 -11
  108. package/dist/chunk-2YCW3QDV.js.map +0 -1
  109. package/dist/chunk-3ASUU6WW.js +0 -124
  110. package/dist/chunk-3ASUU6WW.js.map +0 -1
  111. package/dist/chunk-AD3X6DGK.js.map +0 -1
  112. package/dist/chunk-BLQUXO7S.js.map +0 -1
  113. package/dist/chunk-KMMEFXIE.js.map +0 -1
  114. package/dist/chunk-LP45RCA4.js.map +0 -1
  115. package/dist/chunk-ODUM3D6X.js.map +0 -1
  116. package/dist/chunk-QVMEF6FB.js.map +0 -1
  117. package/dist/chunk-TRXBJEZ5.js +0 -447
  118. package/dist/chunk-TRXBJEZ5.js.map +0 -1
  119. package/dist/chunk-VUNV25KB.js +0 -16
  120. package/dist/chunk-WIIZNPCR.js.map +0 -1
  121. package/dist/chunk-WXVT3AOY.js.map +0 -1
  122. package/dist/chunk-XIBG7LSL.js.map +0 -1
  123. package/dist/config-editor-3IKBPZA7.js +0 -11
  124. package/dist/core-plugins-ROU4GPLT.js +0 -23
  125. package/dist/dist-UHQK5CXN.js +0 -21151
  126. package/dist/dist-UHQK5CXN.js.map +0 -1
  127. package/dist/doctor-QZQAP46W.js +0 -10
  128. package/dist/file-service-EUODJAIT.js +0 -9
  129. package/dist/main-UVTZ46WP.js.map +0 -1
  130. package/dist/notifications-D5BRDNSU.js +0 -9
  131. package/dist/plugin-installer-GQ2P3Q3E.js +0 -23
  132. package/dist/plugin-installer-GQ2P3Q3E.js.map +0 -1
  133. package/dist/setup-EYAFK2WI.js.map +0 -1
  134. package/dist/slack-37ZWBDUI.js +0 -8
  135. package/dist/speech-2GHQNRIO.js +0 -9
  136. package/dist/telegram-2ZCCCZIY.js +0 -8
  137. package/dist/tunnel-45HA72MB.js +0 -8
  138. package/dist/version-NQZBM5M7.js.map +0 -1
  139. /package/dist/{adapter-LC2QSDAS.js.map → adapter-HGJENQCN.js.map} +0 -0
  140. /package/dist/{agent-catalog-YHBFERYO.js.map → agent-catalog-SZQQERV7.js.map} +0 -0
  141. /package/dist/{agent-dependencies-WS7Z2DFW.js.map → agent-dependencies-ED2ZTUHG.js.map} +0 -0
  142. /package/dist/{agent-registry-5LZT7CUB.js.map → agent-registry-YOGP656W.js.map} +0 -0
  143. /package/dist/{agent-store-VSHNY5GT.js.map → agent-store-5UHZH2XI.js.map} +0 -0
  144. /package/dist/{api-client-AQPNKXI2.js.map → api-client-XTLRRFPX.js.map} +0 -0
  145. /package/dist/{api-server-7G3ZUZRM.js.map → api-server-DSUW637I.js.map} +0 -0
  146. /package/dist/{api-server-CAYNPUF2.js.map → api-server-WFB5K6FP.js.map} +0 -0
  147. /package/dist/{autostart-6JS565RY.js.map → autostart-CUPZMKKC.js.map} +0 -0
  148. /package/dist/{chunk-PPSMUECX.js.map → chunk-2R5XM3ES.js.map} +0 -0
  149. /package/dist/{chunk-SNPYTMPR.js.map → chunk-3EWTPOF7.js.map} +0 -0
  150. /package/dist/{chunk-QAQDGPB4.js.map → chunk-43JVXFYP.js.map} +0 -0
  151. /package/dist/{chunk-A6Y4GZM3.js.map → chunk-566W6INH.js.map} +0 -0
  152. /package/dist/{chunk-36YQ44D7.js.map → chunk-5TCXYDLR.js.map} +0 -0
  153. /package/dist/{chunk-RBYBSSGO.js.map → chunk-FCTC7KDT.js.map} +0 -0
  154. /package/dist/{chunk-4GMLGCF2.js.map → chunk-JUFN4XMB.js.map} +0 -0
  155. /package/dist/{chunk-UMT7RU77.js.map → chunk-QBEQJFGL.js.map} +0 -0
  156. /package/dist/{chunk-SHTGQGAU.js.map → chunk-V2YZWYXT.js.map} +0 -0
  157. /package/dist/{chunk-BQ6FR32N.js.map → chunk-VD3QSMVY.js.map} +0 -0
  158. /package/dist/{chunk-VUNV25KB.js.map → config-UCAFCS5W.js.map} +0 -0
  159. /package/dist/{config-I4FMCJGZ.js.map → config-editor-OU6PUY66.js.map} +0 -0
  160. /package/dist/{config-editor-3IKBPZA7.js.map → config-registry-ZXAIJNYB.js.map} +0 -0
  161. /package/dist/{config-registry-CUMNXFGK.js.map → context-7MPU7RL5.js.map} +0 -0
  162. /package/dist/{context-XM6E22LM.js.map → core-plugins-R2EVZAJV.js.map} +0 -0
  163. /package/dist/{core-plugins-ROU4GPLT.js.map → daemon-DTA6KYYY.js.map} +0 -0
  164. /package/dist/{daemon-PXO5QPCR.js.map → doctor-D723IB2I.js.map} +0 -0
  165. /package/dist/{doctor-QZQAP46W.js.map → file-service-HHB3JQIO.js.map} +0 -0
  166. /package/dist/{file-service-EUODJAIT.js.map → log-YZ243M5G.js.map} +0 -0
  167. /package/dist/{log-LZ7FTRKG.js.map → menu-ALFN37IR.js.map} +0 -0
  168. /package/dist/{menu-YDQ2LWAR.js.map → notifications-MO23S7S3.js.map} +0 -0
  169. /package/dist/{notifications-D5BRDNSU.js.map → plugin-installer-5XHORMLS.js.map} +0 -0
  170. /package/dist/{plugin-registry-WB3DR67H.js.map → plugin-registry-6J3YSFHF.js.map} +0 -0
  171. /package/dist/{read-text-file-IRZM3QLM.js.map → read-text-file-DJBTITIB.js.map} +0 -0
  172. /package/dist/{registry-client-AVGRE4CF.js.map → registry-client-GTBWLXYU.js.map} +0 -0
  173. /package/dist/{security-YNRBW6S7.js.map → security-2BA265LN.js.map} +0 -0
  174. /package/dist/{settings-manager-MD2U4ZV2.js.map → settings-manager-B4UN2LAC.js.map} +0 -0
  175. /package/dist/{slack-37ZWBDUI.js.map → speech-GB7PHVQZ.js.map} +0 -0
  176. /package/dist/{speech-2GHQNRIO.js.map → telegram-UVIAXADE.js.map} +0 -0
  177. /package/dist/{telegram-2ZCCCZIY.js.map → tunnel-4WNFC7GO.js.map} +0 -0
  178. /package/dist/{tunnel-45HA72MB.js.map → validators-GITLOFXC.js.map} +0 -0
  179. /package/dist/{validators-WSTBNKRW.js.map → version-AXXV6IV2.js.map} +0 -0
package/dist/cli.js CHANGED
@@ -13,9 +13,8 @@ import {
13
13
  } from "./chunk-S64CB6J3.js";
14
14
  import {
15
15
  PLUGINS_DIR
16
- } from "./chunk-QVMEF6FB.js";
17
- import "./chunk-XMMAGAT4.js";
18
- import "./chunk-VUNV25KB.js";
16
+ } from "./chunk-JOMDPFQ2.js";
17
+ import "./chunk-R6KZYF7D.js";
19
18
 
20
19
  // src/cli.ts
21
20
  import { setDefaultAutoSelectFamily } from "net";
@@ -100,7 +99,7 @@ Connect messaging platforms (Telegram, Discord) to 28+ AI coding agents via ACP
100
99
 
101
100
  // src/cli/commands/version.ts
102
101
  async function cmdVersion() {
103
- const { getCurrentVersion: getCurrentVersion2 } = await import("./version-NQZBM5M7.js");
102
+ const { getCurrentVersion: getCurrentVersion2 } = await import("./version-AXXV6IV2.js");
104
103
  console.log(`openacp v${getCurrentVersion2()}`);
105
104
  }
106
105
 
@@ -207,10 +206,10 @@ Shows all plugins registered in the plugin registry.
207
206
  `);
208
207
  return;
209
208
  }
210
- const os = await import("os");
211
- const path4 = await import("path");
212
- const { PluginRegistry } = await import("./plugin-registry-WB3DR67H.js");
213
- const registryPath = path4.join(os.homedir(), ".openacp", "plugins.json");
209
+ const os3 = await import("os");
210
+ const path6 = await import("path");
211
+ const { PluginRegistry } = await import("./plugin-registry-6J3YSFHF.js");
212
+ const registryPath = path6.join(os3.homedir(), ".openacp", "plugins.json");
214
213
  const registry = new PluginRegistry(registryPath);
215
214
  await registry.load();
216
215
  const plugins = registry.list();
@@ -257,7 +256,7 @@ async function cmdPlugin(args2 = []) {
257
256
  case "list":
258
257
  return cmdPlugins(args2.slice(1));
259
258
  case "search": {
260
- const { cmdPluginSearch } = await import("./plugin-search-HQ4WQKOF.js");
259
+ const { cmdPluginSearch } = await import("./plugin-search-MGKAL5JM.js");
261
260
  await cmdPluginSearch(args2.slice(2));
262
261
  return;
263
262
  }
@@ -310,7 +309,7 @@ async function cmdPlugin(args2 = []) {
310
309
  return;
311
310
  }
312
311
  case "create": {
313
- const { cmdPluginCreate } = await import("./plugin-create-5HQRF2ID.js");
312
+ const { cmdPluginCreate } = await import("./plugin-create-EHL76ZZG.js");
314
313
  await cmdPluginCreate();
315
314
  return;
316
315
  }
@@ -321,10 +320,10 @@ async function cmdPlugin(args2 = []) {
321
320
  }
322
321
  }
323
322
  async function setPluginEnabled(name, enabled) {
324
- const os = await import("os");
325
- const path4 = await import("path");
326
- const { PluginRegistry } = await import("./plugin-registry-WB3DR67H.js");
327
- const registryPath = path4.join(os.homedir(), ".openacp", "plugins.json");
323
+ const os3 = await import("os");
324
+ const path6 = await import("path");
325
+ const { PluginRegistry } = await import("./plugin-registry-6J3YSFHF.js");
326
+ const registryPath = path6.join(os3.homedir(), ".openacp", "plugins.json");
328
327
  const registry = new PluginRegistry(registryPath);
329
328
  await registry.load();
330
329
  const entry = registry.get(name);
@@ -337,17 +336,17 @@ async function setPluginEnabled(name, enabled) {
337
336
  console.log(`Plugin ${name} ${enabled ? "enabled" : "disabled"}. Restart to apply.`);
338
337
  }
339
338
  async function configurePlugin(name) {
340
- const os = await import("os");
341
- const path4 = await import("path");
342
- const { corePlugins } = await import("./core-plugins-ROU4GPLT.js");
343
- const { SettingsManager } = await import("./settings-manager-MD2U4ZV2.js");
344
- const { createInstallContext } = await import("./install-context-XPWTFT3J.js");
339
+ const os3 = await import("os");
340
+ const path6 = await import("path");
341
+ const { corePlugins } = await import("./core-plugins-R2EVZAJV.js");
342
+ const { SettingsManager } = await import("./settings-manager-B4UN2LAC.js");
343
+ const { createInstallContext } = await import("./install-context-EHYV5WRY.js");
345
344
  const plugin = corePlugins.find((p) => p.name === name);
346
345
  if (!plugin) {
347
346
  console.error(`Plugin "${name}" not found.`);
348
347
  process.exit(1);
349
348
  }
350
- const basePath = path4.join(os.homedir(), ".openacp", "plugins");
349
+ const basePath = path6.join(os3.homedir(), ".openacp", "plugins", "data");
351
350
  const settingsManager = new SettingsManager(basePath);
352
351
  const ctx = createInstallContext({ pluginName: name, settingsManager, basePath });
353
352
  if (plugin.configure) {
@@ -359,13 +358,13 @@ async function configurePlugin(name) {
359
358
  }
360
359
  }
361
360
  async function installPlugin(input) {
362
- const os = await import("os");
363
- const path4 = await import("path");
364
- const { execSync: execSync3 } = await import("child_process");
365
- const { getCurrentVersion: getCurrentVersion2 } = await import("./version-NQZBM5M7.js");
366
- const { SettingsManager } = await import("./settings-manager-MD2U4ZV2.js");
367
- const { createInstallContext } = await import("./install-context-XPWTFT3J.js");
368
- const { PluginRegistry } = await import("./plugin-registry-WB3DR67H.js");
361
+ const os3 = await import("os");
362
+ const path6 = await import("path");
363
+ const { execFileSync } = await import("child_process");
364
+ const { getCurrentVersion: getCurrentVersion2 } = await import("./version-AXXV6IV2.js");
365
+ const { SettingsManager } = await import("./settings-manager-B4UN2LAC.js");
366
+ const { createInstallContext } = await import("./install-context-EHYV5WRY.js");
367
+ const { PluginRegistry } = await import("./plugin-registry-6J3YSFHF.js");
369
368
  let pkgName;
370
369
  let pkgVersion;
371
370
  if (input.startsWith("@")) {
@@ -391,7 +390,7 @@ async function installPlugin(input) {
391
390
  pkgName = input;
392
391
  }
393
392
  }
394
- const { RegistryClient } = await import("./registry-client-AVGRE4CF.js");
393
+ const { RegistryClient } = await import("./registry-client-GTBWLXYU.js");
395
394
  const client = new RegistryClient();
396
395
  let registryPlugin = null;
397
396
  try {
@@ -408,11 +407,11 @@ async function installPlugin(input) {
408
407
  }
409
408
  const installSpec = pkgVersion ? `${pkgName}@${pkgVersion}` : pkgName;
410
409
  console.log(`Installing ${installSpec}...`);
411
- const { corePlugins } = await import("./core-plugins-ROU4GPLT.js");
410
+ const { corePlugins } = await import("./core-plugins-R2EVZAJV.js");
412
411
  const builtinPlugin = corePlugins.find((p) => p.name === pkgName);
413
- const basePath = path4.join(os.homedir(), ".openacp", "plugins");
412
+ const basePath = path6.join(os3.homedir(), ".openacp", "plugins", "data");
414
413
  const settingsManager = new SettingsManager(basePath);
415
- const registryPath = path4.join(os.homedir(), ".openacp", "plugins.json");
414
+ const registryPath = path6.join(os3.homedir(), ".openacp", "plugins.json");
416
415
  const pluginRegistry = new PluginRegistry(registryPath);
417
416
  await pluginRegistry.load();
418
417
  if (builtinPlugin) {
@@ -431,10 +430,10 @@ async function installPlugin(input) {
431
430
  console.log(`\u2713 ${builtinPlugin.name} installed! Restart to activate.`);
432
431
  return;
433
432
  }
434
- const pluginsDir = path4.join(os.homedir(), ".openacp", "plugins");
435
- const nodeModulesDir = path4.join(pluginsDir, "node_modules");
433
+ const pluginsDir = path6.join(os3.homedir(), ".openacp", "plugins");
434
+ const nodeModulesDir = path6.join(pluginsDir, "node_modules");
436
435
  try {
437
- execSync3(`npm install ${installSpec} --prefix "${pluginsDir}" --save`, {
436
+ execFileSync("npm", ["install", installSpec, "--prefix", pluginsDir, "--save"], {
438
437
  stdio: "inherit",
439
438
  timeout: 6e4
440
439
  });
@@ -443,13 +442,15 @@ async function installPlugin(input) {
443
442
  process.exit(1);
444
443
  }
445
444
  const cliVersion = getCurrentVersion2();
445
+ const isLocalPath = pkgName.startsWith("/") || pkgName.startsWith(".");
446
446
  try {
447
- const installedPkgPath = path4.join(nodeModulesDir, pkgName, "package.json");
447
+ const pluginRoot = isLocalPath ? path6.resolve(pkgName) : path6.join(nodeModulesDir, pkgName);
448
+ const installedPkgPath = path6.join(pluginRoot, "package.json");
448
449
  const { readFileSync } = await import("fs");
449
450
  const installedPkg = JSON.parse(readFileSync(installedPkgPath, "utf-8"));
450
451
  const minVersion = installedPkg.engines?.openacp?.replace(/[>=^~\s]/g, "");
451
452
  if (minVersion) {
452
- const { compareVersions: compareVersions2 } = await import("./version-NQZBM5M7.js");
453
+ const { compareVersions: compareVersions2 } = await import("./version-AXXV6IV2.js");
453
454
  if (compareVersions2(cliVersion, minVersion) < 0) {
454
455
  console.log(`
455
456
  \u26A0\uFE0F This plugin requires OpenACP >= ${minVersion}. You have ${cliVersion}.`);
@@ -457,7 +458,7 @@ async function installPlugin(input) {
457
458
  `);
458
459
  }
459
460
  }
460
- const pluginModule = await import(path4.join(nodeModulesDir, pkgName, installedPkg.main ?? "dist/index.js"));
461
+ const pluginModule = await import(path6.join(pluginRoot, installedPkg.main ?? "dist/index.js"));
461
462
  const plugin = pluginModule.default;
462
463
  if (plugin?.install) {
463
464
  const ctx = createInstallContext({ pluginName: plugin.name ?? pkgName, settingsManager, basePath });
@@ -484,11 +485,11 @@ async function installPlugin(input) {
484
485
  }
485
486
  }
486
487
  async function uninstallPlugin(name, purge) {
487
- const os = await import("os");
488
- const path4 = await import("path");
488
+ const os3 = await import("os");
489
+ const path6 = await import("path");
489
490
  const fs4 = await import("fs");
490
- const { PluginRegistry } = await import("./plugin-registry-WB3DR67H.js");
491
- const registryPath = path4.join(os.homedir(), ".openacp", "plugins.json");
491
+ const { PluginRegistry } = await import("./plugin-registry-6J3YSFHF.js");
492
+ const registryPath = path6.join(os3.homedir(), ".openacp", "plugins.json");
492
493
  const registry = new PluginRegistry(registryPath);
493
494
  await registry.load();
494
495
  const entry = registry.get(name);
@@ -501,12 +502,12 @@ async function uninstallPlugin(name, purge) {
501
502
  process.exit(1);
502
503
  }
503
504
  try {
504
- const { corePlugins } = await import("./core-plugins-ROU4GPLT.js");
505
+ const { corePlugins } = await import("./core-plugins-R2EVZAJV.js");
505
506
  const plugin = corePlugins.find((p) => p.name === name);
506
507
  if (plugin?.uninstall) {
507
- const { SettingsManager } = await import("./settings-manager-MD2U4ZV2.js");
508
- const { createInstallContext } = await import("./install-context-XPWTFT3J.js");
509
- const basePath = path4.join(os.homedir(), ".openacp", "plugins");
508
+ const { SettingsManager } = await import("./settings-manager-B4UN2LAC.js");
509
+ const { createInstallContext } = await import("./install-context-EHYV5WRY.js");
510
+ const basePath = path6.join(os3.homedir(), ".openacp", "plugins", "data");
510
511
  const settingsManager = new SettingsManager(basePath);
511
512
  const ctx = createInstallContext({ pluginName: name, settingsManager, basePath });
512
513
  await plugin.uninstall(ctx, { purge });
@@ -514,7 +515,7 @@ async function uninstallPlugin(name, purge) {
514
515
  } catch {
515
516
  }
516
517
  if (purge) {
517
- const pluginDir = path4.join(os.homedir(), ".openacp", "plugins", name);
518
+ const pluginDir = path6.join(os3.homedir(), ".openacp", "plugins", name);
518
519
  fs4.rmSync(pluginDir, { recursive: true, force: true });
519
520
  }
520
521
  registry.remove(name);
@@ -920,18 +921,19 @@ Shows the version of the currently running daemon process.
920
921
  console.error(`Error: ${data.error}`);
921
922
  process.exit(1);
922
923
  }
924
+ const s = data.session ?? data;
923
925
  console.log(`Session details:`);
924
- console.log(` ID : ${data.id}`);
925
- console.log(` Agent : ${data.agent}`);
926
- console.log(` Status : ${data.status}`);
927
- console.log(` Name : ${data.name ?? "(none)"}`);
928
- console.log(` Workspace : ${data.workspace}`);
929
- console.log(` Created : ${data.createdAt}`);
930
- console.log(` Dangerous : ${data.dangerous}`);
931
- console.log(` Queue depth : ${data.queueDepth}`);
932
- console.log(` Prompt active : ${data.promptActive}`);
933
- console.log(` Channel : ${data.channelId ?? "(none)"}`);
934
- console.log(` Thread : ${data.threadId ?? "(none)"}`);
926
+ console.log(` ID : ${s.id}`);
927
+ console.log(` Agent : ${s.agent}`);
928
+ console.log(` Status : ${s.status}`);
929
+ console.log(` Name : ${s.name ?? "(none)"}`);
930
+ console.log(` Workspace : ${s.workspace}`);
931
+ console.log(` Created : ${s.createdAt}`);
932
+ console.log(` Dangerous : ${s.dangerousMode}`);
933
+ console.log(` Queue depth : ${s.queueDepth}`);
934
+ console.log(` Prompt active : ${s.promptRunning}`);
935
+ console.log(` Channel : ${s.channelId ?? "(none)"}`);
936
+ console.log(` Thread : ${s.threadId ?? "(none)"}`);
935
937
  } else if (subCmd === "dangerous") {
936
938
  const sessionId = args2[2];
937
939
  if (!sessionId) {
@@ -962,19 +964,23 @@ Shows the version of the currently running daemon process.
962
964
  console.error(`Error: ${data.error}`);
963
965
  process.exit(1);
964
966
  }
965
- const uptimeSeconds = typeof data.uptimeSeconds === "number" ? data.uptimeSeconds : 0;
967
+ const uptimeMs = typeof data.uptime === "number" ? data.uptime : 0;
968
+ const uptimeSeconds = Math.floor(uptimeMs / 1e3);
966
969
  const hours = Math.floor(uptimeSeconds / 3600);
967
970
  const minutes = Math.floor(uptimeSeconds % 3600 / 60);
968
- const memoryBytes = typeof data.memoryUsage === "number" ? data.memoryUsage : 0;
969
- const memoryMB = (memoryBytes / 1024 / 1024).toFixed(1);
971
+ const mem = data.memory;
972
+ const memoryMB = mem ? (mem.rss / 1024 / 1024).toFixed(1) : "0.0";
970
973
  const sessions = data.sessions ?? {};
974
+ const tunnel = data.tunnel;
975
+ const tunnelStr = tunnel?.enabled ? `${tunnel.url}` : "disabled";
976
+ const adapters = Array.isArray(data.adapters) ? data.adapters.join(", ") : String(data.adapters ?? "none");
971
977
  console.log(`Status : ${data.status}`);
972
978
  console.log(`Uptime : ${hours}h ${minutes}m`);
973
979
  console.log(`Version : ${data.version}`);
974
980
  console.log(`Memory : ${memoryMB} MB`);
975
981
  console.log(`Sessions : ${sessions.active ?? 0} active / ${sessions.total ?? 0} total`);
976
- console.log(`Adapters : ${data.adapters}`);
977
- console.log(`Tunnel : ${data.tunnel}`);
982
+ console.log(`Adapters : ${adapters}`);
983
+ console.log(`Tunnel : ${tunnelStr}`);
978
984
  } else if (subCmd === "restart") {
979
985
  const res = await apiCall(port, "/api/restart", { method: "POST" });
980
986
  const data = await res.json();
@@ -1076,7 +1082,7 @@ Shows the version of the currently running daemon process.
1076
1082
  }
1077
1083
  console.log(`Daemon version: ${data.version}`);
1078
1084
  } else {
1079
- const { suggestMatch } = await import("./suggest-7D6B542M.js");
1085
+ const { suggestMatch } = await import("./suggest-RST5VOHB.js");
1080
1086
  const apiSubcommands = [
1081
1087
  "new",
1082
1088
  "cancel",
@@ -1134,8 +1140,8 @@ Requires an existing config \u2014 run 'openacp' first to set up.
1134
1140
  return;
1135
1141
  }
1136
1142
  await checkAndPromptUpdate();
1137
- const { startDaemon, getPidPath } = await import("./daemon-PXO5QPCR.js");
1138
- const { ConfigManager } = await import("./config-I4FMCJGZ.js");
1143
+ const { startDaemon, getPidPath } = await import("./daemon-DTA6KYYY.js");
1144
+ const { ConfigManager } = await import("./config-UCAFCS5W.js");
1139
1145
  const cm = new ConfigManager();
1140
1146
  if (await cm.exists()) {
1141
1147
  await cm.load();
@@ -1165,7 +1171,7 @@ Sends a stop signal to the running OpenACP daemon process.
1165
1171
  `);
1166
1172
  return;
1167
1173
  }
1168
- const { stopDaemon } = await import("./daemon-PXO5QPCR.js");
1174
+ const { stopDaemon } = await import("./daemon-DTA6KYYY.js");
1169
1175
  const result = await stopDaemon();
1170
1176
  if (result.stopped) {
1171
1177
  console.log(`OpenACP daemon stopped (was PID ${result.pid})`);
@@ -1188,7 +1194,7 @@ Shows whether the OpenACP daemon is running and its PID.
1188
1194
  `);
1189
1195
  return;
1190
1196
  }
1191
- const { getStatus } = await import("./daemon-PXO5QPCR.js");
1197
+ const { getStatus } = await import("./daemon-DTA6KYYY.js");
1192
1198
  const status = getStatus();
1193
1199
  if (status.running) {
1194
1200
  console.log(`OpenACP is running (PID ${status.pid})`);
@@ -1214,7 +1220,7 @@ Log file location is configured in config (default: ~/.openacp/logs/).
1214
1220
  return;
1215
1221
  }
1216
1222
  const { spawn } = await import("child_process");
1217
- const { ConfigManager, expandHome } = await import("./config-I4FMCJGZ.js");
1223
+ const { ConfigManager, expandHome } = await import("./config-UCAFCS5W.js");
1218
1224
  const pathMod = await import("path");
1219
1225
  const cm = new ConfigManager();
1220
1226
  let logDir = "~/.openacp/logs";
@@ -1286,11 +1292,11 @@ the API for live updates. When stopped, edits config file directly.
1286
1292
  console.error("Usage: openacp config set <path> <value>");
1287
1293
  process.exit(1);
1288
1294
  }
1289
- const { ConfigSchema } = await import("./config-I4FMCJGZ.js");
1295
+ const { ConfigSchema } = await import("./config-UCAFCS5W.js");
1290
1296
  const topLevelKey = configPath.split(".")[0];
1291
1297
  const validConfigKeys = Object.keys(ConfigSchema.shape);
1292
1298
  if (!validConfigKeys.includes(topLevelKey)) {
1293
- const { suggestMatch } = await import("./suggest-7D6B542M.js");
1299
+ const { suggestMatch } = await import("./suggest-RST5VOHB.js");
1294
1300
  const suggestion = suggestMatch(topLevelKey, validConfigKeys);
1295
1301
  console.error(`Unknown config key: ${topLevelKey}`);
1296
1302
  if (suggestion) console.error(`Did you mean: ${suggestion}?`);
@@ -1318,7 +1324,7 @@ the API for live updates. When stopped, edits config file directly.
1318
1324
  console.log("Note: restart required for this change to take effect.");
1319
1325
  }
1320
1326
  } else {
1321
- const { ConfigManager: ConfigManager2 } = await import("./config-I4FMCJGZ.js");
1327
+ const { ConfigManager: ConfigManager2 } = await import("./config-UCAFCS5W.js");
1322
1328
  const cm2 = new ConfigManager2();
1323
1329
  if (!await cm2.exists()) {
1324
1330
  console.error('No config found. Run "openacp" first to set up.');
@@ -1331,8 +1337,8 @@ the API for live updates. When stopped, edits config file directly.
1331
1337
  }
1332
1338
  return;
1333
1339
  }
1334
- const { runConfigEditor } = await import("./config-editor-3IKBPZA7.js");
1335
- const { ConfigManager } = await import("./config-I4FMCJGZ.js");
1340
+ const { runConfigEditor } = await import("./config-editor-OU6PUY66.js");
1341
+ const { ConfigManager } = await import("./config-UCAFCS5W.js");
1336
1342
  const cm = new ConfigManager();
1337
1343
  if (!await cm.exists()) {
1338
1344
  console.error('No config found. Run "openacp" first to set up.');
@@ -1362,7 +1368,7 @@ start fresh with the setup wizard. The daemon must be stopped first.
1362
1368
  `);
1363
1369
  return;
1364
1370
  }
1365
- const { getStatus } = await import("./daemon-PXO5QPCR.js");
1371
+ const { getStatus } = await import("./daemon-DTA6KYYY.js");
1366
1372
  const status = getStatus();
1367
1373
  if (status.running) {
1368
1374
  console.error("OpenACP is running. Stop it first: openacp stop");
@@ -1377,12 +1383,12 @@ start fresh with the setup wizard. The daemon must be stopped first.
1377
1383
  console.log("Aborted.");
1378
1384
  return;
1379
1385
  }
1380
- const { uninstallAutoStart } = await import("./autostart-6JS565RY.js");
1386
+ const { uninstallAutoStart } = await import("./autostart-CUPZMKKC.js");
1381
1387
  uninstallAutoStart();
1382
1388
  const fs4 = await import("fs");
1383
- const os = await import("os");
1384
- const path4 = await import("path");
1385
- const openacpDir = path4.join(os.homedir(), ".openacp");
1389
+ const os3 = await import("os");
1390
+ const path6 = await import("path");
1391
+ const openacpDir = path6.join(os3.homedir(), ".openacp");
1386
1392
  fs4.rmSync(openacpDir, { recursive: true, force: true });
1387
1393
  console.log("Reset complete. Run `openacp` to set up again.");
1388
1394
  }
@@ -1466,7 +1472,7 @@ as a messaging thread. Requires a running daemon.
1466
1472
  process.exit(1);
1467
1473
  }
1468
1474
  try {
1469
- const { apiCall: apiCall2 } = await import("./api-client-AQPNKXI2.js");
1475
+ const { apiCall: apiCall2 } = await import("./api-client-XTLRRFPX.js");
1470
1476
  const res = await apiCall2(port, "/api/sessions/adopt", {
1471
1477
  method: "POST",
1472
1478
  headers: { "Content-Type": "application/json" },
@@ -1518,7 +1524,7 @@ a "Handoff" slash command to Claude Code.
1518
1524
  `);
1519
1525
  return;
1520
1526
  }
1521
- const { getIntegration, listIntegrations } = await import("./integrate-G6CVXTGT.js");
1527
+ const { getIntegration, listIntegrations } = await import("./integrate-JIEZYDOR.js");
1522
1528
  const agent = args2[1];
1523
1529
  const uninstall = args2.includes("--uninstall");
1524
1530
  if (!agent) {
@@ -1528,7 +1534,7 @@ a "Handoff" slash command to Claude Code.
1528
1534
  }
1529
1535
  const integration = getIntegration(agent);
1530
1536
  if (!integration) {
1531
- const { suggestMatch } = await import("./suggest-7D6B542M.js");
1537
+ const { suggestMatch } = await import("./suggest-RST5VOHB.js");
1532
1538
  const available = listIntegrations();
1533
1539
  const suggestion = suggestMatch(agent, available);
1534
1540
  console.log(`No integration available for '${agent}'.`);
@@ -1585,7 +1591,7 @@ Fixable issues can be auto-repaired when not using --dry-run.
1585
1591
  (a) => a.startsWith("--") && !knownFlags.includes(a)
1586
1592
  );
1587
1593
  if (unknownFlags.length > 0) {
1588
- const { suggestMatch } = await import("./suggest-7D6B542M.js");
1594
+ const { suggestMatch } = await import("./suggest-RST5VOHB.js");
1589
1595
  for (const flag of unknownFlags) {
1590
1596
  const suggestion = suggestMatch(flag, knownFlags);
1591
1597
  console.error(`Unknown flag: ${flag}`);
@@ -1594,7 +1600,7 @@ Fixable issues can be auto-repaired when not using --dry-run.
1594
1600
  process.exit(1);
1595
1601
  }
1596
1602
  const dryRun = args2.includes("--dry-run");
1597
- const { DoctorEngine } = await import("./doctor-QZQAP46W.js");
1603
+ const { DoctorEngine } = await import("./doctor-D723IB2I.js");
1598
1604
  const engine = new DoctorEngine({ dryRun });
1599
1605
  console.log("\n\u{1FA7A} OpenACP Doctor\n");
1600
1606
  const report = await engine.runAll();
@@ -1692,7 +1698,7 @@ bypassing the normal staleness check.
1692
1698
  case void 0:
1693
1699
  return agentsList();
1694
1700
  default: {
1695
- const { suggestMatch } = await import("./suggest-7D6B542M.js");
1701
+ const { suggestMatch } = await import("./suggest-RST5VOHB.js");
1696
1702
  const agentSubcommands = ["install", "uninstall", "refresh", "info", "run", "list"];
1697
1703
  const suggestion = suggestMatch(subcommand, agentSubcommands);
1698
1704
  console.error(`Unknown agents command: ${subcommand}`);
@@ -1704,7 +1710,7 @@ Run 'openacp agents' to see available agents.`);
1704
1710
  }
1705
1711
  }
1706
1712
  async function agentsList() {
1707
- const { AgentCatalog } = await import("./agent-catalog-YHBFERYO.js");
1713
+ const { AgentCatalog } = await import("./agent-catalog-SZQQERV7.js");
1708
1714
  const catalog = new AgentCatalog();
1709
1715
  catalog.load();
1710
1716
  await catalog.refreshRegistryIfStale();
@@ -1767,7 +1773,7 @@ Run 'openacp agents' to see available agents.
1767
1773
  `);
1768
1774
  return;
1769
1775
  }
1770
- const { AgentCatalog } = await import("./agent-catalog-YHBFERYO.js");
1776
+ const { AgentCatalog } = await import("./agent-catalog-SZQQERV7.js");
1771
1777
  const catalog = new AgentCatalog();
1772
1778
  catalog.load();
1773
1779
  await catalog.refreshRegistryIfStale();
@@ -1802,17 +1808,17 @@ Run 'openacp agents' to see available agents.
1802
1808
  const result = await catalog.install(nameOrId, progress, force);
1803
1809
  if (!result.ok) {
1804
1810
  if (result.error?.includes("not found")) {
1805
- const { suggestMatch } = await import("./suggest-7D6B542M.js");
1811
+ const { suggestMatch } = await import("./suggest-RST5VOHB.js");
1806
1812
  const allKeys = catalog.getAvailable().map((a) => a.key);
1807
1813
  const suggestion = suggestMatch(nameOrId, allKeys);
1808
1814
  if (suggestion) console.log(` Did you mean: ${suggestion}?`);
1809
1815
  }
1810
1816
  process.exit(1);
1811
1817
  }
1812
- const { getAgentCapabilities } = await import("./agent-dependencies-WS7Z2DFW.js");
1818
+ const { getAgentCapabilities } = await import("./agent-dependencies-ED2ZTUHG.js");
1813
1819
  const caps = getAgentCapabilities(result.agentKey);
1814
1820
  if (caps.integration) {
1815
- const { installIntegration } = await import("./integrate-G6CVXTGT.js");
1821
+ const { installIntegration } = await import("./integrate-JIEZYDOR.js");
1816
1822
  const intResult = await installIntegration(result.agentKey, caps.integration);
1817
1823
  if (intResult.success) {
1818
1824
  console.log(` \x1B[32m\u2713\x1B[0m Handoff integration installed for ${result.agentKey}`);
@@ -1846,15 +1852,15 @@ async function agentsUninstall(name, help = false) {
1846
1852
  `);
1847
1853
  return;
1848
1854
  }
1849
- const { AgentCatalog } = await import("./agent-catalog-YHBFERYO.js");
1855
+ const { AgentCatalog } = await import("./agent-catalog-SZQQERV7.js");
1850
1856
  const catalog = new AgentCatalog();
1851
1857
  catalog.load();
1852
1858
  const result = await catalog.uninstall(name);
1853
1859
  if (result.ok) {
1854
- const { getAgentCapabilities } = await import("./agent-dependencies-WS7Z2DFW.js");
1860
+ const { getAgentCapabilities } = await import("./agent-dependencies-ED2ZTUHG.js");
1855
1861
  const caps = getAgentCapabilities(name);
1856
1862
  if (caps.integration) {
1857
- const { uninstallIntegration } = await import("./integrate-G6CVXTGT.js");
1863
+ const { uninstallIntegration } = await import("./integrate-JIEZYDOR.js");
1858
1864
  await uninstallIntegration(name, caps.integration);
1859
1865
  console.log(` \x1B[32m\u2713\x1B[0m Handoff integration removed for ${name}`);
1860
1866
  }
@@ -1865,7 +1871,7 @@ async function agentsUninstall(name, help = false) {
1865
1871
  console.log(`
1866
1872
  \x1B[31m\u2717 ${result.error}\x1B[0m`);
1867
1873
  if (result.error?.includes("not installed")) {
1868
- const { suggestMatch } = await import("./suggest-7D6B542M.js");
1874
+ const { suggestMatch } = await import("./suggest-RST5VOHB.js");
1869
1875
  const installedKeys = Object.keys(catalog.getInstalledEntries());
1870
1876
  const suggestion = suggestMatch(name, installedKeys);
1871
1877
  if (suggestion) console.log(` Did you mean: ${suggestion}?`);
@@ -1874,7 +1880,7 @@ async function agentsUninstall(name, help = false) {
1874
1880
  }
1875
1881
  }
1876
1882
  async function agentsRefresh() {
1877
- const { AgentCatalog } = await import("./agent-catalog-YHBFERYO.js");
1883
+ const { AgentCatalog } = await import("./agent-catalog-SZQQERV7.js");
1878
1884
  const catalog = new AgentCatalog();
1879
1885
  catalog.load();
1880
1886
  console.log("\n Updating agent list...");
@@ -1901,10 +1907,10 @@ whether the agent is installed or available from the registry.
1901
1907
  `);
1902
1908
  return;
1903
1909
  }
1904
- const { AgentCatalog } = await import("./agent-catalog-YHBFERYO.js");
1910
+ const { AgentCatalog } = await import("./agent-catalog-SZQQERV7.js");
1905
1911
  const catalog = new AgentCatalog();
1906
1912
  catalog.load();
1907
- const { getAgentSetup } = await import("./agent-dependencies-WS7Z2DFW.js");
1913
+ const { getAgentSetup } = await import("./agent-dependencies-ED2ZTUHG.js");
1908
1914
  const installed = catalog.getInstalledAgent(nameOrId);
1909
1915
  if (installed) {
1910
1916
  console.log(`
@@ -1951,7 +1957,7 @@ whether the agent is installed or available from the registry.
1951
1957
  `);
1952
1958
  return;
1953
1959
  }
1954
- const { suggestMatch } = await import("./suggest-7D6B542M.js");
1960
+ const { suggestMatch } = await import("./suggest-RST5VOHB.js");
1955
1961
  const allKeys = catalog.getAvailable().map((a) => a.key);
1956
1962
  const suggestion = suggestMatch(nameOrId, allKeys);
1957
1963
  console.log(`
@@ -1982,12 +1988,12 @@ ACP-specific flags are automatically stripped.
1982
1988
  `);
1983
1989
  return;
1984
1990
  }
1985
- const { AgentCatalog } = await import("./agent-catalog-YHBFERYO.js");
1991
+ const { AgentCatalog } = await import("./agent-catalog-SZQQERV7.js");
1986
1992
  const catalog = new AgentCatalog();
1987
1993
  catalog.load();
1988
1994
  const installed = catalog.getInstalledAgent(nameOrId);
1989
1995
  if (!installed) {
1990
- const { suggestMatch } = await import("./suggest-7D6B542M.js");
1996
+ const { suggestMatch } = await import("./suggest-RST5VOHB.js");
1991
1997
  const installedKeys = Object.keys(catalog.getInstalledEntries());
1992
1998
  const suggestion = suggestMatch(nameOrId, installedKeys);
1993
1999
  console.log(`
@@ -2115,23 +2121,38 @@ Tunnel Management:
2115
2121
  }
2116
2122
 
2117
2123
  // src/cli/commands/onboard.ts
2124
+ import path3 from "path";
2125
+ import os from "os";
2126
+ var OPENACP_DIR = path3.join(os.homedir(), ".openacp");
2127
+ var PLUGINS_DATA_DIR = path3.join(OPENACP_DIR, "plugins", "data");
2128
+ var REGISTRY_PATH = path3.join(OPENACP_DIR, "plugins.json");
2118
2129
  async function cmdOnboard() {
2119
- const { ConfigManager } = await import("./config-I4FMCJGZ.js");
2130
+ const { ConfigManager } = await import("./config-UCAFCS5W.js");
2131
+ const { SettingsManager } = await import("./settings-manager-B4UN2LAC.js");
2132
+ const { PluginRegistry } = await import("./plugin-registry-6J3YSFHF.js");
2120
2133
  const cm = new ConfigManager();
2134
+ const settingsManager = new SettingsManager(PLUGINS_DATA_DIR);
2135
+ const pluginRegistry = new PluginRegistry(REGISTRY_PATH);
2136
+ await pluginRegistry.load();
2121
2137
  if (await cm.exists()) {
2122
- const { runReconfigure } = await import("./setup-EYAFK2WI.js");
2138
+ const { runReconfigure } = await import("./setup-OI6A3OXW.js");
2123
2139
  await runReconfigure(cm);
2124
2140
  } else {
2125
- const { runSetup } = await import("./setup-EYAFK2WI.js");
2126
- await runSetup(cm, { skipRunMode: true });
2141
+ const { runSetup } = await import("./setup-OI6A3OXW.js");
2142
+ await runSetup(cm, { skipRunMode: true, settingsManager, pluginRegistry });
2127
2143
  }
2128
2144
  }
2129
2145
 
2130
2146
  // src/cli/commands/default.ts
2147
+ import path4 from "path";
2148
+ import os2 from "os";
2149
+ var OPENACP_DIR2 = path4.join(os2.homedir(), ".openacp");
2150
+ var PLUGINS_DATA_DIR2 = path4.join(OPENACP_DIR2, "plugins", "data");
2151
+ var REGISTRY_PATH2 = path4.join(OPENACP_DIR2, "plugins.json");
2131
2152
  async function cmdDefault(command2) {
2132
2153
  const forceForeground = command2 === "--foreground";
2133
2154
  if (command2 && !command2.startsWith("-")) {
2134
- const { suggestMatch } = await import("./suggest-7D6B542M.js");
2155
+ const { suggestMatch } = await import("./suggest-RST5VOHB.js");
2135
2156
  const topLevelCommands = [
2136
2157
  "start",
2137
2158
  "stop",
@@ -2158,17 +2179,22 @@ async function cmdDefault(command2) {
2158
2179
  process.exit(1);
2159
2180
  }
2160
2181
  await checkAndPromptUpdate();
2161
- const { ConfigManager } = await import("./config-I4FMCJGZ.js");
2182
+ const { ConfigManager } = await import("./config-UCAFCS5W.js");
2162
2183
  const cm = new ConfigManager();
2163
2184
  if (!await cm.exists()) {
2164
- const { runSetup } = await import("./setup-EYAFK2WI.js");
2165
- const shouldStart = await runSetup(cm);
2185
+ const { SettingsManager } = await import("./settings-manager-B4UN2LAC.js");
2186
+ const { PluginRegistry } = await import("./plugin-registry-6J3YSFHF.js");
2187
+ const settingsManager = new SettingsManager(PLUGINS_DATA_DIR2);
2188
+ const pluginRegistry = new PluginRegistry(REGISTRY_PATH2);
2189
+ await pluginRegistry.load();
2190
+ const { runSetup } = await import("./setup-OI6A3OXW.js");
2191
+ const shouldStart = await runSetup(cm, { settingsManager, pluginRegistry });
2166
2192
  if (!shouldStart) process.exit(0);
2167
2193
  }
2168
2194
  await cm.load();
2169
2195
  const config = cm.get();
2170
2196
  if (!forceForeground && config.runMode === "daemon") {
2171
- const { startDaemon, getPidPath } = await import("./daemon-PXO5QPCR.js");
2197
+ const { startDaemon, getPidPath } = await import("./daemon-DTA6KYYY.js");
2172
2198
  const result = startDaemon(getPidPath(), config.logging.logDir);
2173
2199
  if ("error" in result) {
2174
2200
  console.error(result.error);
@@ -2177,15 +2203,15 @@ async function cmdDefault(command2) {
2177
2203
  console.log(`OpenACP daemon started (PID ${result.pid})`);
2178
2204
  return;
2179
2205
  }
2180
- const { markRunning } = await import("./daemon-PXO5QPCR.js");
2206
+ const { markRunning } = await import("./daemon-DTA6KYYY.js");
2181
2207
  markRunning();
2182
- const { startServer } = await import("./main-UVTZ46WP.js");
2208
+ const { startServer } = await import("./main-RRSX5SRL.js");
2183
2209
  await startServer();
2184
2210
  }
2185
2211
 
2186
2212
  // src/cli/commands/dev.ts
2187
2213
  import fs3 from "fs";
2188
- import path3 from "path";
2214
+ import path5 from "path";
2189
2215
  async function cmdDev(args2 = []) {
2190
2216
  if (wantsHelp(args2)) {
2191
2217
  console.log(`
@@ -2212,12 +2238,12 @@ async function cmdDev(args2 = []) {
2212
2238
  console.error("Error: missing plugin path. Usage: openacp dev <plugin-path>");
2213
2239
  process.exit(1);
2214
2240
  }
2215
- const pluginPath = path3.resolve(pluginPathArg);
2241
+ const pluginPath = path5.resolve(pluginPathArg);
2216
2242
  if (!fs3.existsSync(pluginPath)) {
2217
2243
  console.error(`Error: plugin path does not exist: ${pluginPath}`);
2218
2244
  process.exit(1);
2219
2245
  }
2220
- const tsconfigPath = path3.join(pluginPath, "tsconfig.json");
2246
+ const tsconfigPath = path5.join(pluginPath, "tsconfig.json");
2221
2247
  const hasTsconfig = fs3.existsSync(tsconfigPath);
2222
2248
  if (hasTsconfig) {
2223
2249
  console.log("Compiling plugin TypeScript...");
@@ -2253,7 +2279,7 @@ async function cmdDev(args2 = []) {
2253
2279
  process.env.OPENACP_DEBUG = "1";
2254
2280
  }
2255
2281
  process.env.OPENACP_DEV_LOOP = "1";
2256
- const { startServer } = await import("./main-UVTZ46WP.js");
2282
+ const { startServer } = await import("./main-RRSX5SRL.js");
2257
2283
  await startServer({ devPluginPath: pluginPath, noWatch });
2258
2284
  }
2259
2285
 
@@ -2286,7 +2312,7 @@ var commands = {
2286
2312
  "onboard": () => cmdOnboard(),
2287
2313
  "dev": () => cmdDev(args),
2288
2314
  "--daemon-child": async () => {
2289
- const { startServer } = await import("./main-UVTZ46WP.js");
2315
+ const { startServer } = await import("./main-RRSX5SRL.js");
2290
2316
  await startServer();
2291
2317
  }
2292
2318
  };