agents-bridge 0.1.0 → 0.1.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 (50) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +170 -139
  3. package/bin/agent-bridge.mjs +11 -11
  4. package/config.example.json +22 -55
  5. package/config.multi-agent.example.json +67 -0
  6. package/dist/agents/agent-resolver.d.ts.map +1 -0
  7. package/dist/agents/agent-resolver.js +113 -0
  8. package/dist/agents/agent-resolver.js.map +1 -0
  9. package/dist/agents/agent-router.d.ts.map +1 -0
  10. package/dist/agents/agent-router.js +72 -0
  11. package/dist/agents/agent-router.js.map +1 -0
  12. package/dist/agents/cli-backends.d.ts +20 -27
  13. package/dist/agents/cli-backends.d.ts.map +1 -1
  14. package/dist/agents/cli-backends.js +29 -4
  15. package/dist/agents/cli-backends.js.map +1 -1
  16. package/dist/agents/cli-runner.d.ts.map +1 -1
  17. package/dist/agents/cli-runner.js +63 -11
  18. package/dist/agents/cli-runner.js.map +1 -1
  19. package/dist/agents/cli-session-store.d.ts.map +1 -1
  20. package/dist/agents/cli-session-store.js +43 -0
  21. package/dist/agents/cli-session-store.js.map +1 -1
  22. package/dist/channels/botlink.js +73 -60
  23. package/dist/channels/botlink.js.map +1 -1
  24. package/dist/cli/cmd-doctor.d.ts.map +1 -1
  25. package/dist/cli/cmd-doctor.js +41 -5
  26. package/dist/cli/cmd-doctor.js.map +1 -1
  27. package/dist/cli/cmd-logs.js +1 -1
  28. package/dist/cli/cmd-logs.js.map +1 -1
  29. package/dist/cli/cmd-onboard.d.ts.map +1 -1
  30. package/dist/cli/cmd-onboard.js +16 -10
  31. package/dist/cli/cmd-onboard.js.map +1 -1
  32. package/dist/cli/cmd-start.d.ts.map +1 -1
  33. package/dist/cli/cmd-start.js +62 -27
  34. package/dist/cli/cmd-start.js.map +1 -1
  35. package/dist/config/agent-dirs.d.ts +12 -0
  36. package/dist/config/agent-dirs.d.ts.map +1 -1
  37. package/dist/config/agent-dirs.js +43 -2
  38. package/dist/config/agent-dirs.js.map +1 -1
  39. package/dist/config/config.js +1 -1
  40. package/dist/config/config.js.map +1 -1
  41. package/dist/config/merge-config.d.ts.map +1 -1
  42. package/dist/config/merge-config.js +16 -4
  43. package/dist/config/merge-config.js.map +1 -1
  44. package/dist/config/zod-schema.d.ts +1441 -127
  45. package/dist/config/zod-schema.d.ts.map +1 -1
  46. package/dist/config/zod-schema.js +84 -1
  47. package/dist/config/zod-schema.js.map +1 -1
  48. package/dist/types/index.d.ts +91 -3
  49. package/dist/types/index.d.ts.map +1 -1
  50. package/package.json +55 -54
@@ -1,13 +1,17 @@
1
1
  import { loadConfig } from '../config/config.js';
2
- import { ensureDataDirs } from '../config/agent-dirs.js';
2
+ import { ensureDataDirs, ensureAgentStateDirs } from '../config/agent-dirs.js';
3
3
  import { createLogger } from '../logger.js';
4
4
  import { getAllChannels } from '../channels/registry.js';
5
5
  import { SessionManager } from '../channels/session.js';
6
- import { buildModelsConfig } from '../agents/models-config.js';
7
6
  import { LocalCliTurnExecutor } from '../agents/cli-runner.js';
8
- import { CliSessionStore } from '../agents/cli-session-store.js';
7
+ import { CliSessionStore, makeAgentSessionKey } from '../agents/cli-session-store.js';
8
+ import { resolveAgentConfigs } from '../agents/agent-resolver.js';
9
+ import { resolveAgent } from '../agents/agent-router.js';
9
10
  import { cleanupPidFile, ensureNoRunningInstance, writePidFile } from './pid-file.js';
11
+ import { normalizeBotlinkChannelConfigs, } from '../config/zod-schema.js';
10
12
  import { TypingLifecycle } from '../channels/typing-lifecycle.js';
13
+ import { agentSessionStorePath } from '../config/paths.js';
14
+ import { extractProvider, extractModel, isCliBackend } from '../agents/cli-backends.js';
11
15
  export async function cmdStart(args) {
12
16
  ensureNoRunningInstance();
13
17
  if (args.daemon) {
@@ -29,39 +33,56 @@ export async function cmdStart(args) {
29
33
  writePidFile(process.pid);
30
34
  try {
31
35
  const sessionManager = new SessionManager(logger);
32
- const modelsConfig = buildModelsConfig(config.agents.defaults);
33
- const cliExecutor = new LocalCliTurnExecutor({
34
- config,
35
- logger,
36
- sessionStore: new CliSessionStore(),
37
- });
36
+ // Resolve multi-agent configs
37
+ const { agents: resolvedAgents, defaultAgentId } = resolveAgentConfigs(config, logger);
38
+ ensureAgentStateDirs([...resolvedAgents.keys()], defaultAgentId);
39
+ logger.info({ agentCount: resolvedAgents.size, defaultAgentId, agents: [...resolvedAgents.keys()] }, 'Agents resolved');
40
+ // Per-agent session stores and executors
41
+ const sessionStores = new Map();
42
+ const cliExecutors = new Map();
43
+ for (const [agentId, agent] of resolvedAgents) {
44
+ const store = new CliSessionStore(agentSessionStorePath(agentId));
45
+ sessionStores.set(agentId, store);
46
+ cliExecutors.set(agentId, new LocalCliTurnExecutor({
47
+ config,
48
+ logger,
49
+ sessionStore: store,
50
+ }));
51
+ }
38
52
  const ctx = {
39
53
  logger,
40
54
  async dispatch(envelope) {
41
- logger.info({ sessionId: envelope.sessionId, chatType: envelope.source.chatType }, 'Dispatching message');
55
+ const botlinkConfig = resolveBotlinkAccountConfig(config.channels.botlink, envelope);
56
+ // Route to agent
57
+ const agent = resolveAgent(envelope, config.bindings ?? [], resolvedAgents, defaultAgentId);
58
+ const agentSessionKey = makeAgentSessionKey(agent.id, envelope.sessionId);
59
+ logger.info({ sessionId: envelope.sessionId, agentId: agent.id, chatType: envelope.source.chatType }, 'Dispatching message');
42
60
  sessionManager.getOrCreate(envelope);
43
- const primaryModel = modelsConfig.chain[0];
44
- if (!primaryModel) {
45
- logger.warn({ sessionId: envelope.sessionId }, 'No primary model configured');
46
- return;
47
- }
48
- if (primaryModel.mode !== 'cli') {
49
- logger.warn({ sessionId: envelope.sessionId, model: primaryModel.ref }, 'Primary API model runtime is not implemented yet');
50
- await sendBotlinkTextReply(config.channels.botlink, envelope, '当前仅支持 CLI 模式模型。');
61
+ const primaryModelRef = agent.model.primary;
62
+ const provider = extractProvider(primaryModelRef);
63
+ const model = extractModel(primaryModelRef);
64
+ if (!isCliBackend(primaryModelRef, agent.cliBackends)) {
65
+ logger.warn({ sessionId: envelope.sessionId, agentId: agent.id, model: primaryModelRef }, 'Primary API model runtime is not implemented yet');
66
+ await sendBotlinkTextReply(botlinkConfig, envelope, '当前仅支持 CLI 模式模型。');
51
67
  return;
52
68
  }
69
+ const cliExecutor = cliExecutors.get(agent.id);
53
70
  let typing = null;
54
71
  try {
55
- typing = new TypingLifecycle(() => sendBotlinkChatAction(config.channels.botlink, envelope, 'typing'), 4000, logger);
72
+ typing = new TypingLifecycle(() => sendBotlinkChatAction(botlinkConfig, envelope, 'typing'), 4000, logger);
56
73
  const result = await cliExecutor.run({
57
- envelope,
58
- provider: primaryModel.provider,
59
- model: primaryModel.model,
60
- workspaceDir: process.cwd(),
74
+ envelope: { ...envelope, sessionId: agentSessionKey },
75
+ provider,
76
+ model: model || primaryModelRef,
77
+ workspaceDir: agent.workspace,
61
78
  timeoutMs: 15 * 60 * 1_000,
79
+ systemPrompt: agent.systemPrompt,
80
+ agentEnv: agent.env,
81
+ agentClearEnv: agent.clearEnv,
82
+ cliBackends: agent.cliBackends,
62
83
  callbacks: {
63
84
  onProcessing() {
64
- logger.info({ sessionId: envelope.sessionId, provider: primaryModel.provider }, 'CLI turn entered processing state');
85
+ logger.info({ sessionId: envelope.sessionId, agentId: agent.id, provider }, 'CLI turn entered processing state');
65
86
  typing?.start();
66
87
  },
67
88
  },
@@ -69,6 +90,7 @@ export async function cmdStart(args) {
69
90
  typing?.stop();
70
91
  logger.info({
71
92
  sessionId: envelope.sessionId,
93
+ agentId: agent.id,
72
94
  provider: result.provider,
73
95
  model: result.model,
74
96
  cliSessionId: result.cliSessionId,
@@ -77,16 +99,17 @@ export async function cmdStart(args) {
77
99
  }, 'CLI turn completed');
78
100
  logger.debug({ sessionId: envelope.sessionId, text: result.text }, 'CLI turn output');
79
101
  const replyText = result.text.trim() || 'CLI 已执行完成,但没有返回可显示的文本内容。';
80
- await sendBotlinkTextReply(config.channels.botlink, envelope, replyText);
102
+ await sendBotlinkTextReply(botlinkConfig, envelope, replyText);
81
103
  }
82
104
  catch (error) {
83
105
  typing?.stop();
84
106
  logger.error({
85
107
  sessionId: envelope.sessionId,
86
- provider: primaryModel.provider,
108
+ agentId: agent.id,
109
+ provider,
87
110
  err: error instanceof Error ? error.message : String(error),
88
111
  }, 'CLI turn failed');
89
- await sendBotlinkTextReply(config.channels.botlink, envelope, `执行失败:${error instanceof Error ? error.message : String(error)}`);
112
+ await sendBotlinkTextReply(botlinkConfig, envelope, `执行失败:${error instanceof Error ? error.message : String(error)}`);
90
113
  }
91
114
  finally {
92
115
  typing?.stop();
@@ -152,4 +175,16 @@ async function postBotlinkMethod(botlink, method, payload) {
152
175
  throw new Error(`botlink ${method} failed: ${result.description ?? 'unknown error'}`);
153
176
  }
154
177
  }
178
+ function resolveBotlinkAccountConfig(botlink, envelope) {
179
+ const accounts = normalizeBotlinkChannelConfigs(botlink);
180
+ const matched = accounts.find((entry) => entry.accountId === envelope.source.accountId);
181
+ if (matched) {
182
+ return matched.config;
183
+ }
184
+ const fallback = accounts.find((entry) => entry.accountId === 'default') ?? accounts[0];
185
+ if (!fallback) {
186
+ throw new Error('No botlink account config found for reply');
187
+ }
188
+ return fallback.config;
189
+ }
155
190
  //# sourceMappingURL=cmd-start.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cmd-start.js","sourceRoot":"","sources":["../../src/cli/cmd-start.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cmd-start.js","sourceRoot":"","sources":["../../src/cli/cmd-start.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAExD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAC9D,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAA;AACrF,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AACrF,OAAO,EACL,8BAA8B,GAE/B,MAAM,yBAAyB,CAAA;AAChC,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAA;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAC1D,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAEvF,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,IAAa;IAC1C,uBAAuB,EAAE,CAAA;IAEzB,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAA;QACpD,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,UAAU,IAAI,CAAC,KAAK,IAAI,CAAC,CAAA;QACnF,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,SAAS,CAAC,EAAE;YACrE,QAAQ,EAAE,IAAI;YACd,KAAK,EAAE,QAAQ;YACf,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,mBAAmB,EAAE,GAAG,EAAE;SAClD,CAAC,CAAA;QACF,KAAK,CAAC,KAAK,EAAE,CAAA;QACb,OAAO,CAAC,GAAG,CAAC,sCAAsC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAA;QAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACtC,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;IACxE,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAA;IAExC,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;IAErC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IAEzB,IAAI,CAAC;QACH,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,MAAM,CAAC,CAAA;QAEjD,8BAA8B;QAC9B,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,cAAc,EAAE,GAAG,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QACtF,oBAAoB,CAAC,CAAC,GAAG,cAAc,CAAC,IAAI,EAAE,CAAC,EAAE,cAAc,CAAC,CAAA;QAEhE,MAAM,CAAC,IAAI,CACT,EAAE,UAAU,EAAE,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,CAAC,GAAG,cAAc,CAAC,IAAI,EAAE,CAAC,EAAE,EACvF,iBAAiB,CAClB,CAAA;QAED,yCAAyC;QACzC,MAAM,aAAa,GAAG,IAAI,GAAG,EAA2B,CAAA;QACxD,MAAM,YAAY,GAAG,IAAI,GAAG,EAAgC,CAAA;QAC5D,KAAK,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,cAAc,EAAE,CAAC;YAC9C,MAAM,KAAK,GAAG,IAAI,eAAe,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAA;YACjE,aAAa,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;YACjC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,oBAAoB,CAAC;gBACjD,MAAM;gBACN,MAAM;gBACN,YAAY,EAAE,KAAK;aACpB,CAAC,CAAC,CAAA;QACL,CAAC;QAED,MAAM,GAAG,GAAmB;YAC1B,MAAM;YACN,KAAK,CAAC,QAAQ,CAAC,QAAyB;gBACtC,MAAM,aAAa,GAAG,2BAA2B,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;gBAEpF,iBAAiB;gBACjB,MAAM,KAAK,GAAG,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,EAAE,EAAE,cAAc,EAAE,cAAc,CAAC,CAAA;gBAC3F,MAAM,eAAe,GAAG,mBAAmB,CAAC,KAAK,CAAC,EAAE,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAA;gBAEzE,MAAM,CAAC,IAAI,CACT,EAAE,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,EACxF,qBAAqB,CACtB,CAAA;gBAED,cAAc,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAA;gBAEpC,MAAM,eAAe,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAA;gBAC3C,MAAM,QAAQ,GAAG,eAAe,CAAC,eAAe,CAAC,CAAA;gBACjD,MAAM,KAAK,GAAG,YAAY,CAAC,eAAe,CAAC,CAAA;gBAE3C,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;oBACtD,MAAM,CAAC,IAAI,CACT,EAAE,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,EAC5E,kDAAkD,CACnD,CAAA;oBACD,MAAM,oBAAoB,CAAC,aAAa,EAAE,QAAQ,EAAE,iBAAiB,CAAC,CAAA;oBACtE,OAAM;gBACR,CAAC;gBAED,MAAM,WAAW,GAAG,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAE,CAAA;gBAC/C,IAAI,MAAM,GAA2B,IAAI,CAAA;gBAEzC,IAAI,CAAC;oBACH,MAAM,GAAG,IAAI,eAAe,CAC1B,GAAG,EAAE,CAAC,qBAAqB,CAAC,aAAa,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAC9D,IAAI,EACJ,MAAM,CACP,CAAA;oBAED,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC;wBACnC,QAAQ,EAAE,EAAE,GAAG,QAAQ,EAAE,SAAS,EAAE,eAAe,EAAE;wBACrD,QAAQ;wBACR,KAAK,EAAE,KAAK,IAAI,eAAe;wBAC/B,YAAY,EAAE,KAAK,CAAC,SAAS;wBAC7B,SAAS,EAAE,EAAE,GAAG,EAAE,GAAG,KAAK;wBAC1B,YAAY,EAAE,KAAK,CAAC,YAAY;wBAChC,QAAQ,EAAE,KAAK,CAAC,GAAG;wBACnB,aAAa,EAAE,KAAK,CAAC,QAAQ;wBAC7B,WAAW,EAAE,KAAK,CAAC,WAAW;wBAC9B,SAAS,EAAE;4BACT,YAAY;gCACV,MAAM,CAAC,IAAI,CACT,EAAE,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,EAAE,QAAQ,EAAE,EAC9D,mCAAmC,CACpC,CAAA;gCACD,MAAM,EAAE,KAAK,EAAE,CAAA;4BACjB,CAAC;yBACF;qBACF,CAAC,CAAA;oBAEF,MAAM,EAAE,IAAI,EAAE,CAAA;oBAEd,MAAM,CAAC,IAAI,CACT;wBACE,SAAS,EAAE,QAAQ,CAAC,SAAS;wBAC7B,OAAO,EAAE,KAAK,CAAC,EAAE;wBACjB,QAAQ,EAAE,MAAM,CAAC,QAAQ;wBACzB,KAAK,EAAE,MAAM,CAAC,KAAK;wBACnB,YAAY,EAAE,MAAM,CAAC,YAAY;wBACjC,QAAQ,EAAE,MAAM,CAAC,QAAQ;wBACzB,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM;qBACvC,EACD,oBAAoB,CACrB,CAAA;oBACD,MAAM,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,iBAAiB,CAAC,CAAA;oBAErF,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,0BAA0B,CAAA;oBAClE,MAAM,oBAAoB,CAAC,aAAa,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAA;gBAChE,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,MAAM,EAAE,IAAI,EAAE,CAAA;oBACd,MAAM,CAAC,KAAK,CACV;wBACE,SAAS,EAAE,QAAQ,CAAC,SAAS;wBAC7B,OAAO,EAAE,KAAK,CAAC,EAAE;wBACjB,QAAQ;wBACR,GAAG,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;qBAC5D,EACD,iBAAiB,CAClB,CAAA;oBACD,MAAM,oBAAoB,CACxB,aAAa,EACb,QAAQ,EACR,QAAQ,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CACjE,CAAA;gBACH,CAAC;wBAAS,CAAC;oBACT,MAAM,EAAE,IAAI,EAAE,CAAA;gBAChB,CAAC;YACH,CAAC;SACF,CAAA;QAED,MAAM,QAAQ,GAAG,cAAc,EAAE,CAAA;QACjC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAA;QAC/E,CAAC;QAED,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,MAAM,aAAa,GAAI,MAAM,CAAC,QAAoC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;YAC9E,IAAI,CAAC,aAAa,EAAE,CAAC;gBACnB,MAAM,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,EAAE,uCAAuC,CAAC,CAAA;gBAC/E,SAAQ;YACV,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,EAAE,oBAAoB,CAAC,CAAA;YAC5D,MAAM,OAAO,CAAC,KAAK,CAAC,aAAa,EAAE,GAAG,CAAC,CAAA;QACzC,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAA;QAEpC,MAAM,QAAQ,GAAG,KAAK,EAAE,MAAc,EAAE,EAAE;YACxC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,0BAA0B,CAAC,CAAA;YACnD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;gBAC/B,MAAM,OAAO,CAAC,QAAQ,EAAE,CAAA;YAC1B,CAAC;YACD,cAAc,EAAE,CAAA;YAChB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC,CAAA;QAED,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAA;QAC9C,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAA;IAClD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,cAAc,EAAE,CAAA;QAChB,MAAM,KAAK,CAAA;IACb,CAAC;AACH,CAAC;AAED,KAAK,UAAU,qBAAqB,CAClC,OAA6B,EAC7B,QAAyB,EACzB,MAAc;IAEd,MAAM,iBAAiB,CAAC,OAAO,EAAE,gBAAgB,EAAE;QACjD,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM;QAC/B,MAAM;KACP,CAAC,CAAA;AACJ,CAAC;AAED,KAAK,UAAU,oBAAoB,CACjC,OAA6B,EAC7B,QAAyB,EACzB,IAAY;IAEZ,MAAM,iBAAiB,CAAC,OAAO,EAAE,aAAa,EAAE;QAC9C,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM;QAC/B,IAAI;QACJ,mBAAmB,EAAE,QAAQ,CAAC,MAAM,CAAC,SAAS;KAC/C,CAAC,CAAA;AACJ,CAAC;AAED,KAAK,UAAU,iBAAiB,CAC9B,OAA6B,EAC7B,MAAc,EACd,OAAgC;IAEhC,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;IACvD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,OAAO,OAAO,CAAC,SAAS,IAAI,MAAM,EAAE,EAAE;QAC3E,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;QAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;KAC9B,CAAC,CAAA;IAEF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAA;QAClD,MAAM,IAAI,KAAK,CAAC,WAAW,MAAM,qBAAqB,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;IACpG,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAA4C,CAAA;IAC9E,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,WAAW,MAAM,YAAY,MAAM,CAAC,WAAW,IAAI,eAAe,EAAE,CAAC,CAAA;IACvF,CAAC;AACH,CAAC;AAED,SAAS,2BAA2B,CAClC,OAA6D,EAC7D,QAAyB;IAEzB,MAAM,QAAQ,GAAG,8BAA8B,CAAC,OAAO,CAAC,CAAA;IACxD,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,KAAK,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;IACvF,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,OAAO,CAAC,MAAM,CAAA;IACvB,CAAC;IAED,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAA;IACvF,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAA;IAC9D,CAAC;IACD,OAAO,QAAQ,CAAC,MAAM,CAAA;AACxB,CAAC"}
@@ -6,7 +6,19 @@
6
6
  * │ ├── sessions/
7
7
  * │ ├── files/
8
8
  * │ └── logs/
9
+ * ├── agents/
10
+ * │ ├── {agentId}/
11
+ * │ │ └── cli-sessions.json
12
+ * │ └── ...
9
13
  * └── skills/
10
14
  */
11
15
  export declare function ensureDataDirs(tempDir?: string): void;
16
+ /**
17
+ * Ensure per-agent state directories exist.
18
+ * Validates that no two agents share the same state directory.
19
+ *
20
+ * On first run, migrates the legacy
21
+ * ~/.agent-bridge/data/sessions/cli-sessions.json → agents/{defaultAgentId}/cli-sessions.json
22
+ */
23
+ export declare function ensureAgentStateDirs(agentIds: string[], defaultAgentId: string): void;
12
24
  //# sourceMappingURL=agent-dirs.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"agent-dirs.d.ts","sourceRoot":"","sources":["../../src/config/agent-dirs.ts"],"names":[],"mappings":"AAUA;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAgBrD"}
1
+ {"version":3,"file":"agent-dirs.d.ts","sourceRoot":"","sources":["../../src/config/agent-dirs.ts"],"names":[],"mappings":"AAaA;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAgBrD;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,cAAc,EAAE,MAAM,GAAG,IAAI,CAoBrF"}
@@ -1,6 +1,6 @@
1
- import { mkdirSync, existsSync } from 'node:fs';
1
+ import { mkdirSync, existsSync, copyFileSync } from 'node:fs';
2
2
  import { resolve } from 'node:path';
3
- import { DATA_DIR, DATA_SESSIONS_DIR, DATA_FILES_DIR, DATA_LOGS_DIR, DATA_SKILLS_DIR, } from './paths.js';
3
+ import { DATA_DIR, DATA_SESSIONS_DIR, DATA_CLI_SESSION_STORE_PATH, DATA_FILES_DIR, DATA_LOGS_DIR, DATA_SKILLS_DIR, agentStatePath, agentSessionStorePath, } from './paths.js';
4
4
  /**
5
5
  * Ensure data directories exist.
6
6
  *
@@ -9,6 +9,10 @@ import { DATA_DIR, DATA_SESSIONS_DIR, DATA_FILES_DIR, DATA_LOGS_DIR, DATA_SKILLS
9
9
  * │ ├── sessions/
10
10
  * │ ├── files/
11
11
  * │ └── logs/
12
+ * ├── agents/
13
+ * │ ├── {agentId}/
14
+ * │ │ └── cli-sessions.json
15
+ * │ └── ...
12
16
  * └── skills/
13
17
  */
14
18
  export function ensureDataDirs(tempDir) {
@@ -27,4 +31,41 @@ export function ensureDataDirs(tempDir) {
27
31
  }
28
32
  }
29
33
  }
34
+ /**
35
+ * Ensure per-agent state directories exist.
36
+ * Validates that no two agents share the same state directory.
37
+ *
38
+ * On first run, migrates the legacy
39
+ * ~/.agent-bridge/data/sessions/cli-sessions.json → agents/{defaultAgentId}/cli-sessions.json
40
+ */
41
+ export function ensureAgentStateDirs(agentIds, defaultAgentId) {
42
+ const seen = new Map();
43
+ for (const agentId of agentIds) {
44
+ const dir = resolve(agentStatePath(agentId));
45
+ const existing = seen.get(dir);
46
+ if (existing) {
47
+ throw new Error(`Agent state directory conflict: agents "${existing}" and "${agentId}" resolve to the same path: ${dir}`);
48
+ }
49
+ seen.set(dir, agentId);
50
+ if (!existsSync(dir)) {
51
+ mkdirSync(dir, { recursive: true });
52
+ }
53
+ }
54
+ // Migrate legacy session store to the default agent's directory
55
+ migrateLegacySessionStore(defaultAgentId);
56
+ }
57
+ /**
58
+ * If the legacy cli-sessions.json exists and the default agent's store doesn't,
59
+ * copy the legacy file into the default agent's state directory.
60
+ */
61
+ function migrateLegacySessionStore(defaultAgentId) {
62
+ const legacyPath = resolve(DATA_CLI_SESSION_STORE_PATH);
63
+ if (!existsSync(legacyPath))
64
+ return;
65
+ const targetPath = resolve(agentSessionStorePath(defaultAgentId));
66
+ if (existsSync(targetPath))
67
+ return;
68
+ // Copy (not move) — keep legacy file as backup until confirmed working
69
+ copyFileSync(legacyPath, targetPath);
70
+ }
30
71
  //# sourceMappingURL=agent-dirs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"agent-dirs.js","sourceRoot":"","sources":["../../src/config/agent-dirs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EACL,QAAQ,EACR,iBAAiB,EACjB,cAAc,EACd,aAAa,EACb,eAAe,GAChB,MAAM,YAAY,CAAA;AAEnB;;;;;;;;;GASG;AACH,MAAM,UAAU,cAAc,CAAC,OAAgB;IAC7C,MAAM,IAAI,GAAG;QACX,QAAQ;QACR,iBAAiB;QACjB,cAAc;QACd,aAAa;QACb,eAAe;QACf,OAAO;KACR,CAAC,MAAM,CAAC,OAAO,CAAa,CAAA;IAE7B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,CAAA;QAC7B,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QAC1C,CAAC;IACH,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"agent-dirs.js","sourceRoot":"","sources":["../../src/config/agent-dirs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAc,YAAY,EAAE,MAAM,SAAS,CAAA;AACzE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EACL,QAAQ,EACR,iBAAiB,EACjB,2BAA2B,EAC3B,cAAc,EACd,aAAa,EACb,eAAe,EACf,cAAc,EACd,qBAAqB,GACtB,MAAM,YAAY,CAAA;AAEnB;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,cAAc,CAAC,OAAgB;IAC7C,MAAM,IAAI,GAAG;QACX,QAAQ;QACR,iBAAiB;QACjB,cAAc;QACd,aAAa;QACb,eAAe;QACf,OAAO;KACR,CAAC,MAAM,CAAC,OAAO,CAAa,CAAA;IAE7B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,CAAA;QAC7B,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QAC1C,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAAC,QAAkB,EAAE,cAAsB;IAC7E,MAAM,IAAI,GAAG,IAAI,GAAG,EAAkB,CAAA;IAEtC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,GAAG,GAAG,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAA;QAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAC9B,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CACb,2CAA2C,QAAQ,UAAU,OAAO,+BAA+B,GAAG,EAAE,CACzG,CAAA;QACH,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;QAEtB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACrB,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QACrC,CAAC;IACH,CAAC;IAED,gEAAgE;IAChE,yBAAyB,CAAC,cAAc,CAAC,CAAA;AAC3C,CAAC;AAED;;;GAGG;AACH,SAAS,yBAAyB,CAAC,cAAsB;IACvD,MAAM,UAAU,GAAG,OAAO,CAAC,2BAA2B,CAAC,CAAA;IACvD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,OAAM;IAEnC,MAAM,UAAU,GAAG,OAAO,CAAC,qBAAqB,CAAC,cAAc,CAAC,CAAC,CAAA;IACjE,IAAI,UAAU,CAAC,UAAU,CAAC;QAAE,OAAM;IAElC,uEAAuE;IACvE,YAAY,CAAC,UAAU,EAAE,UAAU,CAAC,CAAA;AACtC,CAAC"}
@@ -14,8 +14,8 @@ export function loadConfig(configPath) {
14
14
  const paths = [
15
15
  configPath,
16
16
  env.configPath,
17
- DATA_CONFIG_PATH,
18
17
  './config.json',
18
+ DATA_CONFIG_PATH,
19
19
  ].filter(Boolean);
20
20
  let rawConfig = {};
21
21
  for (const p of paths) {
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,eAAe,EAAkB,MAAM,iBAAiB,CAAA;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAE7C,MAAM,UAAU,UAAU,CAAC,UAAmB;IAC5C,MAAM,GAAG,GAAG,gBAAgB,EAAE,CAAA;IAE9B,YAAY;IACZ,mCAAmC;IACnC,gCAAgC;IAChC,2CAA2C;IAC3C,6BAA6B;IAC7B,MAAM,KAAK,GAAG;QACZ,UAAU;QACV,GAAG,CAAC,UAAU;QACd,gBAAgB;QAChB,eAAe;KAChB,CAAC,MAAM,CAAC,OAAO,CAAa,CAAA;IAE7B,IAAI,SAAS,GAA4B,EAAE,CAAA;IAE3C,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;QAC3B,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzB,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;YAC/C,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAA4B,CAAA;YAC1D,MAAK;QACP,CAAC;IACH,CAAC;IAED,uCAAuC;IACvC,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,EAAE,GAAG,CAAC,CAAA;IAE3C,MAAM,MAAM,GAAG,eAAe,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;IAChD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM;aAC/B,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;aAC/C,IAAI,CAAC,IAAI,CAAC,CAAA;QACb,MAAM,IAAI,KAAK,CAAC,yBAAyB,MAAM,EAAE,CAAC,CAAA;IACpD,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAA;AACpB,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,eAAe,EAAkB,MAAM,iBAAiB,CAAA;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAE7C,MAAM,UAAU,UAAU,CAAC,UAAmB;IAC5C,MAAM,GAAG,GAAG,gBAAgB,EAAE,CAAA;IAE9B,YAAY;IACZ,mCAAmC;IACnC,gCAAgC;IAChC,2CAA2C;IAC3C,6BAA6B;IAC7B,MAAM,KAAK,GAAG;QACZ,UAAU;QACV,GAAG,CAAC,UAAU;QACd,eAAe;QACf,gBAAgB;KACjB,CAAC,MAAM,CAAC,OAAO,CAAa,CAAA;IAE7B,IAAI,SAAS,GAA4B,EAAE,CAAA;IAE3C,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;QAC3B,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzB,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;YAC/C,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAA4B,CAAA;YAC1D,MAAK;QACP,CAAC;IACH,CAAC;IAED,uCAAuC;IACvC,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,EAAE,GAAG,CAAC,CAAA;IAE3C,MAAM,MAAM,GAAG,eAAe,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;IAChD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM;aAC/B,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;aAC/C,IAAI,CAAC,IAAI,CAAC,CAAA;QACb,MAAM,IAAI,KAAK,CAAC,yBAAyB,MAAM,EAAE,CAAC,CAAA;IACpD,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAA;AACpB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"merge-config.d.ts","sourceRoot":"","sources":["../../src/config/merge-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAEjD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA4BrG"}
1
+ {"version":3,"file":"merge-config.d.ts","sourceRoot":"","sources":["../../src/config/merge-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAEjD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAqCrG"}
@@ -8,10 +8,22 @@ export function mergeWithEnv(raw, env) {
8
8
  if (env.gatewayUrl || env.botToken) {
9
9
  const channels = (merged.channels ?? {});
10
10
  const botlink = (channels.botlink ?? {});
11
- if (env.gatewayUrl)
12
- botlink.gateway_url = env.gatewayUrl;
13
- if (env.botToken)
14
- botlink.bot_token = env.botToken;
11
+ const botlinkAccounts = botlink.accounts;
12
+ if (botlinkAccounts && Object.keys(botlinkAccounts).length > 0) {
13
+ const defaultAccount = (botlinkAccounts.default ?? {});
14
+ if (env.gatewayUrl)
15
+ defaultAccount.gateway_url = env.gatewayUrl;
16
+ if (env.botToken)
17
+ defaultAccount.bot_token = env.botToken;
18
+ botlinkAccounts.default = defaultAccount;
19
+ botlink.accounts = botlinkAccounts;
20
+ }
21
+ else {
22
+ if (env.gatewayUrl)
23
+ botlink.gateway_url = env.gatewayUrl;
24
+ if (env.botToken)
25
+ botlink.bot_token = env.botToken;
26
+ }
15
27
  channels.botlink = botlink;
16
28
  merged.channels = channels;
17
29
  }
@@ -1 +1 @@
1
- {"version":3,"file":"merge-config.js","sourceRoot":"","sources":["../../src/config/merge-config.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,GAA4B,EAAE,GAAiB;IAC1E,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC,CAAA;IAEnC,6BAA6B;IAC7B,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;QACnC,MAAM,QAAQ,GAAG,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAA4B,CAAA;QACnE,MAAM,OAAO,GAAG,CAAC,QAAQ,CAAC,OAAO,IAAI,EAAE,CAA4B,CAAA;QACnE,IAAI,GAAG,CAAC,UAAU;YAAE,OAAO,CAAC,WAAW,GAAG,GAAG,CAAC,UAAU,CAAA;QACxD,IAAI,GAAG,CAAC,QAAQ;YAAE,OAAO,CAAC,SAAS,GAAG,GAAG,CAAC,QAAQ,CAAA;QAClD,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAA;QAC1B,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAA;IAC5B,CAAC;IAED,yBAAyB;IACzB,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;QACjB,MAAM,OAAO,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAA4B,CAAA;QACjE,OAAO,CAAC,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAA;QAC5B,MAAM,CAAC,OAAO,GAAG,OAAO,CAAA;IAC1B,CAAC;IAED,0BAA0B;IAC1B,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;QAChB,MAAM,KAAK,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAA4B,CAAA;QAC7D,KAAK,CAAC,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAA;QAC5B,MAAM,CAAC,KAAK,GAAG,KAAK,CAAA;IACtB,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC"}
1
+ {"version":3,"file":"merge-config.js","sourceRoot":"","sources":["../../src/config/merge-config.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,GAA4B,EAAE,GAAiB;IAC1E,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC,CAAA;IAEnC,6BAA6B;IAC7B,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;QACnC,MAAM,QAAQ,GAAG,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAA4B,CAAA;QACnE,MAAM,OAAO,GAAG,CAAC,QAAQ,CAAC,OAAO,IAAI,EAAE,CAA4B,CAAA;QACnE,MAAM,eAAe,GAAG,OAAO,CAAC,QAA+D,CAAA;QAC/F,IAAI,eAAe,IAAI,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/D,MAAM,cAAc,GAAG,CAAC,eAAe,CAAC,OAAO,IAAI,EAAE,CAA4B,CAAA;YACjF,IAAI,GAAG,CAAC,UAAU;gBAAE,cAAc,CAAC,WAAW,GAAG,GAAG,CAAC,UAAU,CAAA;YAC/D,IAAI,GAAG,CAAC,QAAQ;gBAAE,cAAc,CAAC,SAAS,GAAG,GAAG,CAAC,QAAQ,CAAA;YACzD,eAAe,CAAC,OAAO,GAAG,cAAc,CAAA;YACxC,OAAO,CAAC,QAAQ,GAAG,eAAe,CAAA;QACpC,CAAC;aAAM,CAAC;YACN,IAAI,GAAG,CAAC,UAAU;gBAAE,OAAO,CAAC,WAAW,GAAG,GAAG,CAAC,UAAU,CAAA;YACxD,IAAI,GAAG,CAAC,QAAQ;gBAAE,OAAO,CAAC,SAAS,GAAG,GAAG,CAAC,QAAQ,CAAA;QACpD,CAAC;QACD,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAA;QAC1B,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAA;IAC5B,CAAC;IAED,yBAAyB;IACzB,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;QACjB,MAAM,OAAO,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAA4B,CAAA;QACjE,OAAO,CAAC,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAA;QAC5B,MAAM,CAAC,OAAO,GAAG,OAAO,CAAA;IAC1B,CAAC;IAED,0BAA0B;IAC1B,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;QAChB,MAAM,KAAK,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAA4B,CAAA;QAC7D,KAAK,CAAC,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAA;QAC5B,MAAM,CAAC,KAAK,GAAG,KAAK,CAAA;IACtB,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC"}