@spinabot/brigade 1.6.0 → 1.7.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/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 +2 -0
- package/dist/agents/channels/bundled-channel-metas.d.ts.map +1 -1
- package/dist/agents/channels/bundled-channel-metas.js +11 -0
- package/dist/agents/channels/bundled-channel-metas.js.map +1 -1
- package/dist/agents/channels/discord/account-config.d.ts +177 -0
- package/dist/agents/channels/discord/account-config.d.ts.map +1 -0
- package/dist/agents/channels/discord/account-config.js +349 -0
- package/dist/agents/channels/discord/account-config.js.map +1 -0
- package/dist/agents/channels/discord/adapter.d.ts +79 -0
- package/dist/agents/channels/discord/adapter.d.ts.map +1 -0
- package/dist/agents/channels/discord/adapter.js +693 -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/component-blocks.d.ts +108 -0
- package/dist/agents/channels/discord/component-blocks.d.ts.map +1 -0
- package/dist/agents/channels/discord/component-blocks.js +113 -0
- package/dist/agents/channels/discord/component-blocks.js.map +1 -0
- package/dist/agents/channels/discord/components.d.ts +175 -0
- package/dist/agents/channels/discord/components.d.ts.map +1 -0
- package/dist/agents/channels/discord/components.js +220 -0
- package/dist/agents/channels/discord/components.js.map +1 -0
- package/dist/agents/channels/discord/connection.d.ts +570 -0
- package/dist/agents/channels/discord/connection.d.ts.map +1 -0
- package/dist/agents/channels/discord/connection.js +1600 -0
- package/dist/agents/channels/discord/connection.js.map +1 -0
- package/dist/agents/channels/discord/directory-cache.d.ts +47 -0
- package/dist/agents/channels/discord/directory-cache.d.ts.map +1 -0
- package/dist/agents/channels/discord/directory-cache.js +131 -0
- package/dist/agents/channels/discord/directory-cache.js.map +1 -0
- package/dist/agents/channels/discord/directory-live.d.ts +61 -0
- package/dist/agents/channels/discord/directory-live.d.ts.map +1 -0
- package/dist/agents/channels/discord/directory-live.js +140 -0
- package/dist/agents/channels/discord/directory-live.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 +70 -0
- package/dist/agents/channels/discord/format.d.ts.map +1 -0
- package/dist/agents/channels/discord/format.js +303 -0
- package/dist/agents/channels/discord/format.js.map +1 -0
- package/dist/agents/channels/discord/guilds.d.ts +25 -0
- package/dist/agents/channels/discord/guilds.d.ts.map +1 -0
- package/dist/agents/channels/discord/guilds.js +46 -0
- package/dist/agents/channels/discord/guilds.js.map +1 -0
- package/dist/agents/channels/discord/inbound-extras.d.ts +377 -0
- package/dist/agents/channels/discord/inbound-extras.d.ts.map +1 -0
- package/dist/agents/channels/discord/inbound-extras.js +589 -0
- package/dist/agents/channels/discord/inbound-extras.js.map +1 -0
- package/dist/agents/channels/discord/index.d.ts +21 -0
- package/dist/agents/channels/discord/index.d.ts.map +1 -0
- package/dist/agents/channels/discord/index.js +21 -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/modal-registry.d.ts +89 -0
- package/dist/agents/channels/discord/modal-registry.d.ts.map +1 -0
- package/dist/agents/channels/discord/modal-registry.js +104 -0
- package/dist/agents/channels/discord/modal-registry.js.map +1 -0
- package/dist/agents/channels/discord/modals.d.ts +100 -0
- package/dist/agents/channels/discord/modals.d.ts.map +1 -0
- package/dist/agents/channels/discord/modals.js +124 -0
- package/dist/agents/channels/discord/modals.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/permission-audit.d.ts +43 -0
- package/dist/agents/channels/discord/permission-audit.d.ts.map +1 -0
- package/dist/agents/channels/discord/permission-audit.js +192 -0
- package/dist/agents/channels/discord/permission-audit.js.map +1 -0
- package/dist/agents/channels/discord/plugin.d.ts +89 -0
- package/dist/agents/channels/discord/plugin.d.ts.map +1 -0
- package/dist/agents/channels/discord/plugin.js +372 -0
- package/dist/agents/channels/discord/plugin.js.map +1 -0
- package/dist/agents/channels/discord/probe.d.ts +115 -0
- package/dist/agents/channels/discord/probe.d.ts.map +1 -0
- package/dist/agents/channels/discord/probe.js +193 -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/discord/rest-actions.d.ts +346 -0
- package/dist/agents/channels/discord/rest-actions.d.ts.map +1 -0
- package/dist/agents/channels/discord/rest-actions.js +559 -0
- package/dist/agents/channels/discord/rest-actions.js.map +1 -0
- package/dist/agents/channels/discord/rest-components.d.ts +122 -0
- package/dist/agents/channels/discord/rest-components.d.ts.map +1 -0
- package/dist/agents/channels/discord/rest-components.js +243 -0
- package/dist/agents/channels/discord/rest-components.js.map +1 -0
- package/dist/agents/channels/discord/security-audit.d.ts +29 -0
- package/dist/agents/channels/discord/security-audit.d.ts.map +1 -0
- package/dist/agents/channels/discord/security-audit.js +94 -0
- package/dist/agents/channels/discord/security-audit.js.map +1 -0
- package/dist/agents/channels/discord/security-doctor.d.ts +43 -0
- package/dist/agents/channels/discord/security-doctor.d.ts.map +1 -0
- package/dist/agents/channels/discord/security-doctor.js +83 -0
- package/dist/agents/channels/discord/security-doctor.js.map +1 -0
- package/dist/agents/channels/discord/status-issues.d.ts +37 -0
- package/dist/agents/channels/discord/status-issues.d.ts.map +1 -0
- package/dist/agents/channels/discord/status-issues.js +66 -0
- package/dist/agents/channels/discord/status-issues.js.map +1 -0
- package/dist/agents/channels/discord/subagent-thread-binding-store.d.ts +57 -0
- package/dist/agents/channels/discord/subagent-thread-binding-store.d.ts.map +1 -0
- package/dist/agents/channels/discord/subagent-thread-binding-store.js +98 -0
- package/dist/agents/channels/discord/subagent-thread-binding-store.js.map +1 -0
- package/dist/agents/channels/discord/subagent-thread-binding.d.ts +95 -0
- package/dist/agents/channels/discord/subagent-thread-binding.d.ts.map +1 -0
- package/dist/agents/channels/discord/subagent-thread-binding.js +208 -0
- package/dist/agents/channels/discord/subagent-thread-binding.js.map +1 -0
- package/dist/agents/channels/discord/system-events.d.ts +31 -0
- package/dist/agents/channels/discord/system-events.d.ts.map +1 -0
- package/dist/agents/channels/discord/system-events.js +74 -0
- package/dist/agents/channels/discord/system-events.js.map +1 -0
- package/dist/agents/channels/general-callback.d.ts +12 -0
- package/dist/agents/channels/general-callback.d.ts.map +1 -1
- package/dist/agents/channels/general-callback.js +18 -0
- package/dist/agents/channels/general-callback.js.map +1 -1
- package/dist/agents/channels/inbound-pipeline.d.ts.map +1 -1
- package/dist/agents/channels/inbound-pipeline.js +70 -10
- package/dist/agents/channels/inbound-pipeline.js.map +1 -1
- package/dist/agents/channels/sdk.d.ts +2 -0
- package/dist/agents/channels/sdk.d.ts.map +1 -1
- package/dist/agents/channels/sdk.js +2 -0
- package/dist/agents/channels/sdk.js.map +1 -1
- package/dist/agents/extensions/modules/index.d.ts.map +1 -1
- package/dist/agents/extensions/modules/index.js +5 -0
- package/dist/agents/extensions/modules/index.js.map +1 -1
- package/dist/agents/extensions/types.d.ts +7 -0
- package/dist/agents/extensions/types.d.ts.map +1 -1
- package/dist/agents/extensions/types.js.map +1 -1
- package/dist/agents/subagent-announce-delivery.d.ts +10 -0
- package/dist/agents/subagent-announce-delivery.d.ts.map +1 -1
- package/dist/agents/subagent-announce-delivery.js +1 -0
- package/dist/agents/subagent-announce-delivery.js.map +1 -1
- package/dist/agents/subagent-completion-bridge.d.ts.map +1 -1
- package/dist/agents/subagent-completion-bridge.js +81 -0
- package/dist/agents/subagent-completion-bridge.js.map +1 -1
- package/dist/agents/subagent-spawn.d.ts.map +1 -1
- package/dist/agents/subagent-spawn.js +57 -4
- package/dist/agents/subagent-spawn.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/agents/tools/discord-action-tool.d.ts +224 -0
- package/dist/agents/tools/discord-action-tool.d.ts.map +1 -0
- package/dist/agents/tools/discord-action-tool.js +848 -0
- package/dist/agents/tools/discord-action-tool.js.map +1 -0
- package/dist/agents/tools/registry.d.ts.map +1 -1
- package/dist/agents/tools/registry.js +21 -0
- package/dist/agents/tools/registry.js.map +1 -1
- package/dist/agents/tools/sessions/index.d.ts +8 -0
- package/dist/agents/tools/sessions/index.d.ts.map +1 -1
- package/dist/agents/tools/sessions/index.js +15 -3
- package/dist/agents/tools/sessions/index.js.map +1 -1
- package/dist/buildstamp.json +1 -1
- package/dist/cli/commands/channels.d.ts +2 -0
- package/dist/cli/commands/channels.d.ts.map +1 -1
- package/dist/cli/commands/channels.js +58 -1
- package/dist/cli/commands/channels.js.map +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 +18 -2
- 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 +2 -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,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Account-scoped Discord handle → user-id directory cache.
|
|
3
|
+
*
|
|
4
|
+
* Discord's outbound mention token is `<@123>` (a snowflake), but an agent
|
|
5
|
+
* naturally writes a HANDLE — "ping @alex". A plain `@alex` in message content
|
|
6
|
+
* does NOT ping on Discord; only the `<@id>` token resolves. To bridge that the
|
|
7
|
+
* outbound path rewrites a known `@handle` to its `<@id>` token (see
|
|
8
|
+
* `format.ts rewriteKnownMentions`), and THIS module is the lookup table that
|
|
9
|
+
* tells it which handles are known.
|
|
10
|
+
*
|
|
11
|
+
* The cache is primed from inbound traffic: every message author + every
|
|
12
|
+
* resolved mention seen on an inbound is remembered (id ↔ username /
|
|
13
|
+
* display-name / `username#discriminator`). So the bot can mention back anyone
|
|
14
|
+
* it has recently seen, with zero extra REST calls.
|
|
15
|
+
*
|
|
16
|
+
* Shape:
|
|
17
|
+
* - keyed by account id (a two-account bot must never cross handles);
|
|
18
|
+
* - an LRU bounded at {@link DISCORD_DIRECTORY_CACHE_MAX} entries per account
|
|
19
|
+
* (re-inserting a hit moves it to the most-recent slot);
|
|
20
|
+
* - handle keys are lowercased + `@`-stripped; a `username#1234` discriminator
|
|
21
|
+
* form is remembered BOTH with and without its discriminator.
|
|
22
|
+
*
|
|
23
|
+
* Pure module-level state (no I/O). A reset hook is exported for tests.
|
|
24
|
+
*/
|
|
25
|
+
/** Per-account LRU cap. ~4000 distinct handles is far past any real channel. */
|
|
26
|
+
export declare const DISCORD_DIRECTORY_CACHE_MAX = 4000;
|
|
27
|
+
/**
|
|
28
|
+
* Remember a Discord user under all of its handle forms for `accountId`:
|
|
29
|
+
* `username`, `displayName`/`globalName`, and `username#discriminator` (the last
|
|
30
|
+
* remembered both with AND without the discriminator). Silent no-op when the id
|
|
31
|
+
* isn't a valid snowflake or no usable handle is supplied.
|
|
32
|
+
*/
|
|
33
|
+
export declare function rememberDiscordUser(accountId: string | null | undefined, user: {
|
|
34
|
+
id?: unknown;
|
|
35
|
+
username?: unknown;
|
|
36
|
+
displayName?: unknown;
|
|
37
|
+
}): void;
|
|
38
|
+
/**
|
|
39
|
+
* Resolve a `@handle` (with or without the `@`) to a remembered user id for
|
|
40
|
+
* `accountId`, or undefined when unknown. Tries the exact handle first, then the
|
|
41
|
+
* discriminator-stripped form. Re-orders the hit to most-recent so an active
|
|
42
|
+
* handle survives eviction.
|
|
43
|
+
*/
|
|
44
|
+
export declare function resolveDiscordHandle(accountId: string | null | undefined, handle: string): string | undefined;
|
|
45
|
+
/** TEST SEAM — clear all account caches between cases. */
|
|
46
|
+
export declare function __resetDiscordDirectoryCacheForTest(): void;
|
|
47
|
+
//# sourceMappingURL=directory-cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"directory-cache.d.ts","sourceRoot":"","sources":["../../../../src/agents/channels/discord/directory-cache.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,gFAAgF;AAChF,eAAO,MAAM,2BAA2B,OAAQ,CAAC;AAsDjD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAClC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACpC,IAAI,EAAE;IAAE,EAAE,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,WAAW,CAAC,EAAE,OAAO,CAAA;CAAE,GAC/D,IAAI,CAaN;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAe7G;AAED,0DAA0D;AAC1D,wBAAgB,mCAAmC,IAAI,IAAI,CAE1D"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Account-scoped Discord handle → user-id directory cache.
|
|
3
|
+
*
|
|
4
|
+
* Discord's outbound mention token is `<@123>` (a snowflake), but an agent
|
|
5
|
+
* naturally writes a HANDLE — "ping @alex". A plain `@alex` in message content
|
|
6
|
+
* does NOT ping on Discord; only the `<@id>` token resolves. To bridge that the
|
|
7
|
+
* outbound path rewrites a known `@handle` to its `<@id>` token (see
|
|
8
|
+
* `format.ts rewriteKnownMentions`), and THIS module is the lookup table that
|
|
9
|
+
* tells it which handles are known.
|
|
10
|
+
*
|
|
11
|
+
* The cache is primed from inbound traffic: every message author + every
|
|
12
|
+
* resolved mention seen on an inbound is remembered (id ↔ username /
|
|
13
|
+
* display-name / `username#discriminator`). So the bot can mention back anyone
|
|
14
|
+
* it has recently seen, with zero extra REST calls.
|
|
15
|
+
*
|
|
16
|
+
* Shape:
|
|
17
|
+
* - keyed by account id (a two-account bot must never cross handles);
|
|
18
|
+
* - an LRU bounded at {@link DISCORD_DIRECTORY_CACHE_MAX} entries per account
|
|
19
|
+
* (re-inserting a hit moves it to the most-recent slot);
|
|
20
|
+
* - handle keys are lowercased + `@`-stripped; a `username#1234` discriminator
|
|
21
|
+
* form is remembered BOTH with and without its discriminator.
|
|
22
|
+
*
|
|
23
|
+
* Pure module-level state (no I/O). A reset hook is exported for tests.
|
|
24
|
+
*/
|
|
25
|
+
/** Per-account LRU cap. ~4000 distinct handles is far past any real channel. */
|
|
26
|
+
export const DISCORD_DIRECTORY_CACHE_MAX = 4_000;
|
|
27
|
+
/** Trailing `#1234`-style legacy discriminator. */
|
|
28
|
+
const DISCRIMINATOR_SUFFIX = /#\d{4}$/;
|
|
29
|
+
/** account id → (lowercased handle → user id), insertion-ordered for LRU. */
|
|
30
|
+
const directoryByAccount = new Map();
|
|
31
|
+
/** Normalize an account id to a stable non-empty cache key. */
|
|
32
|
+
function accountKey(accountId) {
|
|
33
|
+
const trimmed = (accountId ?? "").trim();
|
|
34
|
+
return trimmed || "default";
|
|
35
|
+
}
|
|
36
|
+
/** A Discord user id is a numeric snowflake; reject anything else. */
|
|
37
|
+
function normalizeUserId(value) {
|
|
38
|
+
const text = typeof value === "string" ? value.trim() : typeof value === "number" || typeof value === "bigint" ? String(value) : "";
|
|
39
|
+
return /^\d+$/.test(text) ? text : null;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Normalize a raw handle into a cache key: drop a leading `@`, lowercase, and
|
|
43
|
+
* reject anything with interior whitespace (a multi-word "handle" can't be a
|
|
44
|
+
* Discord username). Returns null when there's nothing usable.
|
|
45
|
+
*/
|
|
46
|
+
function normalizeHandleKey(raw) {
|
|
47
|
+
let handle = typeof raw === "string" ? raw.trim() : "";
|
|
48
|
+
if (!handle)
|
|
49
|
+
return null;
|
|
50
|
+
if (handle.startsWith("@"))
|
|
51
|
+
handle = handle.slice(1).trim();
|
|
52
|
+
if (!handle || /\s/.test(handle))
|
|
53
|
+
return null;
|
|
54
|
+
return handle.toLowerCase();
|
|
55
|
+
}
|
|
56
|
+
/** Resolve (or create) the LRU map for an account. */
|
|
57
|
+
function ensureAccountCache(accountId) {
|
|
58
|
+
const key = accountKey(accountId);
|
|
59
|
+
let cache = directoryByAccount.get(key);
|
|
60
|
+
if (!cache) {
|
|
61
|
+
cache = new Map();
|
|
62
|
+
directoryByAccount.set(key, cache);
|
|
63
|
+
}
|
|
64
|
+
return cache;
|
|
65
|
+
}
|
|
66
|
+
/** Insert/refresh one handle→id entry, evicting the oldest past the cap. */
|
|
67
|
+
function setEntry(cache, handle, userId) {
|
|
68
|
+
// Re-insert to move to most-recent (Map preserves insertion order).
|
|
69
|
+
if (cache.has(handle))
|
|
70
|
+
cache.delete(handle);
|
|
71
|
+
cache.set(handle, userId);
|
|
72
|
+
if (cache.size <= DISCORD_DIRECTORY_CACHE_MAX)
|
|
73
|
+
return;
|
|
74
|
+
const oldest = cache.keys().next();
|
|
75
|
+
if (!oldest.done)
|
|
76
|
+
cache.delete(oldest.value);
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Remember a Discord user under all of its handle forms for `accountId`:
|
|
80
|
+
* `username`, `displayName`/`globalName`, and `username#discriminator` (the last
|
|
81
|
+
* remembered both with AND without the discriminator). Silent no-op when the id
|
|
82
|
+
* isn't a valid snowflake or no usable handle is supplied.
|
|
83
|
+
*/
|
|
84
|
+
export function rememberDiscordUser(accountId, user) {
|
|
85
|
+
const userId = normalizeUserId(user.id);
|
|
86
|
+
if (!userId)
|
|
87
|
+
return;
|
|
88
|
+
const cache = ensureAccountCache(accountId);
|
|
89
|
+
const candidates = [user.username, user.displayName];
|
|
90
|
+
for (const candidate of candidates) {
|
|
91
|
+
const handle = normalizeHandleKey(candidate);
|
|
92
|
+
if (!handle)
|
|
93
|
+
continue;
|
|
94
|
+
setEntry(cache, handle, userId);
|
|
95
|
+
// `name#1234` → also remember the bare `name`.
|
|
96
|
+
const bare = handle.replace(DISCRIMINATOR_SUFFIX, "");
|
|
97
|
+
if (bare && bare !== handle)
|
|
98
|
+
setEntry(cache, bare, userId);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Resolve a `@handle` (with or without the `@`) to a remembered user id for
|
|
103
|
+
* `accountId`, or undefined when unknown. Tries the exact handle first, then the
|
|
104
|
+
* discriminator-stripped form. Re-orders the hit to most-recent so an active
|
|
105
|
+
* handle survives eviction.
|
|
106
|
+
*/
|
|
107
|
+
export function resolveDiscordHandle(accountId, handle) {
|
|
108
|
+
const cache = directoryByAccount.get(accountKey(accountId));
|
|
109
|
+
if (!cache)
|
|
110
|
+
return undefined;
|
|
111
|
+
const key = normalizeHandleKey(handle);
|
|
112
|
+
if (!key)
|
|
113
|
+
return undefined;
|
|
114
|
+
let hit = cache.get(key);
|
|
115
|
+
if (hit === undefined) {
|
|
116
|
+
const bare = key.replace(DISCRIMINATOR_SUFFIX, "");
|
|
117
|
+
if (bare && bare !== key)
|
|
118
|
+
hit = cache.get(bare);
|
|
119
|
+
}
|
|
120
|
+
if (hit === undefined)
|
|
121
|
+
return undefined;
|
|
122
|
+
// Touch for LRU recency.
|
|
123
|
+
const touchKey = cache.has(key) ? key : key.replace(DISCRIMINATOR_SUFFIX, "");
|
|
124
|
+
setEntry(cache, touchKey, hit);
|
|
125
|
+
return hit;
|
|
126
|
+
}
|
|
127
|
+
/** TEST SEAM — clear all account caches between cases. */
|
|
128
|
+
export function __resetDiscordDirectoryCacheForTest() {
|
|
129
|
+
directoryByAccount.clear();
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=directory-cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"directory-cache.js","sourceRoot":"","sources":["../../../../src/agents/channels/discord/directory-cache.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Discord directory — operator-facing peer + channel listing for routing-config
|
|
3
|
+
* (who/what can the bot be pointed at). Mirrors the SHAPE of
|
|
4
|
+
* `slack/directory-live.ts`: standalone exported functions returning a flat
|
|
5
|
+
* `{ id, name, handle }` shape, with NO central slot wiring (the cross-channel
|
|
6
|
+
* directory slot is a separate effort — these are consumed directly by callers
|
|
7
|
+
* for now).
|
|
8
|
+
*
|
|
9
|
+
* Brigade's existing `directory-cache.ts` is a per-message `id → display-name`
|
|
10
|
+
* cache on the inbound hot path; it answers "what's THIS user's name" one id at
|
|
11
|
+
* a time. This module answers the OTHER question an operator asks when wiring
|
|
12
|
+
* routing: "list / search the people + channels this bot can see". It walks the
|
|
13
|
+
* bot's guilds (`GET /users/@me/guilds`) and, per guild, pages members
|
|
14
|
+
* (`GET /guilds/{id}/members/search?query=` when a query is set, else
|
|
15
|
+
* `GET /guilds/{id}/members`) and channels (`GET /guilds/{id}/channels`).
|
|
16
|
+
*
|
|
17
|
+
* Token: reuses `resolveDiscordBotToken` (the bot token is Discord's only
|
|
18
|
+
* credential). Network is injected (the `fetchImpl` seam) so this unit-tests
|
|
19
|
+
* with a fake and never opens a socket unless actually called. Best-effort: a
|
|
20
|
+
* failed guild call is skipped, returning whatever was collected.
|
|
21
|
+
*/
|
|
22
|
+
import type { BrigadeConfig } from "../../../config/io.js";
|
|
23
|
+
/** A directory entry — a person (`user:<id>`) or a channel (`channel:<id>`). */
|
|
24
|
+
export interface DiscordDirectoryEntry {
|
|
25
|
+
/** Stable addressable id (`user:<snowflake>` or `channel:<snowflake>`). */
|
|
26
|
+
id: string;
|
|
27
|
+
/** Human display name (nick / global name / username, or channel name). */
|
|
28
|
+
name: string;
|
|
29
|
+
/** Addressable handle (`@username` for a user, `#name` for a channel). Optional. */
|
|
30
|
+
handle?: string;
|
|
31
|
+
}
|
|
32
|
+
/** Common options for both directory queries. */
|
|
33
|
+
export interface DiscordDirectoryQuery {
|
|
34
|
+
cfg: BrigadeConfig;
|
|
35
|
+
/** Account scope; defaults to the single-account "default". */
|
|
36
|
+
accountId?: string;
|
|
37
|
+
/** Case-insensitive substring filter over name/handle. Empty → no filter. */
|
|
38
|
+
query?: string;
|
|
39
|
+
/** Cap the number of returned rows. Omitted/≤0 → a sane default. */
|
|
40
|
+
limit?: number;
|
|
41
|
+
/** Env for token resolution (defaults to process.env). */
|
|
42
|
+
env?: NodeJS.ProcessEnv;
|
|
43
|
+
/** TEST SEAM: inject fetch. Production uses global fetch. */
|
|
44
|
+
fetchImpl?: typeof fetch;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* List (and optionally filter) the PEOPLE the bot can see, walking each guild's
|
|
48
|
+
* members. When a `query` is set the per-guild `members/search` endpoint is
|
|
49
|
+
* used (server-side filter); otherwise the plain `members` listing is paged
|
|
50
|
+
* once per guild (capped). Returns `{ id: "user:<id>", name, handle }` rows;
|
|
51
|
+
* BOT accounts rank below humans so a picker surfaces people first. Best-effort.
|
|
52
|
+
*/
|
|
53
|
+
export declare function listDiscordDirectoryPeers(q: DiscordDirectoryQuery): Promise<DiscordDirectoryEntry[]>;
|
|
54
|
+
/**
|
|
55
|
+
* List (and optionally filter) the CHANNELS the bot can see, walking each
|
|
56
|
+
* guild's `channels`. Category channels (type 4) are skipped (they aren't a
|
|
57
|
+
* send target). Returns `{ id: "channel:<id>", name, handle: "#name" }` rows.
|
|
58
|
+
* Best-effort like {@link listDiscordDirectoryPeers}.
|
|
59
|
+
*/
|
|
60
|
+
export declare function listDiscordDirectoryGroups(q: DiscordDirectoryQuery): Promise<DiscordDirectoryEntry[]>;
|
|
61
|
+
//# sourceMappingURL=directory-live.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"directory-live.d.ts","sourceRoot":"","sources":["../../../../src/agents/channels/discord/directory-live.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAM3D,gFAAgF;AAChF,MAAM,WAAW,qBAAqB;IACrC,2EAA2E;IAC3E,EAAE,EAAE,MAAM,CAAC;IACX,2EAA2E;IAC3E,IAAI,EAAE,MAAM,CAAC;IACb,oFAAoF;IACpF,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAoBD,iDAAiD;AACjD,MAAM,WAAW,qBAAqB;IACrC,GAAG,EAAE,aAAa,CAAC;IACnB,+DAA+D;IAC/D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6EAA6E;IAC7E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oEAAoE;IACpE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0DAA0D;IAC1D,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,6DAA6D;IAC7D,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CACzB;AA6BD;;;;;;GAMG;AACH,wBAAsB,yBAAyB,CAAC,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAuC1G;AAED;;;;;GAKG;AACH,wBAAsB,0BAA0B,CAAC,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC,CA2B3G"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Discord directory — operator-facing peer + channel listing for routing-config
|
|
3
|
+
* (who/what can the bot be pointed at). Mirrors the SHAPE of
|
|
4
|
+
* `slack/directory-live.ts`: standalone exported functions returning a flat
|
|
5
|
+
* `{ id, name, handle }` shape, with NO central slot wiring (the cross-channel
|
|
6
|
+
* directory slot is a separate effort — these are consumed directly by callers
|
|
7
|
+
* for now).
|
|
8
|
+
*
|
|
9
|
+
* Brigade's existing `directory-cache.ts` is a per-message `id → display-name`
|
|
10
|
+
* cache on the inbound hot path; it answers "what's THIS user's name" one id at
|
|
11
|
+
* a time. This module answers the OTHER question an operator asks when wiring
|
|
12
|
+
* routing: "list / search the people + channels this bot can see". It walks the
|
|
13
|
+
* bot's guilds (`GET /users/@me/guilds`) and, per guild, pages members
|
|
14
|
+
* (`GET /guilds/{id}/members/search?query=` when a query is set, else
|
|
15
|
+
* `GET /guilds/{id}/members`) and channels (`GET /guilds/{id}/channels`).
|
|
16
|
+
*
|
|
17
|
+
* Token: reuses `resolveDiscordBotToken` (the bot token is Discord's only
|
|
18
|
+
* credential). Network is injected (the `fetchImpl` seam) so this unit-tests
|
|
19
|
+
* with a fake and never opens a socket unless actually called. Best-effort: a
|
|
20
|
+
* failed guild call is skipped, returning whatever was collected.
|
|
21
|
+
*/
|
|
22
|
+
import { resolveDiscordBotToken, DISCORD_DEFAULT_ACCOUNT_ID } from "./account-config.js";
|
|
23
|
+
import { listDiscordGuilds } from "./guilds.js";
|
|
24
|
+
const DISCORD_API_BASE = "https://discord.com/api/v10";
|
|
25
|
+
/** Per-guild member cap so a huge guild can't dominate the result. */
|
|
26
|
+
const MEMBERS_PER_GUILD = 100;
|
|
27
|
+
/** Overall default cap when the caller omits `limit`. */
|
|
28
|
+
const DEFAULT_LIMIT = 50;
|
|
29
|
+
/** Case-insensitive substring match; an empty query matches everything. */
|
|
30
|
+
function matchesQuery(query, ...candidates) {
|
|
31
|
+
if (!query)
|
|
32
|
+
return true;
|
|
33
|
+
const q = query.toLowerCase();
|
|
34
|
+
return candidates.some((c) => typeof c === "string" && c.toLowerCase().includes(q));
|
|
35
|
+
}
|
|
36
|
+
/** Resolve the bot token for the directory account, or "" when unset. */
|
|
37
|
+
function resolveToken(q) {
|
|
38
|
+
return resolveDiscordBotToken(q.cfg, q.accountId ?? DISCORD_DEFAULT_ACCOUNT_ID, q.env ?? process.env);
|
|
39
|
+
}
|
|
40
|
+
/** Authenticated GET → parsed JSON array, or `[]` on any failure (best-effort). */
|
|
41
|
+
async function getJsonArray(url, token, fetchImpl) {
|
|
42
|
+
try {
|
|
43
|
+
const res = await fetchImpl(url, {
|
|
44
|
+
method: "GET",
|
|
45
|
+
headers: { Authorization: `Bot ${token}`, "content-type": "application/json" },
|
|
46
|
+
});
|
|
47
|
+
if (!res.ok)
|
|
48
|
+
return [];
|
|
49
|
+
const body = await res.json();
|
|
50
|
+
return Array.isArray(body) ? body : [];
|
|
51
|
+
}
|
|
52
|
+
catch {
|
|
53
|
+
return [];
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* List (and optionally filter) the PEOPLE the bot can see, walking each guild's
|
|
58
|
+
* members. When a `query` is set the per-guild `members/search` endpoint is
|
|
59
|
+
* used (server-side filter); otherwise the plain `members` listing is paged
|
|
60
|
+
* once per guild (capped). Returns `{ id: "user:<id>", name, handle }` rows;
|
|
61
|
+
* BOT accounts rank below humans so a picker surfaces people first. Best-effort.
|
|
62
|
+
*/
|
|
63
|
+
export async function listDiscordDirectoryPeers(q) {
|
|
64
|
+
const token = resolveToken(q);
|
|
65
|
+
if (!token)
|
|
66
|
+
return [];
|
|
67
|
+
const fetchImpl = q.fetchImpl ?? fetch;
|
|
68
|
+
const query = (q.query ?? "").trim();
|
|
69
|
+
const limit = typeof q.limit === "number" && q.limit > 0 ? q.limit : DEFAULT_LIMIT;
|
|
70
|
+
const guilds = await listDiscordGuilds(token, fetchImpl);
|
|
71
|
+
const seen = new Set();
|
|
72
|
+
const humans = [];
|
|
73
|
+
const bots = [];
|
|
74
|
+
for (const guild of guilds) {
|
|
75
|
+
const url = query
|
|
76
|
+
? `${DISCORD_API_BASE}/guilds/${guild.id}/members/search?${new URLSearchParams({
|
|
77
|
+
query,
|
|
78
|
+
limit: String(Math.min(limit, MEMBERS_PER_GUILD)),
|
|
79
|
+
}).toString()}`
|
|
80
|
+
: `${DISCORD_API_BASE}/guilds/${guild.id}/members?${new URLSearchParams({
|
|
81
|
+
limit: String(MEMBERS_PER_GUILD),
|
|
82
|
+
}).toString()}`;
|
|
83
|
+
const members = await getJsonArray(url, token, fetchImpl);
|
|
84
|
+
for (const m of members) {
|
|
85
|
+
const user = m.user;
|
|
86
|
+
const userId = typeof user?.id === "string" ? user.id.trim() : "";
|
|
87
|
+
if (!userId || seen.has(userId))
|
|
88
|
+
continue;
|
|
89
|
+
const username = typeof user?.username === "string" ? user.username.trim() : "";
|
|
90
|
+
const name = (typeof m.nick === "string" ? m.nick.trim() : "") ||
|
|
91
|
+
(typeof user?.global_name === "string" ? user.global_name?.trim() : "") ||
|
|
92
|
+
username ||
|
|
93
|
+
userId;
|
|
94
|
+
const handle = username ? `@${username}` : undefined;
|
|
95
|
+
if (!matchesQuery(query, name, handle, userId))
|
|
96
|
+
continue;
|
|
97
|
+
seen.add(userId);
|
|
98
|
+
const row = { id: `user:${userId}`, name, ...(handle ? { handle } : {}) };
|
|
99
|
+
(user?.bot ? bots : humans).push(row);
|
|
100
|
+
}
|
|
101
|
+
if (humans.length + bots.length >= limit)
|
|
102
|
+
break;
|
|
103
|
+
}
|
|
104
|
+
return [...humans, ...bots].slice(0, limit);
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* List (and optionally filter) the CHANNELS the bot can see, walking each
|
|
108
|
+
* guild's `channels`. Category channels (type 4) are skipped (they aren't a
|
|
109
|
+
* send target). Returns `{ id: "channel:<id>", name, handle: "#name" }` rows.
|
|
110
|
+
* Best-effort like {@link listDiscordDirectoryPeers}.
|
|
111
|
+
*/
|
|
112
|
+
export async function listDiscordDirectoryGroups(q) {
|
|
113
|
+
const token = resolveToken(q);
|
|
114
|
+
if (!token)
|
|
115
|
+
return [];
|
|
116
|
+
const fetchImpl = q.fetchImpl ?? fetch;
|
|
117
|
+
const query = (q.query ?? "").trim();
|
|
118
|
+
const limit = typeof q.limit === "number" && q.limit > 0 ? q.limit : DEFAULT_LIMIT;
|
|
119
|
+
const guilds = await listDiscordGuilds(token, fetchImpl);
|
|
120
|
+
const out = [];
|
|
121
|
+
const seen = new Set();
|
|
122
|
+
for (const guild of guilds) {
|
|
123
|
+
const channels = await getJsonArray(`${DISCORD_API_BASE}/guilds/${guild.id}/channels`, token, fetchImpl);
|
|
124
|
+
for (const c of channels) {
|
|
125
|
+
const id = typeof c?.id === "string" ? c.id.trim() : "";
|
|
126
|
+
const name = typeof c?.name === "string" ? c.name?.trim() : "";
|
|
127
|
+
// Skip category containers (type 4) — not a message target.
|
|
128
|
+
if (!id || !name || c?.type === 4 || seen.has(id))
|
|
129
|
+
continue;
|
|
130
|
+
if (!matchesQuery(query, name, id))
|
|
131
|
+
continue;
|
|
132
|
+
seen.add(id);
|
|
133
|
+
out.push({ id: `channel:${id}`, name, handle: `#${name}` });
|
|
134
|
+
if (out.length >= limit)
|
|
135
|
+
return out;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
return out;
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=directory-live.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"directory-live.js","sourceRoot":"","sources":["../../../../src/agents/channels/discord/directory-live.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"}
|