@mono-agent/agent-app 0.16.0 → 0.17.0

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/dist/acp-bridge.d.ts +12 -0
  2. package/dist/acp-bridge.d.ts.map +1 -0
  3. package/dist/acp-bridge.js +398 -0
  4. package/dist/acp-bridge.js.map +1 -0
  5. package/dist/adapter-send-tools.d.ts.map +1 -1
  6. package/dist/adapter-send-tools.js +80 -11
  7. package/dist/adapter-send-tools.js.map +1 -1
  8. package/dist/app-controller-channels.d.ts +1 -1
  9. package/dist/app-controller-channels.d.ts.map +1 -1
  10. package/dist/app-controller-channels.js +4 -1
  11. package/dist/app-controller-channels.js.map +1 -1
  12. package/dist/app-controller-responder.d.ts +4 -2
  13. package/dist/app-controller-responder.d.ts.map +1 -1
  14. package/dist/app-controller-responder.js +20 -1
  15. package/dist/app-controller-responder.js.map +1 -1
  16. package/dist/app-controller.d.ts +1 -1
  17. package/dist/app-controller.d.ts.map +1 -1
  18. package/dist/app-controller.js +1 -1
  19. package/dist/app-controller.js.map +1 -1
  20. package/dist/channel-drivers/slack.d.ts.map +1 -1
  21. package/dist/channel-drivers/slack.js +2 -0
  22. package/dist/channel-drivers/slack.js.map +1 -1
  23. package/dist/channel-drivers/tui.d.ts.map +1 -1
  24. package/dist/channel-drivers/tui.js +3 -0
  25. package/dist/channel-drivers/tui.js.map +1 -1
  26. package/dist/cli-args.d.ts +5 -1
  27. package/dist/cli-args.d.ts.map +1 -1
  28. package/dist/cli-args.js +24 -1
  29. package/dist/cli-args.js.map +1 -1
  30. package/dist/cli-commands.d.ts.map +1 -1
  31. package/dist/cli-commands.js +9 -1
  32. package/dist/cli-commands.js.map +1 -1
  33. package/dist/cli-help.d.ts.map +1 -1
  34. package/dist/cli-help.js +13 -0
  35. package/dist/cli-help.js.map +1 -1
  36. package/dist/config-reference.js +14 -0
  37. package/dist/config-reference.js.map +1 -1
  38. package/dist/configured-agent.d.ts +7 -0
  39. package/dist/configured-agent.d.ts.map +1 -1
  40. package/dist/configured-agent.js +3 -1
  41. package/dist/configured-agent.js.map +1 -1
  42. package/dist/posted-message-index.d.ts +13 -2
  43. package/dist/posted-message-index.d.ts.map +1 -1
  44. package/dist/posted-message-index.js +38 -3
  45. package/dist/posted-message-index.js.map +1 -1
  46. package/dist/run-history.js +182 -63
  47. package/dist/run-history.js.map +1 -1
  48. package/package.json +16 -15
  49. package/schema/mono-agent.config.schema.json +36 -0
  50. package/skills/mono-agent-composer/references/feature-coverage.md +1 -0
@@ -0,0 +1,12 @@
1
+ import { Readable, Writable } from "node:stream";
2
+ export interface RunAcpBridgeOptions {
3
+ readonly sourceId: string;
4
+ readonly requireToolEnvironment?: boolean;
5
+ readonly env?: Readonly<Record<string, string | undefined>>;
6
+ /** Test seams; the CLI uses the process stdio streams. */
7
+ readonly input?: Readable;
8
+ readonly output?: Writable;
9
+ readonly stderr?: Pick<Writable, "write">;
10
+ }
11
+ export declare function runAcpBridge(options: RunAcpBridgeOptions): Promise<number>;
12
+ //# sourceMappingURL=acp-bridge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acp-bridge.d.ts","sourceRoot":"","sources":["../src/acp-bridge.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AA4CjD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,sBAAsB,CAAC,EAAE,OAAO,CAAC;IAC1C,QAAQ,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;IAC5D,0DAA0D;IAC1D,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;CAC3C;AAaD,wBAAsB,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,CAiGhF"}
@@ -0,0 +1,398 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import { delimiter, isAbsolute } from "node:path";
3
+ import process from "node:process";
4
+ import { Readable, Writable } from "node:stream";
5
+ import { PROTOCOL_VERSION, RequestError, agent, methods, ndJsonStream, } from "@agentclientprotocol/sdk";
6
+ import { OperatorClient, discoverOperatorAgents, } from "@mono-agent/web";
7
+ import { monoAgentVersion } from "./cli-help.js";
8
+ const FORWARDED_TOOL_ENVIRONMENT_KEYS = [
9
+ "MULTICA_TOKEN",
10
+ "MULTICA_SERVER_URL",
11
+ "MULTICA_DAEMON_PORT",
12
+ "MULTICA_WORKSPACE_ID",
13
+ "MULTICA_AGENT_NAME",
14
+ "MULTICA_AGENT_ID",
15
+ "MULTICA_TASK_ID",
16
+ "MULTICA_TASK_SLOT",
17
+ "MULTICA_AUTOPILOT_RUN_ID",
18
+ "MULTICA_AUTOPILOT_ID",
19
+ "MULTICA_QUICK_CREATE_TASK_ID",
20
+ "MULTICA_QUICK_CREATE_ATTACHMENT_IDS",
21
+ ];
22
+ const SESSION_UUID = /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/iu;
23
+ const BRIDGE_ERROR_CODE = -32000;
24
+ const MAX_TOOL_CONTENT_CHARS = 64 * 1024;
25
+ export async function runAcpBridge(options) {
26
+ const env = options.env ?? process.env;
27
+ const input = options.input ?? process.stdin;
28
+ const output = options.output ?? process.stdout;
29
+ const stderr = options.stderr ?? process.stderr;
30
+ const resolveTarget = async (signal) => {
31
+ const discovered = await resolveExactSource(options.sourceId, env);
32
+ const client = new OperatorClient({
33
+ baseUrl: discovered.baseUrl,
34
+ ...(discovered.apiKey === undefined ? {} : { apiKey: discovered.apiKey }),
35
+ });
36
+ const info = await client.info(signal);
37
+ if (options.requireToolEnvironment === true && info.supportsToolEnvironment !== true) {
38
+ throw bridgeError("tool_environment_unavailable", `mono-agent source '${options.sourceId}' does not advertise request tool environment support.`);
39
+ }
40
+ return { discovered, client, info };
41
+ };
42
+ try {
43
+ await resolveTarget(AbortSignal.timeout(5_000));
44
+ }
45
+ catch (error) {
46
+ stderr.write(`mono-agent ACP bridge: ${errorMessage(error)}\n`);
47
+ return 1;
48
+ }
49
+ const activeTurns = new Map();
50
+ const app = agent({ name: `mono-agent ACP bridge (${options.sourceId})` });
51
+ app.onRequest(methods.agent.initialize, async ({ signal }) => {
52
+ const target = await requestTarget(resolveTarget, signal);
53
+ return {
54
+ protocolVersion: PROTOCOL_VERSION,
55
+ agentCapabilities: {
56
+ loadSession: true,
57
+ promptCapabilities: { image: false, audio: false, embeddedContext: false },
58
+ sessionCapabilities: { resume: {} },
59
+ },
60
+ authMethods: [],
61
+ agentInfo: {
62
+ name: "mono-agent-acp-bridge",
63
+ title: target.info.label ?? options.sourceId,
64
+ version: monoAgentVersion(),
65
+ },
66
+ };
67
+ });
68
+ app.onRequest(methods.agent.session.new, async ({ params, signal }) => {
69
+ rejectUnsupportedSessionInputs(params.mcpServers, params.additionalDirectories);
70
+ await requestTarget(resolveTarget, signal);
71
+ return { sessionId: newSessionId(options.sourceId) };
72
+ });
73
+ app.onRequest(methods.agent.session.load, async ({ params, signal }) => {
74
+ validateSessionId(params.sessionId, options.sourceId);
75
+ rejectUnsupportedSessionInputs(params.mcpServers, params.additionalDirectories);
76
+ await requestTarget(resolveTarget, signal);
77
+ return {};
78
+ });
79
+ app.onRequest(methods.agent.session.resume, async ({ params, signal }) => {
80
+ validateSessionId(params.sessionId, options.sourceId);
81
+ rejectUnsupportedSessionInputs(params.mcpServers ?? [], params.additionalDirectories);
82
+ await requestTarget(resolveTarget, signal);
83
+ return {};
84
+ });
85
+ app.onRequest(methods.agent.session.prompt, async (context) => {
86
+ return await runPrompt(context, {
87
+ sourceId: options.sourceId,
88
+ env,
89
+ resolveTarget,
90
+ activeTurns,
91
+ });
92
+ });
93
+ app.onNotification(methods.agent.session.cancel, async ({ params }) => {
94
+ validateSessionId(params.sessionId, options.sourceId);
95
+ const active = activeTurns.get(params.sessionId);
96
+ if (active === undefined)
97
+ return;
98
+ active.controller.abort(new Error("ACP client cancelled the session."));
99
+ await active.client.cancel(params.sessionId).catch(() => undefined);
100
+ });
101
+ const stream = ndJsonStream(Writable.toWeb(output), Readable.toWeb(input));
102
+ const connection = app.connect(stream);
103
+ await connection.closed;
104
+ for (const [sessionId, active] of activeTurns) {
105
+ active.controller.abort(new Error("ACP connection closed."));
106
+ await active.client.cancel(sessionId).catch(() => undefined);
107
+ }
108
+ return 0;
109
+ }
110
+ async function runPrompt(context, options) {
111
+ const { params } = context;
112
+ validateSessionId(params.sessionId, options.sourceId);
113
+ const text = textPrompt(params.prompt);
114
+ if (options.activeTurns.has(params.sessionId)) {
115
+ throw bridgeError("session_busy", `ACP session '${params.sessionId}' already has an active turn.`);
116
+ }
117
+ const target = await requestTarget(options.resolveTarget, context.signal);
118
+ const controller = new AbortController();
119
+ const signal = AbortSignal.any([context.signal, controller.signal]);
120
+ const active = { controller, client: target.client };
121
+ options.activeTurns.set(params.sessionId, active);
122
+ let publishedText = "";
123
+ let usage;
124
+ const toolNames = new Map();
125
+ const messageId = `mono-agent:${String(context.requestId)}`;
126
+ const cancelOperator = () => {
127
+ controller.abort(new Error("ACP prompt request was cancelled."));
128
+ void target.client.cancel(params.sessionId).catch(() => undefined);
129
+ };
130
+ context.signal.addEventListener("abort", cancelOperator, { once: true });
131
+ const publishText = async (next) => {
132
+ if (next === publishedText)
133
+ return;
134
+ if (!next.startsWith(publishedText)) {
135
+ await target.client.cancel(params.sessionId).catch(() => undefined);
136
+ controller.abort(new Error("Operator rewrote already-published assistant output."));
137
+ throw bridgeError("non_prefix_rewrite", "mono-agent replaced assistant output with a non-prefix rewrite that ACP cannot reconcile safely.");
138
+ }
139
+ const suffix = next.slice(publishedText.length);
140
+ publishedText = next;
141
+ if (suffix.length > 0) {
142
+ await context.client.notify(methods.client.session.update, {
143
+ sessionId: params.sessionId,
144
+ update: {
145
+ sessionUpdate: "agent_message_chunk",
146
+ messageId,
147
+ content: { type: "text", text: suffix },
148
+ },
149
+ });
150
+ }
151
+ };
152
+ try {
153
+ const result = await target.client.turn({
154
+ conversationId: params.sessionId,
155
+ text,
156
+ attachments: [],
157
+ metadata: {},
158
+ client: "acp",
159
+ ...(target.info.supportsToolEnvironment === true
160
+ ? { toolEnvironment: requestToolEnvironment(options.env) }
161
+ : {}),
162
+ signal,
163
+ onFrame: async (frame) => {
164
+ if (frame.kind === "append") {
165
+ await publishText(`${publishedText}${frame.delta}`);
166
+ return;
167
+ }
168
+ if (frame.kind === "replace") {
169
+ await publishText(frame.text);
170
+ return;
171
+ }
172
+ if (frame.kind === "status" && frame.text.trim().length > 0) {
173
+ await notifyUpdate(context, params.sessionId, {
174
+ sessionUpdate: "agent_thought_chunk",
175
+ content: { type: "text", text: frame.text },
176
+ });
177
+ return;
178
+ }
179
+ if (frame.kind === "event") {
180
+ usage = await publishEvent(context, params.sessionId, frame.event, target.info, toolNames, usage);
181
+ const toolName = toolNameFromEvent(frame.event, toolNames);
182
+ if (toolName?.toLowerCase() === "askuser") {
183
+ await target.client.cancel(params.sessionId).catch(() => undefined);
184
+ controller.abort(new Error("AskUser requires an interactive client."));
185
+ throw bridgeError("interaction_required", "mono-agent requested AskUser, but the Multica ACP bridge is non-interactive.");
186
+ }
187
+ }
188
+ },
189
+ });
190
+ if (result.finalText !== undefined)
191
+ await publishText(result.finalText);
192
+ return {
193
+ stopReason: signal.aborted ? "cancelled" : "end_turn",
194
+ ...(usage === undefined ? {} : { usage }),
195
+ };
196
+ }
197
+ catch (error) {
198
+ if (error instanceof RequestError)
199
+ throw error;
200
+ if (signal.aborted)
201
+ return { stopReason: "cancelled", ...(usage === undefined ? {} : { usage }) };
202
+ const code = codedErrorCode(error) ?? "operator_turn_failed";
203
+ throw bridgeError(code, `mono-agent operator turn failed: ${errorMessage(error)}`);
204
+ }
205
+ finally {
206
+ context.signal.removeEventListener("abort", cancelOperator);
207
+ if (options.activeTurns.get(params.sessionId) === active)
208
+ options.activeTurns.delete(params.sessionId);
209
+ }
210
+ }
211
+ async function publishEvent(context, sessionId, event, info, toolNames, currentUsage) {
212
+ if (event.type === "assistant_thought") {
213
+ await notifyUpdate(context, sessionId, {
214
+ sessionUpdate: "agent_thought_chunk",
215
+ content: { type: "text", text: event.text },
216
+ });
217
+ return currentUsage;
218
+ }
219
+ if (event.type === "tool_call_started") {
220
+ toolNames.set(event.id, event.name);
221
+ await notifyUpdate(context, sessionId, {
222
+ sessionUpdate: "tool_call",
223
+ toolCallId: event.id,
224
+ title: event.name,
225
+ name: event.name,
226
+ kind: toolKind(event.name),
227
+ status: "in_progress",
228
+ ...(event.arguments === undefined ? {} : { rawInput: event.arguments }),
229
+ });
230
+ return currentUsage;
231
+ }
232
+ if (event.type === "tool_call_progress") {
233
+ await notifyUpdate(context, sessionId, {
234
+ sessionUpdate: "tool_call_update",
235
+ toolCallId: event.id,
236
+ ...(event.name === undefined ? {} : { title: event.name, name: event.name }),
237
+ status: "in_progress",
238
+ ...(event.partialResult === undefined ? {} : { rawOutput: event.partialResult }),
239
+ });
240
+ return currentUsage;
241
+ }
242
+ if (event.type === "tool_call_completed") {
243
+ const name = event.name ?? toolNames.get(event.id);
244
+ await notifyUpdate(context, sessionId, {
245
+ sessionUpdate: "tool_call_update",
246
+ toolCallId: event.id,
247
+ ...(name === undefined ? {} : { title: name, name }),
248
+ status: event.isError === true ? "failed" : "completed",
249
+ ...(event.content === undefined
250
+ ? {}
251
+ : {
252
+ rawOutput: event.content,
253
+ content: [{
254
+ type: "content",
255
+ content: { type: "text", text: boundedToolContent(event.content) },
256
+ }],
257
+ }),
258
+ });
259
+ return currentUsage;
260
+ }
261
+ if (event.type !== "usage_update" || event.tokens === undefined)
262
+ return currentUsage;
263
+ const tokens = event.tokens;
264
+ const inputTokens = tokens.input + tokens.cacheRead + tokens.cacheCreation;
265
+ const totalTokens = inputTokens + tokens.output;
266
+ const contextWindow = info.model === undefined
267
+ ? undefined
268
+ : info.modelOptions?.[info.model]?.contextWindow;
269
+ await notifyUpdate(context, sessionId, {
270
+ sessionUpdate: "usage_update",
271
+ used: totalTokens,
272
+ size: Math.max(totalTokens, contextWindow ?? 1),
273
+ ...(event.cumulativeUsd === undefined
274
+ ? {}
275
+ : { cost: { amount: event.cumulativeUsd, currency: "USD" } }),
276
+ });
277
+ return {
278
+ totalTokens,
279
+ inputTokens,
280
+ outputTokens: tokens.output,
281
+ cachedReadTokens: tokens.cacheRead,
282
+ cachedWriteTokens: tokens.cacheCreation,
283
+ };
284
+ }
285
+ async function notifyUpdate(context, sessionId, update) {
286
+ await context.client.notify(methods.client.session.update, { sessionId, update });
287
+ }
288
+ async function resolveExactSource(sourceId, env) {
289
+ const sources = await discoverOperatorAgents({ env });
290
+ const discovered = sources.find((entry) => entry.source.sourceId === sourceId);
291
+ if (discovered === undefined) {
292
+ throw bridgeError("source_not_found", `No mono-agent operator source named '${sourceId}' is registered.`);
293
+ }
294
+ if (discovered.source.health !== "running") {
295
+ throw bridgeError("source_not_running", `mono-agent source '${sourceId}' is ${discovered.source.health}, not running.`);
296
+ }
297
+ if (discovered.baseUrl === undefined) {
298
+ throw bridgeError("operator_unavailable", `mono-agent source '${sourceId}' has no trusted loopback operator endpoint.`);
299
+ }
300
+ return discovered;
301
+ }
302
+ function requestToolEnvironment(env) {
303
+ const values = {};
304
+ for (const key of FORWARDED_TOOL_ENVIRONMENT_KEYS) {
305
+ const value = env[key];
306
+ if (value !== undefined)
307
+ values[key] = value;
308
+ }
309
+ const firstPath = env.PATH?.split(delimiter)[0];
310
+ return {
311
+ schema: 1,
312
+ values,
313
+ ...(firstPath !== undefined && isAbsolute(firstPath) ? { pathPrepend: [firstPath] } : {}),
314
+ };
315
+ }
316
+ function textPrompt(blocks) {
317
+ if (blocks.length === 0) {
318
+ throw RequestError.invalidParams({ code: "unsupported_prompt_content" }, "mono-agent ACP v1 accepts one or more text blocks only.");
319
+ }
320
+ const texts = [];
321
+ for (const block of blocks) {
322
+ if (block.type !== "text") {
323
+ throw RequestError.invalidParams({ code: "unsupported_prompt_content" }, "mono-agent ACP v1 accepts one or more text blocks only.");
324
+ }
325
+ texts.push(block.text);
326
+ }
327
+ return texts.join("\n");
328
+ }
329
+ function rejectUnsupportedSessionInputs(mcpServers, additionalDirectories) {
330
+ if (mcpServers.length > 0) {
331
+ throw RequestError.invalidParams({ code: "client_mcp_unsupported" }, "mono-agent ACP sessions use the selected instance's configured MCP servers; client MCP servers are unsupported.");
332
+ }
333
+ if ((additionalDirectories?.length ?? 0) > 0) {
334
+ throw RequestError.invalidParams({ code: "additional_directories_unsupported" }, "mono-agent ACP sessions use the selected instance's configured workspace and sandbox.");
335
+ }
336
+ }
337
+ function newSessionId(sourceId) {
338
+ return `acp:${sourceId}:${randomUUID()}`;
339
+ }
340
+ function validateSessionId(sessionId, sourceId) {
341
+ const prefix = `acp:${sourceId}:`;
342
+ if (!sessionId.startsWith(prefix) || !SESSION_UUID.test(sessionId.slice(prefix.length))) {
343
+ throw RequestError.invalidParams({ code: "invalid_session_id" }, `Session does not belong to mono-agent source '${sourceId}'.`);
344
+ }
345
+ }
346
+ function toolKind(name) {
347
+ const normalized = name.toLowerCase();
348
+ if (normalized === "read")
349
+ return "read";
350
+ if (normalized === "write" || normalized === "edit")
351
+ return "edit";
352
+ if (normalized === "glob" || normalized === "grep" || normalized.includes("search"))
353
+ return "search";
354
+ if (normalized === "bash" || normalized === "exec")
355
+ return "execute";
356
+ if (normalized.includes("fetch") || normalized.includes("browser"))
357
+ return "fetch";
358
+ if (normalized === "agent" || normalized === "askuser")
359
+ return "think";
360
+ return "other";
361
+ }
362
+ function toolNameFromEvent(event, toolNames) {
363
+ if (event.type !== "tool_call_started" && event.type !== "tool_call_progress" && event.type !== "tool_call_completed") {
364
+ return undefined;
365
+ }
366
+ if (event.name !== undefined)
367
+ toolNames.set(event.id, event.name);
368
+ return event.name ?? toolNames.get(event.id);
369
+ }
370
+ function boundedToolContent(value) {
371
+ const text = typeof value === "string" ? value : JSON.stringify(value) ?? "";
372
+ return text.length <= MAX_TOOL_CONTENT_CHARS
373
+ ? text
374
+ : `${text.slice(0, MAX_TOOL_CONTENT_CHARS)}… [truncated]`;
375
+ }
376
+ async function requestTarget(resolveTarget, signal) {
377
+ try {
378
+ return await resolveTarget(signal);
379
+ }
380
+ catch (error) {
381
+ if (error instanceof RequestError)
382
+ throw error;
383
+ throw bridgeError(codedErrorCode(error) ?? "operator_unavailable", errorMessage(error));
384
+ }
385
+ }
386
+ function bridgeError(code, message) {
387
+ return new RequestError(BRIDGE_ERROR_CODE, message, { code });
388
+ }
389
+ function codedErrorCode(error) {
390
+ if (typeof error !== "object" || error === null)
391
+ return undefined;
392
+ const code = error.code;
393
+ return typeof code === "string" && code.length > 0 ? code : undefined;
394
+ }
395
+ function errorMessage(error) {
396
+ return error instanceof Error ? error.message : String(error);
397
+ }
398
+ //# sourceMappingURL=acp-bridge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acp-bridge.js","sourceRoot":"","sources":["../src/acp-bridge.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"adapter-send-tools.d.ts","sourceRoot":"","sources":["../src/adapter-send-tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"adapter-send-tools.d.ts","sourceRoot":"","sources":["../src/adapter-send-tools.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@ import { basename, isAbsolute, join, relative, resolve as resolvePath, sep } fro
4
4
  import process from "node:process";
5
5
  import { fileURLToPath, pathToFileURL } from "node:url";
6
6
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
7
- import { splitTextByCodePoints } from "@mono-agent/agent-contracts";
7
+ import { DEFAULT_MAX_MESSAGE_CHARS, splitTextForChat } from "@mono-agent/agent-contracts";
8
8
  import { ALLOW_ALL_TOOLS } from "@mono-agent/config";
9
9
  import * as z from "zod/v4";
10
10
  import { LEGACY_TOOL_ALIASES } from "./modules/known-tools.js";
@@ -13,7 +13,15 @@ let slackModule;
13
13
  let telegramModule;
14
14
  const loadSlackModule = async () => (slackModule ??= await import("@mono-agent/slack-adapter"));
15
15
  const loadTelegramModule = async () => (telegramModule ??= await import("@mono-agent/telegram-adapter"));
16
- const SLACK_SEND_MESSAGE_MAX_CHARS = 40_000;
16
+ /**
17
+ * Per-post budget for `SlackSendMessage`. Deliberately the shared substrate
18
+ * budget rather than Slack's 40,000-character truncation ceiling: well below the
19
+ * ceiling Slack silently breaks a long post into several messages of its own
20
+ * and returns only the LAST fragment's `ts`, which would leave the head message
21
+ * absent from the posted-message index and unable to resolve a reply in its
22
+ * thread. Chunking here keeps the boundary — and the indexed ids — ours.
23
+ */
24
+ const SLACK_SEND_MESSAGE_MAX_CHARS = DEFAULT_MAX_MESSAGE_CHARS;
17
25
  /** Keep cancellation responsive even when the loopback bridge is wedged. */
18
26
  const ASK_BRIDGE_CLEANUP_TIMEOUT_MS = 1_000;
19
27
  /**
@@ -561,18 +569,33 @@ function registerSlackSendTool(server, settings, client, formatMarkdownForSlack,
561
569
  assertSlackChannelAllowed(settings, args.channel);
562
570
  const mrkdwn = args.mrkdwn ?? true;
563
571
  const text = mrkdwn ? formatMarkdownForSlack(args.text) : args.text;
564
- const chunks = splitTextByCodePoints(text, SLACK_SEND_MESSAGE_MAX_CHARS);
572
+ const chunks = splitTextForChat(text, SLACK_SEND_MESSAGE_MAX_CHARS);
565
573
  const results = [];
566
574
  const historyOutcomes = [];
567
575
  for (const chunk of chunks) {
568
- const result = await client.chatPostMessage({
569
- channel: args.channel.trim(),
570
- text: chunk,
571
- ...(args.thread_ts === undefined ? {} : { thread_ts: args.thread_ts }),
572
- mrkdwn,
573
- ...(args.unfurl_links === undefined ? {} : { unfurl_links: args.unfurl_links }),
574
- ...(args.unfurl_media === undefined ? {} : { unfurl_media: args.unfurl_media }),
575
- }, { signal: extra.signal });
576
+ let result;
577
+ try {
578
+ result = await client.chatPostMessage({
579
+ channel: args.channel.trim(),
580
+ text: chunk,
581
+ ...(args.thread_ts === undefined ? {} : { thread_ts: args.thread_ts }),
582
+ mrkdwn,
583
+ ...(args.unfurl_links === undefined ? {} : { unfurl_links: args.unfurl_links }),
584
+ ...(args.unfurl_media === undefined ? {} : { unfurl_media: args.unfurl_media }),
585
+ }, { signal: extra.signal });
586
+ }
587
+ catch (error) {
588
+ // Chunks before this one are already visible in the channel. Throwing
589
+ // bare would tell the model only "it failed", and the obvious repair —
590
+ // send the whole thing again — would duplicate the confirmed prefix.
591
+ // So report the partial delivery explicitly and let it send only the
592
+ // remainder. (A stable per-chunk client_msg_id would let Slack dedupe a
593
+ // blind retry too; that is a larger contract change and not done here.)
594
+ if (results.length === 0) {
595
+ throw error;
596
+ }
597
+ return slackPartialSendResult(results, chunks, error, deliveryHistorySummary(historyOutcomes));
598
+ }
576
599
  results.push(result);
577
600
  const historyOutcome = await recordAdapterDeliveryHistory({
578
601
  settings: deliveryHistory,
@@ -592,6 +615,12 @@ function registerSlackSendTool(server, settings, client, formatMarkdownForSlack,
592
615
  channelId: result.channel,
593
616
  ts: result.ts,
594
617
  conversationId: indexing.conversationId,
618
+ // Every chunk of one oversized post is tagged with the first chunk's
619
+ // ts, so the index counts this as ONE claim on the producing
620
+ // conversation. Without it, a split message would look like several
621
+ // independent posts competing for the same producer, and the lookup
622
+ // would decline the alias for all of them.
623
+ groupId: results[0]?.ts ?? result.ts,
595
624
  });
596
625
  }
597
626
  }
@@ -624,6 +653,46 @@ function registerSlackSendTool(server, settings, client, formatMarkdownForSlack,
624
653
  };
625
654
  });
626
655
  }
656
+ /**
657
+ * An oversized `SlackSendMessage` that got part-way through its chunks.
658
+ *
659
+ * `ok: false` with the confirmed chunks named, so the model can see exactly what
660
+ * the channel already shows and resend only the missing tail. Reporting this as a
661
+ * plain throw would invite a full resend and duplicate the visible prefix.
662
+ */
663
+ function slackPartialSendResult(delivered, chunks, error, history) {
664
+ const first = delivered[0];
665
+ const remaining = chunks.length - delivered.length;
666
+ const message = [
667
+ `Partially sent: ${String(delivered.length)} of ${String(chunks.length)} Slack message parts are CONFIRMED in`,
668
+ `${first.channel} starting at ${first.ts}. Part ${String(delivered.length + 1)} failed (${errorText(error)}) with an`,
669
+ "UNKNOWN outcome — Slack may or may not have accepted it before the error.",
670
+ `Never resend the confirmed parts. Check the channel before resending part ${String(delivered.length + 1)};`,
671
+ `at most the last ${String(remaining)} part(s) are missing.`,
672
+ ].join(" ");
673
+ return {
674
+ content: [{ type: "text", text: withDeliveryHistoryWarning(message, history) }],
675
+ isError: true,
676
+ structuredContent: {
677
+ ok: false,
678
+ partial: true,
679
+ channel: first.channel,
680
+ ts: first.ts,
681
+ chunkCount: chunks.length,
682
+ deliveredChunkCount: delivered.length,
683
+ // The failing request is AMBIGUOUS, not known-undelivered: Slack may have
684
+ // accepted it and lost the response. Saying otherwise would invite a
685
+ // resend that duplicates it.
686
+ unconfirmedChunkIndex: delivered.length,
687
+ disposition: "unknown",
688
+ chunks: delivered.map((result) => ({ channel: result.channel, ts: result.ts })),
689
+ ...(history === undefined ? {} : { history }),
690
+ },
691
+ };
692
+ }
693
+ function errorText(error) {
694
+ return error instanceof Error ? error.message : String(error);
695
+ }
627
696
  function registerTelegramSendTool(server, settings, client, adapter, deliveryHistory, fetchImpl = globalThis.fetch) {
628
697
  server.registerTool("TelegramSendMessage", {
629
698
  title: "Send Telegram message",