@spinabot/brigade 1.5.0 → 1.6.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/dist/agents/agent-loop.d.ts.map +1 -1
- package/dist/agents/agent-loop.js +51 -1
- package/dist/agents/agent-loop.js.map +1 -1
- package/dist/agents/channels/bundled-channel-metas.d.ts +4 -0
- package/dist/agents/channels/bundled-channel-metas.d.ts.map +1 -1
- package/dist/agents/channels/bundled-channel-metas.js +22 -0
- package/dist/agents/channels/bundled-channel-metas.js.map +1 -1
- package/dist/agents/channels/discord/account-config.d.ts +117 -0
- package/dist/agents/channels/discord/account-config.d.ts.map +1 -0
- package/dist/agents/channels/discord/account-config.js +260 -0
- package/dist/agents/channels/discord/account-config.js.map +1 -0
- package/dist/agents/channels/discord/adapter.d.ts +56 -0
- package/dist/agents/channels/discord/adapter.d.ts.map +1 -0
- package/dist/agents/channels/discord/adapter.js +526 -0
- package/dist/agents/channels/discord/adapter.js.map +1 -0
- package/dist/agents/channels/discord/approval-authorize.d.ts +43 -0
- package/dist/agents/channels/discord/approval-authorize.d.ts.map +1 -0
- package/dist/agents/channels/discord/approval-authorize.js +71 -0
- package/dist/agents/channels/discord/approval-authorize.js.map +1 -0
- package/dist/agents/channels/discord/approval-native.d.ts +68 -0
- package/dist/agents/channels/discord/approval-native.d.ts.map +1 -0
- package/dist/agents/channels/discord/approval-native.js +81 -0
- package/dist/agents/channels/discord/approval-native.js.map +1 -0
- package/dist/agents/channels/discord/command-menu.d.ts +49 -0
- package/dist/agents/channels/discord/command-menu.d.ts.map +1 -0
- package/dist/agents/channels/discord/command-menu.js +73 -0
- package/dist/agents/channels/discord/command-menu.js.map +1 -0
- package/dist/agents/channels/discord/components.d.ts +97 -0
- package/dist/agents/channels/discord/components.d.ts.map +1 -0
- package/dist/agents/channels/discord/components.js +131 -0
- package/dist/agents/channels/discord/components.js.map +1 -0
- package/dist/agents/channels/discord/connection.d.ts +387 -0
- package/dist/agents/channels/discord/connection.d.ts.map +1 -0
- package/dist/agents/channels/discord/connection.js +786 -0
- package/dist/agents/channels/discord/connection.js.map +1 -0
- package/dist/agents/channels/discord/draft-stream.d.ts +92 -0
- package/dist/agents/channels/discord/draft-stream.d.ts.map +1 -0
- package/dist/agents/channels/discord/draft-stream.js +213 -0
- package/dist/agents/channels/discord/draft-stream.js.map +1 -0
- package/dist/agents/channels/discord/format.d.ts +55 -0
- package/dist/agents/channels/discord/format.d.ts.map +1 -0
- package/dist/agents/channels/discord/format.js +247 -0
- package/dist/agents/channels/discord/format.js.map +1 -0
- package/dist/agents/channels/discord/inbound-extras.d.ts +220 -0
- package/dist/agents/channels/discord/inbound-extras.d.ts.map +1 -0
- package/dist/agents/channels/discord/inbound-extras.js +351 -0
- package/dist/agents/channels/discord/inbound-extras.js.map +1 -0
- package/dist/agents/channels/discord/index.d.ts +14 -0
- package/dist/agents/channels/discord/index.d.ts.map +1 -0
- package/dist/agents/channels/discord/index.js +14 -0
- package/dist/agents/channels/discord/index.js.map +1 -0
- package/dist/agents/channels/discord/media.d.ts +85 -0
- package/dist/agents/channels/discord/media.d.ts.map +1 -0
- package/dist/agents/channels/discord/media.js +242 -0
- package/dist/agents/channels/discord/media.js.map +1 -0
- package/dist/agents/channels/discord/module.d.ts +15 -0
- package/dist/agents/channels/discord/module.d.ts.map +1 -0
- package/dist/agents/channels/discord/module.js +22 -0
- package/dist/agents/channels/discord/module.js.map +1 -0
- package/dist/agents/channels/discord/plugin.d.ts +73 -0
- package/dist/agents/channels/discord/plugin.d.ts.map +1 -0
- package/dist/agents/channels/discord/plugin.js +303 -0
- package/dist/agents/channels/discord/plugin.js.map +1 -0
- package/dist/agents/channels/discord/probe.d.ts +93 -0
- package/dist/agents/channels/discord/probe.d.ts.map +1 -0
- package/dist/agents/channels/discord/probe.js +158 -0
- package/dist/agents/channels/discord/probe.js.map +1 -0
- package/dist/agents/channels/discord/reasoning-lane.d.ts +42 -0
- package/dist/agents/channels/discord/reasoning-lane.d.ts.map +1 -0
- package/dist/agents/channels/discord/reasoning-lane.js +68 -0
- package/dist/agents/channels/discord/reasoning-lane.js.map +1 -0
- package/dist/agents/channels/inbound-pipeline.d.ts.map +1 -1
- package/dist/agents/channels/inbound-pipeline.js +65 -7
- package/dist/agents/channels/inbound-pipeline.js.map +1 -1
- package/dist/agents/channels/manager.d.ts.map +1 -1
- package/dist/agents/channels/manager.js +18 -0
- package/dist/agents/channels/manager.js.map +1 -1
- package/dist/agents/channels/sdk.d.ts +4 -0
- package/dist/agents/channels/sdk.d.ts.map +1 -1
- package/dist/agents/channels/sdk.js +4 -0
- package/dist/agents/channels/sdk.js.map +1 -1
- package/dist/agents/channels/slack/account-config.d.ts +172 -0
- package/dist/agents/channels/slack/account-config.d.ts.map +1 -0
- package/dist/agents/channels/slack/account-config.js +353 -0
- package/dist/agents/channels/slack/account-config.js.map +1 -0
- package/dist/agents/channels/slack/account-registry.d.ts +45 -0
- package/dist/agents/channels/slack/account-registry.d.ts.map +1 -0
- package/dist/agents/channels/slack/account-registry.js +58 -0
- package/dist/agents/channels/slack/account-registry.js.map +1 -0
- package/dist/agents/channels/slack/adapter.d.ts +66 -0
- package/dist/agents/channels/slack/adapter.d.ts.map +1 -0
- package/dist/agents/channels/slack/adapter.js +547 -0
- package/dist/agents/channels/slack/adapter.js.map +1 -0
- package/dist/agents/channels/slack/approval-authorize.d.ts +43 -0
- package/dist/agents/channels/slack/approval-authorize.d.ts.map +1 -0
- package/dist/agents/channels/slack/approval-authorize.js +71 -0
- package/dist/agents/channels/slack/approval-authorize.js.map +1 -0
- package/dist/agents/channels/slack/approval-native.d.ts +70 -0
- package/dist/agents/channels/slack/approval-native.d.ts.map +1 -0
- package/dist/agents/channels/slack/approval-native.js +85 -0
- package/dist/agents/channels/slack/approval-native.js.map +1 -0
- package/dist/agents/channels/slack/blocks.d.ts +125 -0
- package/dist/agents/channels/slack/blocks.d.ts.map +1 -0
- package/dist/agents/channels/slack/blocks.js +145 -0
- package/dist/agents/channels/slack/blocks.js.map +1 -0
- package/dist/agents/channels/slack/command-menu.d.ts +44 -0
- package/dist/agents/channels/slack/command-menu.d.ts.map +1 -0
- package/dist/agents/channels/slack/command-menu.js +66 -0
- package/dist/agents/channels/slack/command-menu.js.map +1 -0
- package/dist/agents/channels/slack/connection.d.ts +422 -0
- package/dist/agents/channels/slack/connection.d.ts.map +1 -0
- package/dist/agents/channels/slack/connection.js +1042 -0
- package/dist/agents/channels/slack/connection.js.map +1 -0
- package/dist/agents/channels/slack/directory-live.d.ts +129 -0
- package/dist/agents/channels/slack/directory-live.d.ts.map +1 -0
- package/dist/agents/channels/slack/directory-live.js +148 -0
- package/dist/agents/channels/slack/directory-live.js.map +1 -0
- package/dist/agents/channels/slack/draft-stream.d.ts +93 -0
- package/dist/agents/channels/slack/draft-stream.d.ts.map +1 -0
- package/dist/agents/channels/slack/draft-stream.js +218 -0
- package/dist/agents/channels/slack/draft-stream.js.map +1 -0
- package/dist/agents/channels/slack/format.d.ts +41 -0
- package/dist/agents/channels/slack/format.d.ts.map +1 -0
- package/dist/agents/channels/slack/format.js +271 -0
- package/dist/agents/channels/slack/format.js.map +1 -0
- package/dist/agents/channels/slack/inbound-extras.d.ts +179 -0
- package/dist/agents/channels/slack/inbound-extras.d.ts.map +1 -0
- package/dist/agents/channels/slack/inbound-extras.js +257 -0
- package/dist/agents/channels/slack/inbound-extras.js.map +1 -0
- package/dist/agents/channels/slack/index.d.ts +15 -0
- package/dist/agents/channels/slack/index.d.ts.map +1 -0
- package/dist/agents/channels/slack/index.js +15 -0
- package/dist/agents/channels/slack/index.js.map +1 -0
- package/dist/agents/channels/slack/media.d.ts +90 -0
- package/dist/agents/channels/slack/media.d.ts.map +1 -0
- package/dist/agents/channels/slack/media.js +215 -0
- package/dist/agents/channels/slack/media.js.map +1 -0
- package/dist/agents/channels/slack/module.d.ts +26 -0
- package/dist/agents/channels/slack/module.d.ts.map +1 -0
- package/dist/agents/channels/slack/module.js +67 -0
- package/dist/agents/channels/slack/module.js.map +1 -0
- package/dist/agents/channels/slack/plugin.d.ts +69 -0
- package/dist/agents/channels/slack/plugin.d.ts.map +1 -0
- package/dist/agents/channels/slack/plugin.js +318 -0
- package/dist/agents/channels/slack/plugin.js.map +1 -0
- package/dist/agents/channels/slack/probe.d.ts +72 -0
- package/dist/agents/channels/slack/probe.d.ts.map +1 -0
- package/dist/agents/channels/slack/probe.js +103 -0
- package/dist/agents/channels/slack/probe.js.map +1 -0
- package/dist/agents/channels/slack/proxy-agent.d.ts +30 -0
- package/dist/agents/channels/slack/proxy-agent.d.ts.map +1 -0
- package/dist/agents/channels/slack/proxy-agent.js +44 -0
- package/dist/agents/channels/slack/proxy-agent.js.map +1 -0
- package/dist/agents/channels/slack/reasoning-lane.d.ts +42 -0
- package/dist/agents/channels/slack/reasoning-lane.d.ts.map +1 -0
- package/dist/agents/channels/slack/reasoning-lane.js +68 -0
- package/dist/agents/channels/slack/reasoning-lane.js.map +1 -0
- package/dist/agents/channels/slack/user-directory.d.ts +69 -0
- package/dist/agents/channels/slack/user-directory.d.ts.map +1 -0
- package/dist/agents/channels/slack/user-directory.js +94 -0
- package/dist/agents/channels/slack/user-directory.js.map +1 -0
- package/dist/agents/channels/slack/webhook.d.ts +89 -0
- package/dist/agents/channels/slack/webhook.d.ts.map +1 -0
- package/dist/agents/channels/slack/webhook.js +228 -0
- package/dist/agents/channels/slack/webhook.js.map +1 -0
- package/dist/agents/channels/telegram/format.d.ts.map +1 -1
- package/dist/agents/channels/telegram/format.js +17 -1
- package/dist/agents/channels/telegram/format.js.map +1 -1
- package/dist/agents/channels/telegram/webhook.d.ts.map +1 -1
- package/dist/agents/channels/telegram/webhook.js +7 -1
- package/dist/agents/channels/telegram/webhook.js.map +1 -1
- package/dist/agents/extensions/modules/index.d.ts.map +1 -1
- package/dist/agents/extensions/modules/index.js +10 -0
- package/dist/agents/extensions/modules/index.js.map +1 -1
- package/dist/agents/tools/cron-tool.d.ts.map +1 -1
- package/dist/agents/tools/cron-tool.js +4 -1
- package/dist/agents/tools/cron-tool.js.map +1 -1
- package/dist/buildstamp.json +1 -1
- package/dist/core/auth-bridge.d.ts +1 -0
- package/dist/core/auth-bridge.d.ts.map +1 -1
- package/dist/core/auth-bridge.js +46 -1
- package/dist/core/auth-bridge.js.map +1 -1
- package/dist/core/server.d.ts.map +1 -1
- package/dist/core/server.js +40 -5
- package/dist/core/server.js.map +1 -1
- package/dist/cron/isolated-agent/run-executor.d.ts +11 -0
- package/dist/cron/isolated-agent/run-executor.d.ts.map +1 -1
- package/dist/cron/isolated-agent/run-executor.js +20 -4
- package/dist/cron/isolated-agent/run-executor.js.map +1 -1
- package/dist/cron/types.d.ts +8 -0
- package/dist/cron/types.d.ts.map +1 -1
- package/dist/system-prompt/assembler.d.ts.map +1 -1
- package/dist/system-prompt/assembler.js +4 -2
- package/dist/system-prompt/assembler.js.map +1 -1
- package/package.json +5 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connection.js","sourceRoot":"","sources":["../../../../src/agents/channels/discord/connection.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Discord live-streaming draft message.
|
|
3
|
+
*
|
|
4
|
+
* Brigade agents normally deliver one FINAL chunked reply (see
|
|
5
|
+
* `inbound-pipeline.dispatchTurn` → `adapter.sendText`). This module adds the
|
|
6
|
+
* OPTIONAL progressive-edit behavior: post a placeholder message on the first
|
|
7
|
+
* content, then `message.edit` it with the accumulating answer as tokens arrive —
|
|
8
|
+
* THROTTLED to roughly one edit per second so a long reply doesn't hammer the
|
|
9
|
+
* REST API. When the running text outgrows the per-message limit the stream
|
|
10
|
+
* FINALIZES the current message at its last safe chunk boundary and ROLLS to a
|
|
11
|
+
* fresh message for the overflow, so a multi-message reply streams naturally.
|
|
12
|
+
*
|
|
13
|
+
* Design notes (vs the simpler one-shot send):
|
|
14
|
+
* - Transport-agnostic + pure-ish: the two Discord calls (`postMessage`,
|
|
15
|
+
* `editMessage`) are INJECTED, so the throttle / roll / finalize state
|
|
16
|
+
* machine is unit-tested with fakes and never imports `discord.js`.
|
|
17
|
+
* - Throttle window: edits coalesce — `update(text)` only records the latest
|
|
18
|
+
* text; the loop flushes at most once per `throttleMs`. `flush()` forces an
|
|
19
|
+
* immediate delivery.
|
|
20
|
+
* - Char-limit roll: when an edit would exceed the limit, the current message
|
|
21
|
+
* is finalized to the largest chunk that fits (split on a paragraph /
|
|
22
|
+
* newline / space boundary) and the remainder starts a NEW message.
|
|
23
|
+
* - Render hook: `renderText` converts a markdown chunk to Discord markup
|
|
24
|
+
* (same `markdownToDiscord` the final path uses). A render that throws or
|
|
25
|
+
* yields empty text falls back to the plain chunk so a half-streamed code
|
|
26
|
+
* fence never wedges the stream.
|
|
27
|
+
* - Idempotent finalize: `finalize(text)` is safe to call once at turn end —
|
|
28
|
+
* it flushes the final text and stops the loop. After finalize the stream is
|
|
29
|
+
* inert.
|
|
30
|
+
*
|
|
31
|
+
* Discord-native analogue of `slack/draft-stream.ts` — the same state machine,
|
|
32
|
+
* with Discord's string message ids and its 2000-char content limit.
|
|
33
|
+
*/
|
|
34
|
+
/** Discord's hard per-message content limit (chars). */
|
|
35
|
+
export declare const DISCORD_STREAM_MAX_CHARS = 2000;
|
|
36
|
+
/** Default minimum gap between edits (≈ 1 edit/sec, REST friendly). */
|
|
37
|
+
export declare const DEFAULT_THROTTLE_MS = 1000;
|
|
38
|
+
/** Rendered preview text. */
|
|
39
|
+
export interface DraftRender {
|
|
40
|
+
text: string;
|
|
41
|
+
}
|
|
42
|
+
/** Injected Discord transport — exactly the two calls the stream needs. */
|
|
43
|
+
export interface DraftStreamTransport {
|
|
44
|
+
/** Post a new message; returns its id. */
|
|
45
|
+
postMessage(text: string, opts: {
|
|
46
|
+
threadId?: string;
|
|
47
|
+
}): Promise<{
|
|
48
|
+
id: string;
|
|
49
|
+
}>;
|
|
50
|
+
/** Edit a previously-posted message's text. */
|
|
51
|
+
editMessage(id: string, text: string): Promise<void>;
|
|
52
|
+
}
|
|
53
|
+
export interface CreateDraftStreamParams {
|
|
54
|
+
transport: DraftStreamTransport;
|
|
55
|
+
/** Thread id for the FIRST (placeholder) post. */
|
|
56
|
+
threadId?: string;
|
|
57
|
+
/** Minimum ms between edits. Clamped to ≥ 250. Default 1000. */
|
|
58
|
+
throttleMs?: number;
|
|
59
|
+
/** Per-message char cap. Clamped to ≤ 2000. Default 2000. */
|
|
60
|
+
maxChars?: number;
|
|
61
|
+
/** Convert a markdown chunk to Discord markup (or plain on failure). */
|
|
62
|
+
renderText?: (text: string) => DraftRender;
|
|
63
|
+
/** Best-effort logger for non-fatal stream hiccups. */
|
|
64
|
+
warn?: (message: string) => void;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* A live draft stream. `update` records the latest full answer text; `finalize`
|
|
68
|
+
* flushes it one last time and stops. `messageIds` lists every message the
|
|
69
|
+
* stream materialized (the last one is the "live" one).
|
|
70
|
+
*/
|
|
71
|
+
export interface DraftStream {
|
|
72
|
+
/** Record the latest accumulated answer text (coalesced + throttled). */
|
|
73
|
+
update(fullText: string): void;
|
|
74
|
+
/** Force an immediate delivery of the pending text (between throttle ticks). */
|
|
75
|
+
flush(): Promise<void>;
|
|
76
|
+
/** Flush the final text and stop the stream. Idempotent. */
|
|
77
|
+
finalize(fullText: string): Promise<void>;
|
|
78
|
+
/** Stop the stream WITHOUT a final flush (abort path). Idempotent. */
|
|
79
|
+
stop(): void;
|
|
80
|
+
/** Ids of every message this stream sent (last = current live message). */
|
|
81
|
+
messageIds(): string[];
|
|
82
|
+
/** True once the stream has been finalized or stopped. */
|
|
83
|
+
isDone(): boolean;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Split `text` so the head fits within `limit` chars, preferring (in order) a
|
|
87
|
+
* paragraph break, a newline, then a space, falling back to a hard cut. Returns
|
|
88
|
+
* `[head, rest]`; `rest` is "" when the whole text fits.
|
|
89
|
+
*/
|
|
90
|
+
export declare function splitAtBoundary(text: string, limit: number): [string, string];
|
|
91
|
+
export declare function createDraftStream(params: CreateDraftStreamParams): DraftStream;
|
|
92
|
+
//# sourceMappingURL=draft-stream.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"draft-stream.d.ts","sourceRoot":"","sources":["../../../../src/agents/channels/discord/draft-stream.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,wDAAwD;AACxD,eAAO,MAAM,wBAAwB,OAAO,CAAC;AAC7C,uEAAuE;AACvE,eAAO,MAAM,mBAAmB,OAAO,CAAC;AAIxC,6BAA6B;AAC7B,MAAM,WAAW,WAAW;IAC3B,IAAI,EAAE,MAAM,CAAC;CACb;AAED,2EAA2E;AAC3E,MAAM,WAAW,oBAAoB;IACpC,0CAA0C;IAC1C,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAChF,+CAA+C;IAC/C,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACrD;AAED,MAAM,WAAW,uBAAuB;IACvC,SAAS,EAAE,oBAAoB,CAAC;IAChC,kDAAkD;IAClD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gEAAgE;IAChE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,wEAAwE;IACxE,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,WAAW,CAAC;IAC3C,uDAAuD;IACvD,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACjC;AAED;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC3B,yEAAyE;IACzE,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,gFAAgF;IAChF,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,4DAA4D;IAC5D,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1C,sEAAsE;IACtE,IAAI,IAAI,IAAI,CAAC;IACb,2EAA2E;IAC3E,UAAU,IAAI,MAAM,EAAE,CAAC;IACvB,0DAA0D;IAC1D,MAAM,IAAI,OAAO,CAAC;CAClB;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAY7E;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,uBAAuB,GAAG,WAAW,CAgJ9E"}
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Discord live-streaming draft message.
|
|
3
|
+
*
|
|
4
|
+
* Brigade agents normally deliver one FINAL chunked reply (see
|
|
5
|
+
* `inbound-pipeline.dispatchTurn` → `adapter.sendText`). This module adds the
|
|
6
|
+
* OPTIONAL progressive-edit behavior: post a placeholder message on the first
|
|
7
|
+
* content, then `message.edit` it with the accumulating answer as tokens arrive —
|
|
8
|
+
* THROTTLED to roughly one edit per second so a long reply doesn't hammer the
|
|
9
|
+
* REST API. When the running text outgrows the per-message limit the stream
|
|
10
|
+
* FINALIZES the current message at its last safe chunk boundary and ROLLS to a
|
|
11
|
+
* fresh message for the overflow, so a multi-message reply streams naturally.
|
|
12
|
+
*
|
|
13
|
+
* Design notes (vs the simpler one-shot send):
|
|
14
|
+
* - Transport-agnostic + pure-ish: the two Discord calls (`postMessage`,
|
|
15
|
+
* `editMessage`) are INJECTED, so the throttle / roll / finalize state
|
|
16
|
+
* machine is unit-tested with fakes and never imports `discord.js`.
|
|
17
|
+
* - Throttle window: edits coalesce — `update(text)` only records the latest
|
|
18
|
+
* text; the loop flushes at most once per `throttleMs`. `flush()` forces an
|
|
19
|
+
* immediate delivery.
|
|
20
|
+
* - Char-limit roll: when an edit would exceed the limit, the current message
|
|
21
|
+
* is finalized to the largest chunk that fits (split on a paragraph /
|
|
22
|
+
* newline / space boundary) and the remainder starts a NEW message.
|
|
23
|
+
* - Render hook: `renderText` converts a markdown chunk to Discord markup
|
|
24
|
+
* (same `markdownToDiscord` the final path uses). A render that throws or
|
|
25
|
+
* yields empty text falls back to the plain chunk so a half-streamed code
|
|
26
|
+
* fence never wedges the stream.
|
|
27
|
+
* - Idempotent finalize: `finalize(text)` is safe to call once at turn end —
|
|
28
|
+
* it flushes the final text and stops the loop. After finalize the stream is
|
|
29
|
+
* inert.
|
|
30
|
+
*
|
|
31
|
+
* Discord-native analogue of `slack/draft-stream.ts` — the same state machine,
|
|
32
|
+
* with Discord's string message ids and its 2000-char content limit.
|
|
33
|
+
*/
|
|
34
|
+
/** Discord's hard per-message content limit (chars). */
|
|
35
|
+
export const DISCORD_STREAM_MAX_CHARS = 2000;
|
|
36
|
+
/** Default minimum gap between edits (≈ 1 edit/sec, REST friendly). */
|
|
37
|
+
export const DEFAULT_THROTTLE_MS = 1000;
|
|
38
|
+
/** Floor on the throttle so a misconfig can't spam the API. */
|
|
39
|
+
const MIN_THROTTLE_MS = 250;
|
|
40
|
+
/**
|
|
41
|
+
* Split `text` so the head fits within `limit` chars, preferring (in order) a
|
|
42
|
+
* paragraph break, a newline, then a space, falling back to a hard cut. Returns
|
|
43
|
+
* `[head, rest]`; `rest` is "" when the whole text fits.
|
|
44
|
+
*/
|
|
45
|
+
export function splitAtBoundary(text, limit) {
|
|
46
|
+
if (text.length <= limit)
|
|
47
|
+
return [text, ""];
|
|
48
|
+
const window = text.slice(0, limit);
|
|
49
|
+
const candidates = [window.lastIndexOf("\n\n"), window.lastIndexOf("\n"), window.lastIndexOf(" ")];
|
|
50
|
+
for (const idx of candidates) {
|
|
51
|
+
// Require the boundary to land past the half-way mark so we don't emit a
|
|
52
|
+
// tiny head and shove almost everything into the overflow message.
|
|
53
|
+
if (idx > limit * 0.5) {
|
|
54
|
+
return [text.slice(0, idx).trimEnd(), text.slice(idx).trimStart()];
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return [text.slice(0, limit), text.slice(limit)];
|
|
58
|
+
}
|
|
59
|
+
export function createDraftStream(params) {
|
|
60
|
+
const throttleMs = Math.max(MIN_THROTTLE_MS, params.throttleMs ?? DEFAULT_THROTTLE_MS);
|
|
61
|
+
const maxChars = Math.min(DISCORD_STREAM_MAX_CHARS, Math.max(1, params.maxChars ?? DISCORD_STREAM_MAX_CHARS));
|
|
62
|
+
const render = params.renderText ?? ((t) => ({ text: t }));
|
|
63
|
+
const warn = params.warn ?? (() => { });
|
|
64
|
+
// Full accumulated answer text the agent has produced so far.
|
|
65
|
+
let pending = "";
|
|
66
|
+
// Text of the CURRENT (live) message that's already been delivered — used to
|
|
67
|
+
// skip no-op edits and to know how much of `pending` belongs to this message.
|
|
68
|
+
let liveDelivered = "";
|
|
69
|
+
// Char offset into `pending` where the current live message STARTS. Each roll
|
|
70
|
+
// advances this past the finalized head.
|
|
71
|
+
let baseOffset = 0;
|
|
72
|
+
const sentIds = [];
|
|
73
|
+
let liveId;
|
|
74
|
+
let done = false;
|
|
75
|
+
let inFlight = false;
|
|
76
|
+
let lastSentAt = 0;
|
|
77
|
+
let timer;
|
|
78
|
+
const clearTimer = () => {
|
|
79
|
+
if (timer) {
|
|
80
|
+
clearTimeout(timer);
|
|
81
|
+
timer = undefined;
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
/** The slice of `pending` that belongs to the current live message. */
|
|
85
|
+
const liveSlice = () => pending.slice(baseOffset);
|
|
86
|
+
/**
|
|
87
|
+
* Deliver the current live slice: post a placeholder on first content, edit
|
|
88
|
+
* thereafter, and roll to a new message when the slice exceeds `maxChars`.
|
|
89
|
+
* Re-entrancy guarded by `inFlight` so overlapping flushes serialize.
|
|
90
|
+
*/
|
|
91
|
+
const deliver = async (isFinal) => {
|
|
92
|
+
if (done && !isFinal)
|
|
93
|
+
return;
|
|
94
|
+
if (inFlight)
|
|
95
|
+
return;
|
|
96
|
+
if (!liveSlice().trim())
|
|
97
|
+
return;
|
|
98
|
+
inFlight = true;
|
|
99
|
+
try {
|
|
100
|
+
// Roll: finalize the current message at a boundary, start a new one for
|
|
101
|
+
// the overflow. Loop because a very long burst can overflow twice. We
|
|
102
|
+
// work against the UNTRIMMED live slice so `baseOffset` advances by the
|
|
103
|
+
// exact number of `pending` chars consumed (including the boundary
|
|
104
|
+
// whitespace `splitAtBoundary` drops), keeping the next message aligned.
|
|
105
|
+
let rawSlice = liveSlice();
|
|
106
|
+
while (rawSlice.trimEnd().length > maxChars) {
|
|
107
|
+
const [head] = splitAtBoundary(rawSlice.trimEnd(), maxChars);
|
|
108
|
+
await deliverOne(head);
|
|
109
|
+
const headEnd = rawSlice.indexOf(head) + head.length;
|
|
110
|
+
let advance = headEnd;
|
|
111
|
+
while (advance < rawSlice.length && /\s/.test(rawSlice[advance] ?? ""))
|
|
112
|
+
advance++;
|
|
113
|
+
baseOffset += advance;
|
|
114
|
+
liveDelivered = "";
|
|
115
|
+
liveId = undefined;
|
|
116
|
+
rawSlice = liveSlice();
|
|
117
|
+
}
|
|
118
|
+
const slice = rawSlice.trimEnd();
|
|
119
|
+
if (slice && (slice !== liveDelivered || isFinal)) {
|
|
120
|
+
await deliverOne(slice);
|
|
121
|
+
}
|
|
122
|
+
lastSentAt = Date.now();
|
|
123
|
+
}
|
|
124
|
+
finally {
|
|
125
|
+
inFlight = false;
|
|
126
|
+
}
|
|
127
|
+
};
|
|
128
|
+
/** Post-or-edit a single message body (≤ maxChars). */
|
|
129
|
+
const deliverOne = async (body) => {
|
|
130
|
+
let rendered;
|
|
131
|
+
try {
|
|
132
|
+
rendered = render(body);
|
|
133
|
+
if (!rendered.text.trim())
|
|
134
|
+
rendered = { text: body };
|
|
135
|
+
}
|
|
136
|
+
catch {
|
|
137
|
+
rendered = { text: body };
|
|
138
|
+
}
|
|
139
|
+
// A render can inflate length; guard the hard cap.
|
|
140
|
+
if (rendered.text.length > DISCORD_STREAM_MAX_CHARS) {
|
|
141
|
+
rendered = { text: body.slice(0, maxChars) };
|
|
142
|
+
}
|
|
143
|
+
try {
|
|
144
|
+
if (typeof liveId === "string") {
|
|
145
|
+
if (rendered.text === liveDelivered)
|
|
146
|
+
return;
|
|
147
|
+
await params.transport.editMessage(liveId, rendered.text);
|
|
148
|
+
}
|
|
149
|
+
else {
|
|
150
|
+
const sent = await params.transport.postMessage(rendered.text, {
|
|
151
|
+
...(params.threadId !== undefined ? { threadId: params.threadId } : {}),
|
|
152
|
+
});
|
|
153
|
+
liveId = sent.id;
|
|
154
|
+
sentIds.push(sent.id);
|
|
155
|
+
}
|
|
156
|
+
liveDelivered = rendered.text;
|
|
157
|
+
}
|
|
158
|
+
catch (err) {
|
|
159
|
+
// A post / edit failure must never wedge the turn — the final-only
|
|
160
|
+
// fallback in the pipeline still delivers the complete reply.
|
|
161
|
+
warn(`discord stream deliver failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
162
|
+
}
|
|
163
|
+
};
|
|
164
|
+
/** Schedule a throttled flush if one isn't already pending. */
|
|
165
|
+
const scheduleFlush = () => {
|
|
166
|
+
if (done || timer || inFlight)
|
|
167
|
+
return;
|
|
168
|
+
const elapsed = Date.now() - lastSentAt;
|
|
169
|
+
const wait = elapsed >= throttleMs ? 0 : throttleMs - elapsed;
|
|
170
|
+
timer = setTimeout(() => {
|
|
171
|
+
timer = undefined;
|
|
172
|
+
void deliver(false);
|
|
173
|
+
}, wait);
|
|
174
|
+
};
|
|
175
|
+
return {
|
|
176
|
+
update(fullText) {
|
|
177
|
+
if (done)
|
|
178
|
+
return;
|
|
179
|
+
if (typeof fullText !== "string")
|
|
180
|
+
return;
|
|
181
|
+
pending = fullText;
|
|
182
|
+
scheduleFlush();
|
|
183
|
+
},
|
|
184
|
+
async flush() {
|
|
185
|
+
if (done)
|
|
186
|
+
return;
|
|
187
|
+
clearTimer();
|
|
188
|
+
await deliver(false);
|
|
189
|
+
},
|
|
190
|
+
async finalize(fullText) {
|
|
191
|
+
if (done)
|
|
192
|
+
return;
|
|
193
|
+
clearTimer();
|
|
194
|
+
if (typeof fullText === "string")
|
|
195
|
+
pending = fullText;
|
|
196
|
+
// Drain: deliver until the live slice is fully sent (handles a final burst
|
|
197
|
+
// that rolls into one or more new messages).
|
|
198
|
+
await deliver(true);
|
|
199
|
+
done = true;
|
|
200
|
+
},
|
|
201
|
+
stop() {
|
|
202
|
+
clearTimer();
|
|
203
|
+
done = true;
|
|
204
|
+
},
|
|
205
|
+
messageIds() {
|
|
206
|
+
return [...sentIds];
|
|
207
|
+
},
|
|
208
|
+
isDone() {
|
|
209
|
+
return done;
|
|
210
|
+
},
|
|
211
|
+
};
|
|
212
|
+
}
|
|
213
|
+
//# sourceMappingURL=draft-stream.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"draft-stream.js","sourceRoot":"","sources":["../../../../src/agents/channels/discord/draft-stream.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Convert agent-style markdown (Brigade agents output this by default) into
|
|
3
|
+
* Discord's message markup.
|
|
4
|
+
*
|
|
5
|
+
* Discord renders a near-CommonMark dialect natively, so — unlike Slack's
|
|
6
|
+
* `mrkdwn` (single-asterisk bold) or Telegram's strict HTML — most agent
|
|
7
|
+
* markdown passes through UNCHANGED:
|
|
8
|
+
* - **bold** / __underline__ → kept (Discord: `**bold**`, `__underline__`)
|
|
9
|
+
* - *italic* / _italic_ → kept
|
|
10
|
+
* - ~~strike~~ → kept
|
|
11
|
+
* - `code` → kept (interior verbatim)
|
|
12
|
+
* - ```fenced``` → kept (interior verbatim, language tag kept)
|
|
13
|
+
* - > quote → kept
|
|
14
|
+
* - `-`/`*`/`+` bullets → kept
|
|
15
|
+
* - 1. numbered lists → kept
|
|
16
|
+
* - # headings → kept (Discord renders `#`/`##`/`###` headers)
|
|
17
|
+
*
|
|
18
|
+
* The ONE load-bearing transform: a markdown link `[label](url)` renders
|
|
19
|
+
* LITERALLY in a normal Discord message (Discord only auto-links bare URLs and
|
|
20
|
+
* honours `[label](url)` in embeds, not plain content). So a plain-message link
|
|
21
|
+
* is rewritten to `label (url)` — the same readable fallback Slack/Telegram use
|
|
22
|
+
* when a link can't be a native token. A bare URL is left as-is (Discord
|
|
23
|
+
* auto-links it).
|
|
24
|
+
*
|
|
25
|
+
* MENTION PASSTHROUGH (critical): an agent that authored a Discord mention token
|
|
26
|
+
* means it to PING. Discord's tokens are `<@123>` (user), `<@!123>` (member
|
|
27
|
+
* nickname), `<@&123>` (role), `<#123>` (channel), `<:name:123>` / `<a:name:123>`
|
|
28
|
+
* (custom / animated emoji), and the literal `@everyone` / `@here`. Those are
|
|
29
|
+
* passed through VERBATIM so the mention actually resolves; everything else is
|
|
30
|
+
* left as Discord-native markdown. We do NOT entity-escape (Discord has no HTML
|
|
31
|
+
* entities) — we only neutralize a STRAY markdown link.
|
|
32
|
+
*
|
|
33
|
+
* Pure / deterministic — no I/O, no globals. Models the SHAPE of
|
|
34
|
+
* `slack/format.ts` (markdown in → channel-native formatting out) but emits
|
|
35
|
+
* Discord markup.
|
|
36
|
+
*/
|
|
37
|
+
/** Discord's hard per-message content limit (chars). Sends chunk under this. */
|
|
38
|
+
export declare const DISCORD_MESSAGE_LIMIT = 2000;
|
|
39
|
+
/**
|
|
40
|
+
* Convert agent-style markdown into Discord markup. Block structure (fenced code,
|
|
41
|
+
* tables) is handled line-by-line so a link inside a code fence is never
|
|
42
|
+
* rewritten; inline markup (links, mentions, code) is handled per-line by
|
|
43
|
+
* {@link renderInlineSpans}. Headings / bullets / numbered lists / blockquotes
|
|
44
|
+
* render natively on Discord, so they pass through with only their inline spans
|
|
45
|
+
* rewritten.
|
|
46
|
+
*/
|
|
47
|
+
export declare function markdownToDiscord(markdown: string): string;
|
|
48
|
+
/**
|
|
49
|
+
* True when the rendered Discord text carries no visible content — only
|
|
50
|
+
* whitespace and/or markdown markers. Discord rejects an empty message body, so
|
|
51
|
+
* the send path falls back / skips when this returns true. Mirrors
|
|
52
|
+
* `slackMrkdwnIsEmpty` intent.
|
|
53
|
+
*/
|
|
54
|
+
export declare function discordTextIsEmpty(text: string): boolean;
|
|
55
|
+
//# sourceMappingURL=format.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../../../src/agents/channels/discord/format.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAEH,gFAAgF;AAChF,eAAO,MAAM,qBAAqB,OAAO,CAAC;AAmI1C;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CA4C1D;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAWxD"}
|