@mono-agent/agent-app 0.4.0 → 0.5.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 (173) hide show
  1. package/README.md +15 -5
  2. package/dist/adapter-send-tools-main.js +2 -2
  3. package/dist/adapter-send-tools-main.js.map +1 -1
  4. package/dist/adapter-send-tools.d.ts +72 -6
  5. package/dist/adapter-send-tools.d.ts.map +1 -1
  6. package/dist/adapter-send-tools.js +413 -38
  7. package/dist/adapter-send-tools.js.map +1 -1
  8. package/dist/app-config.d.ts +48 -11
  9. package/dist/app-config.d.ts.map +1 -1
  10. package/dist/app-config.js +98 -24
  11. package/dist/app-config.js.map +1 -1
  12. package/dist/app.d.ts +10 -0
  13. package/dist/app.d.ts.map +1 -1
  14. package/dist/app.js +659 -48
  15. package/dist/app.js.map +1 -1
  16. package/dist/artifact-retention.d.ts +32 -0
  17. package/dist/artifact-retention.d.ts.map +1 -0
  18. package/dist/artifact-retention.js +111 -0
  19. package/dist/artifact-retention.js.map +1 -0
  20. package/dist/audit-runs.d.ts +12 -0
  21. package/dist/audit-runs.d.ts.map +1 -0
  22. package/dist/audit-runs.js +68 -0
  23. package/dist/audit-runs.js.map +1 -0
  24. package/dist/backfill.d.ts +3 -7
  25. package/dist/backfill.d.ts.map +1 -1
  26. package/dist/backfill.js +115 -11
  27. package/dist/backfill.js.map +1 -1
  28. package/dist/background.d.ts +8 -1
  29. package/dist/background.d.ts.map +1 -1
  30. package/dist/background.js +202 -4
  31. package/dist/background.js.map +1 -1
  32. package/dist/broadcast-recorder.d.ts +27 -0
  33. package/dist/broadcast-recorder.d.ts.map +1 -0
  34. package/dist/broadcast-recorder.js +82 -0
  35. package/dist/broadcast-recorder.js.map +1 -0
  36. package/dist/channel-config-view.d.ts +28 -0
  37. package/dist/channel-config-view.d.ts.map +1 -0
  38. package/dist/channel-config-view.js +79 -0
  39. package/dist/channel-config-view.js.map +1 -0
  40. package/dist/channel-gate.d.ts +22 -0
  41. package/dist/channel-gate.d.ts.map +1 -0
  42. package/dist/channel-gate.js +35 -0
  43. package/dist/channel-gate.js.map +1 -0
  44. package/dist/channel-plugins.d.ts +39 -0
  45. package/dist/channel-plugins.d.ts.map +1 -0
  46. package/dist/channel-plugins.js +372 -0
  47. package/dist/channel-plugins.js.map +1 -0
  48. package/dist/channels.d.ts +62 -73
  49. package/dist/channels.d.ts.map +1 -1
  50. package/dist/channels.js +833 -126
  51. package/dist/channels.js.map +1 -1
  52. package/dist/cli.d.ts +65 -3
  53. package/dist/cli.d.ts.map +1 -1
  54. package/dist/cli.js +755 -30
  55. package/dist/cli.js.map +1 -1
  56. package/dist/config-reference.d.ts +24 -0
  57. package/dist/config-reference.d.ts.map +1 -0
  58. package/dist/config-reference.js +580 -0
  59. package/dist/config-reference.js.map +1 -0
  60. package/dist/configured-agent.d.ts +104 -0
  61. package/dist/configured-agent.d.ts.map +1 -0
  62. package/dist/configured-agent.js +578 -0
  63. package/dist/configured-agent.js.map +1 -0
  64. package/dist/consumer-contract.d.ts +36 -0
  65. package/dist/consumer-contract.d.ts.map +1 -0
  66. package/dist/consumer-contract.js +290 -0
  67. package/dist/consumer-contract.js.map +1 -0
  68. package/dist/doctor.d.ts +9 -0
  69. package/dist/doctor.d.ts.map +1 -1
  70. package/dist/doctor.js +352 -55
  71. package/dist/doctor.js.map +1 -1
  72. package/dist/index.d.ts +9 -3
  73. package/dist/index.d.ts.map +1 -1
  74. package/dist/index.js +5 -2
  75. package/dist/index.js.map +1 -1
  76. package/dist/init.d.ts +23 -7
  77. package/dist/init.d.ts.map +1 -1
  78. package/dist/init.js +91 -26
  79. package/dist/init.js.map +1 -1
  80. package/dist/install-skill.d.ts +1 -1
  81. package/dist/install-skill.js +2 -2
  82. package/dist/install-skill.js.map +1 -1
  83. package/dist/interaction-bridge.d.ts +72 -0
  84. package/dist/interaction-bridge.d.ts.map +1 -0
  85. package/dist/interaction-bridge.js +354 -0
  86. package/dist/interaction-bridge.js.map +1 -0
  87. package/dist/memory-command.d.ts +10 -0
  88. package/dist/memory-command.d.ts.map +1 -0
  89. package/dist/memory-command.js +649 -0
  90. package/dist/memory-command.js.map +1 -0
  91. package/dist/memory-recall-main.js +1 -1
  92. package/dist/memory-recall-main.js.map +1 -1
  93. package/dist/memory-recall.d.ts +41 -5
  94. package/dist/memory-recall.d.ts.map +1 -1
  95. package/dist/memory-recall.js +75 -5
  96. package/dist/memory-recall.js.map +1 -1
  97. package/dist/memory-rituals.d.ts +8 -11
  98. package/dist/memory-rituals.d.ts.map +1 -1
  99. package/dist/memory-rituals.js +26 -25
  100. package/dist/memory-rituals.js.map +1 -1
  101. package/dist/metrics.d.ts +13 -0
  102. package/dist/metrics.d.ts.map +1 -0
  103. package/dist/metrics.js +105 -0
  104. package/dist/metrics.js.map +1 -0
  105. package/dist/notify-destinations.d.ts +23 -0
  106. package/dist/notify-destinations.d.ts.map +1 -0
  107. package/dist/notify-destinations.js +79 -0
  108. package/dist/notify-destinations.js.map +1 -0
  109. package/dist/posted-message-index.d.ts +61 -0
  110. package/dist/posted-message-index.d.ts.map +1 -0
  111. package/dist/posted-message-index.js +178 -0
  112. package/dist/posted-message-index.js.map +1 -0
  113. package/dist/proactive-notify.d.ts +32 -0
  114. package/dist/proactive-notify.d.ts.map +1 -0
  115. package/dist/proactive-notify.js +62 -0
  116. package/dist/proactive-notify.js.map +1 -0
  117. package/dist/recipes/base.d.ts +15 -0
  118. package/dist/recipes/base.d.ts.map +1 -0
  119. package/dist/recipes/base.js +51 -0
  120. package/dist/recipes/base.js.map +1 -0
  121. package/dist/recipes/catalog.d.ts +4 -0
  122. package/dist/recipes/catalog.d.ts.map +1 -0
  123. package/dist/recipes/catalog.js +525 -0
  124. package/dist/recipes/catalog.js.map +1 -0
  125. package/dist/recipes/index.d.ts +11 -0
  126. package/dist/recipes/index.d.ts.map +1 -0
  127. package/dist/recipes/index.js +14 -0
  128. package/dist/recipes/index.js.map +1 -0
  129. package/dist/recipes/types.d.ts +70 -0
  130. package/dist/recipes/types.d.ts.map +1 -0
  131. package/dist/recipes/types.js +15 -0
  132. package/dist/recipes/types.js.map +1 -0
  133. package/dist/request-model-override.d.ts +67 -0
  134. package/dist/request-model-override.d.ts.map +1 -0
  135. package/dist/request-model-override.js +96 -0
  136. package/dist/request-model-override.js.map +1 -0
  137. package/dist/runs-health.d.ts +22 -0
  138. package/dist/runs-health.d.ts.map +1 -0
  139. package/dist/runs-health.js +144 -0
  140. package/dist/runs-health.js.map +1 -0
  141. package/dist/seen-conversations.d.ts +22 -0
  142. package/dist/seen-conversations.d.ts.map +1 -0
  143. package/dist/seen-conversations.js +120 -0
  144. package/dist/seen-conversations.js.map +1 -0
  145. package/dist/setup.d.ts +29 -0
  146. package/dist/setup.d.ts.map +1 -0
  147. package/dist/setup.js +97 -0
  148. package/dist/setup.js.map +1 -0
  149. package/dist/trigger-overrides.d.ts +17 -0
  150. package/dist/trigger-overrides.d.ts.map +1 -0
  151. package/dist/trigger-overrides.js +30 -0
  152. package/dist/trigger-overrides.js.map +1 -0
  153. package/dist/tui-command.d.ts +56 -0
  154. package/dist/tui-command.d.ts.map +1 -0
  155. package/dist/tui-command.js +160 -0
  156. package/dist/tui-command.js.map +1 -0
  157. package/dist/ui.d.ts.map +1 -1
  158. package/dist/ui.js +4 -0
  159. package/dist/ui.js.map +1 -1
  160. package/dist/web-command.d.ts +45 -0
  161. package/dist/web-command.d.ts.map +1 -0
  162. package/dist/web-command.js +152 -0
  163. package/dist/web-command.js.map +1 -0
  164. package/package.json +19 -18
  165. package/schema/mono-agent.config.schema.json +1686 -0
  166. package/skills/mono-agent-composer/SKILL.md +34 -9
  167. package/skills/mono-agent-composer/agents/openai.yaml +4 -0
  168. package/skills/mono-agent-composer/references/config-blueprint.md +92 -49
  169. package/skills/mono-agent-composer/references/discovery-questions.md +15 -17
  170. package/skills/mono-agent-composer/references/feature-coverage.md +22 -17
  171. package/skills/mono-agent-composer/references/package-map.md +19 -21
  172. package/skills/mono-agent-composer/references/playbooks.md +267 -0
  173. package/skills/mono-agent-composer/references/validation.md +9 -1
@@ -1,9 +1,14 @@
1
+ import { readFile, stat } from "node:fs/promises";
2
+ import { basename, resolve as resolvePath } from "node:path";
1
3
  import process from "node:process";
2
- import { fileURLToPath } from "node:url";
4
+ import { fileURLToPath, pathToFileURL } from "node:url";
3
5
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
4
- import { SlackWebApiClient, loadSlackAdapterConfig, } from "@mono-agent/slack-adapter";
5
- import { createTelegramMessageSender, loadTelegramAdapterConfig, } from "@mono-agent/telegram-adapter";
6
6
  import * as z from "zod/v4";
7
+ import { appendPostedMessage } from "./posted-message-index.js";
8
+ let slackModule;
9
+ let telegramModule;
10
+ const loadSlackModule = async () => (slackModule ??= await import("@mono-agent/slack-adapter"));
11
+ const loadTelegramModule = async () => (telegramModule ??= await import("@mono-agent/telegram-adapter"));
7
12
  /**
8
13
  * Model-visible send tools for explicitly allowed, already-enabled communication adapters.
9
14
  *
@@ -16,20 +21,55 @@ import * as z from "zod/v4";
16
21
  */
17
22
  export const ADAPTER_SEND_TOOLS_MCP_SERVER_NAME = "mono-agent-adapter-send";
18
23
  export async function resolveAdapterSendToolsSettings(input, options = {}) {
24
+ const telegramSendAllowed = isAdapterToolAllowed("telegram_send_message", options);
25
+ const telegramAskAllowed = isAdapterToolAllowed("telegram_ask", options);
26
+ const telegramDocumentAllowed = isAdapterToolAllowed("telegram_send_document", options);
27
+ const telegramPhotoAllowed = isAdapterToolAllowed("telegram_send_photo", options);
28
+ const telegramAnyAllowed = telegramSendAllowed || telegramAskAllowed || telegramDocumentAllowed || telegramPhotoAllowed;
19
29
  const [slack, telegram] = await Promise.all([
20
30
  isAdapterToolAllowed("slack_send_message", options)
21
31
  ? resolveSlackSendToolSettings(input, options)
22
32
  : undefined,
23
- isAdapterToolAllowed("telegram_send_message", options)
24
- ? resolveTelegramSendToolSettings(input, options)
33
+ telegramAnyAllowed
34
+ ? resolveTelegramSendToolSettings(input, options, {
35
+ send: telegramSendAllowed,
36
+ ask: telegramAskAllowed,
37
+ document: telegramDocumentAllowed,
38
+ photo: telegramPhotoAllowed,
39
+ })
25
40
  : undefined,
26
41
  ]);
27
- if (slack === undefined && telegram === undefined) {
42
+ const askUser = isAdapterToolAllowed("ask_user", options)
43
+ ? resolveAskUserToolSettings(input.env)
44
+ : undefined;
45
+ if (slack === undefined && telegram === undefined && askUser === undefined) {
28
46
  return undefined;
29
47
  }
30
48
  return {
31
49
  ...(slack === undefined ? {} : { slack }),
32
50
  ...(telegram === undefined ? {} : { telegram }),
51
+ ...(askUser === undefined ? {} : { askUser }),
52
+ };
53
+ }
54
+ /**
55
+ * ask_user is available only when the app exported a live interaction bridge
56
+ * into the environment (URL + bearer token). The producing conversation id is
57
+ * per-request env, present in the spawned child.
58
+ */
59
+ function resolveAskUserToolSettings(env) {
60
+ const bridgeUrl = optionalString(env.MONO_AGENT_INTERACTION_BRIDGE_URL);
61
+ const bridgeToken = optionalString(env.MONO_AGENT_INTERACTION_BRIDGE_TOKEN);
62
+ if (bridgeUrl === undefined || bridgeToken === undefined) {
63
+ return undefined;
64
+ }
65
+ const timeoutRaw = Number(optionalString(env.MONO_AGENT_ASK_USER_TIMEOUT_MS));
66
+ const timeoutMs = Number.isFinite(timeoutRaw) && timeoutRaw >= 1000 ? timeoutRaw : 600_000;
67
+ const conversationId = optionalString(env.MONO_AGENT_ADAPTER_TOOLS_PRODUCING_CONVERSATION_ID);
68
+ return {
69
+ bridgeUrl,
70
+ bridgeToken,
71
+ timeoutMs,
72
+ ...(conversationId === undefined ? {} : { conversationId }),
33
73
  };
34
74
  }
35
75
  export function adapterSendToolNames(settings) {
@@ -37,15 +77,41 @@ export function adapterSendToolNames(settings) {
37
77
  if (settings.slack !== undefined) {
38
78
  names.push("slack_send_message");
39
79
  }
40
- if (settings.telegram !== undefined) {
80
+ if (settings.telegram?.tools.send === true) {
41
81
  names.push("telegram_send_message");
42
82
  }
83
+ if (settings.telegram?.tools.ask === true) {
84
+ names.push("telegram_ask");
85
+ }
86
+ if (settings.telegram?.tools.document === true) {
87
+ names.push("telegram_send_document");
88
+ }
89
+ if (settings.telegram?.tools.photo === true) {
90
+ names.push("telegram_send_photo");
91
+ }
92
+ if (settings.askUser !== undefined) {
93
+ names.push("ask_user");
94
+ }
43
95
  return names;
44
96
  }
45
- export function adapterSendToolsMcpEnv(configPath, allowedTools) {
97
+ /**
98
+ * Public re-export of the per-tool allow check so callers (e.g. the Telegram
99
+ * channel driver) can gate behavior on whether a specific adapter send tool is
100
+ * permitted by `tools.allowedTools`/`disallowedTools`, matching this module's policy.
101
+ */
102
+ export function isAdapterSendToolAllowed(name, policy) {
103
+ return isAdapterToolAllowed(name, policy);
104
+ }
105
+ export function adapterSendToolsMcpEnv(configPath, allowedTools, context) {
46
106
  return {
47
107
  MONO_AGENT_ADAPTER_TOOLS_CONFIG_PATH: configPath,
48
108
  MONO_AGENT_ADAPTER_TOOLS_ALLOWED_TOOLS: JSON.stringify(allowedTools),
109
+ ...(context?.conversationId === undefined
110
+ ? {}
111
+ : { MONO_AGENT_ADAPTER_TOOLS_PRODUCING_CONVERSATION_ID: context.conversationId }),
112
+ ...(context?.indexPath === undefined
113
+ ? {}
114
+ : { MONO_AGENT_ADAPTER_TOOLS_POST_INDEX_PATH: context.indexPath }),
49
115
  };
50
116
  }
51
117
  export function adapterSendToolsChildConfigFromEnv(env, cwd) {
@@ -53,57 +119,195 @@ export function adapterSendToolsChildConfigFromEnv(env, cwd) {
53
119
  if (configPath === undefined) {
54
120
  throw new Error("adapter-send-tools: missing required environment (MONO_AGENT_ADAPTER_TOOLS_CONFIG_PATH).");
55
121
  }
122
+ const conversationId = optionalString(env.MONO_AGENT_ADAPTER_TOOLS_PRODUCING_CONVERSATION_ID);
123
+ const indexPath = optionalString(env.MONO_AGENT_ADAPTER_TOOLS_POST_INDEX_PATH);
124
+ // Both must be present to index; either alone is a misconfiguration we simply skip.
125
+ const indexing = conversationId !== undefined && indexPath !== undefined ? { conversationId, indexPath } : undefined;
56
126
  return {
57
127
  input: { env, cwd, configPath },
58
128
  allowedTools: parseAllowedToolNames(env.MONO_AGENT_ADAPTER_TOOLS_ALLOWED_TOOLS),
129
+ ...(indexing === undefined ? {} : { indexing }),
59
130
  };
60
131
  }
61
- export function adapterSendToolsMcpServerSpec(configPath, cwd, allowedTools) {
132
+ export function adapterSendToolsMcpServerSpec(configPath, cwd, allowedTools, context) {
62
133
  return {
63
134
  type: "stdio",
64
135
  command: process.execPath,
65
136
  args: [fileURLToPath(new URL("./adapter-send-tools-main.js", import.meta.url))],
66
137
  cwd,
67
- env: adapterSendToolsMcpEnv(configPath, allowedTools),
138
+ env: adapterSendToolsMcpEnv(configPath, allowedTools, context),
68
139
  };
69
140
  }
70
- export function createAdapterSendToolsRuntimeExtension(configPath, cwd, allowedTools) {
71
- return async () => ({
72
- runtimeOptions: {
73
- mcpServers: {
74
- [ADAPTER_SEND_TOOLS_MCP_SERVER_NAME]: adapterSendToolsMcpServerSpec(configPath, cwd, allowedTools),
141
+ /**
142
+ * Per-request runtime extension that injects the adapter-send stdio MCP server. It
143
+ * reads the request's producing conversationId and, when an `indexPath` is
144
+ * configured, forwards both to the child so a `slack_send_message` post is linked
145
+ * back to this conversation (so a later in-thread reply resumes it).
146
+ */
147
+ export function createAdapterSendToolsRuntimeExtension(configPath, cwd, allowedTools, indexPath) {
148
+ return async (input) => {
149
+ const conversationId = input?.request?.conversationId;
150
+ const hasConversation = typeof conversationId === "string" && conversationId.trim().length > 0;
151
+ // The conversation id is forwarded whenever known — ask_user targets it even
152
+ // without indexing; the index path additionally enables posted-message links.
153
+ const context = hasConversation
154
+ ? { conversationId, ...(indexPath === undefined ? {} : { indexPath }) }
155
+ : undefined;
156
+ return {
157
+ runtimeOptions: {
158
+ mcpServers: {
159
+ [ADAPTER_SEND_TOOLS_MCP_SERVER_NAME]: adapterSendToolsMcpServerSpec(configPath, cwd, allowedTools, context),
160
+ },
75
161
  },
76
- },
77
- cleanup: async () => { },
78
- });
162
+ cleanup: async () => { },
163
+ };
164
+ };
79
165
  }
80
- export function createAdapterSendToolsClients(settings) {
166
+ export async function createAdapterSendToolsClients(settings) {
167
+ const slack = settings.slack === undefined
168
+ ? undefined
169
+ : new (await loadSlackModule()).SlackWebApiClient({ botToken: settings.slack.botToken });
170
+ const telegram = settings.telegram === undefined
171
+ ? undefined
172
+ : (await loadTelegramModule()).createTelegramMessageSender(settings.telegram.botToken, {
173
+ ...(settings.telegram.apiRoot === undefined ? {} : { apiRoot: settings.telegram.apiRoot }),
174
+ });
81
175
  return {
82
- ...(settings.slack === undefined
83
- ? {}
84
- : {
85
- slack: new SlackWebApiClient({
86
- botToken: settings.slack.botToken,
87
- }),
88
- }),
89
- ...(settings.telegram === undefined
90
- ? {}
91
- : {
92
- telegram: createTelegramMessageSender(settings.telegram.botToken),
93
- }),
176
+ ...(slack === undefined ? {} : { slack }),
177
+ ...(telegram === undefined ? {} : { telegram }),
94
178
  };
95
179
  }
96
- export function createAdapterSendToolsServer(settings, clients) {
180
+ export async function createAdapterSendToolsServer(settings, clients, indexing) {
97
181
  const server = new McpServer({ name: "agent-adapter-send-tools", version: "0.3.0" });
98
182
  if (settings.slack !== undefined && clients.slack !== undefined) {
99
- registerSlackSendTool(server, settings.slack, clients.slack);
183
+ registerSlackSendTool(server, settings.slack, clients.slack, indexing);
100
184
  }
101
185
  if (settings.telegram !== undefined && clients.telegram !== undefined) {
102
- registerTelegramSendTool(server, settings.telegram, clients.telegram);
186
+ // Loaded once here (not per-register-call) because registerTelegramAskTool
187
+ // needs TELEGRAM_ASK_MAX_OPTIONS synchronously while building its zod
188
+ // schema, at registration time — not deferred into the request handler.
189
+ const adapter = await loadTelegramModule();
190
+ if (settings.telegram.tools.send) {
191
+ registerTelegramSendTool(server, settings.telegram, clients.telegram);
192
+ }
193
+ if (settings.telegram.tools.ask) {
194
+ registerTelegramAskTool(server, settings.telegram, clients.telegram, adapter);
195
+ }
196
+ if (settings.telegram.tools.document) {
197
+ registerTelegramSendFileTool(server, settings.telegram, clients.telegram, "document", adapter);
198
+ }
199
+ if (settings.telegram.tools.photo) {
200
+ registerTelegramSendFileTool(server, settings.telegram, clients.telegram, "photo", adapter);
201
+ }
202
+ }
203
+ // ask_user needs a target conversation; the parent app process resolves the
204
+ // settings without one (for tool-name gating) and must not register the tool.
205
+ if (settings.askUser?.conversationId !== undefined) {
206
+ registerAskUserTool(server, { ...settings.askUser, conversationId: settings.askUser.conversationId });
103
207
  }
104
208
  return server;
105
209
  }
106
- function registerSlackSendTool(server, settings, client) {
210
+ /** Long-poll wait per bridge request; the overall wait is bounded server-side by the ask's timeout. */
211
+ const ASK_USER_POLL_WAIT_MS = 20_000;
212
+ function registerAskUserTool(server, settings) {
213
+ server.registerTool("ask_user", {
214
+ title: "Ask the user and wait",
215
+ description: "Ask the user ONE consolidated free-text question on the current conversation and WAIT for their reply (blocking, up to the configured timeout — default 10 minutes). Returns the user's answer text. Consolidate everything you need into a single question — a second concurrent ask fails. If the wait times out, the tool returns without an answer and the user's late reply will arrive as their next message: finish the turn gracefully (proceed with sensible defaults and say what you assumed).",
216
+ inputSchema: {
217
+ question: z.string().min(1).describe("The full question to show the user (plain text, no markdown)."),
218
+ },
219
+ }, async (args, extra) => {
220
+ const created = await askBridgeRequest(settings, "POST", "/v1/asks", {
221
+ conversationId: settings.conversationId,
222
+ question: args.question,
223
+ timeoutMs: settings.timeoutMs,
224
+ });
225
+ if (created.status === 409) {
226
+ return askUserResult("A question is already pending for the user. Wait for its answer instead of asking again.", { answered: false, reason: "already_pending" });
227
+ }
228
+ if (created.status === 501) {
229
+ return askUserResult("This conversation's channel does not support interactive asks. Ask your question in your final reply instead.", { answered: false, reason: "unsupported_channel" });
230
+ }
231
+ if (created.status !== 201 || typeof created.body.askId !== "string") {
232
+ throw new Error(`ask_user: the interaction bridge rejected the ask (HTTP ${String(created.status)}).`);
233
+ }
234
+ const askId = created.body.askId;
235
+ const startedMs = Date.now();
236
+ for (;;) {
237
+ const poll = await askBridgeRequest(settings, "GET", `/v1/asks/${encodeURIComponent(askId)}?waitMs=${String(ASK_USER_POLL_WAIT_MS)}`);
238
+ if (poll.status !== 200) {
239
+ throw new Error(`ask_user: lost the pending ask (HTTP ${String(poll.status)}).`);
240
+ }
241
+ // Keep-alive: progress notifications reset the runtime's MCP inactivity
242
+ // timeout so a long human wait cannot kill the tool call.
243
+ await sendAskProgress(extra, Math.round((Date.now() - startedMs) / 1000));
244
+ const status = poll.body.status;
245
+ if (status === "answered" && typeof poll.body.answer === "string") {
246
+ return askUserResult(`The user answered:\n${poll.body.answer}`, {
247
+ answered: true,
248
+ answer: poll.body.answer,
249
+ });
250
+ }
251
+ if (status === "expired") {
252
+ return askUserResult("The user did not answer within the wait window. Their reply will arrive as their next message — wrap up this turn gracefully (proceed with sensible defaults and say what you assumed).", { answered: false, reason: "timeout" });
253
+ }
254
+ if (status === "cancelled") {
255
+ return askUserResult("The user cancelled the current run. Stop this task.", {
256
+ answered: false,
257
+ reason: "cancelled",
258
+ });
259
+ }
260
+ }
261
+ });
262
+ }
263
+ function askUserResult(text, structured) {
264
+ return {
265
+ content: [{ type: "text", text }],
266
+ structuredContent: { ok: true, ...structured },
267
+ };
268
+ }
269
+ async function askBridgeRequest(settings, method, path, body) {
270
+ const response = await fetch(new URL(path, settings.bridgeUrl), {
271
+ method,
272
+ headers: {
273
+ authorization: `Bearer ${settings.bridgeToken}`,
274
+ ...(body === undefined ? {} : { "content-type": "application/json" }),
275
+ },
276
+ ...(body === undefined ? {} : { body: JSON.stringify(body) }),
277
+ });
278
+ let parsed;
279
+ try {
280
+ parsed = await response.json();
281
+ }
282
+ catch {
283
+ parsed = {};
284
+ }
285
+ return {
286
+ status: response.status,
287
+ body: typeof parsed === "object" && parsed !== null ? parsed : {},
288
+ };
289
+ }
290
+ async function sendAskProgress(extra, elapsedSeconds) {
291
+ const handler = extra;
292
+ const progressToken = handler._meta?.progressToken;
293
+ if (progressToken === undefined || handler.sendNotification === undefined) {
294
+ return;
295
+ }
296
+ try {
297
+ await handler.sendNotification({
298
+ method: "notifications/progress",
299
+ params: {
300
+ progressToken,
301
+ progress: elapsedSeconds,
302
+ message: `waiting for the user's reply (${String(elapsedSeconds)}s)`,
303
+ },
304
+ });
305
+ }
306
+ catch {
307
+ // Keep-alive only; a lost notification must never fail the ask.
308
+ }
309
+ }
310
+ function registerSlackSendTool(server, settings, client, indexing) {
107
311
  server.registerTool("slack_send_message", {
108
312
  title: "Send Slack message",
109
313
  description: "Send a message to an allowed Slack channel or DM ID using the configured Slack adapter bot token.",
@@ -125,6 +329,16 @@ function registerSlackSendTool(server, settings, client) {
125
329
  ...(args.unfurl_links === undefined ? {} : { unfurl_links: args.unfurl_links }),
126
330
  ...(args.unfurl_media === undefined ? {} : { unfurl_media: args.unfurl_media }),
127
331
  });
332
+ // Link the posted message back to this conversation so an in-thread reply can
333
+ // resume it. Best-effort: appendPostedMessage never throws, so a failed index
334
+ // write can never fail the send.
335
+ if (indexing !== undefined) {
336
+ await appendPostedMessage(indexing.indexPath, {
337
+ channelId: result.channel,
338
+ ts: result.ts,
339
+ conversationId: indexing.conversationId,
340
+ });
341
+ }
128
342
  return {
129
343
  content: [{ type: "text", text: `Sent Slack message to ${result.channel} at ${result.ts}.` }],
130
344
  structuredContent: { ok: true, channel: result.channel, ts: result.ts },
@@ -157,9 +371,166 @@ function registerTelegramSendTool(server, settings, client) {
157
371
  };
158
372
  });
159
373
  }
374
+ function registerTelegramAskTool(server, settings, client, adapter) {
375
+ server.registerTool("telegram_ask", {
376
+ title: "Ask via Telegram buttons",
377
+ description: "Ask the owner a question in an allowed Telegram chat with tappable inline-keyboard options (e.g. a confirmation or a multiple-choice). This tool returns immediately after posting the question; it does NOT wait for the answer. When the user taps a button, their choice arrives as a new message on the same conversation, so continue on that next turn.",
378
+ inputSchema: {
379
+ chat_id: z.union([z.string().min(1), z.number().int()]).describe("Telegram chat id from the adapter allowlist."),
380
+ question: z.string().min(1).describe("The question to show above the buttons."),
381
+ options: z
382
+ .array(z.string().min(1).max(100))
383
+ .min(2)
384
+ .max(adapter.TELEGRAM_ASK_MAX_OPTIONS)
385
+ .describe("Button labels (2–8). The label the user taps is echoed back as a new message."),
386
+ note: z.string().min(1).optional().describe("Optional extra context shown beneath the question."),
387
+ },
388
+ }, async (args) => {
389
+ assertTelegramChatAllowed(settings, args.chat_id);
390
+ const inlineKeyboard = args.options.map((label, index) => [
391
+ { text: label, callback_data: adapter.telegramAskCallbackData(index) },
392
+ ]);
393
+ const text = args.note === undefined ? args.question : `${args.question}\n\n${args.note}`;
394
+ const result = await client.sendMessage({
395
+ chat_id: args.chat_id,
396
+ text,
397
+ reply_markup: { inline_keyboard: inlineKeyboard },
398
+ });
399
+ return {
400
+ content: [
401
+ {
402
+ type: "text",
403
+ text: `Posted question ${result.message_id} to ${String(result.chat.id)} with ${String(args.options.length)} options. The user's choice will arrive as a new message.`,
404
+ },
405
+ ],
406
+ structuredContent: {
407
+ ok: true,
408
+ chat_id: result.chat.id,
409
+ message_id: result.message_id,
410
+ options: args.options,
411
+ },
412
+ };
413
+ });
414
+ }
415
+ /**
416
+ * Register `telegram_send_document` / `telegram_send_photo`. Both accept the file
417
+ * as base64 `data` (with a `filename`) OR a workspace `path` (filename derived
418
+ * from the basename), enforce the adapter allowlist, and bound the size to the
419
+ * adapter's inbound cap before uploading via the adapter-owned sender.
420
+ */
421
+ function registerTelegramSendFileTool(server, settings, client, kind, adapter) {
422
+ const toolName = kind === "document" ? "telegram_send_document" : "telegram_send_photo";
423
+ server.registerTool(toolName, {
424
+ title: kind === "document" ? "Send Telegram document" : "Send Telegram photo",
425
+ description: kind === "document"
426
+ ? "Upload and send a file (document) to an allowed Telegram chat. Provide the bytes as base64 `data` with a `filename`, or a workspace `path` (preferred — with a self-hosted Bot API server a `path` upload streams from disk with no size buffering, up to the configured cap)."
427
+ : "Upload and send an image (photo, shown inline) to an allowed Telegram chat. Provide the bytes as base64 `data`, or a workspace `path`.",
428
+ inputSchema: {
429
+ chat_id: z.union([z.string().min(1), z.number().int()]).describe("Telegram chat id from the adapter allowlist."),
430
+ data: z.string().min(1).optional().describe("Base64-encoded file bytes. Provide this or `path`."),
431
+ path: z.string().min(1).optional().describe("Path to a file to upload (resolved against the agent working dir). Provide this or `data`."),
432
+ filename: z.string().min(1).optional().describe("Filename to present. Required with `data` for a document; derived from `path` otherwise."),
433
+ caption: z.string().min(1).optional().describe("Optional caption shown with the file."),
434
+ },
435
+ }, async (args) => {
436
+ assertTelegramChatAllowed(settings, args.chat_id);
437
+ const maxUploadBytes = settings.maxUploadBytes ?? adapter.DEFAULT_ATTACHMENT_MAX_BYTES;
438
+ // file:// fast path: a --local self-hosted server reads the file straight
439
+ // from disk, so a path upload needs no buffering at any size — only a
440
+ // stat-level cap check. Falls back once to the buffered path when the
441
+ // server rejects the URI (e.g. a non---local self-hosted root).
442
+ if (kind === "document" && settings.apiRoot !== undefined && args.path !== undefined && args.data === undefined) {
443
+ const resolved = resolvePath(process.cwd(), args.path);
444
+ const info = await stat(resolved);
445
+ if (!info.isFile() || info.size === 0) {
446
+ throw new Error("file is empty or not a regular file.");
447
+ }
448
+ if (info.size > maxUploadBytes) {
449
+ throw new Error(`file exceeds the ${String(maxUploadBytes)}-byte upload cap.`);
450
+ }
451
+ try {
452
+ const sent = await client.sendDocument({
453
+ chat_id: args.chat_id,
454
+ document: pathToFileURL(resolved).href,
455
+ ...(args.caption === undefined ? {} : { caption: args.caption }),
456
+ });
457
+ const name = basename(resolved);
458
+ return {
459
+ content: [{ type: "text", text: `Sent ${kind} ${sent.message_id} (${name}) to ${String(sent.chat.id)}.` }],
460
+ structuredContent: { ok: true, chat_id: sent.chat.id, message_id: sent.message_id, filename: name },
461
+ };
462
+ }
463
+ catch (error) {
464
+ // Retry buffered exactly once; rethrow anything that isn't a server-side rejection.
465
+ if (error.kind !== "telegram") {
466
+ throw error;
467
+ }
468
+ }
469
+ }
470
+ const { bytes, filename } = await resolveTelegramFileBytes({
471
+ data: args.data,
472
+ path: args.path,
473
+ filename: args.filename,
474
+ requireFilename: kind === "document",
475
+ maxBytes: maxUploadBytes,
476
+ });
477
+ const result = kind === "document"
478
+ ? await client.sendDocument({
479
+ chat_id: args.chat_id,
480
+ document: bytes,
481
+ filename,
482
+ ...(args.caption === undefined ? {} : { caption: args.caption }),
483
+ })
484
+ : await client.sendPhoto({
485
+ chat_id: args.chat_id,
486
+ photo: bytes,
487
+ filename,
488
+ ...(args.caption === undefined ? {} : { caption: args.caption }),
489
+ });
490
+ return {
491
+ content: [{ type: "text", text: `Sent ${kind} ${result.message_id} (${filename}) to ${String(result.chat.id)}.` }],
492
+ structuredContent: { ok: true, chat_id: result.chat.id, message_id: result.message_id, filename },
493
+ };
494
+ });
495
+ }
496
+ /** Resolve the upload bytes + filename from exactly one of base64 `data` or a `path`. */
497
+ async function resolveTelegramFileBytes(input) {
498
+ const hasData = input.data !== undefined;
499
+ const hasPath = input.path !== undefined;
500
+ if (hasData === hasPath) {
501
+ throw new Error("provide exactly one of `data` (base64) or `path`.");
502
+ }
503
+ let bytes;
504
+ let filename;
505
+ if (hasData) {
506
+ bytes = new Uint8Array(Buffer.from(input.data, "base64"));
507
+ if (input.filename === undefined) {
508
+ if (input.requireFilename) {
509
+ throw new Error("`filename` is required when sending a document by `data`.");
510
+ }
511
+ filename = "image";
512
+ }
513
+ else {
514
+ filename = input.filename;
515
+ }
516
+ }
517
+ else {
518
+ const resolved = resolvePath(process.cwd(), input.path);
519
+ bytes = new Uint8Array(await readFile(resolved));
520
+ filename = input.filename ?? basename(resolved);
521
+ }
522
+ if (bytes.byteLength === 0) {
523
+ throw new Error("file is empty.");
524
+ }
525
+ if (bytes.byteLength > input.maxBytes) {
526
+ throw new Error(`file exceeds the ${String(input.maxBytes)}-byte upload cap.`);
527
+ }
528
+ return { bytes, filename };
529
+ }
160
530
  async function resolveSlackSendToolSettings(input, options) {
161
531
  try {
162
- const config = await loadSlackAdapterConfig({ env: input.env, jsonPath: input.configPath });
532
+ const adapter = await loadSlackModule();
533
+ const config = await adapter.loadSlackAdapterConfig({ env: input.env, jsonPath: input.configPath });
163
534
  if (!config.enabled) {
164
535
  return undefined;
165
536
  }
@@ -176,9 +547,10 @@ async function resolveSlackSendToolSettings(input, options) {
176
547
  return undefined;
177
548
  }
178
549
  }
179
- async function resolveTelegramSendToolSettings(input, options) {
550
+ async function resolveTelegramSendToolSettings(input, options, tools) {
180
551
  try {
181
- const config = await loadTelegramAdapterConfig({ env: input.env, jsonPath: input.configPath });
552
+ const adapter = await loadTelegramModule();
553
+ const config = await adapter.loadTelegramAdapterConfig({ env: input.env, jsonPath: input.configPath });
182
554
  if (!config.enabled) {
183
555
  return undefined;
184
556
  }
@@ -186,6 +558,9 @@ async function resolveTelegramSendToolSettings(input, options) {
186
558
  botToken: config.botToken,
187
559
  allowedChatIds: config.allowedChatIds,
188
560
  allowAllChats: config.allowAllChats,
561
+ ...(config.apiRoot === undefined ? {} : { apiRoot: config.apiRoot }),
562
+ maxUploadBytes: config.attachments?.maxUploadBytes ?? adapter.DEFAULT_ATTACHMENT_MAX_BYTES,
563
+ tools,
189
564
  };
190
565
  }
191
566
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"adapter-send-tools.js","sourceRoot":"","sources":["../src/adapter-send-tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"adapter-send-tools.js","sourceRoot":"","sources":["../src/adapter-send-tools.ts"],"names":[],"mappings":"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"}