@openclaw-cloud/agent-controller 1.0.0-beta.2 → 1.0.0-beta.21

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 (134) hide show
  1. package/bin/agent-controller.js +11 -2
  2. package/dist/api.d.ts +4 -0
  3. package/dist/api.js +10 -2
  4. package/dist/api.js.map +1 -1
  5. package/dist/commands/bootstrap.js +9 -34
  6. package/dist/commands/bootstrap.js.map +1 -1
  7. package/dist/commands/channel-server.d.ts +17 -0
  8. package/dist/commands/channel-server.js +71 -0
  9. package/dist/commands/channel-server.js.map +1 -0
  10. package/dist/commands/heartbeat-cli.js +5 -4
  11. package/dist/commands/heartbeat-cli.js.map +1 -1
  12. package/dist/commands/install-deps.js +18 -8
  13. package/dist/commands/install-deps.js.map +1 -1
  14. package/dist/commands/install.js +8 -8
  15. package/dist/commands/install.js.map +1 -1
  16. package/dist/commands/self-update.js +2 -1
  17. package/dist/commands/self-update.js.map +1 -1
  18. package/dist/config-file.js +20 -4
  19. package/dist/config-file.js.map +1 -1
  20. package/dist/config.d.ts +39 -0
  21. package/dist/config.js +101 -0
  22. package/dist/config.js.map +1 -0
  23. package/dist/connection.d.ts +2 -0
  24. package/dist/connection.js +38 -7
  25. package/dist/connection.js.map +1 -1
  26. package/dist/debug.js +2 -1
  27. package/dist/debug.js.map +1 -1
  28. package/dist/handlers/backup.js +4 -1
  29. package/dist/handlers/backup.js.map +1 -1
  30. package/dist/handlers/board-handler.d.ts +4 -0
  31. package/dist/handlers/board-handler.js +127 -100
  32. package/dist/handlers/board-handler.js.map +1 -1
  33. package/dist/handlers/chat.d.ts +17 -0
  34. package/dist/handlers/chat.js +187 -6
  35. package/dist/handlers/chat.js.map +1 -1
  36. package/dist/handlers/deploy.js +16 -29
  37. package/dist/handlers/deploy.js.map +1 -1
  38. package/dist/handlers/diagnostics.js +12 -0
  39. package/dist/handlers/diagnostics.js.map +1 -1
  40. package/dist/handlers/knowledge-sync.js +21 -1
  41. package/dist/handlers/knowledge-sync.js.map +1 -1
  42. package/dist/handlers/memory.d.ts +13 -0
  43. package/dist/handlers/memory.js +128 -0
  44. package/dist/handlers/memory.js.map +1 -0
  45. package/dist/handlers/onboarding.js +18 -2
  46. package/dist/handlers/onboarding.js.map +1 -1
  47. package/dist/handlers/package-install.js +44 -12
  48. package/dist/handlers/package-install.js.map +1 -1
  49. package/dist/handlers/pair.js +14 -1
  50. package/dist/handlers/pair.js.map +1 -1
  51. package/dist/handlers/restart.js +3 -1
  52. package/dist/handlers/restart.js.map +1 -1
  53. package/dist/handlers/self-update.js +3 -1
  54. package/dist/handlers/self-update.js.map +1 -1
  55. package/dist/handlers/stop.js +7 -0
  56. package/dist/handlers/stop.js.map +1 -1
  57. package/dist/handlers/telegram-webhook.js +23 -0
  58. package/dist/handlers/telegram-webhook.js.map +1 -1
  59. package/dist/handlers/update-config.js +8 -2
  60. package/dist/handlers/update-config.js.map +1 -1
  61. package/dist/heartbeat.d.ts +7 -0
  62. package/dist/heartbeat.js +15 -65
  63. package/dist/heartbeat.js.map +1 -1
  64. package/dist/index.d.ts +1 -1
  65. package/dist/index.js +140 -29
  66. package/dist/index.js.map +1 -1
  67. package/dist/mcp-client.js.map +1 -1
  68. package/dist/memory-mcp-server.d.ts +8 -0
  69. package/dist/memory-mcp-server.js +291 -0
  70. package/dist/memory-mcp-server.js.map +1 -0
  71. package/dist/platform/linux.js +7 -3
  72. package/dist/platform/linux.js.map +1 -1
  73. package/dist/platform/macos.js +4 -2
  74. package/dist/platform/macos.js.map +1 -1
  75. package/dist/platform/windows.js +4 -2
  76. package/dist/platform/windows.js.map +1 -1
  77. package/dist/providers/claude-code/channel-server.d.ts +60 -0
  78. package/dist/providers/claude-code/channel-server.js +155 -0
  79. package/dist/providers/claude-code/channel-server.js.map +1 -0
  80. package/dist/providers/claude-code/index.d.ts +68 -0
  81. package/dist/providers/claude-code/index.js +280 -0
  82. package/dist/providers/claude-code/index.js.map +1 -0
  83. package/dist/providers/claude-code/login-flow.d.ts +26 -0
  84. package/dist/providers/claude-code/login-flow.js +135 -0
  85. package/dist/providers/claude-code/login-flow.js.map +1 -0
  86. package/dist/providers/claude-code/settings-writer.d.ts +29 -0
  87. package/dist/providers/claude-code/settings-writer.js +94 -0
  88. package/dist/providers/claude-code/settings-writer.js.map +1 -0
  89. package/dist/providers/claude-code/socket-bridge.d.ts +98 -0
  90. package/dist/providers/claude-code/socket-bridge.js +301 -0
  91. package/dist/providers/claude-code/socket-bridge.js.map +1 -0
  92. package/dist/providers/claude-code/spawn-claude.d.ts +48 -0
  93. package/dist/providers/claude-code/spawn-claude.js +108 -0
  94. package/dist/providers/claude-code/spawn-claude.js.map +1 -0
  95. package/dist/providers/index.d.ts +4 -2
  96. package/dist/providers/index.js +16 -0
  97. package/dist/providers/index.js.map +1 -1
  98. package/dist/providers/mock/index.js.map +1 -1
  99. package/dist/providers/openclaw/device-identity.js +2 -2
  100. package/dist/providers/openclaw/device-identity.js.map +1 -1
  101. package/dist/providers/openclaw/gateway-adapter.js +19 -8
  102. package/dist/providers/openclaw/gateway-adapter.js.map +1 -1
  103. package/dist/providers/openclaw/gateway-client.js +9 -3
  104. package/dist/providers/openclaw/gateway-client.js.map +1 -1
  105. package/dist/providers/openclaw/index.js +14 -3
  106. package/dist/providers/openclaw/index.js.map +1 -1
  107. package/dist/types.d.ts +1 -1
  108. package/dist/utils/agent-controller-bin.d.ts +8 -0
  109. package/dist/utils/agent-controller-bin.js +58 -0
  110. package/dist/utils/agent-controller-bin.js.map +1 -0
  111. package/dist/utils/anthropic-auth.d.ts +25 -0
  112. package/dist/utils/anthropic-auth.js +13 -0
  113. package/dist/utils/anthropic-auth.js.map +1 -0
  114. package/dist/utils/apply-config.d.ts +28 -0
  115. package/dist/utils/apply-config.js +234 -4
  116. package/dist/utils/apply-config.js.map +1 -1
  117. package/dist/utils/claude-env.js +20 -9
  118. package/dist/utils/claude-env.js.map +1 -1
  119. package/dist/utils/config-merge-paths.d.ts +21 -0
  120. package/dist/utils/config-merge-paths.js +27 -0
  121. package/dist/utils/config-merge-paths.js.map +1 -0
  122. package/dist/utils/env.js +2 -1
  123. package/dist/utils/env.js.map +1 -1
  124. package/dist/utils/knowledge-graph.d.ts +66 -0
  125. package/dist/utils/knowledge-graph.js +163 -0
  126. package/dist/utils/knowledge-graph.js.map +1 -0
  127. package/dist/utils/release-channel.js +2 -4
  128. package/dist/utils/release-channel.js.map +1 -1
  129. package/dist/utils/write-workspace-files.d.ts +15 -0
  130. package/dist/utils/write-workspace-files.js +48 -0
  131. package/dist/utils/write-workspace-files.js.map +1 -0
  132. package/dist/workspace.js +4 -5
  133. package/dist/workspace.js.map +1 -1
  134. package/package.json +24 -3
@@ -1,4 +1,7 @@
1
1
  import { getProvider } from '../providers/index.js';
2
+ import { ClaudeCodeProvider } from '../providers/claude-code/index.js';
3
+ import { toErrorMessage } from '../utils/response.js';
4
+ import { logCollector } from '../connection.js';
2
5
  /**
3
6
  * Try to parse JSON response from MCP tool result.
4
7
  * Returns the parsed object or throws on error.
@@ -34,7 +37,7 @@ export class BoardHandler {
34
37
  try {
35
38
  await this.mcpClient.connect();
36
39
  this.mcpToolNames = await this.mcpClient.listTools();
37
- console.log(`[board] MCP tools available: ${this.mcpToolNames.join(', ')}`);
40
+ logCollector?.push('board_mcp_tools', 'info', `MCP tools available: ${this.mcpToolNames.join(', ')}`);
38
41
  this.useMcp = true;
39
42
  // Set up MCP event handler for board notifications
40
43
  this.mcpClient.setEventHandler((event) => {
@@ -43,12 +46,12 @@ export class BoardHandler {
43
46
  cardId: event.cardId,
44
47
  columnId: event.columnId,
45
48
  }).catch((err) => {
46
- console.error('[board] MCP event handler error:', err instanceof Error ? err.message : err);
49
+ logCollector?.push('board_mcp_event_error', 'error', `MCP event handler error: ${toErrorMessage(err)}`);
47
50
  });
48
51
  });
49
52
  }
50
53
  catch (err) {
51
- console.warn('[board] MCP connection failed, falling back to HTTP:', err instanceof Error ? err.message : err);
54
+ logCollector?.push('board_mcp_fallback', 'error', `MCP connection failed, falling back to HTTP: ${toErrorMessage(err)}`);
52
55
  this.useMcp = false;
53
56
  }
54
57
  }
@@ -56,14 +59,14 @@ export class BoardHandler {
56
59
  this.boardId = data.board.id;
57
60
  this.workspaceId = data.board.workspaceId;
58
61
  this.myColumnIds = data.board.myColumnIds;
59
- console.log(`Board initialized: ${this.boardId} (workspace: ${this.workspaceId}), watching ${this.myColumnIds.length} column(s)`);
62
+ logCollector?.push('board_initialized', 'info', `Board initialized: ${this.boardId} (workspace: ${this.workspaceId}), watching ${this.myColumnIds.length} column(s)`);
60
63
  // Backfill: check for existing unassigned cards in my columns
61
64
  await this.checkQueue(data);
62
65
  // Return workspaceId for channel subscription (board:<workspaceId>)
63
66
  return this.workspaceId;
64
67
  }
65
68
  catch (err) {
66
- console.error('Board initialization failed:', err instanceof Error ? err.message : err);
69
+ logCollector?.push('board_init_error', 'warn', `Board initialization failed: ${toErrorMessage(err)}`);
67
70
  return null;
68
71
  }
69
72
  }
@@ -74,87 +77,71 @@ export class BoardHandler {
74
77
  */
75
78
  findTool(method, pathFragment) {
76
79
  const prefix = method.toLowerCase() + '_';
77
- return this.mcpToolNames.find((t) => t.startsWith(prefix) && t.includes(pathFragment.replace(/[^a-zA-Z0-9]/g, '_'))) ?? null;
80
+ return (this.mcpToolNames.find((t) => t.startsWith(prefix) && t.includes(pathFragment.replace(/[^a-zA-Z0-9]/g, '_'))) ?? null);
78
81
  }
79
- async getBoard() {
80
- if (this.useMcp && this.mcpClient) {
81
- const toolName = this.findTool('get', 'api_agent_board');
82
- if (toolName && !toolName.includes('cards')) {
83
- const result = await this.mcpClient.callTool(toolName);
84
- return parseMcpResult(result, toolName);
85
- }
82
+ /**
83
+ * Try an MCP tool call first; fall back to HTTP if MCP is unavailable or tool not found.
84
+ */
85
+ async mcpOrHttp(toolName, mcpCall, httpFallback) {
86
+ if (this.useMcp && this.mcpClient && toolName) {
87
+ return mcpCall(this.mcpClient, toolName);
86
88
  }
87
- // Fallback to HTTP
88
- return this.api.get('/api/agent/board');
89
+ return httpFallback();
90
+ }
91
+ async getBoard() {
92
+ const rawTool = this.findTool('get', 'api_agent_board');
93
+ const toolName = rawTool && !rawTool.includes('cards') ? rawTool : null;
94
+ return this.mcpOrHttp(toolName, async (client, tool) => parseMcpResult(await client.callTool(tool), tool), () => this.api.get('/api/agent/board'));
89
95
  }
90
96
  async claimCard(cardId) {
91
- if (this.useMcp && this.mcpClient) {
92
- const toolName = this.findTool('post', 'agent_board_cards__cardId__claim');
93
- if (toolName) {
94
- const result = await this.mcpClient.callTool(toolName, { cardId });
95
- // Convert MCP result to Response-like for compatibility
96
- if (result.isError) {
97
- const text = result.content[0]?.text ?? '';
98
- const status = text.includes('409') ? 409 : 500;
99
- return { ok: false, status, text: () => Promise.resolve(text) };
100
- }
101
- return { ok: true, status: 200, text: () => Promise.resolve(result.content[0]?.text ?? '') };
97
+ return this.mcpOrHttp(this.findTool('post', 'agent_board_cards__cardId__claim'), async (client, tool) => {
98
+ const result = await client.callTool(tool, { cardId });
99
+ // Convert MCP result to Response-like for compatibility
100
+ if (result.isError) {
101
+ const text = result.content[0]?.text ?? '';
102
+ const status = text.includes('409') ? 409 : 500;
103
+ return { ok: false, status, text: () => Promise.resolve(text) };
102
104
  }
103
- }
104
- return this.api.post(`/api/agent/board/cards/${cardId}/claim`);
105
+ return {
106
+ ok: true,
107
+ status: 200,
108
+ text: () => Promise.resolve(result.content[0]?.text ?? ''),
109
+ };
110
+ }, () => this.api.post(`/api/agent/board/cards/${cardId}/claim`));
105
111
  }
106
112
  async getTask(cardId) {
107
- if (this.useMcp && this.mcpClient) {
108
- const toolName = this.findTool('get', 'agent_board_cards__cardId__task');
109
- if (toolName) {
110
- const result = await this.mcpClient.callTool(toolName, { cardId });
111
- return parseMcpResult(result, toolName);
112
- }
113
- }
114
- return this.api.get(`/api/agent/board/cards/${cardId}/task`);
113
+ return this.mcpOrHttp(this.findTool('get', 'agent_board_cards__cardId__task'), async (client, tool) => parseMcpResult(await client.callTool(tool, { cardId }), tool), () => this.api.get(`/api/agent/board/cards/${cardId}/task`));
115
114
  }
116
115
  async postResult(cardId, body) {
117
- if (this.useMcp && this.mcpClient) {
118
- const toolName = this.findTool('post', 'agent_board_cards__cardId__result');
119
- if (toolName) {
120
- const result = await this.mcpClient.callTool(toolName, { cardId, body });
121
- if (result.isError) {
122
- throw new Error(`MCP tool ${toolName} failed: ${result.content[0]?.text}`);
123
- }
124
- return;
116
+ return this.mcpOrHttp(this.findTool('post', 'agent_board_cards__cardId__result'), async (client, tool) => {
117
+ const result = await client.callTool(tool, { cardId, body });
118
+ if (result.isError) {
119
+ throw new Error(`MCP tool ${tool} failed: ${result.content[0]?.text}`);
125
120
  }
126
- }
127
- await this.api.post(`/api/agent/board/cards/${cardId}/result`, body);
121
+ }, async () => {
122
+ await this.api.post(`/api/agent/board/cards/${cardId}/result`, body);
123
+ });
128
124
  }
129
125
  async postArtifact(cardId, body) {
130
- if (this.useMcp && this.mcpClient) {
131
- const toolName = this.findTool('post', 'agent_board_cards__cardId__artifacts');
132
- if (toolName) {
133
- await this.mcpClient.callTool(toolName, { cardId, body });
134
- return;
135
- }
136
- }
137
- await this.api.post(`/api/agent/board/cards/${cardId}/artifacts`, body);
126
+ return this.mcpOrHttp(this.findTool('post', 'agent_board_cards__cardId__artifacts'), async (client, tool) => {
127
+ await client.callTool(tool, { cardId, body });
128
+ }, async () => {
129
+ await this.api.post(`/api/agent/board/cards/${cardId}/artifacts`, body);
130
+ });
138
131
  }
139
132
  async postComment(cardId, body) {
140
- if (this.useMcp && this.mcpClient) {
141
- const toolName = this.findTool('post', 'agent_board_cards__cardId__comments');
142
- if (toolName) {
143
- await this.mcpClient.callTool(toolName, { cardId, body });
144
- return;
145
- }
146
- }
147
- await this.api.post(`/api/agent/board/cards/${cardId}/comments`, body);
133
+ return this.mcpOrHttp(this.findTool('post', 'agent_board_cards__cardId__comments'), async (client, tool) => {
134
+ await client.callTool(tool, { cardId, body });
135
+ }, async () => {
136
+ await this.api.post(`/api/agent/board/cards/${cardId}/comments`, body);
137
+ });
148
138
  }
149
139
  async postMove(cardId) {
150
- if (this.useMcp && this.mcpClient) {
151
- const toolName = this.findTool('post', 'agent_board_cards__cardId__move');
152
- if (toolName) {
153
- await this.mcpClient.callTool(toolName, { cardId });
154
- return;
155
- }
156
- }
157
- await this.api.post(`/api/agent/board/cards/${cardId}/move`);
140
+ return this.mcpOrHttp(this.findTool('post', 'agent_board_cards__cardId__move'), async (client, tool) => {
141
+ await client.callTool(tool, { cardId });
142
+ }, async () => {
143
+ await this.api.post(`/api/agent/board/cards/${cardId}/move`);
144
+ });
158
145
  }
159
146
  // ─── Board event handling ────────────────────────────────────────────────
160
147
  async onBoardEvent(event) {
@@ -180,22 +167,22 @@ export class BoardHandler {
180
167
  const res = await this.claimCard(cardId);
181
168
  if (res.ok) {
182
169
  this.boardState = { state: 'working', cardId };
183
- console.log(`Claimed card: ${cardId}`);
170
+ logCollector?.push('card_claimed', 'info', `Claimed card: ${cardId}`, { cardId });
184
171
  await this.startTask(cardId);
185
172
  }
186
173
  else if (res.status === 409) {
187
174
  this.boardState = { state: 'idle', cardId: null };
188
- console.log(`Card ${cardId} already claimed or agent busy, skipping`);
175
+ logCollector?.push('card_claim_skipped', 'info', `Card ${cardId} already claimed or agent busy, skipping`, { cardId });
189
176
  }
190
177
  else {
191
178
  this.boardState = { state: 'idle', cardId: null };
192
179
  const body = await res.text().catch(() => '');
193
- console.error(`Claim card ${cardId} failed (HTTP ${res.status}): ${body}`);
180
+ logCollector?.push('card_claim_error', 'error', `Claim card ${cardId} failed (HTTP ${res.status}): ${body}`, { cardId, status: res.status });
194
181
  }
195
182
  }
196
183
  catch (err) {
197
184
  this.boardState = { state: 'idle', cardId: null };
198
- console.error('tryClaimCard error:', err instanceof Error ? err.message : err);
185
+ logCollector?.push('card_claim_error', 'error', `tryClaimCard error: ${toErrorMessage(err)}`, { cardId });
199
186
  }
200
187
  }
201
188
  async startTask(cardId) {
@@ -213,33 +200,70 @@ export class BoardHandler {
213
200
  const provider = getProvider();
214
201
  if (!provider)
215
202
  throw new Error('No agent provider configured');
216
- await new Promise((resolve, reject) => {
217
- const timeoutId = setTimeout(() => reject(new Error('Provider timeout')), 300_000);
218
- provider.sendMessage({
219
- sessionKey: 'board-task',
220
- text: taskData.prompt,
221
- idempotencyKey: `board-${cardId}-${Date.now()}`,
222
- onDone: () => {
223
- clearTimeout(timeoutId);
224
- resolve();
225
- },
226
- onError: (error) => {
203
+ // claude-code: board tasks flow through the channel as plain chat
204
+ // notifications Claude replies asynchronously via the MCP `reply`
205
+ // tool, we don't block on onDone here.
206
+ if (provider instanceof ClaudeCodeProvider) {
207
+ provider.pushToChannel(`New task (card ${cardId}):\n\n${taskData.prompt}`, {
208
+ chat_id: 'board',
209
+ source: 'board',
210
+ message_id: cardId,
211
+ });
212
+ // BOARD-CC-COMPLETION: Claude drives card completion itself by
213
+ // calling the agent-board MCP tools (POST /api/agent/board/cards/:id/
214
+ // result | artifacts | comments | move) exposed via the backend MCP
215
+ // server. We intentionally do NOT call completeTask() here — that
216
+ // would mark the card `completed` before Claude has done any work.
217
+ //
218
+ // Trade-off: we reset local state to `idle` so the agent can claim
219
+ // additional cards while Claude works, but the card itself stays
220
+ // `claimed/in-progress` on the backend until Claude posts a result.
221
+ // If Claude never finishes (crash, exit) the card appears stuck
222
+ // until a backend reaper times it out.
223
+ //
224
+ // TODO: detect Claude's own result-call (via a `board:done` marker
225
+ // in reply meta, or by wiring a second MCP notification back to
226
+ // this handler) so we can log completion in agent-controller too.
227
+ logCollector?.push('card_task_handed_off', 'info', `Card ${cardId} handed to claude-code channel; completion driven by agent via MCP`, { cardId, provider: 'claude-code' });
228
+ delete process.env.BOARD_CARD_ID;
229
+ this.currentCardProcessingId = null;
230
+ this.boardState = { state: 'idle', cardId: null };
231
+ this.checkQueue().catch((err) => {
232
+ logCollector?.push('board_queue_check_error', 'error', `checkQueue after claude-code handoff error: ${toErrorMessage(err)}`, { cardId });
233
+ });
234
+ return;
235
+ }
236
+ else {
237
+ await new Promise((resolve, reject) => {
238
+ const timeoutId = setTimeout(() => reject(new Error('Provider timeout')), 300_000);
239
+ provider
240
+ .sendMessage({
241
+ sessionKey: 'board-task',
242
+ text: taskData.prompt,
243
+ idempotencyKey: `board-${cardId}-${Date.now()}`,
244
+ onDone: () => {
245
+ clearTimeout(timeoutId);
246
+ resolve();
247
+ },
248
+ onError: (error) => {
249
+ clearTimeout(timeoutId);
250
+ reject(new Error(error));
251
+ },
252
+ })
253
+ .catch((err) => {
227
254
  clearTimeout(timeoutId);
228
- reject(new Error(error));
229
- },
230
- }).catch((err) => {
231
- clearTimeout(timeoutId);
232
- reject(err);
255
+ reject(err);
256
+ });
233
257
  });
234
- });
258
+ }
235
259
  }
236
260
  // STRUCT-2: reset state after task is sent so new cards can be claimed
237
261
  await this.completeTask(cardId);
238
262
  }
239
263
  catch (err) {
240
- console.error(`startTask(${cardId}) error:`, err instanceof Error ? err.message : err);
264
+ logCollector?.push('card_task_error', 'error', `startTask(${cardId}) error: ${toErrorMessage(err)}`, { cardId });
241
265
  // Report failure to backend
242
- await this.reportResult(cardId, 'failed', err instanceof Error ? err.message : String(err));
266
+ await this.reportResult(cardId, 'failed', toErrorMessage(err));
243
267
  this.boardState = { state: 'idle', cardId: null };
244
268
  }
245
269
  }
@@ -262,18 +286,21 @@ export class BoardHandler {
262
286
  await this.postMove(cardId);
263
287
  break;
264
288
  }
265
- console.log(`Mock action executed: ${action.type}`);
289
+ logCollector?.push('board_mock_action', 'info', `Mock action executed: ${action.type}`, {
290
+ cardId,
291
+ actionType: action.type,
292
+ });
266
293
  }
267
294
  }
268
295
  async completeTask(cardId) {
269
- console.log(`Task completed: ${cardId}`);
296
+ logCollector?.push('card_task_completed', 'info', `Task completed: ${cardId}`, { cardId });
270
297
  delete process.env.BOARD_CARD_ID;
271
298
  // Report completion to backend
272
299
  await this.reportResult(cardId, 'completed');
273
300
  this.currentCardProcessingId = null;
274
301
  this.boardState = { state: 'idle', cardId: null };
275
302
  this.checkQueue().catch((err) => {
276
- console.error('checkQueue after completeTask error:', err instanceof Error ? err.message : err);
303
+ logCollector?.push('board_queue_check_error', 'error', `checkQueue after completeTask error: ${toErrorMessage(err)}`, { cardId });
277
304
  });
278
305
  }
279
306
  async reportResult(cardId, status, error) {
@@ -282,10 +309,10 @@ export class BoardHandler {
282
309
  if (error)
283
310
  body.error = error;
284
311
  await this.postResult(cardId, body);
285
- console.log(`Reported result for card ${cardId}: ${status}`);
312
+ logCollector?.push('card_result_reported', 'info', `Reported result for card ${cardId}: ${status}`, { cardId, status });
286
313
  }
287
314
  catch (err) {
288
- console.error(`reportResult(${cardId}) error:`, err instanceof Error ? err.message : err);
315
+ logCollector?.push('card_result_error', 'error', `reportResult(${cardId}) error: ${toErrorMessage(err)}`, { cardId });
289
316
  // Don't throw — result reporting failure shouldn't break the flow
290
317
  }
291
318
  }
@@ -313,11 +340,11 @@ export class BoardHandler {
313
340
  return pa - pb;
314
341
  return (a.createdAt ?? '').localeCompare(b.createdAt ?? '');
315
342
  });
316
- console.log(`Queue: ${candidates.length} unassigned card(s) in my columns, trying first`);
343
+ logCollector?.push('board_queue_check', 'info', `Queue: ${candidates.length} unassigned card(s) in my columns, trying first`, { count: candidates.length });
317
344
  await this.tryClaimCard(candidates[0].id);
318
345
  }
319
346
  catch (err) {
320
- console.error('checkQueue error:', err instanceof Error ? err.message : err);
347
+ logCollector?.push('board_queue_check_error', 'error', `checkQueue error: ${toErrorMessage(err)}`);
321
348
  }
322
349
  }
323
350
  getBoardStatus() {
@@ -1 +1 @@
1
- {"version":3,"file":"board-handler.js","sourceRoot":"","sources":["../../src/handlers/board-handler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"board-handler.js","sourceRoot":"","sources":["../../src/handlers/board-handler.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,21 @@
1
1
  import type { AgentCommand } from '../types.js';
2
+ import { ClaudeCodeProvider } from '../providers/claude-code/index.js';
3
+ /** Test-only: wipe any tracked in-flight claude-code chat sends. */
4
+ export declare function __resetClaudeChatRegistry(): void;
5
+ /**
6
+ * Register a one-shot reply publisher with the claude-code provider. Called
7
+ * at startup from `main()` once the provider is configured. The publisher
8
+ * receives Claude's async `reply` / `edit_message` tool calls and publishes
9
+ * them to the chat channel via the supplied callback (typically a wrapper
10
+ * around `api.publishResponse` that emits `chat_response`).
11
+ */
12
+ export declare function registerClaudeReplyPublisher(provider: ClaudeCodeProvider, publish: (payload: {
13
+ type: 'chat_response' | 'chat_edit';
14
+ correlationId?: string;
15
+ sessionKey?: string;
16
+ text: string;
17
+ source?: string;
18
+ }) => Promise<void> | void): void;
2
19
  export declare function handleChatListSessions(command: AgentCommand, publish: (data: unknown) => Promise<void>): Promise<void>;
3
20
  export declare function handleChatHistory(command: AgentCommand, publish: (data: unknown) => Promise<void>): Promise<void>;
4
21
  export declare function handleChatSend(command: AgentCommand, publish: (data: unknown) => Promise<void>, agentId: string): Promise<void>;