@mono-agent/agent-app 0.2.2 → 0.4.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.
- package/README.md +9 -5
- package/dist/adapter-send-tools-main.d.ts +3 -0
- package/dist/adapter-send-tools-main.d.ts.map +1 -0
- package/dist/adapter-send-tools-main.js +20 -0
- package/dist/adapter-send-tools-main.js.map +1 -0
- package/dist/adapter-send-tools.d.ts +59 -0
- package/dist/adapter-send-tools.d.ts.map +1 -0
- package/dist/adapter-send-tools.js +254 -0
- package/dist/adapter-send-tools.js.map +1 -0
- package/dist/app-config.d.ts +40 -17
- package/dist/app-config.d.ts.map +1 -1
- package/dist/app-config.js +188 -68
- package/dist/app-config.js.map +1 -1
- package/dist/app.d.ts +41 -20
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +349 -87
- package/dist/app.js.map +1 -1
- package/dist/backfill.d.ts +79 -0
- package/dist/backfill.d.ts.map +1 -0
- package/dist/backfill.js +246 -0
- package/dist/backfill.js.map +1 -0
- package/dist/background.d.ts +0 -4
- package/dist/background.d.ts.map +1 -1
- package/dist/background.js +78 -50
- package/dist/background.js.map +1 -1
- package/dist/channels.d.ts +7 -0
- package/dist/channels.d.ts.map +1 -1
- package/dist/channels.js +26 -3
- package/dist/channels.js.map +1 -1
- package/dist/cli.d.ts +53 -4
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +317 -113
- package/dist/cli.js.map +1 -1
- package/dist/doctor.d.ts +8 -0
- package/dist/doctor.d.ts.map +1 -1
- package/dist/doctor.js +236 -30
- package/dist/doctor.js.map +1 -1
- package/dist/index.d.ts +8 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/init.d.ts +1 -1
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +1 -1
- package/dist/init.js.map +1 -1
- package/dist/launchd.d.ts +0 -2
- package/dist/launchd.d.ts.map +1 -1
- package/dist/launchd.js +0 -2
- package/dist/launchd.js.map +1 -1
- package/dist/memory-recall-main.d.ts +3 -0
- package/dist/memory-recall-main.d.ts.map +1 -0
- package/dist/memory-recall-main.js +30 -0
- package/dist/memory-recall-main.js.map +1 -0
- package/dist/memory-recall.d.ts +111 -0
- package/dist/memory-recall.d.ts.map +1 -0
- package/dist/memory-recall.js +275 -0
- package/dist/memory-recall.js.map +1 -0
- package/dist/memory-rituals.d.ts +51 -0
- package/dist/memory-rituals.d.ts.map +1 -0
- package/dist/memory-rituals.js +228 -0
- package/dist/memory-rituals.js.map +1 -0
- package/dist/sessions.d.ts +21 -0
- package/dist/sessions.d.ts.map +1 -0
- package/dist/sessions.js +45 -0
- package/dist/sessions.js.map +1 -0
- package/dist/ui.d.ts +54 -0
- package/dist/ui.d.ts.map +1 -0
- package/dist/ui.js +153 -0
- package/dist/ui.js.map +1 -0
- package/package.json +22 -17
- package/skills/mono-agent-composer/SKILL.md +7 -6
- package/skills/mono-agent-composer/references/config-blueprint.md +53 -22
- package/skills/mono-agent-composer/references/discovery-questions.md +121 -10
- package/skills/mono-agent-composer/references/feature-coverage.md +15 -12
- package/skills/mono-agent-composer/references/package-map.md +9 -11
- package/skills/mono-agent-composer/references/validation.md +5 -4
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Config-first mono-agent host. Reads one `mono-agent.config.json` in a folder,
|
|
4
4
|
builds the configured responder, and starts every configured communication
|
|
5
|
-
channel plus
|
|
5
|
+
channel plus traceability. Ships the
|
|
6
6
|
`mono-agent` CLI (`init`, `validate`, `start`) so an agent folder works without
|
|
7
7
|
hand-written composition code.
|
|
8
8
|
|
|
@@ -20,8 +20,12 @@ Turn a folder's `mono-agent.config.json` into a running agent host:
|
|
|
20
20
|
(including `runtime.fallbackModels` backup chains).
|
|
21
21
|
- Drive each channel through a uniform driver contract with per-channel
|
|
22
22
|
`disabled` / `waiting_for_config` / `running` / `failed` status.
|
|
23
|
-
-
|
|
24
|
-
-
|
|
23
|
+
- Register the host as a traceability source. Config edits are made directly in
|
|
24
|
+
`mono-agent.config.json` and take effect on the next `mono-agent restart`.
|
|
25
|
+
- Resolve and surface any configured `observability.exporters` (the Phoenix
|
|
26
|
+
preset): `start`/`status` report the configured endpoint and a note that JSONL
|
|
27
|
+
artifacts remain local; `validate` performs the live reachability probe. Export
|
|
28
|
+
is best-effort and never changes a run outcome.
|
|
25
29
|
- Scaffold (`mono-agent init`) and validate (`mono-agent validate`) agent
|
|
26
30
|
folders non-destructively.
|
|
27
31
|
|
|
@@ -44,7 +48,7 @@ Programmatic:
|
|
|
44
48
|
import { startMonoAgentApp } from "@mono-agent/agent-app";
|
|
45
49
|
|
|
46
50
|
const app = await startMonoAgentApp({ cwd: "/path/to/agent-folder" });
|
|
47
|
-
console.log(app.
|
|
51
|
+
console.log(app.channelStatuses());
|
|
48
52
|
await app.stop();
|
|
49
53
|
```
|
|
50
54
|
|
|
@@ -56,7 +60,7 @@ await app.stop();
|
|
|
56
60
|
`create<Channel>ChannelDriver(overrides)` factories with test seams.
|
|
57
61
|
- `initMonoAgentFolder(options)` / `validateMonoAgentFolder(options)`.
|
|
58
62
|
- `MONO_AGENT_APP_FIELD_GROUPS` and the `resolveApp*` traceability/artifact
|
|
59
|
-
resolvers
|
|
63
|
+
resolvers.
|
|
60
64
|
- `runCli(argv)` / `parseCliArgs(argv)` backing the `mono-agent` bin.
|
|
61
65
|
|
|
62
66
|
## Dependency Boundary
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter-send-tools-main.d.ts","sourceRoot":"","sources":["../src/adapter-send-tools-main.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
3
|
+
import { adapterSendToolsChildConfigFromEnv, createAdapterSendToolsClients, createAdapterSendToolsServer, resolveAdapterSendToolsSettings, } from "./adapter-send-tools.js";
|
|
4
|
+
async function main() {
|
|
5
|
+
const childConfig = adapterSendToolsChildConfigFromEnv(process.env, process.cwd());
|
|
6
|
+
const settings = await resolveAdapterSendToolsSettings(childConfig.input, {
|
|
7
|
+
allowedTools: childConfig.allowedTools,
|
|
8
|
+
});
|
|
9
|
+
if (settings === undefined) {
|
|
10
|
+
throw new Error("no adapter send tools configured.");
|
|
11
|
+
}
|
|
12
|
+
const clients = createAdapterSendToolsClients(settings);
|
|
13
|
+
const server = createAdapterSendToolsServer(settings, clients);
|
|
14
|
+
await server.connect(new StdioServerTransport());
|
|
15
|
+
}
|
|
16
|
+
main().catch((error) => {
|
|
17
|
+
process.stderr.write(`mono-agent-adapter-send-tools: fatal: ${error instanceof Error ? error.message : String(error)}\n`);
|
|
18
|
+
process.exitCode = 1;
|
|
19
|
+
});
|
|
20
|
+
//# sourceMappingURL=adapter-send-tools-main.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter-send-tools-main.js","sourceRoot":"","sources":["../src/adapter-send-tools-main.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAEjF,OAAO,EACL,kCAAkC,EAClC,6BAA6B,EAC7B,4BAA4B,EAC5B,+BAA+B,GAChC,MAAM,yBAAyB,CAAC;AAEjC,KAAK,UAAU,IAAI;IACjB,MAAM,WAAW,GAAG,kCAAkC,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACnF,MAAM,QAAQ,GAAG,MAAM,+BAA+B,CAAC,WAAW,CAAC,KAAK,EAAE;QACxE,YAAY,EAAE,WAAW,CAAC,YAAY;KACvC,CAAC,CAAC;IACH,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;IACvD,CAAC;IACD,MAAM,OAAO,GAAG,6BAA6B,CAAC,QAAQ,CAAC,CAAC;IACxD,MAAM,MAAM,GAAG,4BAA4B,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC/D,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,oBAAoB,EAAE,CAAC,CAAC;AACnD,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;IAC9B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,yCAAyC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1H,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
import type { SlackWebApi } from "@mono-agent/slack-adapter";
|
|
3
|
+
import type { TelegramMessageSender } from "@mono-agent/telegram-adapter";
|
|
4
|
+
import type { MonoAgentAppConfigInput } from "./app-config.js";
|
|
5
|
+
/**
|
|
6
|
+
* Model-visible send tools for explicitly allowed, already-enabled communication adapters.
|
|
7
|
+
*
|
|
8
|
+
* This mirrors `memory_recall`: agent-app injects a stdio MCP server through
|
|
9
|
+
* per-request runtime options. The adapter config remains the source of truth:
|
|
10
|
+
* if Slack or Telegram is disabled, invalid, blocked by tool policy, or lacks an
|
|
11
|
+
* allowed destination policy, the corresponding send tool is not exposed. When
|
|
12
|
+
* exposed, each tool enforces the same adapter allowlist before calling the
|
|
13
|
+
* adapter-owned sender.
|
|
14
|
+
*/
|
|
15
|
+
export declare const ADAPTER_SEND_TOOLS_MCP_SERVER_NAME = "mono-agent-adapter-send";
|
|
16
|
+
export interface SlackSendToolSettings {
|
|
17
|
+
readonly botToken: string;
|
|
18
|
+
readonly allowedChannelIds: readonly string[];
|
|
19
|
+
readonly allowAllChannels: boolean;
|
|
20
|
+
}
|
|
21
|
+
export interface TelegramSendToolSettings {
|
|
22
|
+
readonly botToken: string;
|
|
23
|
+
readonly allowedChatIds: readonly string[];
|
|
24
|
+
readonly allowAllChats: boolean;
|
|
25
|
+
}
|
|
26
|
+
export interface AdapterSendToolsSettings {
|
|
27
|
+
readonly slack?: SlackSendToolSettings;
|
|
28
|
+
readonly telegram?: TelegramSendToolSettings;
|
|
29
|
+
}
|
|
30
|
+
export interface AdapterSendToolsClients {
|
|
31
|
+
readonly slack?: Pick<SlackWebApi, "chatPostMessage">;
|
|
32
|
+
readonly telegram?: Pick<TelegramMessageSender, "sendMessage">;
|
|
33
|
+
}
|
|
34
|
+
export interface AdapterSendToolsRuntimeExtension {
|
|
35
|
+
readonly runtimeOptions: {
|
|
36
|
+
readonly mcpServers: Record<string, unknown>;
|
|
37
|
+
};
|
|
38
|
+
readonly cleanup: () => Promise<void>;
|
|
39
|
+
}
|
|
40
|
+
export interface AdapterSendToolsResolveOptions {
|
|
41
|
+
readonly allowedTools?: readonly string[] | undefined;
|
|
42
|
+
readonly disallowedTools?: readonly string[] | undefined;
|
|
43
|
+
readonly logger?: {
|
|
44
|
+
warn?: (message: string, metadata?: Record<string, unknown>) => void;
|
|
45
|
+
} | undefined;
|
|
46
|
+
}
|
|
47
|
+
export declare function resolveAdapterSendToolsSettings(input: MonoAgentAppConfigInput, options?: AdapterSendToolsResolveOptions): Promise<AdapterSendToolsSettings | undefined>;
|
|
48
|
+
export declare function adapterSendToolNames(settings: AdapterSendToolsSettings): readonly string[];
|
|
49
|
+
export declare function adapterSendToolsMcpEnv(configPath: string, allowedTools: readonly string[]): Record<string, string>;
|
|
50
|
+
export interface AdapterSendToolsChildConfig {
|
|
51
|
+
readonly input: MonoAgentAppConfigInput;
|
|
52
|
+
readonly allowedTools: readonly string[];
|
|
53
|
+
}
|
|
54
|
+
export declare function adapterSendToolsChildConfigFromEnv(env: Record<string, string | undefined>, cwd: string): AdapterSendToolsChildConfig;
|
|
55
|
+
export declare function adapterSendToolsMcpServerSpec(configPath: string, cwd: string, allowedTools: readonly string[]): Record<string, unknown>;
|
|
56
|
+
export declare function createAdapterSendToolsRuntimeExtension(configPath: string, cwd: string, allowedTools: readonly string[]): () => Promise<AdapterSendToolsRuntimeExtension>;
|
|
57
|
+
export declare function createAdapterSendToolsClients(settings: AdapterSendToolsSettings): AdapterSendToolsClients;
|
|
58
|
+
export declare function createAdapterSendToolsServer(settings: AdapterSendToolsSettings, clients: AdapterSendToolsClients): McpServer;
|
|
59
|
+
//# sourceMappingURL=adapter-send-tools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter-send-tools.d.ts","sourceRoot":"","sources":["../src/adapter-send-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
import process from "node:process";
|
|
2
|
+
import { fileURLToPath } from "node:url";
|
|
3
|
+
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
|
+
import * as z from "zod/v4";
|
|
7
|
+
/**
|
|
8
|
+
* Model-visible send tools for explicitly allowed, already-enabled communication adapters.
|
|
9
|
+
*
|
|
10
|
+
* This mirrors `memory_recall`: agent-app injects a stdio MCP server through
|
|
11
|
+
* per-request runtime options. The adapter config remains the source of truth:
|
|
12
|
+
* if Slack or Telegram is disabled, invalid, blocked by tool policy, or lacks an
|
|
13
|
+
* allowed destination policy, the corresponding send tool is not exposed. When
|
|
14
|
+
* exposed, each tool enforces the same adapter allowlist before calling the
|
|
15
|
+
* adapter-owned sender.
|
|
16
|
+
*/
|
|
17
|
+
export const ADAPTER_SEND_TOOLS_MCP_SERVER_NAME = "mono-agent-adapter-send";
|
|
18
|
+
export async function resolveAdapterSendToolsSettings(input, options = {}) {
|
|
19
|
+
const [slack, telegram] = await Promise.all([
|
|
20
|
+
isAdapterToolAllowed("slack_send_message", options)
|
|
21
|
+
? resolveSlackSendToolSettings(input, options)
|
|
22
|
+
: undefined,
|
|
23
|
+
isAdapterToolAllowed("telegram_send_message", options)
|
|
24
|
+
? resolveTelegramSendToolSettings(input, options)
|
|
25
|
+
: undefined,
|
|
26
|
+
]);
|
|
27
|
+
if (slack === undefined && telegram === undefined) {
|
|
28
|
+
return undefined;
|
|
29
|
+
}
|
|
30
|
+
return {
|
|
31
|
+
...(slack === undefined ? {} : { slack }),
|
|
32
|
+
...(telegram === undefined ? {} : { telegram }),
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
export function adapterSendToolNames(settings) {
|
|
36
|
+
const names = [];
|
|
37
|
+
if (settings.slack !== undefined) {
|
|
38
|
+
names.push("slack_send_message");
|
|
39
|
+
}
|
|
40
|
+
if (settings.telegram !== undefined) {
|
|
41
|
+
names.push("telegram_send_message");
|
|
42
|
+
}
|
|
43
|
+
return names;
|
|
44
|
+
}
|
|
45
|
+
export function adapterSendToolsMcpEnv(configPath, allowedTools) {
|
|
46
|
+
return {
|
|
47
|
+
MONO_AGENT_ADAPTER_TOOLS_CONFIG_PATH: configPath,
|
|
48
|
+
MONO_AGENT_ADAPTER_TOOLS_ALLOWED_TOOLS: JSON.stringify(allowedTools),
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
export function adapterSendToolsChildConfigFromEnv(env, cwd) {
|
|
52
|
+
const configPath = optionalString(env.MONO_AGENT_ADAPTER_TOOLS_CONFIG_PATH);
|
|
53
|
+
if (configPath === undefined) {
|
|
54
|
+
throw new Error("adapter-send-tools: missing required environment (MONO_AGENT_ADAPTER_TOOLS_CONFIG_PATH).");
|
|
55
|
+
}
|
|
56
|
+
return {
|
|
57
|
+
input: { env, cwd, configPath },
|
|
58
|
+
allowedTools: parseAllowedToolNames(env.MONO_AGENT_ADAPTER_TOOLS_ALLOWED_TOOLS),
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
export function adapterSendToolsMcpServerSpec(configPath, cwd, allowedTools) {
|
|
62
|
+
return {
|
|
63
|
+
type: "stdio",
|
|
64
|
+
command: process.execPath,
|
|
65
|
+
args: [fileURLToPath(new URL("./adapter-send-tools-main.js", import.meta.url))],
|
|
66
|
+
cwd,
|
|
67
|
+
env: adapterSendToolsMcpEnv(configPath, allowedTools),
|
|
68
|
+
};
|
|
69
|
+
}
|
|
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),
|
|
75
|
+
},
|
|
76
|
+
},
|
|
77
|
+
cleanup: async () => { },
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
export function createAdapterSendToolsClients(settings) {
|
|
81
|
+
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
|
+
}),
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
export function createAdapterSendToolsServer(settings, clients) {
|
|
97
|
+
const server = new McpServer({ name: "agent-adapter-send-tools", version: "0.3.0" });
|
|
98
|
+
if (settings.slack !== undefined && clients.slack !== undefined) {
|
|
99
|
+
registerSlackSendTool(server, settings.slack, clients.slack);
|
|
100
|
+
}
|
|
101
|
+
if (settings.telegram !== undefined && clients.telegram !== undefined) {
|
|
102
|
+
registerTelegramSendTool(server, settings.telegram, clients.telegram);
|
|
103
|
+
}
|
|
104
|
+
return server;
|
|
105
|
+
}
|
|
106
|
+
function registerSlackSendTool(server, settings, client) {
|
|
107
|
+
server.registerTool("slack_send_message", {
|
|
108
|
+
title: "Send Slack message",
|
|
109
|
+
description: "Send a message to an allowed Slack channel or DM ID using the configured Slack adapter bot token.",
|
|
110
|
+
inputSchema: {
|
|
111
|
+
channel: z.string().min(1).describe("Slack channel or DM ID, e.g. C123456 or D123456."),
|
|
112
|
+
text: z.string().min(1).describe("Message text to send."),
|
|
113
|
+
thread_ts: z.string().min(1).optional().describe("Optional Slack thread timestamp to reply in."),
|
|
114
|
+
mrkdwn: z.boolean().optional().describe("Whether Slack mrkdwn formatting is enabled."),
|
|
115
|
+
unfurl_links: z.boolean().optional().describe("Whether Slack should unfurl links."),
|
|
116
|
+
unfurl_media: z.boolean().optional().describe("Whether Slack should unfurl media."),
|
|
117
|
+
},
|
|
118
|
+
}, async (args) => {
|
|
119
|
+
assertSlackChannelAllowed(settings, args.channel);
|
|
120
|
+
const result = await client.chatPostMessage({
|
|
121
|
+
channel: args.channel.trim(),
|
|
122
|
+
text: args.text,
|
|
123
|
+
...(args.thread_ts === undefined ? {} : { thread_ts: args.thread_ts }),
|
|
124
|
+
...(args.mrkdwn === undefined ? {} : { mrkdwn: args.mrkdwn }),
|
|
125
|
+
...(args.unfurl_links === undefined ? {} : { unfurl_links: args.unfurl_links }),
|
|
126
|
+
...(args.unfurl_media === undefined ? {} : { unfurl_media: args.unfurl_media }),
|
|
127
|
+
});
|
|
128
|
+
return {
|
|
129
|
+
content: [{ type: "text", text: `Sent Slack message to ${result.channel} at ${result.ts}.` }],
|
|
130
|
+
structuredContent: { ok: true, channel: result.channel, ts: result.ts },
|
|
131
|
+
};
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
function registerTelegramSendTool(server, settings, client) {
|
|
135
|
+
server.registerTool("telegram_send_message", {
|
|
136
|
+
title: "Send Telegram message",
|
|
137
|
+
description: "Send a message to an allowed Telegram chat using the configured Telegram adapter bot token.",
|
|
138
|
+
inputSchema: {
|
|
139
|
+
chat_id: z.union([z.string().min(1), z.number().int()]).describe("Telegram chat id from the adapter allowlist."),
|
|
140
|
+
text: z.string().min(1).describe("Message text to send."),
|
|
141
|
+
parse_mode: z.string().min(1).optional().describe("Optional Telegram parse mode, e.g. MarkdownV2 or HTML."),
|
|
142
|
+
reply_to_message_id: z.number().int().optional().describe("Optional message id to reply to."),
|
|
143
|
+
disable_web_page_preview: z.boolean().optional().describe("Disable Telegram link previews."),
|
|
144
|
+
},
|
|
145
|
+
}, async (args) => {
|
|
146
|
+
assertTelegramChatAllowed(settings, args.chat_id);
|
|
147
|
+
const result = await client.sendMessage({
|
|
148
|
+
chat_id: args.chat_id,
|
|
149
|
+
text: args.text,
|
|
150
|
+
...(args.parse_mode === undefined ? {} : { parse_mode: args.parse_mode }),
|
|
151
|
+
...(args.reply_to_message_id === undefined ? {} : { reply_to_message_id: args.reply_to_message_id }),
|
|
152
|
+
...(args.disable_web_page_preview === undefined ? {} : { disable_web_page_preview: args.disable_web_page_preview }),
|
|
153
|
+
});
|
|
154
|
+
return {
|
|
155
|
+
content: [{ type: "text", text: `Sent Telegram message ${result.message_id} to ${String(result.chat.id)}.` }],
|
|
156
|
+
structuredContent: { ok: true, chat_id: result.chat.id, message_id: result.message_id },
|
|
157
|
+
};
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
async function resolveSlackSendToolSettings(input, options) {
|
|
161
|
+
try {
|
|
162
|
+
const config = await loadSlackAdapterConfig({ env: input.env, jsonPath: input.configPath });
|
|
163
|
+
if (!config.enabled) {
|
|
164
|
+
return undefined;
|
|
165
|
+
}
|
|
166
|
+
return {
|
|
167
|
+
botToken: config.botToken,
|
|
168
|
+
allowedChannelIds: config.allowedChannelIds.map(normalizeSlackChannelId),
|
|
169
|
+
allowAllChannels: config.allowAllChannels,
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
catch (error) {
|
|
173
|
+
options.logger?.warn?.("Slack send tool skipped because Slack adapter config is unavailable.", {
|
|
174
|
+
reason: reasonOf(error),
|
|
175
|
+
});
|
|
176
|
+
return undefined;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
async function resolveTelegramSendToolSettings(input, options) {
|
|
180
|
+
try {
|
|
181
|
+
const config = await loadTelegramAdapterConfig({ env: input.env, jsonPath: input.configPath });
|
|
182
|
+
if (!config.enabled) {
|
|
183
|
+
return undefined;
|
|
184
|
+
}
|
|
185
|
+
return {
|
|
186
|
+
botToken: config.botToken,
|
|
187
|
+
allowedChatIds: config.allowedChatIds,
|
|
188
|
+
allowAllChats: config.allowAllChats,
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
catch (error) {
|
|
192
|
+
options.logger?.warn?.("Telegram send tool skipped because Telegram adapter config is unavailable.", {
|
|
193
|
+
reason: reasonOf(error),
|
|
194
|
+
});
|
|
195
|
+
return undefined;
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
function assertSlackChannelAllowed(settings, channel) {
|
|
199
|
+
if (settings.allowAllChannels || settings.allowedChannelIds.includes(normalizeSlackChannelId(channel))) {
|
|
200
|
+
return;
|
|
201
|
+
}
|
|
202
|
+
throw new Error("slack_send_message: channel is not allowed by Slack adapter config.");
|
|
203
|
+
}
|
|
204
|
+
function assertTelegramChatAllowed(settings, chatId) {
|
|
205
|
+
const normalized = String(chatId);
|
|
206
|
+
if (settings.allowAllChats || settings.allowedChatIds.includes(normalized)) {
|
|
207
|
+
return;
|
|
208
|
+
}
|
|
209
|
+
throw new Error("telegram_send_message: chat_id is not allowed by Telegram adapter config.");
|
|
210
|
+
}
|
|
211
|
+
function optionalString(value) {
|
|
212
|
+
if (value === undefined) {
|
|
213
|
+
return undefined;
|
|
214
|
+
}
|
|
215
|
+
const trimmed = value.trim();
|
|
216
|
+
return trimmed.length === 0 ? undefined : trimmed;
|
|
217
|
+
}
|
|
218
|
+
function normalizeSlackChannelId(value) {
|
|
219
|
+
return value.trim().toLowerCase();
|
|
220
|
+
}
|
|
221
|
+
function isAdapterToolAllowed(name, options) {
|
|
222
|
+
const wildcard = `mcp__${ADAPTER_SEND_TOOLS_MCP_SERVER_NAME}__*`;
|
|
223
|
+
const aliases = [name, `mcp__${ADAPTER_SEND_TOOLS_MCP_SERVER_NAME}__${name}`];
|
|
224
|
+
const allowed = options.allowedTools ?? [];
|
|
225
|
+
const disallowed = options.disallowedTools ?? [];
|
|
226
|
+
if (disallowed.includes(wildcard) || aliases.some((alias) => disallowed.includes(alias))) {
|
|
227
|
+
return false;
|
|
228
|
+
}
|
|
229
|
+
if (aliases.some((alias) => allowed.includes(alias))) {
|
|
230
|
+
return true;
|
|
231
|
+
}
|
|
232
|
+
return allowed.includes(wildcard);
|
|
233
|
+
}
|
|
234
|
+
function parseAllowedToolNames(raw) {
|
|
235
|
+
const value = optionalString(raw);
|
|
236
|
+
if (value === undefined) {
|
|
237
|
+
throw new Error("adapter-send-tools: missing required environment (MONO_AGENT_ADAPTER_TOOLS_ALLOWED_TOOLS).");
|
|
238
|
+
}
|
|
239
|
+
let parsed;
|
|
240
|
+
try {
|
|
241
|
+
parsed = JSON.parse(value);
|
|
242
|
+
}
|
|
243
|
+
catch {
|
|
244
|
+
throw new Error("adapter-send-tools: invalid MONO_AGENT_ADAPTER_TOOLS_ALLOWED_TOOLS (expected a JSON string array).");
|
|
245
|
+
}
|
|
246
|
+
if (!Array.isArray(parsed) || parsed.some((item) => typeof item !== "string")) {
|
|
247
|
+
throw new Error("adapter-send-tools: invalid MONO_AGENT_ADAPTER_TOOLS_ALLOWED_TOOLS (expected a JSON string array).");
|
|
248
|
+
}
|
|
249
|
+
return parsed;
|
|
250
|
+
}
|
|
251
|
+
function reasonOf(error) {
|
|
252
|
+
return error instanceof Error ? error.message : String(error);
|
|
253
|
+
}
|
|
254
|
+
//# sourceMappingURL=adapter-send-tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter-send-tools.js","sourceRoot":"","sources":["../src/adapter-send-tools.ts"],"names":[],"mappings":"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"}
|
package/dist/app-config.d.ts
CHANGED
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
import { MonoAgentConfigError } from "@mono-agent/config";
|
|
2
|
-
import type { MonoAgentConfig } from "@mono-agent/config";
|
|
2
|
+
import type { MonoAgentConfig, ObservabilityExporterConfig } from "@mono-agent/config";
|
|
3
3
|
import type { FieldGroup } from "@mono-agent/settings";
|
|
4
|
-
export declare const consoleFieldGroup: FieldGroup;
|
|
5
4
|
/**
|
|
6
|
-
* Every settings group a config-first host
|
|
7
|
-
*
|
|
8
|
-
* communication channel.
|
|
5
|
+
* Every settings group a config-first host exposes: the adapter-neutral core
|
|
6
|
+
* config plus one group per communication channel.
|
|
9
7
|
*/
|
|
10
8
|
export declare const MONO_AGENT_APP_FIELD_GROUPS: readonly FieldGroup[];
|
|
11
9
|
export interface MonoAgentAppConfigInput {
|
|
@@ -25,22 +23,47 @@ export interface AppTraceDefaults {
|
|
|
25
23
|
}
|
|
26
24
|
/**
|
|
27
25
|
* The resolvers below intentionally tolerate an incomplete or invalid config
|
|
28
|
-
* file: observability and
|
|
29
|
-
*
|
|
30
|
-
*
|
|
26
|
+
* file: observability and traceability must stay usable while the user is still
|
|
27
|
+
* fixing their config, so they fall back to defaults instead of throwing on
|
|
28
|
+
* unreadable JSON.
|
|
31
29
|
*/
|
|
32
30
|
export declare function resolveAppArtifactDir(input: MonoAgentAppConfigInput): Promise<string>;
|
|
33
|
-
export interface AppConsoleSettings {
|
|
34
|
-
readonly enabled: boolean;
|
|
35
|
-
readonly port?: number;
|
|
36
|
-
}
|
|
37
31
|
/**
|
|
38
|
-
*
|
|
39
|
-
*
|
|
40
|
-
*
|
|
41
|
-
*
|
|
32
|
+
* Resolve the durable pi-session store the runtime resumes from, the same way the
|
|
33
|
+
* runtime does: the `MONO_AGENT_PI_SESSIONS_ROOT` env override first, then
|
|
34
|
+
* `providers.piNative.piSessionsRoot` from the config file. Returns undefined when
|
|
35
|
+
* neither is set — that means sessions are kept in-memory only, so there is nothing
|
|
36
|
+
* on disk to purge. Tolerates an unreadable config like the resolvers above.
|
|
37
|
+
*/
|
|
38
|
+
export declare function resolveAppSessionsRoot(input: MonoAgentAppConfigInput): Promise<string | undefined>;
|
|
39
|
+
/**
|
|
40
|
+
* A validated observability exporter resolved for app startup/status/validate.
|
|
41
|
+
* Mirrors {@link ObservabilityExporterConfig} but with the endpoint always
|
|
42
|
+
* resolved (defaults applied) so callers never re-derive it.
|
|
43
|
+
*/
|
|
44
|
+
export type ResolvedExporter = ObservabilityExporterConfig & {
|
|
45
|
+
readonly endpoint: string;
|
|
46
|
+
};
|
|
47
|
+
/**
|
|
48
|
+
* Resolve observability exporters for the app: env-first
|
|
49
|
+
* (`MONO_AGENT_OBSERVABILITY_EXPORTERS`, JSON array), then the
|
|
50
|
+
* `observability.exporters` block of the config file, then `[]`. Like the other
|
|
51
|
+
* app-level resolvers it tolerates an unreadable config file (returns `[]` so the
|
|
52
|
+
* host stays usable while the user fixes their config), but it DOES throw
|
|
53
|
+
* a {@link MonoAgentConfigError} for a present-but-invalid exporter shape so bad
|
|
54
|
+
* config fails clearly before startup. No reachability probe runs here —
|
|
55
|
+
* reachability is `validate`'s job (Phoenix may start after the agent).
|
|
56
|
+
*/
|
|
57
|
+
export declare function resolveAppObservabilityExporters(input: MonoAgentAppConfigInput): Promise<readonly ResolvedExporter[]>;
|
|
58
|
+
/**
|
|
59
|
+
* Derive the Phoenix app base URL (origin) from an OTLP traces endpoint so the
|
|
60
|
+
* CLI/status can point operators at the trace UI — e.g.
|
|
61
|
+
* `http://127.0.0.1:6006/v1/traces` -> `http://127.0.0.1:6006`. Returns
|
|
62
|
+
* undefined when the endpoint is not a parseable URL. Note: Phoenix does not
|
|
63
|
+
* return a stable per-run trace URL from the OTLP ingest endpoint, so callers
|
|
64
|
+
* print only the app base URL plus run identifiers.
|
|
42
65
|
*/
|
|
43
|
-
export declare function
|
|
66
|
+
export declare function phoenixAppBaseUrl(endpoint: string): string | undefined;
|
|
44
67
|
export declare function resolveAppTraceRegistryDir(input: MonoAgentAppConfigInput): Promise<string>;
|
|
45
68
|
export declare function resolveAppTraceSourceId(input: MonoAgentAppConfigInput, defaults?: AppTraceDefaults): Promise<string>;
|
|
46
69
|
export declare function resolveAppTraceSourceLabel(input: MonoAgentAppConfigInput, defaults?: AppTraceDefaults): Promise<string>;
|
package/dist/app-config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-config.d.ts","sourceRoot":"","sources":["../src/app-config.ts"],"names":[],"mappings":"AAIA,OAAO,EAGL,oBAAoB,EAErB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"app-config.d.ts","sourceRoot":"","sources":["../src/app-config.ts"],"names":[],"mappings":"AAIA,OAAO,EAGL,oBAAoB,EAErB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,eAAe,EAAE,2BAA2B,EAAE,MAAM,oBAAoB,CAAC;AACvF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AASvD;;;GAGG;AACH,eAAO,MAAM,2BAA2B,EAAE,SAAS,UAAU,EAS5D,CAAC;AAEF,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IACjD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,uBAAuB,GAAG,OAAO,CAAC,eAAe,CAAC,CAMhG;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,oBAAoB,CAElF;AAOD;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED;;;;;GAKG;AACH,wBAAsB,qBAAqB,CAAC,KAAK,EAAE,uBAAuB,GAAG,OAAO,CAAC,MAAM,CAAC,CAiB3F;AAED;;;;;;GAMG;AACH,wBAAsB,sBAAsB,CAAC,KAAK,EAAE,uBAAuB,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAoBxG;AAMD;;;;GAIG;AACH,MAAM,MAAM,gBAAgB,GAAG,2BAA2B,GAAG;IAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3F;;;;;;;;;GASG;AACH,wBAAsB,gCAAgC,CACpD,KAAK,EAAE,uBAAuB,GAC7B,OAAO,CAAC,SAAS,gBAAgB,EAAE,CAAC,CAkBtC;AA0FD;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAMtE;AAoED,wBAAsB,0BAA0B,CAAC,KAAK,EAAE,uBAAuB,GAAG,OAAO,CAAC,MAAM,CAAC,CAiBhG;AAED,wBAAsB,uBAAuB,CAC3C,KAAK,EAAE,uBAAuB,EAC9B,QAAQ,CAAC,EAAE,gBAAgB,GAC1B,OAAO,CAAC,MAAM,CAAC,CAuBjB;AAED,wBAAsB,0BAA0B,CAC9C,KAAK,EAAE,uBAAuB,EAC9B,QAAQ,CAAC,EAAE,gBAAgB,GAC1B,OAAO,CAAC,MAAM,CAAC,CAiBjB;AAED,wBAAsB,0BAA0B,CAAC,KAAK,EAAE,uBAAuB,GAAG,OAAO,CAAC,MAAM,CAAC,CAShG;AAED,wBAAsB,2BAA2B,CAAC,KAAK,EAAE,uBAAuB,GAAG,OAAO,CAAC,MAAM,CAAC,CASjG"}
|