flow-agent-bridge 0.37.7 → 0.37.8
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 +1 -0
- package/dist/api.d.ts +2 -0
- package/dist/api.js +4 -0
- package/dist/api.js.map +1 -1
- package/dist/bridge.d.ts +14 -1
- package/dist/bridge.js +92 -2
- package/dist/bridge.js.map +1 -1
- package/dist/catch-up.d.ts +1 -1
- package/dist/catch-up.js +5 -4
- package/dist/catch-up.js.map +1 -1
- package/dist/config.d.ts +7 -0
- package/dist/config.js +4 -0
- package/dist/config.js.map +1 -1
- package/dist/mail-tools.d.ts +245 -0
- package/dist/mail-tools.js +351 -0
- package/dist/mail-tools.js.map +1 -0
- package/dist/mcp-server.js +8 -1
- package/dist/mcp-server.js.map +1 -1
- package/package.json +1 -1
package/dist/catch-up.js
CHANGED
|
@@ -7,13 +7,14 @@
|
|
|
7
7
|
// Wake jobs (phase 2.4) arrive as `agent.job` events on the agent's own account: the subscription catches up on them too,
|
|
8
8
|
// and a second one, `bridge-jobs:<agent id>` with `socket` delivery, pokes the socket when one comes while connected.
|
|
9
9
|
// Job ids taken are remembered in the same state file, so a job is run once. Invitations (phase 4.2) come the same way:
|
|
10
|
-
// `calendar.invited` on the agent's own account, in both subscriptions, each event id answered once (state file too)
|
|
10
|
+
// `calendar.invited` on the agent's own account, in both subscriptions, each event id answered once (state file too), and
|
|
11
|
+
// so does mail (phase 5.4): `mail.received` on the agent's mailbox, each message id taken once.
|
|
11
12
|
import fs from 'node:fs';
|
|
12
13
|
import path from 'node:path';
|
|
13
14
|
import { socketEventOf } from './gateway.js';
|
|
14
|
-
export const CATCH_UP_TYPES = ['chat.message.created', 'chat.thread.reply', 'chat.reaction.added', 'agent.job', 'calendar.invited'];
|
|
15
|
+
export const CATCH_UP_TYPES = ['chat.message.created', 'chat.thread.reply', 'chat.reaction.added', 'agent.job', 'calendar.invited', 'mail.received'];
|
|
15
16
|
/** The events addressed to the agent's account alone that ask it for a turn: the job subscription's, and what `onAccount` gets. */
|
|
16
|
-
export const ACCOUNT_TYPES = ['agent.job', 'calendar.invited'];
|
|
17
|
+
export const ACCOUNT_TYPES = ['agent.job', 'calendar.invited', 'mail.received'];
|
|
17
18
|
/** How many answered message ids are remembered. */
|
|
18
19
|
export const HANDLED_MAX = 500;
|
|
19
20
|
/** A bound on one catch-up's pages, so a server that never runs dry cannot hold the start-up forever. */
|
|
@@ -21,7 +22,7 @@ const MAX_PAGES = 100;
|
|
|
21
22
|
export const subscriptionName = (agentId) => `bridge:${agentId}`;
|
|
22
23
|
export const jobsSubscriptionName = (agentId) => `bridge-jobs:${agentId}`;
|
|
23
24
|
const mainSpec = (agentId) => ({ name: subscriptionName(agentId), filter: { types: CATCH_UP_TYPES }, delivery: 'pull' });
|
|
24
|
-
/** The live path for jobs and
|
|
25
|
+
/** The live path for jobs, invitations and mail: a poke on the socket when one of ACCOUNT_TYPES for this account comes. */
|
|
25
26
|
export const jobsSpec = (agentId) => ({ name: jobsSubscriptionName(agentId), filter: { types: ACCOUNT_TYPES, self: true }, delivery: 'socket' });
|
|
26
27
|
/**
|
|
27
28
|
* The bridge's subscription in the organization: found by name, or made (starting at the log's head). `outdated` when
|
package/dist/catch-up.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catch-up.js","sourceRoot":"","sources":["../src/catch-up.ts"],"names":[],"mappings":"AAAA,uHAAuH;AACvH,sHAAsH;AACtH,oHAAoH;AACpH,wHAAwH;AACxH,wHAAwH;AACxH,oGAAoG;AACpG,0HAA0H;AAC1H,sHAAsH;AACtH,wHAAwH;AACxH,
|
|
1
|
+
{"version":3,"file":"catch-up.js","sourceRoot":"","sources":["../src/catch-up.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
CHANGED
|
@@ -134,6 +134,13 @@ export interface BridgeConfig {
|
|
|
134
134
|
* null keeps it in memory only.
|
|
135
135
|
*/
|
|
136
136
|
stateFile?: string | null;
|
|
137
|
+
/**
|
|
138
|
+
* Mail to the agent's mailbox (phase 5.4): mail from a member of the organization always starts a turn; mail from
|
|
139
|
+
* anyone else is logged and ignored (`ignore`, the default) or starts a turn in the DM with the sponsor (`wake`).
|
|
140
|
+
*/
|
|
141
|
+
mail?: {
|
|
142
|
+
fromOutside: 'ignore' | 'wake';
|
|
143
|
+
} | undefined;
|
|
137
144
|
}
|
|
138
145
|
/** The state file beside a config: `state.json` for `agent.json`, else `<name>.state.json`. */
|
|
139
146
|
export declare function stateFileFor(configPath: string): string;
|
package/dist/config.js
CHANGED
|
@@ -106,6 +106,9 @@ export function loadConfig(configPath) {
|
|
|
106
106
|
if (!(voice.maxSessionMinutes > 0)) {
|
|
107
107
|
throw new Error('config: voice.maxSessionMinutes must be a positive number');
|
|
108
108
|
}
|
|
109
|
+
const fromOutside = raw.mail?.fromOutside ?? 'ignore';
|
|
110
|
+
if (fromOutside !== 'ignore' && fromOutside !== 'wake')
|
|
111
|
+
throw new Error(`config: bad mail.fromOutside "${fromOutside}" (ignore or wake)`);
|
|
109
112
|
const agentChainLimit = Math.max(0, raw.agentChainLimit ?? 6);
|
|
110
113
|
return {
|
|
111
114
|
serverUrl,
|
|
@@ -123,6 +126,7 @@ export function loadConfig(configPath) {
|
|
|
123
126
|
relayText: raw.relayText ?? true,
|
|
124
127
|
voice,
|
|
125
128
|
stateFile: stateFileFor(abs),
|
|
129
|
+
mail: { fromOutside },
|
|
126
130
|
};
|
|
127
131
|
}
|
|
128
132
|
/**
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,yEAAyE;AACzE,qDAAqD;AACrD,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,mGAAmG;AACnG,MAAM,UAAU,UAAU,CAAC,CAAS;IAClC,IAAI,CAAC,KAAK,GAAG;QAAE,OAAO,EAAE,CAAC,OAAO,EAAE,CAAC;IACnC,OAAO,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtE,CAAC;AAuBD,MAAM,UAAU,kBAAkB;IAChC,OAAO;QACL,OAAO,EAAE,IAAI;QACb,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,IAAI,EAAE,IAAI,0BAA0B;QAChF,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,IAAI,EAAE,IAAI,uBAAuB;QAC7E,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,IAAI,EAAE,IAAI,QAAQ;QAC9D,YAAY,EACV,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,IAAI,EAAE,IAAI,wCAAwC;QAC1F,iBAAiB,EAAE,EAAE;KACtB,CAAC;AACJ,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
import type { FlowApi } from './api.js';
|
|
2
|
+
/** The data of a `mail.received` event (packages/edge/src/imap/object.ts `publishReceived`), on the mailbox's account alone. */
|
|
3
|
+
export interface MailReceivedEventData {
|
|
4
|
+
accountId: string;
|
|
5
|
+
folder: string;
|
|
6
|
+
uid: number;
|
|
7
|
+
from: {
|
|
8
|
+
name: string;
|
|
9
|
+
address: string;
|
|
10
|
+
} | null;
|
|
11
|
+
subject: string;
|
|
12
|
+
date: string;
|
|
13
|
+
}
|
|
14
|
+
/** The longest body read_mail returns, in characters (the /mcp tools' MAX_BODY_CHARS). */
|
|
15
|
+
export declare const MAX_BODY_CHARS = 50000;
|
|
16
|
+
export declare const NO_MAILBOX = "This agent has no mailbox yet: its organization has not set one up (hosted mail), or it is still being set up.";
|
|
17
|
+
export declare const MAIL_TOOLS: ({
|
|
18
|
+
name: string;
|
|
19
|
+
description: string;
|
|
20
|
+
inputSchema: {
|
|
21
|
+
type: string;
|
|
22
|
+
properties: {
|
|
23
|
+
folder: {
|
|
24
|
+
type: string;
|
|
25
|
+
description: string;
|
|
26
|
+
};
|
|
27
|
+
limit: {
|
|
28
|
+
type: string;
|
|
29
|
+
description: string;
|
|
30
|
+
};
|
|
31
|
+
unread_only: {
|
|
32
|
+
type: string;
|
|
33
|
+
description: string;
|
|
34
|
+
};
|
|
35
|
+
query?: never;
|
|
36
|
+
to?: never;
|
|
37
|
+
cc?: never;
|
|
38
|
+
subject?: never;
|
|
39
|
+
body?: never;
|
|
40
|
+
reply_to_id?: never;
|
|
41
|
+
to_folder?: never;
|
|
42
|
+
ids?: never;
|
|
43
|
+
read?: never;
|
|
44
|
+
starred?: never;
|
|
45
|
+
};
|
|
46
|
+
required?: never;
|
|
47
|
+
};
|
|
48
|
+
} | {
|
|
49
|
+
name: string;
|
|
50
|
+
description: string;
|
|
51
|
+
inputSchema: {
|
|
52
|
+
type: string;
|
|
53
|
+
properties: {
|
|
54
|
+
unread_only?: never;
|
|
55
|
+
query: {
|
|
56
|
+
type: string;
|
|
57
|
+
description: string;
|
|
58
|
+
};
|
|
59
|
+
folder: {
|
|
60
|
+
type: string;
|
|
61
|
+
description: string;
|
|
62
|
+
};
|
|
63
|
+
limit: {
|
|
64
|
+
type: string;
|
|
65
|
+
description: string;
|
|
66
|
+
};
|
|
67
|
+
to?: never;
|
|
68
|
+
cc?: never;
|
|
69
|
+
subject?: never;
|
|
70
|
+
body?: never;
|
|
71
|
+
reply_to_id?: never;
|
|
72
|
+
to_folder?: never;
|
|
73
|
+
ids?: never;
|
|
74
|
+
read?: never;
|
|
75
|
+
starred?: never;
|
|
76
|
+
};
|
|
77
|
+
required: string[];
|
|
78
|
+
};
|
|
79
|
+
} | {
|
|
80
|
+
name: string;
|
|
81
|
+
description: string;
|
|
82
|
+
inputSchema: {
|
|
83
|
+
type: string;
|
|
84
|
+
properties: {
|
|
85
|
+
unread_only?: never;
|
|
86
|
+
query?: never;
|
|
87
|
+
folder?: never;
|
|
88
|
+
limit?: never;
|
|
89
|
+
ids: {
|
|
90
|
+
type: string;
|
|
91
|
+
items: {
|
|
92
|
+
type: string;
|
|
93
|
+
};
|
|
94
|
+
maxItems: number;
|
|
95
|
+
description: string;
|
|
96
|
+
};
|
|
97
|
+
to?: never;
|
|
98
|
+
cc?: never;
|
|
99
|
+
subject?: never;
|
|
100
|
+
body?: never;
|
|
101
|
+
reply_to_id?: never;
|
|
102
|
+
to_folder?: never;
|
|
103
|
+
read?: never;
|
|
104
|
+
starred?: never;
|
|
105
|
+
};
|
|
106
|
+
required: string[];
|
|
107
|
+
};
|
|
108
|
+
} | {
|
|
109
|
+
name: string;
|
|
110
|
+
description: string;
|
|
111
|
+
inputSchema: {
|
|
112
|
+
type: string;
|
|
113
|
+
properties: {
|
|
114
|
+
unread_only?: never;
|
|
115
|
+
query?: never;
|
|
116
|
+
folder?: never;
|
|
117
|
+
limit?: never;
|
|
118
|
+
to: {
|
|
119
|
+
type: string;
|
|
120
|
+
items: {
|
|
121
|
+
type: string;
|
|
122
|
+
};
|
|
123
|
+
description: string;
|
|
124
|
+
};
|
|
125
|
+
cc: {
|
|
126
|
+
type: string;
|
|
127
|
+
items: {
|
|
128
|
+
type: string;
|
|
129
|
+
};
|
|
130
|
+
description: string;
|
|
131
|
+
};
|
|
132
|
+
subject: {
|
|
133
|
+
type: string;
|
|
134
|
+
description: string;
|
|
135
|
+
};
|
|
136
|
+
body: {
|
|
137
|
+
type: string;
|
|
138
|
+
description: string;
|
|
139
|
+
};
|
|
140
|
+
reply_to_id: {
|
|
141
|
+
type: string;
|
|
142
|
+
description: string;
|
|
143
|
+
};
|
|
144
|
+
to_folder?: never;
|
|
145
|
+
ids?: never;
|
|
146
|
+
read?: never;
|
|
147
|
+
starred?: never;
|
|
148
|
+
};
|
|
149
|
+
required: string[];
|
|
150
|
+
};
|
|
151
|
+
} | {
|
|
152
|
+
name: string;
|
|
153
|
+
description: string;
|
|
154
|
+
inputSchema: {
|
|
155
|
+
type: string;
|
|
156
|
+
properties: {
|
|
157
|
+
unread_only?: never;
|
|
158
|
+
query?: never;
|
|
159
|
+
folder?: never;
|
|
160
|
+
limit?: never;
|
|
161
|
+
to?: never;
|
|
162
|
+
cc?: never;
|
|
163
|
+
subject?: never;
|
|
164
|
+
body?: never;
|
|
165
|
+
reply_to_id?: never;
|
|
166
|
+
ids: {
|
|
167
|
+
type: string;
|
|
168
|
+
items: {
|
|
169
|
+
type: string;
|
|
170
|
+
};
|
|
171
|
+
maxItems: number;
|
|
172
|
+
description: string;
|
|
173
|
+
};
|
|
174
|
+
to_folder: {
|
|
175
|
+
type: string;
|
|
176
|
+
description: string;
|
|
177
|
+
};
|
|
178
|
+
read?: never;
|
|
179
|
+
starred?: never;
|
|
180
|
+
};
|
|
181
|
+
required: string[];
|
|
182
|
+
};
|
|
183
|
+
} | {
|
|
184
|
+
name: string;
|
|
185
|
+
description: string;
|
|
186
|
+
inputSchema: {
|
|
187
|
+
type: string;
|
|
188
|
+
properties: {
|
|
189
|
+
unread_only?: never;
|
|
190
|
+
query?: never;
|
|
191
|
+
folder?: never;
|
|
192
|
+
limit?: never;
|
|
193
|
+
to?: never;
|
|
194
|
+
cc?: never;
|
|
195
|
+
subject?: never;
|
|
196
|
+
body?: never;
|
|
197
|
+
reply_to_id?: never;
|
|
198
|
+
to_folder?: never;
|
|
199
|
+
ids: {
|
|
200
|
+
type: string;
|
|
201
|
+
items: {
|
|
202
|
+
type: string;
|
|
203
|
+
};
|
|
204
|
+
maxItems: number;
|
|
205
|
+
description: string;
|
|
206
|
+
};
|
|
207
|
+
read: {
|
|
208
|
+
type: string;
|
|
209
|
+
description: string;
|
|
210
|
+
};
|
|
211
|
+
starred: {
|
|
212
|
+
type: string;
|
|
213
|
+
description: string;
|
|
214
|
+
};
|
|
215
|
+
};
|
|
216
|
+
required: string[];
|
|
217
|
+
};
|
|
218
|
+
})[];
|
|
219
|
+
export declare const MAIL_TOOL_NAMES: Set<string>;
|
|
220
|
+
/** What the agent is asked when mail comes from a member (the turn in the DM with them, or with the sponsor). */
|
|
221
|
+
export declare function mailPrompt(d: MailReceivedEventData, id: string, name: string | null): string;
|
|
222
|
+
/**
|
|
223
|
+
* A body written in Markdown as a message's HTML, as the Mail tools on /mcp send it (mailText.ts `markdownToHtml`, with
|
|
224
|
+
* marked: GFM, line breaks kept): headings, paragraphs, lists, quotes, code blocks and the inline marks. Raw HTML in it is
|
|
225
|
+
* shown as text, never passed through. Small on purpose: the bridge carries no Markdown library.
|
|
226
|
+
*/
|
|
227
|
+
export declare function markdownToHtml(markdown: string): string;
|
|
228
|
+
/** A message's HTML as text, roughly as a reader sees it: no markup, scripts or styles; a link as `text (address)`. */
|
|
229
|
+
export declare function htmlToText(html: string): string;
|
|
230
|
+
export type MailApi = Pick<FlowApi, 'mail'>;
|
|
231
|
+
/** A message id's parts (`<account>:<folder>:<uid>`: the account has no colon, the uid is last), or null. */
|
|
232
|
+
export declare function parseMessageId(id: string): {
|
|
233
|
+
account: string;
|
|
234
|
+
folder: string;
|
|
235
|
+
uid: number;
|
|
236
|
+
} | null;
|
|
237
|
+
/**
|
|
238
|
+
* One of MAIL_TOOLS, as the agent, on its hosted mailbox in its organization: the text for the agent, and whether it is
|
|
239
|
+
* an error. No mailbox is an answer, not an error, so the turn goes on. The /mcp tools' argument names; `id`, `q`, `seen`,
|
|
240
|
+
* `flagged`, `to` (for move_mail), `unread` and `in_reply_to` are taken for theirs too.
|
|
241
|
+
*/
|
|
242
|
+
export declare function mailTool(api: MailApi, workspaceId: string, name: string, args: Record<string, unknown>): Promise<{
|
|
243
|
+
text: string;
|
|
244
|
+
isError: boolean;
|
|
245
|
+
}>;
|