@spinabot/brigade 1.4.0 → 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +20 -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/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 +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/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/adapter.d.ts.map +1 -1
- package/dist/agents/channels/telegram/adapter.js +10 -3
- package/dist/agents/channels/telegram/adapter.js.map +1 -1
- package/dist/agents/channels/telegram/connection.d.ts +10 -0
- package/dist/agents/channels/telegram/connection.d.ts.map +1 -1
- package/dist/agents/channels/telegram/connection.js +161 -5
- package/dist/agents/channels/telegram/connection.js.map +1 -1
- package/dist/agents/channels/telegram/format.d.ts +17 -0
- package/dist/agents/channels/telegram/format.d.ts.map +1 -1
- package/dist/agents/channels/telegram/format.js +53 -1
- package/dist/agents/channels/telegram/format.js.map +1 -1
- package/dist/agents/channels/telegram/inbound-extras.d.ts +17 -1
- package/dist/agents/channels/telegram/inbound-extras.d.ts.map +1 -1
- package/dist/agents/channels/telegram/inbound-extras.js +68 -7
- package/dist/agents/channels/telegram/inbound-extras.js.map +1 -1
- package/dist/agents/channels/telegram/media.d.ts +8 -0
- package/dist/agents/channels/telegram/media.d.ts.map +1 -1
- package/dist/agents/channels/telegram/media.js +30 -2
- package/dist/agents/channels/telegram/media.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 +5 -0
- package/dist/agents/extensions/modules/index.js.map +1 -1
- package/dist/agents/extensions/types.d.ts +11 -0
- package/dist/agents/extensions/types.d.ts.map +1 -1
- package/dist/agents/extensions/types.js.map +1 -1
- package/dist/buildstamp.json +1 -1
- package/dist/cli/commands/convex-cmd.d.ts +2 -1
- package/dist/cli/commands/convex-cmd.d.ts.map +1 -1
- package/dist/cli/commands/convex-cmd.js +79 -6
- package/dist/cli/commands/convex-cmd.js.map +1 -1
- package/dist/cli/program/build-program.js +1 -1
- package/dist/cli/program/build-program.js.map +1 -1
- package/dist/core/server.d.ts.map +1 -1
- package/dist/core/server.js +24 -5
- package/dist/core/server.js.map +1 -1
- package/package.json +4 -1
- package/scripts/convex-dev.mjs +28 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connection.js","sourceRoot":"","sources":["../../../../src/agents/channels/slack/connection.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Slack workspace directory — operator-facing peer + channel listing for
|
|
3
|
+
* routing-config (who/what can the bot be pointed at).
|
|
4
|
+
*
|
|
5
|
+
* Brigade's existing `user-directory.ts` is a per-message `id → display-name`
|
|
6
|
+
* cache wired into the inbound hot path; it answers "what's THIS user's name"
|
|
7
|
+
* one id at a time. This module answers the OTHER question an operator asks when
|
|
8
|
+
* wiring routing: "list / search the people + channels in this workspace". It
|
|
9
|
+
* pages `users.list` (people) and `conversations.list` (public + private
|
|
10
|
+
* channels), filters by an optional case-insensitive query, and returns a flat
|
|
11
|
+
* `{ id, name, handle }` shape suitable for an allow-list / routing picker.
|
|
12
|
+
*
|
|
13
|
+
* Token: the OPTIONAL user token (`xoxp-…`) is preferred when set, falling back
|
|
14
|
+
* to the bot token. `users.list` / `conversations.list` read broadly; a
|
|
15
|
+
* user-scoped token sees what the operator sees, while the bot token sees what
|
|
16
|
+
* the app was granted. (Wave-4 audit flagged `userToken` as resolved-but-unused;
|
|
17
|
+
* this is its consumer.)
|
|
18
|
+
*
|
|
19
|
+
* NO CLEAN SDK SLOT: the channel plugin contract reserves a `directory?: unknown`
|
|
20
|
+
* field (types.plugin.ts) but nothing CONSUMES it — there is no live directory
|
|
21
|
+
* wired into the send / routing path today (only the single-name
|
|
22
|
+
* `messaging.targetResolver`). Rather than force a half-baked integration into a
|
|
23
|
+
* dead slot, these are exported STANDALONE functions (see index.ts). When a real
|
|
24
|
+
* directory slot lands, wire these into it.
|
|
25
|
+
*
|
|
26
|
+
* Network is injected (the `webFactory` seam) so this unit-tests with a fake and
|
|
27
|
+
* never imports `@slack/web-api` unless actually called in production.
|
|
28
|
+
*/
|
|
29
|
+
import type { BrigadeConfig } from "../../../config/io.js";
|
|
30
|
+
/** A directory entry — a person or a channel the bot can be pointed at. */
|
|
31
|
+
export interface SlackDirectoryEntry {
|
|
32
|
+
/** Slack id (`U…`/`W…` for a user, `C…`/`G…` for a channel). */
|
|
33
|
+
id: string;
|
|
34
|
+
/** Human display name (a user's display/real name, or a channel's name). */
|
|
35
|
+
name: string;
|
|
36
|
+
/** Addressable handle (`@alex` for a user, `#general` for a channel). Optional. */
|
|
37
|
+
handle?: string;
|
|
38
|
+
}
|
|
39
|
+
/** One `users.list` member object (the subset we read). */
|
|
40
|
+
interface SlackListMember {
|
|
41
|
+
id?: string;
|
|
42
|
+
name?: string;
|
|
43
|
+
real_name?: string;
|
|
44
|
+
deleted?: boolean;
|
|
45
|
+
is_bot?: boolean;
|
|
46
|
+
profile?: {
|
|
47
|
+
display_name?: string;
|
|
48
|
+
real_name?: string;
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
/** One `conversations.list` channel object (the subset we read). */
|
|
52
|
+
interface SlackListChannel {
|
|
53
|
+
id?: string;
|
|
54
|
+
name?: string;
|
|
55
|
+
is_archived?: boolean;
|
|
56
|
+
}
|
|
57
|
+
/** A paginated `users.list` response (the subset we read). */
|
|
58
|
+
interface SlackUsersListResponse {
|
|
59
|
+
ok?: boolean;
|
|
60
|
+
error?: string;
|
|
61
|
+
members?: SlackListMember[];
|
|
62
|
+
response_metadata?: {
|
|
63
|
+
next_cursor?: string;
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
/** A paginated `conversations.list` response (the subset we read). */
|
|
67
|
+
interface SlackChannelsListResponse {
|
|
68
|
+
ok?: boolean;
|
|
69
|
+
error?: string;
|
|
70
|
+
channels?: SlackListChannel[];
|
|
71
|
+
response_metadata?: {
|
|
72
|
+
next_cursor?: string;
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* The minimal `@slack/web-api` slice the directory drives. Declared as an
|
|
77
|
+
* interface so tests inject a fake with zero network; the real `WebClient`
|
|
78
|
+
* structurally satisfies it.
|
|
79
|
+
*/
|
|
80
|
+
export interface SlackDirectoryWebClientLike {
|
|
81
|
+
users: {
|
|
82
|
+
list(args: {
|
|
83
|
+
limit?: number;
|
|
84
|
+
cursor?: string;
|
|
85
|
+
}): Promise<SlackUsersListResponse>;
|
|
86
|
+
};
|
|
87
|
+
conversations: {
|
|
88
|
+
list(args: {
|
|
89
|
+
types?: string;
|
|
90
|
+
exclude_archived?: boolean;
|
|
91
|
+
limit?: number;
|
|
92
|
+
cursor?: string;
|
|
93
|
+
}): Promise<SlackChannelsListResponse>;
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
/** Common options for both directory queries. */
|
|
97
|
+
export interface SlackDirectoryQuery {
|
|
98
|
+
cfg: BrigadeConfig;
|
|
99
|
+
/** Account (workspace) scope; defaults to the single-account "default". */
|
|
100
|
+
accountId?: string;
|
|
101
|
+
/** Case-insensitive substring filter over name/handle. Empty → no filter. */
|
|
102
|
+
query?: string;
|
|
103
|
+
/** Cap the number of returned rows. Omitted/≤0 → all matched rows. */
|
|
104
|
+
limit?: number;
|
|
105
|
+
/** Env for token resolution (defaults to process.env). */
|
|
106
|
+
env?: NodeJS.ProcessEnv;
|
|
107
|
+
/**
|
|
108
|
+
* TEST SEAM: build the WebClient from a token. Production omits this and the
|
|
109
|
+
* real `@slack/web-api` `WebClient` is lazy-imported. Receives the resolved
|
|
110
|
+
* read token so a fake can assert which token was used.
|
|
111
|
+
*/
|
|
112
|
+
webFactory?: (token: string) => SlackDirectoryWebClientLike;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* List (and optionally filter) the PEOPLE in the workspace via `users.list`.
|
|
116
|
+
* Deleted users are skipped. Returns `{ id, name, handle }` rows; `handle` is
|
|
117
|
+
* the `@username` when present. Best-effort: an unauthorized / failed read
|
|
118
|
+
* returns whatever was collected before the failure (often `[]`).
|
|
119
|
+
*/
|
|
120
|
+
export declare function listSlackDirectoryPeers(q: SlackDirectoryQuery): Promise<SlackDirectoryEntry[]>;
|
|
121
|
+
/**
|
|
122
|
+
* List (and optionally filter) the CHANNELS in the workspace via
|
|
123
|
+
* `conversations.list` (public + private). Archived channels are skipped.
|
|
124
|
+
* Returns `{ id, name, handle }` rows with the `#name` handle. Best-effort like
|
|
125
|
+
* {@link listSlackDirectoryPeers}.
|
|
126
|
+
*/
|
|
127
|
+
export declare function listSlackDirectoryGroups(q: SlackDirectoryQuery): Promise<SlackDirectoryEntry[]>;
|
|
128
|
+
export {};
|
|
129
|
+
//# sourceMappingURL=directory-live.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"directory-live.d.ts","sourceRoot":"","sources":["../../../../src/agents/channels/slack/directory-live.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAG3D,2EAA2E;AAC3E,MAAM,WAAW,mBAAmB;IACnC,gEAAgE;IAChE,EAAE,EAAE,MAAM,CAAC;IACX,4EAA4E;IAC5E,IAAI,EAAE,MAAM,CAAC;IACb,mFAAmF;IACnF,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,2DAA2D;AAC3D,UAAU,eAAe;IACxB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACxD;AAED,oEAAoE;AACpE,UAAU,gBAAgB;IACzB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,8DAA8D;AAC9D,UAAU,sBAAsB;IAC/B,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,eAAe,EAAE,CAAC;IAC5B,iBAAiB,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC7C;AAED,sEAAsE;AACtE,UAAU,yBAAyB;IAClC,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC9B,iBAAiB,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC7C;AAED;;;;GAIG;AACH,MAAM,WAAW,2BAA2B;IAC3C,KAAK,EAAE;QACN,IAAI,CAAC,IAAI,EAAE;YAAE,KAAK,CAAC,EAAE,MAAM,CAAC;YAAC,MAAM,CAAC,EAAE,MAAM,CAAA;SAAE,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC;KACjF,CAAC;IACF,aAAa,EAAE;QACd,IAAI,CAAC,IAAI,EAAE;YACV,KAAK,CAAC,EAAE,MAAM,CAAC;YACf,gBAAgB,CAAC,EAAE,OAAO,CAAC;YAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;YACf,MAAM,CAAC,EAAE,MAAM,CAAC;SAChB,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAAC;KACvC,CAAC;CACF;AAMD,iDAAiD;AACjD,MAAM,WAAW,mBAAmB;IACnC,GAAG,EAAE,aAAa,CAAC;IACnB,2EAA2E;IAC3E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6EAA6E;IAC7E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sEAAsE;IACtE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0DAA0D;IAC1D,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB;;;;OAIG;IACH,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,2BAA2B,CAAC;CAC5D;AA2BD;;;;;GAKG;AACH,wBAAsB,uBAAuB,CAAC,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAkCpG;AAED;;;;;GAKG;AACH,wBAAsB,wBAAwB,CAAC,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAiCrG"}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Slack workspace directory — operator-facing peer + channel listing for
|
|
3
|
+
* routing-config (who/what can the bot be pointed at).
|
|
4
|
+
*
|
|
5
|
+
* Brigade's existing `user-directory.ts` is a per-message `id → display-name`
|
|
6
|
+
* cache wired into the inbound hot path; it answers "what's THIS user's name"
|
|
7
|
+
* one id at a time. This module answers the OTHER question an operator asks when
|
|
8
|
+
* wiring routing: "list / search the people + channels in this workspace". It
|
|
9
|
+
* pages `users.list` (people) and `conversations.list` (public + private
|
|
10
|
+
* channels), filters by an optional case-insensitive query, and returns a flat
|
|
11
|
+
* `{ id, name, handle }` shape suitable for an allow-list / routing picker.
|
|
12
|
+
*
|
|
13
|
+
* Token: the OPTIONAL user token (`xoxp-…`) is preferred when set, falling back
|
|
14
|
+
* to the bot token. `users.list` / `conversations.list` read broadly; a
|
|
15
|
+
* user-scoped token sees what the operator sees, while the bot token sees what
|
|
16
|
+
* the app was granted. (Wave-4 audit flagged `userToken` as resolved-but-unused;
|
|
17
|
+
* this is its consumer.)
|
|
18
|
+
*
|
|
19
|
+
* NO CLEAN SDK SLOT: the channel plugin contract reserves a `directory?: unknown`
|
|
20
|
+
* field (types.plugin.ts) but nothing CONSUMES it — there is no live directory
|
|
21
|
+
* wired into the send / routing path today (only the single-name
|
|
22
|
+
* `messaging.targetResolver`). Rather than force a half-baked integration into a
|
|
23
|
+
* dead slot, these are exported STANDALONE functions (see index.ts). When a real
|
|
24
|
+
* directory slot lands, wire these into it.
|
|
25
|
+
*
|
|
26
|
+
* Network is injected (the `webFactory` seam) so this unit-tests with a fake and
|
|
27
|
+
* never imports `@slack/web-api` unless actually called in production.
|
|
28
|
+
*/
|
|
29
|
+
import { resolveSlackBotToken, resolveSlackUserToken } from "./account-config.js";
|
|
30
|
+
/** Page size + a hard page cap so a pathologically large workspace can't loop forever. */
|
|
31
|
+
const PAGE_SIZE = 200;
|
|
32
|
+
const MAX_PAGES = 25;
|
|
33
|
+
/**
|
|
34
|
+
* Resolve the READ token for directory calls: the user token (`xoxp-…`) when
|
|
35
|
+
* set, else the bot token (`xoxb-…`). Empty string when neither resolves.
|
|
36
|
+
*/
|
|
37
|
+
function resolveReadToken(q) {
|
|
38
|
+
const env = q.env ?? process.env;
|
|
39
|
+
const user = resolveSlackUserToken(q.cfg, q.accountId ?? null, env);
|
|
40
|
+
if (user)
|
|
41
|
+
return user;
|
|
42
|
+
return resolveSlackBotToken(q.cfg, q.accountId ?? null, env);
|
|
43
|
+
}
|
|
44
|
+
/** Lazy-build a real `WebClient` (production) unless a test seam was supplied. */
|
|
45
|
+
async function buildClient(q, token) {
|
|
46
|
+
if (q.webFactory)
|
|
47
|
+
return q.webFactory(token);
|
|
48
|
+
const { WebClient } = await import("@slack/web-api");
|
|
49
|
+
return new WebClient(token);
|
|
50
|
+
}
|
|
51
|
+
/** Case-insensitive substring match; an empty query matches everything. */
|
|
52
|
+
function matchesQuery(query, ...candidates) {
|
|
53
|
+
if (!query)
|
|
54
|
+
return true;
|
|
55
|
+
const q = query.toLowerCase();
|
|
56
|
+
return candidates.some((c) => typeof c === "string" && c.toLowerCase().includes(q));
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* List (and optionally filter) the PEOPLE in the workspace via `users.list`.
|
|
60
|
+
* Deleted users are skipped. Returns `{ id, name, handle }` rows; `handle` is
|
|
61
|
+
* the `@username` when present. Best-effort: an unauthorized / failed read
|
|
62
|
+
* returns whatever was collected before the failure (often `[]`).
|
|
63
|
+
*/
|
|
64
|
+
export async function listSlackDirectoryPeers(q) {
|
|
65
|
+
const token = resolveReadToken(q);
|
|
66
|
+
if (!token)
|
|
67
|
+
return [];
|
|
68
|
+
const client = await buildClient(q, token);
|
|
69
|
+
const query = (q.query ?? "").trim();
|
|
70
|
+
const out = [];
|
|
71
|
+
let cursor;
|
|
72
|
+
let pages = 0;
|
|
73
|
+
do {
|
|
74
|
+
let res;
|
|
75
|
+
try {
|
|
76
|
+
res = await client.users.list(cursor ? { limit: PAGE_SIZE, cursor } : { limit: PAGE_SIZE });
|
|
77
|
+
}
|
|
78
|
+
catch {
|
|
79
|
+
break; // best-effort — return what we have
|
|
80
|
+
}
|
|
81
|
+
if (res?.ok === false)
|
|
82
|
+
break;
|
|
83
|
+
for (const m of res?.members ?? []) {
|
|
84
|
+
const id = typeof m.id === "string" ? m.id.trim() : "";
|
|
85
|
+
if (!id || m.deleted)
|
|
86
|
+
continue;
|
|
87
|
+
const handle = typeof m.name === "string" && m.name ? m.name : undefined;
|
|
88
|
+
const name = m.profile?.display_name?.trim() ||
|
|
89
|
+
m.profile?.real_name?.trim() ||
|
|
90
|
+
m.real_name?.trim() ||
|
|
91
|
+
handle ||
|
|
92
|
+
id;
|
|
93
|
+
if (!matchesQuery(query, name, handle, id))
|
|
94
|
+
continue;
|
|
95
|
+
out.push({ id, name, ...(handle ? { handle: `@${handle}` } : {}) });
|
|
96
|
+
}
|
|
97
|
+
const next = res?.response_metadata?.next_cursor?.trim();
|
|
98
|
+
cursor = next ? next : undefined;
|
|
99
|
+
pages += 1;
|
|
100
|
+
} while (cursor && pages < MAX_PAGES);
|
|
101
|
+
return typeof q.limit === "number" && q.limit > 0 ? out.slice(0, q.limit) : out;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* List (and optionally filter) the CHANNELS in the workspace via
|
|
105
|
+
* `conversations.list` (public + private). Archived channels are skipped.
|
|
106
|
+
* Returns `{ id, name, handle }` rows with the `#name` handle. Best-effort like
|
|
107
|
+
* {@link listSlackDirectoryPeers}.
|
|
108
|
+
*/
|
|
109
|
+
export async function listSlackDirectoryGroups(q) {
|
|
110
|
+
const token = resolveReadToken(q);
|
|
111
|
+
if (!token)
|
|
112
|
+
return [];
|
|
113
|
+
const client = await buildClient(q, token);
|
|
114
|
+
const query = (q.query ?? "").trim();
|
|
115
|
+
const out = [];
|
|
116
|
+
let cursor;
|
|
117
|
+
let pages = 0;
|
|
118
|
+
do {
|
|
119
|
+
let res;
|
|
120
|
+
try {
|
|
121
|
+
res = await client.conversations.list({
|
|
122
|
+
types: "public_channel,private_channel",
|
|
123
|
+
exclude_archived: true,
|
|
124
|
+
limit: PAGE_SIZE,
|
|
125
|
+
...(cursor ? { cursor } : {}),
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
catch {
|
|
129
|
+
break; // best-effort
|
|
130
|
+
}
|
|
131
|
+
if (res?.ok === false)
|
|
132
|
+
break;
|
|
133
|
+
for (const c of res?.channels ?? []) {
|
|
134
|
+
const id = typeof c.id === "string" ? c.id.trim() : "";
|
|
135
|
+
const name = typeof c.name === "string" ? c.name.trim() : "";
|
|
136
|
+
if (!id || !name || c.is_archived)
|
|
137
|
+
continue;
|
|
138
|
+
if (!matchesQuery(query, name, id))
|
|
139
|
+
continue;
|
|
140
|
+
out.push({ id, name, handle: `#${name}` });
|
|
141
|
+
}
|
|
142
|
+
const next = res?.response_metadata?.next_cursor?.trim();
|
|
143
|
+
cursor = next ? next : undefined;
|
|
144
|
+
pages += 1;
|
|
145
|
+
} while (cursor && pages < MAX_PAGES);
|
|
146
|
+
return typeof q.limit === "number" && q.limit > 0 ? out.slice(0, q.limit) : out;
|
|
147
|
+
}
|
|
148
|
+
//# sourceMappingURL=directory-live.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"directory-live.js","sourceRoot":"","sources":["../../../../src/agents/channels/slack/directory-live.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Slack 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 `chat.update` 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
|
+
* Web 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 Slack calls (`postMessage`,
|
|
15
|
+
* `update`) are INJECTED, so the throttle / roll / finalize state machine is
|
|
16
|
+
* unit-tested with fakes and never imports `@slack/web-api`.
|
|
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 (used between throttle ticks and on finalize).
|
|
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 Slack mrkdwn (same
|
|
24
|
+
* `markdownToSlackMrkdwn` 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
|
+
* This is the Slack-native analogue of `telegram/draft-stream.ts` — the same
|
|
32
|
+
* state machine, with Slack's string `ts` message ids and Slack's `mrkdwn` (no
|
|
33
|
+
* per-message parse mode; the adapter sends every chunk with `mrkdwn: true`).
|
|
34
|
+
*/
|
|
35
|
+
/** Slack's practical per-message body limit for a streamed reply (chars). */
|
|
36
|
+
export declare const SLACK_STREAM_MAX_CHARS = 8000;
|
|
37
|
+
/** Default minimum gap between edits (≈ 1 edit/sec, Web API friendly). */
|
|
38
|
+
export declare const DEFAULT_THROTTLE_MS = 1000;
|
|
39
|
+
/** Rendered preview text (Slack always sends with `mrkdwn: true`, so no mode field). */
|
|
40
|
+
export interface DraftRender {
|
|
41
|
+
text: string;
|
|
42
|
+
}
|
|
43
|
+
/** Injected Slack transport — exactly the two calls the stream needs. */
|
|
44
|
+
export interface DraftStreamTransport {
|
|
45
|
+
/** Post a new message; returns its `ts` (Slack's message id). */
|
|
46
|
+
postMessage(text: string, opts: {
|
|
47
|
+
threadId?: string;
|
|
48
|
+
}): Promise<{
|
|
49
|
+
ts: string;
|
|
50
|
+
}>;
|
|
51
|
+
/** Update a previously-posted message's text. */
|
|
52
|
+
updateMessage(ts: string, text: string): Promise<void>;
|
|
53
|
+
}
|
|
54
|
+
export interface CreateDraftStreamParams {
|
|
55
|
+
transport: DraftStreamTransport;
|
|
56
|
+
/** Thread ts for the FIRST (placeholder) post. */
|
|
57
|
+
threadId?: string;
|
|
58
|
+
/** Minimum ms between edits. Clamped to ≥ 250. Default 1000. */
|
|
59
|
+
throttleMs?: number;
|
|
60
|
+
/** Per-message char cap. Clamped to ≤ 8000. Default 8000. */
|
|
61
|
+
maxChars?: number;
|
|
62
|
+
/** Convert a markdown chunk to Slack mrkdwn (or plain on failure). */
|
|
63
|
+
renderText?: (text: string) => DraftRender;
|
|
64
|
+
/** Best-effort logger for non-fatal stream hiccups. */
|
|
65
|
+
warn?: (message: string) => void;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* A live draft stream. `update` records the latest full answer text; `finalize`
|
|
69
|
+
* flushes it one last time and stops. `messageIds` lists every message the
|
|
70
|
+
* stream materialized (the last one is the "live" one).
|
|
71
|
+
*/
|
|
72
|
+
export interface DraftStream {
|
|
73
|
+
/** Record the latest accumulated answer text (coalesced + throttled). */
|
|
74
|
+
update(fullText: string): void;
|
|
75
|
+
/** Force an immediate delivery of the pending text (between throttle ticks). */
|
|
76
|
+
flush(): Promise<void>;
|
|
77
|
+
/** Flush the final text and stop the stream. Idempotent. */
|
|
78
|
+
finalize(fullText: string): Promise<void>;
|
|
79
|
+
/** Stop the stream WITHOUT a final flush (abort path). Idempotent. */
|
|
80
|
+
stop(): void;
|
|
81
|
+
/** Ids (ts) of every message this stream sent (last = current live message). */
|
|
82
|
+
messageIds(): string[];
|
|
83
|
+
/** True once the stream has been finalized or stopped. */
|
|
84
|
+
isDone(): boolean;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Split `text` so the head fits within `limit` chars, preferring (in order) a
|
|
88
|
+
* paragraph break, a newline, then a space, falling back to a hard cut. Returns
|
|
89
|
+
* `[head, rest]`; `rest` is "" when the whole text fits.
|
|
90
|
+
*/
|
|
91
|
+
export declare function splitAtBoundary(text: string, limit: number): [string, string];
|
|
92
|
+
export declare function createDraftStream(params: CreateDraftStreamParams): DraftStream;
|
|
93
|
+
//# sourceMappingURL=draft-stream.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"draft-stream.d.ts","sourceRoot":"","sources":["../../../../src/agents/channels/slack/draft-stream.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,6EAA6E;AAC7E,eAAO,MAAM,sBAAsB,OAAO,CAAC;AAC3C,0EAA0E;AAC1E,eAAO,MAAM,mBAAmB,OAAO,CAAC;AAIxC,wFAAwF;AACxF,MAAM,WAAW,WAAW;IAC3B,IAAI,EAAE,MAAM,CAAC;CACb;AAED,yEAAyE;AACzE,MAAM,WAAW,oBAAoB;IACpC,iEAAiE;IACjE,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,iDAAiD;IACjD,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACvD;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,sEAAsE;IACtE,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,gFAAgF;IAChF,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,CAqJ9E"}
|