@mono-agent/agent-app 0.3.0 → 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.
Files changed (68) hide show
  1. package/README.md +9 -5
  2. package/dist/adapter-send-tools-main.d.ts +3 -0
  3. package/dist/adapter-send-tools-main.d.ts.map +1 -0
  4. package/dist/adapter-send-tools-main.js +20 -0
  5. package/dist/adapter-send-tools-main.js.map +1 -0
  6. package/dist/adapter-send-tools.d.ts +59 -0
  7. package/dist/adapter-send-tools.d.ts.map +1 -0
  8. package/dist/adapter-send-tools.js +254 -0
  9. package/dist/adapter-send-tools.js.map +1 -0
  10. package/dist/app-config.d.ts +40 -17
  11. package/dist/app-config.d.ts.map +1 -1
  12. package/dist/app-config.js +188 -68
  13. package/dist/app-config.js.map +1 -1
  14. package/dist/app.d.ts +41 -20
  15. package/dist/app.d.ts.map +1 -1
  16. package/dist/app.js +250 -91
  17. package/dist/app.js.map +1 -1
  18. package/dist/backfill.d.ts +79 -0
  19. package/dist/backfill.d.ts.map +1 -0
  20. package/dist/backfill.js +246 -0
  21. package/dist/backfill.js.map +1 -0
  22. package/dist/background.d.ts +0 -4
  23. package/dist/background.d.ts.map +1 -1
  24. package/dist/background.js +78 -50
  25. package/dist/background.js.map +1 -1
  26. package/dist/channels.d.ts +7 -0
  27. package/dist/channels.d.ts.map +1 -1
  28. package/dist/channels.js +26 -3
  29. package/dist/channels.js.map +1 -1
  30. package/dist/cli.d.ts +52 -3
  31. package/dist/cli.d.ts.map +1 -1
  32. package/dist/cli.js +315 -111
  33. package/dist/cli.js.map +1 -1
  34. package/dist/doctor.d.ts +8 -0
  35. package/dist/doctor.d.ts.map +1 -1
  36. package/dist/doctor.js +148 -48
  37. package/dist/doctor.js.map +1 -1
  38. package/dist/index.d.ts +6 -4
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/index.js +3 -2
  41. package/dist/index.js.map +1 -1
  42. package/dist/launchd.d.ts +0 -2
  43. package/dist/launchd.d.ts.map +1 -1
  44. package/dist/launchd.js +0 -2
  45. package/dist/launchd.js.map +1 -1
  46. package/dist/memory-recall-main.d.ts +3 -0
  47. package/dist/memory-recall-main.d.ts.map +1 -0
  48. package/dist/memory-recall-main.js +30 -0
  49. package/dist/memory-recall-main.js.map +1 -0
  50. package/dist/memory-recall.d.ts +111 -0
  51. package/dist/memory-recall.d.ts.map +1 -0
  52. package/dist/memory-recall.js +275 -0
  53. package/dist/memory-recall.js.map +1 -0
  54. package/dist/sessions.d.ts +21 -0
  55. package/dist/sessions.d.ts.map +1 -0
  56. package/dist/sessions.js +45 -0
  57. package/dist/sessions.js.map +1 -0
  58. package/dist/ui.d.ts +54 -0
  59. package/dist/ui.d.ts.map +1 -0
  60. package/dist/ui.js +153 -0
  61. package/dist/ui.js.map +1 -0
  62. package/package.json +22 -17
  63. package/skills/mono-agent-composer/SKILL.md +6 -5
  64. package/skills/mono-agent-composer/references/config-blueprint.md +37 -18
  65. package/skills/mono-agent-composer/references/discovery-questions.md +38 -23
  66. package/skills/mono-agent-composer/references/feature-coverage.md +12 -9
  67. package/skills/mono-agent-composer/references/package-map.md +5 -5
  68. 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 the local operator console and traceability. Ships the
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
- - Start the operator console first and re-apply config writes in-process.
24
- - Register the host as a traceability source.
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.operatorConsole?.appUrl, app.channelStatuses());
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 for operator-console wiring.
63
+ resolvers.
60
64
  - `runCli(argv)` / `parseCliArgs(argv)` backing the `mono-agent` bin.
61
65
 
62
66
  ## Dependency Boundary
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=adapter-send-tools-main.d.ts.map
@@ -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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"}
@@ -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 edits through the operator console:
7
- * the adapter-neutral core config, the console itself, plus one group per
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 the operator console must stay usable while the
29
- * user is still fixing their config, so they fall back to defaults instead of
30
- * throwing on unreadable JSON.
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
- * Operator console settings: env wins, then the `console` section of the
39
- * config file, then defaults (enabled, auto-selected port). Tolerates an
40
- * unreadable config file like the other app-level resolvers so the console
41
- * stays available while the user fixes their config.
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 resolveAppConsoleSettings(input: MonoAgentAppConfigInput): Promise<AppConsoleSettings>;
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>;
@@ -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;AAE1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AASvD,eAAO,MAAM,iBAAiB,YAuB5B,CAAC;AAEH;;;;GAIG;AACH,eAAO,MAAM,2BAA2B,EAAE,SAAS,UAAU,EAU5D,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,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;GAKG;AACH,wBAAsB,yBAAyB,CAAC,KAAK,EAAE,uBAAuB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CA0B3G;AAuBD,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"}
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"}