ccgateway 0.1.9 → 0.2.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.
@@ -1,3 +1,5 @@
1
+ import type { CCSpawner } from "./spawner.js";
2
+ import type { SessionManager } from "./sessions.js";
1
3
  export interface AsyncTask {
2
4
  sessionName: string;
3
5
  taskDir: string;
@@ -5,44 +7,42 @@ export interface AsyncTask {
5
7
  gateway: string;
6
8
  channel: string;
7
9
  botId: string;
8
- sessionKey: string;
9
- workspace: string;
10
10
  startedAt: number;
11
11
  }
12
- export interface WatcherCallbacks {
13
- sendToChannel: (channel: string, botId: string, content: string) => Promise<void>;
14
- appendToSession: (agentId: string, sessionKey: string, content: string, tokens: {
15
- in: number;
16
- out: number;
17
- }) => Promise<void>;
18
- }
12
+ type SendToChannelFn = (channelId: string, botId: string, content: string) => Promise<void>;
13
+ type GetSendToChannelFn = (gateway: string) => SendToChannelFn | null;
19
14
  export declare class AsyncTaskWatcher {
15
+ private spawner;
16
+ private sessions;
17
+ private getSendToChannel;
20
18
  private tasks;
21
- private interval;
22
- private callbacks;
23
- constructor(callbacks: WatcherCallbacks);
24
- /** Register a new async task to watch. */
19
+ private pollTimer;
20
+ constructor(spawner: CCSpawner, sessions: SessionManager, getSendToChannel: GetSendToChannelFn);
21
+ /**
22
+ * Register a new async task for monitoring.
23
+ */
25
24
  register(task: AsyncTask): void;
26
- /** List all in-flight tasks. */
27
- listTasks(): readonly AsyncTask[];
28
- /** Start the polling loop. */
25
+ /**
26
+ * Start the polling loop.
27
+ */
29
28
  start(): void;
30
- /** Stop the polling loop. */
29
+ /**
30
+ * Stop the polling loop.
31
+ */
31
32
  stop(): void;
32
- /** Whether the watcher is actively polling. */
33
- isRunning(): boolean;
34
- /** Single poll cycle — check all tasks. */
35
- poll(): Promise<void>;
36
- /** Check if a tmux/screen session is still running. */
37
- private isSessionAlive;
38
- /** Handle a completed task: resolve result, post, clean up. */
39
- private handleCompletion;
40
33
  /**
41
- * Resolve the result text for a completed task.
42
- * Priority: RESULT.md > Sonnet summary > output.log tail
34
+ * Get the list of active tasks.
35
+ */
36
+ getActiveTasks(): AsyncTask[];
37
+ private poll;
38
+ private resolveAndPost;
39
+ /**
40
+ * Resolve the result of a completed task, in priority order:
41
+ * 1. RESULT.md (Claude's own summary)
42
+ * 2. Last ~2000 chars of output.log
43
+ * 3. Fallback message
43
44
  */
44
45
  private resolveResult;
45
- /** Quick Sonnet call to summarize what was done based on git diff. */
46
- private runSummaryFallback;
47
46
  }
47
+ export {};
48
48
  //# sourceMappingURL=async-watcher.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"async-watcher.d.ts","sourceRoot":"","sources":["../src/async-watcher.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,SAAS;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAClF,eAAe,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/H;AAUD,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,KAAK,CAAmB;IAChC,OAAO,CAAC,QAAQ,CAA+C;IAC/D,OAAO,CAAC,SAAS,CAAmB;gBAExB,SAAS,EAAE,gBAAgB;IAIvC,0CAA0C;IAC1C,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI;IAK/B,gCAAgC;IAChC,SAAS,IAAI,SAAS,SAAS,EAAE;IAIjC,8BAA8B;IAC9B,KAAK,IAAI,IAAI;IAUb,6BAA6B;IAC7B,IAAI,IAAI,IAAI;IAOZ,+CAA+C;IAC/C,SAAS,IAAI,OAAO;IAMpB,2CAA2C;IACrC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAc3B,uDAAuD;IACvD,OAAO,CAAC,cAAc;IAetB,+DAA+D;YACjD,gBAAgB;IAyC9B;;;OAGG;YACW,aAAa;IA6B3B,sEAAsE;IACtE,OAAO,CAAC,kBAAkB;CAyC3B"}
1
+ {"version":3,"file":"async-watcher.d.ts","sourceRoot":"","sources":["../src/async-watcher.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAIpD,MAAM,WAAW,SAAS;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,KAAK,eAAe,GAAG,CACrB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,KACZ,OAAO,CAAC,IAAI,CAAC,CAAC;AAEnB,KAAK,kBAAkB,GAAG,CAAC,OAAO,EAAE,MAAM,KAAK,eAAe,GAAG,IAAI,CAAC;AAMtE,qBAAa,gBAAgB;IAKzB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,gBAAgB;IAN1B,OAAO,CAAC,KAAK,CAAmB;IAChC,OAAO,CAAC,SAAS,CAA+C;gBAGtD,OAAO,EAAE,SAAS,EAClB,QAAQ,EAAE,cAAc,EACxB,gBAAgB,EAAE,kBAAkB;IAG9C;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI;IAK/B;;OAEG;IACH,KAAK,IAAI,IAAI;IAUb;;OAEG;IACH,IAAI,IAAI,IAAI;IAQZ;;OAEG;IACH,cAAc,IAAI,SAAS,EAAE;YAMf,IAAI;YAqBJ,cAAc;IA8C5B;;;;;OAKG;YACW,aAAa;CAyB5B"}
@@ -1,104 +1,108 @@
1
- import { execSync, spawn } from "node:child_process";
2
1
  import { readFile, rm } from "node:fs/promises";
3
2
  import { existsSync } from "node:fs";
4
3
  import { join } from "node:path";
5
4
  import { logger } from "./logger.js";
6
- // ── Constants ──────────────────────────────────────────────────────────────
7
- const POLL_INTERVAL_MS = 10_000;
8
- const OUTPUT_TAIL_CHARS = 2000;
9
- const SUMMARY_TIMEOUT_MS = 30_000;
10
- // ── AsyncTaskWatcher ───────────────────────────────────────────────────────
5
+ // ── AsyncTaskWatcher ─────────────────────────────────────────────────────
6
+ const POLL_INTERVAL_MS = 10_000; // 10 seconds
11
7
  export class AsyncTaskWatcher {
8
+ spawner;
9
+ sessions;
10
+ getSendToChannel;
12
11
  tasks = [];
13
- interval = null;
14
- callbacks;
15
- constructor(callbacks) {
16
- this.callbacks = callbacks;
12
+ pollTimer = null;
13
+ constructor(spawner, sessions, getSendToChannel) {
14
+ this.spawner = spawner;
15
+ this.sessions = sessions;
16
+ this.getSendToChannel = getSendToChannel;
17
17
  }
18
- /** Register a new async task to watch. */
18
+ /**
19
+ * Register a new async task for monitoring.
20
+ */
19
21
  register(task) {
20
22
  this.tasks.push(task);
21
- logger.info(`async-watcher: tracking ${task.sessionName} (agent=${task.agentId})`);
22
- }
23
- /** List all in-flight tasks. */
24
- listTasks() {
25
- return this.tasks;
23
+ logger.info(`async-watcher: registered task ${task.sessionName} (agent=${task.agentId})`);
26
24
  }
27
- /** Start the polling loop. */
25
+ /**
26
+ * Start the polling loop.
27
+ */
28
28
  start() {
29
- if (this.interval)
29
+ if (this.pollTimer)
30
30
  return;
31
- this.interval = setInterval(() => {
32
- this.poll().catch((err) => {
33
- logger.error(`async-watcher: poll error: ${err.message}`);
34
- });
31
+ this.pollTimer = setInterval(() => {
32
+ void this.poll();
35
33
  }, POLL_INTERVAL_MS);
36
34
  logger.info("async-watcher: started");
37
35
  }
38
- /** Stop the polling loop. */
36
+ /**
37
+ * Stop the polling loop.
38
+ */
39
39
  stop() {
40
- if (this.interval) {
41
- clearInterval(this.interval);
42
- this.interval = null;
40
+ if (this.pollTimer) {
41
+ clearInterval(this.pollTimer);
42
+ this.pollTimer = null;
43
43
  }
44
+ logger.info("async-watcher: stopped");
44
45
  }
45
- /** Whether the watcher is actively polling. */
46
- isRunning() {
47
- return this.interval !== null;
46
+ /**
47
+ * Get the list of active tasks.
48
+ */
49
+ getActiveTasks() {
50
+ return [...this.tasks];
48
51
  }
49
- // ── Internal ────────────────────────────────────────────────────────────
50
- /** Single poll cycle — check all tasks. */
52
+ // ── Polling ──────────────────────────────────────────────────────────────
51
53
  async poll() {
52
- const completed = [];
53
- for (const task of this.tasks) {
54
- if (!this.isSessionAlive(task.sessionName)) {
55
- completed.push(task);
54
+ if (this.tasks.length === 0)
55
+ return;
56
+ // Check each task — iterate backwards so we can splice completed ones
57
+ for (let i = this.tasks.length - 1; i >= 0; i--) {
58
+ const task = this.tasks[i];
59
+ try {
60
+ const alive = await this.spawner.isSessionAlive(task.sessionName);
61
+ if (!alive) {
62
+ logger.info(`async-watcher: session ${task.sessionName} ended, resolving result`);
63
+ this.tasks.splice(i, 1);
64
+ await this.resolveAndPost(task);
65
+ }
66
+ }
67
+ catch (err) {
68
+ logger.error(`async-watcher: error checking ${task.sessionName}: ${err.message}`);
56
69
  }
57
- }
58
- for (const task of completed) {
59
- await this.handleCompletion(task);
60
- }
61
- }
62
- /** Check if a tmux/screen session is still running. */
63
- isSessionAlive(sessionName) {
64
- try {
65
- execSync(`tmux has-session -t ${sessionName} 2>/dev/null`, { stdio: "pipe" });
66
- return true;
67
- }
68
- catch {
69
- // tmux failed — try screen
70
- }
71
- try {
72
- const output = execSync(`screen -ls`, { encoding: "utf-8", stdio: "pipe" });
73
- return output.includes(sessionName);
74
- }
75
- catch {
76
- return false;
77
70
  }
78
71
  }
79
- /** Handle a completed task: resolve result, post, clean up. */
80
- async handleCompletion(task) {
81
- logger.info(`async-watcher: ${task.sessionName} completed, resolving result`);
72
+ // ── Result resolution ────────────────────────────────────────────────────
73
+ async resolveAndPost(task) {
82
74
  let result;
83
75
  try {
84
76
  result = await this.resolveResult(task);
85
77
  }
86
78
  catch (err) {
87
- result = `Task completed but failed to retrieve result: ${err.message}`;
79
+ result = `[async] Task ${task.sessionName} completed but failed to resolve result: ${err.message}`;
88
80
  }
89
81
  // Post result to channel
90
82
  try {
91
- await this.callbacks.sendToChannel(task.channel, task.botId, result);
83
+ const sendFn = this.getSendToChannel(task.gateway);
84
+ if (sendFn) {
85
+ await sendFn(task.channel, task.botId, result);
86
+ }
87
+ else {
88
+ logger.warn(`async-watcher: no sendToChannel for gateway ${task.gateway}`);
89
+ }
92
90
  }
93
91
  catch (err) {
94
92
  logger.error(`async-watcher: failed to post result for ${task.sessionName}: ${err.message}`);
95
93
  }
96
- // Append to session history
94
+ // Append result to session history
97
95
  try {
98
- await this.callbacks.appendToSession(task.agentId, task.sessionKey, result, { in: 0, out: Math.ceil(result.length / 4) });
96
+ const sessionKey = this.sessions.getOrCreateSession(task.agentId, task.gateway, task.channel);
97
+ await this.sessions.appendMessage(task.agentId, sessionKey, {
98
+ role: "assistant",
99
+ content: result,
100
+ ts: Date.now(),
101
+ tokens: { in: 0, out: 0 },
102
+ });
99
103
  }
100
104
  catch (err) {
101
- logger.error(`async-watcher: failed to append session for ${task.sessionName}: ${err.message}`);
105
+ logger.error(`async-watcher: failed to save session for ${task.sessionName}: ${err.message}`);
102
106
  }
103
107
  // Clean up task directory
104
108
  try {
@@ -107,77 +111,35 @@ export class AsyncTaskWatcher {
107
111
  catch {
108
112
  // non-fatal
109
113
  }
110
- // Remove from registry
111
- this.tasks = this.tasks.filter((t) => t.sessionName !== task.sessionName);
112
- logger.info(`async-watcher: ${task.sessionName} fully resolved and cleaned up`);
113
114
  }
114
115
  /**
115
- * Resolve the result text for a completed task.
116
- * Priority: RESULT.md > Sonnet summary > output.log tail
116
+ * Resolve the result of a completed task, in priority order:
117
+ * 1. RESULT.md (Claude's own summary)
118
+ * 2. Last ~2000 chars of output.log
119
+ * 3. Fallback message
117
120
  */
118
121
  async resolveResult(task) {
119
122
  // 1. Try RESULT.md
120
123
  const resultPath = join(task.taskDir, "RESULT.md");
121
124
  if (existsSync(resultPath)) {
122
125
  const content = await readFile(resultPath, "utf-8");
123
- if (content.trim())
126
+ if (content.trim()) {
124
127
  return content.trim();
128
+ }
125
129
  }
126
- // 2. Try Sonnet summary of git diff
127
- try {
128
- const summary = await this.runSummaryFallback(task.workspace);
129
- if (summary.trim())
130
- return summary.trim();
131
- }
132
- catch {
133
- // fall through
134
- }
135
- // 3. Tail of output.log
130
+ // 2. Tail of output.log
136
131
  const logPath = join(task.taskDir, "output.log");
137
132
  if (existsSync(logPath)) {
138
133
  const log = await readFile(logPath, "utf-8");
139
- if (log.length > OUTPUT_TAIL_CHARS) {
140
- return `...\n${log.slice(-OUTPUT_TAIL_CHARS)}`;
134
+ if (log.trim()) {
135
+ const tail = log.slice(-2000);
136
+ const prefix = log.length > 2000 ? "...(truncated)\n" : "";
137
+ return `[async] Task completed. Output:\n\n${prefix}${tail}`;
141
138
  }
142
- if (log.trim())
143
- return log.trim();
144
139
  }
145
- return "Task completed but produced no output.";
146
- }
147
- /** Quick Sonnet call to summarize what was done based on git diff. */
148
- runSummaryFallback(workspace) {
149
- return new Promise((resolve, reject) => {
150
- const child = spawn("claude", [
151
- "--print",
152
- "--dangerously-skip-permissions",
153
- "--bare",
154
- "--model",
155
- "sonnet",
156
- "-p",
157
- "Summarize what was changed in this workspace based on `git diff HEAD~1` and `git log -1`. Be concise (under 500 words).",
158
- ], { cwd: workspace, stdio: ["ignore", "pipe", "pipe"] });
159
- let stdout = "";
160
- child.stdout.on("data", (chunk) => {
161
- stdout += chunk.toString();
162
- });
163
- const timer = setTimeout(() => {
164
- child.kill("SIGTERM");
165
- reject(new Error("summary timed out"));
166
- }, SUMMARY_TIMEOUT_MS);
167
- child.on("close", (code) => {
168
- clearTimeout(timer);
169
- if (code === 0 && stdout.trim()) {
170
- resolve(stdout);
171
- }
172
- else {
173
- reject(new Error("summary failed"));
174
- }
175
- });
176
- child.on("error", (err) => {
177
- clearTimeout(timer);
178
- reject(err);
179
- });
180
- });
140
+ // 3. Fallback
141
+ const elapsed = Math.round((Date.now() - task.startedAt) / 1000);
142
+ return `[async] Task ${task.sessionName} completed after ${elapsed}s. No output captured.`;
181
143
  }
182
144
  }
183
145
  //# sourceMappingURL=async-watcher.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"async-watcher.js","sourceRoot":"","sources":["../src/async-watcher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"async-watcher.js","sourceRoot":"","sources":["../src/async-watcher.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../src/daemon.ts"],"names":[],"mappings":"AA0BA;;;;;;;;GAQG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAqJjD;AAED;;;;GAIG;AACH,wBAAgB,UAAU,IAAI,IAAI,CAgDjC;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAuBrF;AAID,6BAA6B;AAC7B,wBAAgB,OAAO,IAAI,MAAM,CAEhC"}
1
+ {"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../src/daemon.ts"],"names":[],"mappings":"AA0BA;;;;;;;;GAQG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CA0IjD;AAED;;;;GAIG;AACH,wBAAgB,UAAU,IAAI,IAAI,CAgDjC;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAuBrF;AAID,6BAA6B;AAC7B,wBAAgB,OAAO,IAAI,MAAM,CAEhC"}
package/dist/daemon.js CHANGED
@@ -5,9 +5,9 @@ import { SkillManager } from './skills.js';
5
5
  import { ContextBuilder } from './context.js';
6
6
  import { CCSpawner } from './spawner.js';
7
7
  import { MessageRouter } from './router.js';
8
+ import { AsyncTaskWatcher } from './async-watcher.js';
8
9
  import { PluginLoader } from './plugin.js';
9
10
  import { CrossAgentMessenger } from './messaging.js';
10
- import { AsyncTaskWatcher } from './async-watcher.js';
11
11
  import { createIpcServer, socketPath } from './ipc.js';
12
12
  import { configureLogger, logger } from './logger.js';
13
13
  import { writeFileSync, readFileSync, existsSync, unlinkSync, statSync } from 'node:fs';
@@ -43,40 +43,23 @@ export async function startDaemon() {
43
43
  const skills = new SkillManager(ccgHome);
44
44
  const context = new ContextBuilder(sessions, skills, ccgHome, registry);
45
45
  const spawner = new CCSpawner();
46
- // 5. Create PluginLoader (needed by watcher callbacks)
46
+ // 5. Create PluginLoader
47
47
  const loader = new PluginLoader();
48
- // 5.5 Create async task watcher
49
- const watcher = new AsyncTaskWatcher({
50
- sendToChannel: async (channel, botId, content) => {
51
- const gatewayPlugins = loader.getPluginsByType("gateway");
52
- for (const plugin of gatewayPlugins) {
53
- const gw = plugin;
54
- if (typeof gw.sendToChannel === "function") {
55
- try {
56
- await gw.sendToChannel(channel, botId, content);
57
- return;
58
- }
59
- catch {
60
- // try next gateway
61
- }
62
- }
63
- }
64
- logger.error(`async-watcher: no gateway could deliver result to channel ${channel}`);
65
- },
66
- appendToSession: async (agentId, sessionKey, content, tokens) => {
67
- await sessions.appendMessage(agentId, sessionKey, {
68
- role: "assistant",
69
- content,
70
- ts: Date.now(),
71
- tokens,
72
- });
73
- },
74
- });
75
- // 5.6 Create router (needs watcher)
76
- const router = new MessageRouter(registry, sessions, context, spawner, config.bindings, watcher);
77
- // 5.7 Create messenger (needs loader and router)
48
+ // 5.5 Create router
49
+ const router = new MessageRouter(registry, sessions, context, spawner, config.bindings);
50
+ // 5.6 Create messenger (needs loader and router)
78
51
  const messenger = new CrossAgentMessenger(registry, config.bindings, loader, ccgHome);
79
52
  messenger.setRouter(router);
53
+ // 5.7 Create async task watcher
54
+ const watcher = new AsyncTaskWatcher(spawner, sessions, (gateway) => {
55
+ // Resolve sendToChannel from the loaded plugin for this gateway
56
+ const plugin = loader.getPlugin(`${gateway}-gateway`);
57
+ if (plugin && typeof plugin.sendToChannel === 'function') {
58
+ return plugin.sendToChannel;
59
+ }
60
+ return null;
61
+ });
62
+ router.setWatcher(watcher);
80
63
  // 6. Build CcgCore object for plugins
81
64
  const core = {
82
65
  config,
@@ -107,9 +90,9 @@ export async function startDaemon() {
107
90
  }
108
91
  // 8. Start all plugins
109
92
  await loader.startAll();
110
- // 8.5 Start async task watcher
93
+ // 8.1 Start async task watcher
111
94
  watcher.start();
112
- // 9. Start IPC server for cross-agent messaging from CLI
95
+ // 8.5 Start IPC server for cross-agent messaging from CLI
113
96
  const ipcServer = createIpcServer(async (toAgent, content, fromAgent) => {
114
97
  await messenger.send(toAgent, content, fromAgent);
115
98
  });
@@ -119,7 +102,10 @@ export async function startDaemon() {
119
102
  // 11. Set up signal handlers for graceful shutdown
120
103
  const shutdown = async (signal) => {
121
104
  logger.info(`ccgateway received ${signal}, shutting down...`);
122
- watcher.stop();
105
+ try {
106
+ watcher.stop();
107
+ }
108
+ catch { /* non-fatal */ }
123
109
  try {
124
110
  ipcServer.close();
125
111
  removeSocketFile();
@@ -1 +1 @@
1
- {"version":3,"file":"daemon.js","sourceRoot":"","sources":["../src/daemon.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"daemon.js","sourceRoot":"","sources":["../src/daemon.ts"],"names":[],"mappings":"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"}
@@ -18,10 +18,24 @@ export declare class CrossAgentMessenger {
18
18
  /** Set the router for internal message routing (called after router is created) */
19
19
  setRouter(router: MessageRouter): void;
20
20
  /**
21
- * Send a message to an agent. Uses channel-native messaging if the agent
22
- * has a gateway binding, otherwise falls back to file-based inbox.
21
+ * Send a message to an agent. The request is posted to the target's
22
+ * channel for visibility, then the target agent processes it **in the
23
+ * background**. When done, the response is posted to both the target's
24
+ * channel and the sender's channel.
25
+ *
26
+ * Returns immediately after posting the request — does NOT block waiting
27
+ * for the target agent to finish.
23
28
  */
24
29
  send(toAgentId: string, content: string, fromAgentId?: string): Promise<void>;
30
+ /**
31
+ * Route a cross-agent message in the background and post the response
32
+ * to both the target's channel and the sender's channel when done.
33
+ */
34
+ private routeInBackground;
35
+ /**
36
+ * Get the sendToChannel function for a gateway, if available.
37
+ */
38
+ private getSendToChannel;
25
39
  /**
26
40
  * Direct file-based inbox write.
27
41
  * Appends to $CCG_HOME/agents/{toAgentId}/inbox.jsonl
@@ -1 +1 @@
1
- {"version":3,"file":"messaging.d.ts","sourceRoot":"","sources":["../src/messaging.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAOjD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,OAAO,CAAC;CACf;AAID,qBAAa,mBAAmB;IAI5B,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,OAAO;IANjB,OAAO,CAAC,MAAM,CAAC,CAAgB;gBAGrB,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,aAAa,EAAE,EACzB,OAAO,EAAE,YAAY,EACrB,OAAO,EAAE,MAAM;IAGzB,mFAAmF;IACnF,SAAS,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI;IAItC;;;OAGG;IACG,IAAI,CACR,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC;IAiFhB;;;OAGG;IACG,WAAW,CACf,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC;IAkBhB;;OAEG;IACG,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAqBzD;;OAEG;IACG,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAuBnD;;OAEG;IACH,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;CAGtC"}
1
+ {"version":3,"file":"messaging.d.ts","sourceRoot":"","sources":["../src/messaging.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAQjD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,OAAO,CAAC;CACf;AAYD,qBAAa,mBAAmB;IAI5B,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,OAAO;IANjB,OAAO,CAAC,MAAM,CAAC,CAAgB;gBAGrB,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,aAAa,EAAE,EACzB,OAAO,EAAE,YAAY,EACrB,OAAO,EAAE,MAAM;IAGzB,mFAAmF;IACnF,SAAS,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI;IAItC;;;;;;;;OAQG;IACG,IAAI,CACR,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC;IA+ChB;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAwEzB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAYxB;;;OAGG;IACG,WAAW,CACf,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC;IAkBhB;;OAEG;IACG,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAqBzD;;OAEG;IACG,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAuBnD;;OAEG;IACH,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;CAGtC"}