@mono-agent/agent-app 0.4.0 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +15 -5
- package/dist/adapter-send-tools-main.js +2 -2
- package/dist/adapter-send-tools-main.js.map +1 -1
- package/dist/adapter-send-tools.d.ts +72 -6
- package/dist/adapter-send-tools.d.ts.map +1 -1
- package/dist/adapter-send-tools.js +413 -38
- package/dist/adapter-send-tools.js.map +1 -1
- package/dist/app-config.d.ts +48 -11
- package/dist/app-config.d.ts.map +1 -1
- package/dist/app-config.js +98 -24
- package/dist/app-config.js.map +1 -1
- package/dist/app.d.ts +10 -0
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +659 -48
- package/dist/app.js.map +1 -1
- package/dist/artifact-retention.d.ts +32 -0
- package/dist/artifact-retention.d.ts.map +1 -0
- package/dist/artifact-retention.js +111 -0
- package/dist/artifact-retention.js.map +1 -0
- package/dist/audit-runs.d.ts +12 -0
- package/dist/audit-runs.d.ts.map +1 -0
- package/dist/audit-runs.js +68 -0
- package/dist/audit-runs.js.map +1 -0
- package/dist/backfill.d.ts +3 -7
- package/dist/backfill.d.ts.map +1 -1
- package/dist/backfill.js +115 -11
- package/dist/backfill.js.map +1 -1
- package/dist/background.d.ts +8 -1
- package/dist/background.d.ts.map +1 -1
- package/dist/background.js +202 -4
- package/dist/background.js.map +1 -1
- package/dist/broadcast-recorder.d.ts +27 -0
- package/dist/broadcast-recorder.d.ts.map +1 -0
- package/dist/broadcast-recorder.js +82 -0
- package/dist/broadcast-recorder.js.map +1 -0
- package/dist/channel-config-view.d.ts +28 -0
- package/dist/channel-config-view.d.ts.map +1 -0
- package/dist/channel-config-view.js +79 -0
- package/dist/channel-config-view.js.map +1 -0
- package/dist/channel-gate.d.ts +22 -0
- package/dist/channel-gate.d.ts.map +1 -0
- package/dist/channel-gate.js +35 -0
- package/dist/channel-gate.js.map +1 -0
- package/dist/channel-plugins.d.ts +39 -0
- package/dist/channel-plugins.d.ts.map +1 -0
- package/dist/channel-plugins.js +346 -0
- package/dist/channel-plugins.js.map +1 -0
- package/dist/channels.d.ts +62 -73
- package/dist/channels.d.ts.map +1 -1
- package/dist/channels.js +833 -126
- package/dist/channels.js.map +1 -1
- package/dist/cli.d.ts +53 -3
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +696 -28
- package/dist/cli.js.map +1 -1
- package/dist/config-reference.d.ts +24 -0
- package/dist/config-reference.d.ts.map +1 -0
- package/dist/config-reference.js +580 -0
- package/dist/config-reference.js.map +1 -0
- package/dist/configured-agent.d.ts +104 -0
- package/dist/configured-agent.d.ts.map +1 -0
- package/dist/configured-agent.js +578 -0
- package/dist/configured-agent.js.map +1 -0
- package/dist/consumer-contract.d.ts +36 -0
- package/dist/consumer-contract.d.ts.map +1 -0
- package/dist/consumer-contract.js +290 -0
- package/dist/consumer-contract.js.map +1 -0
- package/dist/doctor.d.ts +9 -0
- package/dist/doctor.d.ts.map +1 -1
- package/dist/doctor.js +252 -55
- package/dist/doctor.js.map +1 -1
- package/dist/index.d.ts +9 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -2
- package/dist/index.js.map +1 -1
- package/dist/init.d.ts +23 -7
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +91 -26
- package/dist/init.js.map +1 -1
- package/dist/install-skill.d.ts +1 -1
- package/dist/install-skill.js +2 -2
- package/dist/install-skill.js.map +1 -1
- package/dist/interaction-bridge.d.ts +72 -0
- package/dist/interaction-bridge.d.ts.map +1 -0
- package/dist/interaction-bridge.js +354 -0
- package/dist/interaction-bridge.js.map +1 -0
- package/dist/memory-command.d.ts +10 -0
- package/dist/memory-command.d.ts.map +1 -0
- package/dist/memory-command.js +649 -0
- package/dist/memory-command.js.map +1 -0
- package/dist/memory-recall-main.js +1 -1
- package/dist/memory-recall-main.js.map +1 -1
- package/dist/memory-recall.d.ts +41 -5
- package/dist/memory-recall.d.ts.map +1 -1
- package/dist/memory-recall.js +75 -5
- package/dist/memory-recall.js.map +1 -1
- package/dist/memory-rituals.d.ts +8 -11
- package/dist/memory-rituals.d.ts.map +1 -1
- package/dist/memory-rituals.js +26 -25
- package/dist/memory-rituals.js.map +1 -1
- package/dist/metrics.d.ts +13 -0
- package/dist/metrics.d.ts.map +1 -0
- package/dist/metrics.js +105 -0
- package/dist/metrics.js.map +1 -0
- package/dist/notify-destinations.d.ts +23 -0
- package/dist/notify-destinations.d.ts.map +1 -0
- package/dist/notify-destinations.js +79 -0
- package/dist/notify-destinations.js.map +1 -0
- package/dist/posted-message-index.d.ts +61 -0
- package/dist/posted-message-index.d.ts.map +1 -0
- package/dist/posted-message-index.js +178 -0
- package/dist/posted-message-index.js.map +1 -0
- package/dist/proactive-notify.d.ts +32 -0
- package/dist/proactive-notify.d.ts.map +1 -0
- package/dist/proactive-notify.js +62 -0
- package/dist/proactive-notify.js.map +1 -0
- package/dist/recipes/base.d.ts +15 -0
- package/dist/recipes/base.d.ts.map +1 -0
- package/dist/recipes/base.js +51 -0
- package/dist/recipes/base.js.map +1 -0
- package/dist/recipes/catalog.d.ts +4 -0
- package/dist/recipes/catalog.d.ts.map +1 -0
- package/dist/recipes/catalog.js +509 -0
- package/dist/recipes/catalog.js.map +1 -0
- package/dist/recipes/index.d.ts +11 -0
- package/dist/recipes/index.d.ts.map +1 -0
- package/dist/recipes/index.js +14 -0
- package/dist/recipes/index.js.map +1 -0
- package/dist/recipes/types.d.ts +70 -0
- package/dist/recipes/types.d.ts.map +1 -0
- package/dist/recipes/types.js +15 -0
- package/dist/recipes/types.js.map +1 -0
- package/dist/request-model-override.d.ts +67 -0
- package/dist/request-model-override.d.ts.map +1 -0
- package/dist/request-model-override.js +96 -0
- package/dist/request-model-override.js.map +1 -0
- package/dist/runs-health.d.ts +22 -0
- package/dist/runs-health.d.ts.map +1 -0
- package/dist/runs-health.js +144 -0
- package/dist/runs-health.js.map +1 -0
- package/dist/seen-conversations.d.ts +22 -0
- package/dist/seen-conversations.d.ts.map +1 -0
- package/dist/seen-conversations.js +120 -0
- package/dist/seen-conversations.js.map +1 -0
- package/dist/setup.d.ts +29 -0
- package/dist/setup.d.ts.map +1 -0
- package/dist/setup.js +97 -0
- package/dist/setup.js.map +1 -0
- package/dist/trigger-overrides.d.ts +17 -0
- package/dist/trigger-overrides.d.ts.map +1 -0
- package/dist/trigger-overrides.js +30 -0
- package/dist/trigger-overrides.js.map +1 -0
- package/dist/tui-command.d.ts +56 -0
- package/dist/tui-command.d.ts.map +1 -0
- package/dist/tui-command.js +160 -0
- package/dist/tui-command.js.map +1 -0
- package/dist/ui.d.ts.map +1 -1
- package/dist/ui.js +4 -0
- package/dist/ui.js.map +1 -1
- package/dist/web-command.d.ts +39 -0
- package/dist/web-command.d.ts.map +1 -0
- package/dist/web-command.js +151 -0
- package/dist/web-command.js.map +1 -0
- package/package.json +17 -17
- package/schema/mono-agent.config.schema.json +1686 -0
- package/skills/mono-agent-composer/SKILL.md +34 -9
- package/skills/mono-agent-composer/agents/openai.yaml +4 -0
- package/skills/mono-agent-composer/references/config-blueprint.md +52 -18
- package/skills/mono-agent-composer/references/discovery-questions.md +14 -16
- package/skills/mono-agent-composer/references/feature-coverage.md +19 -15
- package/skills/mono-agent-composer/references/package-map.md +17 -19
- package/skills/mono-agent-composer/references/playbooks.md +209 -0
- 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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
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
|
-
|
|
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
|
-
...(
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
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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"}
|