@vellumai/assistant 0.4.45 → 0.4.48
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/ARCHITECTURE.md +6 -6
- package/docs/architecture/memory.md +1 -1
- package/docs/architecture/scheduling.md +2 -3
- package/docs/architecture/security.md +5 -5
- package/docs/trusted-contact-access.md +5 -6
- package/package.json +4 -1
- package/src/__tests__/avatar-e2e.test.ts +18 -219
- package/src/__tests__/avatar-generator.test.ts +5 -57
- package/src/__tests__/browser-fill-credential.test.ts +5 -2
- package/src/__tests__/bundled-skill-retrieval-guard.test.ts +2 -1
- package/src/__tests__/channel-readiness-routes.test.ts +20 -19
- package/src/__tests__/cli.test.ts +23 -0
- package/src/__tests__/credential-broker-browser-fill.test.ts +23 -22
- package/src/__tests__/credential-broker-server-use.test.ts +22 -21
- package/src/__tests__/credential-broker.test.ts +2 -1
- package/src/__tests__/credential-metadata-store.test.ts +240 -18
- package/src/__tests__/credential-resolve.test.ts +5 -4
- package/src/__tests__/credential-security-e2e.test.ts +8 -8
- package/src/__tests__/credential-security-invariants.test.ts +104 -7
- package/src/__tests__/credential-vault-unit.test.ts +22 -20
- package/src/__tests__/credential-vault.test.ts +284 -12
- package/src/__tests__/credentials-cli.test.ts +11 -6
- package/src/__tests__/gateway-only-enforcement.test.ts +4 -2
- package/src/__tests__/gemini-image-service.test.ts +75 -45
- package/src/__tests__/gemini-provider.test.ts +9 -6
- package/src/__tests__/guardian-action-conversation-turn.test.ts +1 -33
- package/src/__tests__/guardian-action-copy-generator.test.ts +0 -20
- package/src/__tests__/guardian-action-followup-executor.test.ts +1 -28
- package/src/__tests__/guardian-action-followup-store.test.ts +1 -1
- package/src/__tests__/guardian-grant-minting.test.ts +35 -0
- package/src/__tests__/integration-status.test.ts +53 -21
- package/src/__tests__/managed-proxy-context.test.ts +5 -3
- package/src/__tests__/media-generate-image.test.ts +63 -2
- package/src/__tests__/media-reuse-story.e2e.test.ts +7 -3
- package/src/__tests__/messaging-send-tool.test.ts +4 -6
- package/src/__tests__/provider-fail-open-selection.test.ts +3 -1
- package/src/__tests__/provider-managed-proxy-integration.test.ts +70 -6
- package/src/__tests__/schedule-store.test.ts +1 -1
- package/src/__tests__/schema-transforms.test.ts +226 -0
- package/src/__tests__/script-proxy-injection-runtime.test.ts +23 -13
- package/src/__tests__/script-proxy-policy-runtime.test.ts +1 -1
- package/src/__tests__/script-proxy-session-manager.test.ts +1 -1
- package/src/__tests__/secret-onetime-send.test.ts +5 -3
- package/src/__tests__/session-messaging-secret-redirect.test.ts +5 -4
- package/src/__tests__/skills-uninstall.test.ts +2 -2
- package/src/__tests__/skills.test.ts +0 -9
- package/src/__tests__/slack-channel-config.test.ts +9 -8
- package/src/__tests__/slack-share-routes.test.ts +11 -6
- package/src/__tests__/telegram-bot-username-resolution.test.ts +3 -0
- package/src/__tests__/twilio-config.test.ts +2 -1
- package/src/__tests__/twilio-provider.test.ts +4 -2
- package/src/__tests__/twilio-routes.test.ts +5 -4
- package/src/__tests__/verification-control-plane-policy.test.ts +1 -1
- package/src/approvals/AGENTS.md +1 -1
- package/src/calls/call-domain.ts +7 -4
- package/src/calls/twilio-config.ts +2 -1
- package/src/calls/twilio-provider.ts +2 -1
- package/src/calls/twilio-rest.ts +2 -2
- package/src/cli/commands/browser-relay.ts +40 -15
- package/src/cli/commands/credentials.ts +9 -8
- package/src/cli/commands/oauth.ts +1 -1
- package/src/cli.ts +3 -2
- package/src/config/bundled-skills/claude-code/TOOLS.json +0 -4
- package/src/config/bundled-skills/contacts/tools/google-contacts.ts +29 -32
- package/src/config/bundled-skills/gmail/SKILL.md +4 -4
- package/src/config/bundled-skills/gmail/tools/gmail-archive.ts +54 -61
- package/src/config/bundled-skills/gmail/tools/gmail-attachments.ts +25 -28
- package/src/config/bundled-skills/gmail/tools/gmail-draft.ts +14 -17
- package/src/config/bundled-skills/gmail/tools/gmail-filters.ts +39 -44
- package/src/config/bundled-skills/gmail/tools/gmail-follow-up.ts +61 -58
- package/src/config/bundled-skills/gmail/tools/gmail-forward.ts +50 -49
- package/src/config/bundled-skills/gmail/tools/gmail-label.ts +11 -13
- package/src/config/bundled-skills/gmail/tools/gmail-outreach-scan.ts +148 -146
- package/src/config/bundled-skills/gmail/tools/gmail-send-draft.ts +4 -7
- package/src/config/bundled-skills/gmail/tools/gmail-sender-digest.ts +175 -173
- package/src/config/bundled-skills/gmail/tools/gmail-trash.ts +4 -7
- package/src/config/bundled-skills/gmail/tools/gmail-unsubscribe.ts +71 -76
- package/src/config/bundled-skills/gmail/tools/gmail-vacation.ts +32 -38
- package/src/config/bundled-skills/google-calendar/SKILL.md +2 -2
- package/src/config/bundled-skills/google-calendar/calendar-client.ts +70 -29
- package/src/config/bundled-skills/google-calendar/tools/calendar-check-availability.ts +9 -10
- package/src/config/bundled-skills/google-calendar/tools/calendar-create-event.ts +5 -6
- package/src/config/bundled-skills/google-calendar/tools/calendar-get-event.ts +4 -5
- package/src/config/bundled-skills/google-calendar/tools/calendar-list-events.ts +14 -15
- package/src/config/bundled-skills/google-calendar/tools/calendar-rsvp.ts +37 -37
- package/src/config/bundled-skills/google-calendar/tools/shared.ts +4 -9
- package/src/config/bundled-skills/image-studio/tools/media-generate-image.ts +24 -3
- package/src/config/bundled-skills/messaging/SKILL.md +6 -6
- package/src/config/bundled-skills/messaging/tools/messaging-analyze-style.ts +62 -63
- package/src/config/bundled-skills/messaging/tools/messaging-archive-by-sender.ts +15 -16
- package/src/config/bundled-skills/messaging/tools/messaging-auth-test.ts +4 -5
- package/src/config/bundled-skills/messaging/tools/messaging-list-conversations.ts +6 -7
- package/src/config/bundled-skills/messaging/tools/messaging-mark-read.ts +4 -5
- package/src/config/bundled-skills/messaging/tools/messaging-read.ts +14 -15
- package/src/config/bundled-skills/messaging/tools/messaging-search.ts +4 -5
- package/src/config/bundled-skills/messaging/tools/messaging-send.ts +128 -128
- package/src/config/bundled-skills/messaging/tools/messaging-sender-digest.ts +33 -34
- package/src/config/bundled-skills/messaging/tools/shared.ts +11 -11
- package/src/config/bundled-skills/notifications/SKILL.md +1 -1
- package/src/config/bundled-skills/phone-calls/SKILL.md +5 -5
- package/src/config/bundled-skills/schedule/SKILL.md +1 -1
- package/src/config/bundled-skills/skill-management/SKILL.md +1 -1
- package/src/config/bundled-skills/slack/tools/shared.ts +4 -10
- package/src/config/bundled-skills/slack/tools/slack-add-reaction.ts +4 -5
- package/src/config/bundled-skills/slack/tools/slack-channel-details.ts +15 -16
- package/src/config/bundled-skills/slack/tools/slack-delete-message.ts +4 -5
- package/src/config/bundled-skills/slack/tools/slack-edit-message.ts +4 -5
- package/src/config/bundled-skills/slack/tools/slack-leave-channel.ts +4 -5
- package/src/config/bundled-skills/slack/tools/slack-scan-digest.ts +95 -92
- package/src/config/loader.ts +6 -0
- package/src/daemon/computer-use-session.ts +7 -1
- package/src/daemon/guardian-action-generators.ts +4 -5
- package/src/daemon/handlers/config-slack-channel.ts +37 -20
- package/src/daemon/handlers/config-telegram.ts +33 -20
- package/src/daemon/lifecycle.ts +9 -1
- package/src/daemon/message-types/integrations.ts +1 -0
- package/src/daemon/ride-shotgun-handler.ts +3 -1
- package/src/daemon/session-messaging.ts +3 -1
- package/src/daemon/session-tool-setup.ts +18 -2
- package/src/daemon/session.ts +1 -1
- package/src/email/providers/index.ts +2 -1
- package/src/instrument.ts +15 -1
- package/src/media/app-icon-generator.ts +30 -4
- package/src/media/avatar-router.ts +28 -62
- package/src/media/gemini-image-service.ts +28 -2
- package/src/memory/canonical-guardian-store.ts +1 -1
- package/src/memory/guardian-action-store.ts +1 -1
- package/src/memory/schema/guardian.ts +1 -1
- package/src/messaging/provider.ts +16 -10
- package/src/messaging/providers/gmail/adapter.ts +40 -23
- package/src/messaging/providers/gmail/client.ts +203 -122
- package/src/messaging/providers/gmail/people-client.ts +26 -18
- package/src/messaging/providers/slack/adapter.ts +29 -19
- package/src/messaging/providers/slack/client.ts +265 -78
- package/src/messaging/providers/telegram-bot/adapter.ts +5 -4
- package/src/messaging/providers/whatsapp/adapter.ts +6 -3
- package/src/messaging/registry.ts +2 -1
- package/src/oauth/byo-connection.test.ts +436 -0
- package/src/oauth/byo-connection.ts +112 -0
- package/src/oauth/connect-orchestrator.ts +27 -0
- package/src/oauth/connection-resolver.ts +34 -0
- package/src/oauth/connection.ts +38 -0
- package/src/oauth/platform-connection.test.ts +163 -0
- package/src/oauth/platform-connection.ts +110 -0
- package/src/oauth/provider-base-urls.ts +21 -0
- package/src/oauth/provider-profiles.ts +1 -1
- package/src/oauth/token-persistence.ts +20 -20
- package/src/permissions/checker.ts +6 -1
- package/src/prompts/system-prompt.ts +52 -15
- package/src/prompts/templates/BOOTSTRAP.md +1 -1
- package/src/providers/gemini/client.ts +15 -6
- package/src/providers/managed-proxy/constants.ts +2 -2
- package/src/providers/managed-proxy/context.ts +5 -1
- package/src/providers/ratelimit.ts +17 -0
- package/src/providers/registry.ts +2 -2
- package/src/runtime/AGENTS.md +18 -1
- package/src/runtime/auth/route-policy.ts +1 -0
- package/src/runtime/channel-invite-transports/telegram.ts +2 -1
- package/src/runtime/channel-readiness-service.ts +168 -195
- package/src/runtime/channel-readiness-types.ts +4 -0
- package/src/runtime/guardian-action-conversation-turn.ts +1 -3
- package/src/runtime/guardian-action-followup-executor.ts +1 -2
- package/src/runtime/guardian-action-message-composer.ts +3 -23
- package/src/runtime/http-server.ts +9 -4
- package/src/runtime/http-types.ts +0 -1
- package/src/runtime/middleware/rate-limiter.ts +74 -20
- package/src/runtime/middleware/twilio-validation.ts +1 -3
- package/src/runtime/routes/channel-readiness-routes.ts +2 -0
- package/src/runtime/routes/diagnostics-routes.ts +11 -9
- package/src/runtime/routes/guardian-approval-interception.ts +20 -5
- package/src/runtime/routes/inbound-stages/acl-enforcement.ts +71 -25
- package/src/runtime/routes/inbound-stages/guardian-reply-intercept.ts +12 -5
- package/src/runtime/routes/integrations/slack/share.ts +3 -2
- package/src/runtime/routes/integrations/twilio.ts +6 -5
- package/src/runtime/routes/secret-routes.ts +3 -2
- package/src/runtime/routes/settings-routes.ts +75 -17
- package/src/runtime/telegram-streaming-delivery.test.ts +132 -0
- package/src/runtime/telegram-streaming-delivery.ts +11 -1
- package/src/schedule/integration-status.ts +5 -4
- package/src/security/credential-key.ts +170 -0
- package/src/security/token-manager.ts +36 -7
- package/src/tools/apps/definitions.ts +0 -5
- package/src/tools/assets/materialize.ts +0 -5
- package/src/tools/assets/search.ts +0 -5
- package/src/tools/browser/headless-browser.ts +1 -67
- package/src/tools/claude-code/claude-code.ts +0 -5
- package/src/tools/computer-use/request-computer-control.ts +0 -5
- package/src/tools/credentials/broker.ts +6 -4
- package/src/tools/credentials/metadata-store.ts +72 -20
- package/src/tools/credentials/resolve.ts +2 -1
- package/src/tools/credentials/vault.ts +77 -16
- package/src/tools/filesystem/edit.ts +1 -6
- package/src/tools/filesystem/read.ts +0 -5
- package/src/tools/filesystem/write.ts +1 -6
- package/src/tools/host-filesystem/edit.ts +1 -6
- package/src/tools/host-filesystem/read.ts +1 -6
- package/src/tools/host-filesystem/write.ts +1 -6
- package/src/tools/mcp/mcp-tool-factory.ts +18 -1
- package/src/tools/memory/definitions.ts +0 -5
- package/src/tools/network/web-fetch.ts +0 -5
- package/src/tools/network/web-search.ts +0 -5
- package/src/tools/schema-transforms.ts +99 -0
- package/src/tools/skills/load.ts +0 -5
- package/src/tools/swarm/delegate.ts +0 -5
- package/src/tools/system/avatar-generator.ts +3 -44
- package/src/tools/ui-surface/definitions.ts +0 -15
- package/src/tools/watch/screen-watch.ts +0 -5
- package/src/version.ts +10 -0
- package/src/watcher/providers/github.ts +51 -52
- package/src/watcher/providers/gmail.ts +88 -80
- package/src/watcher/providers/google-calendar.ts +93 -86
- package/src/watcher/providers/linear.ts +87 -93
- package/src/__tests__/avatar-router.test.ts +0 -149
- package/src/__tests__/managed-avatar-client.test.ts +0 -337
- package/src/config/bundled-skills/doordash/SKILL.md +0 -170
- package/src/config/bundled-skills/doordash/__tests__/doordash-client.test.ts +0 -205
- package/src/config/bundled-skills/doordash/__tests__/doordash-session.test.ts +0 -74
- package/src/config/bundled-skills/doordash/doordash-cli.ts +0 -1081
- package/src/config/bundled-skills/doordash/doordash-entry.ts +0 -22
- package/src/config/bundled-skills/doordash/lib/cart-queries.ts +0 -787
- package/src/config/bundled-skills/doordash/lib/client.ts +0 -1069
- package/src/config/bundled-skills/doordash/lib/order-queries.ts +0 -85
- package/src/config/bundled-skills/doordash/lib/queries.ts +0 -28
- package/src/config/bundled-skills/doordash/lib/query-extractor.ts +0 -94
- package/src/config/bundled-skills/doordash/lib/search-queries.ts +0 -203
- package/src/config/bundled-skills/doordash/lib/session.ts +0 -96
- package/src/config/bundled-skills/doordash/lib/shared/errors.ts +0 -61
- package/src/config/bundled-skills/doordash/lib/shared/network-recorder.ts +0 -380
- package/src/config/bundled-skills/doordash/lib/shared/platform.ts +0 -55
- package/src/config/bundled-skills/doordash/lib/shared/recording-store.ts +0 -43
- package/src/config/bundled-skills/doordash/lib/shared/recording-types.ts +0 -49
- package/src/config/bundled-skills/doordash/lib/shared/truncate.ts +0 -6
- package/src/config/bundled-skills/doordash/lib/store-queries.ts +0 -246
- package/src/config/bundled-skills/doordash/lib/types.ts +0 -367
- package/src/media/avatar-types.ts +0 -53
- package/src/media/managed-avatar-client.ts +0 -225
|
@@ -3,36 +3,44 @@
|
|
|
3
3
|
* Separate from the Gmail client due to a different base URL.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
+
import type { OAuthConnection } from "../../../oauth/connection.js";
|
|
7
|
+
import { GOOGLE_PEOPLE_BASE_URL } from "../../../oauth/provider-base-urls.js";
|
|
6
8
|
import { GmailApiError } from "./client.js";
|
|
7
9
|
import type {
|
|
8
10
|
PeopleConnectionsResponse,
|
|
9
11
|
PeopleSearchResponse,
|
|
10
12
|
} from "./people-types.js";
|
|
11
13
|
|
|
12
|
-
const PEOPLE_API_BASE = "https://people.googleapis.com/v1";
|
|
13
|
-
|
|
14
14
|
const PERSON_FIELDS = "names,emailAddresses,phoneNumbers,organizations";
|
|
15
15
|
|
|
16
|
-
async function request<T>(
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
16
|
+
async function request<T>(
|
|
17
|
+
connection: OAuthConnection,
|
|
18
|
+
path: string,
|
|
19
|
+
): Promise<T> {
|
|
20
|
+
const resp = await connection.request({
|
|
21
|
+
method: "GET",
|
|
22
|
+
path,
|
|
23
|
+
baseUrl: GOOGLE_PEOPLE_BASE_URL,
|
|
21
24
|
});
|
|
22
|
-
|
|
23
|
-
|
|
25
|
+
|
|
26
|
+
if (resp.status < 200 || resp.status >= 300) {
|
|
27
|
+
const bodyStr =
|
|
28
|
+
typeof resp.body === "string"
|
|
29
|
+
? resp.body
|
|
30
|
+
: JSON.stringify(resp.body ?? "");
|
|
24
31
|
throw new GmailApiError(
|
|
25
32
|
resp.status,
|
|
26
|
-
|
|
27
|
-
`People API ${resp.status}: ${
|
|
33
|
+
"",
|
|
34
|
+
`People API ${resp.status}: ${bodyStr}`,
|
|
28
35
|
);
|
|
29
36
|
}
|
|
30
|
-
|
|
37
|
+
|
|
38
|
+
return resp.body as T;
|
|
31
39
|
}
|
|
32
40
|
|
|
33
41
|
/** List the user's contacts with pagination. */
|
|
34
42
|
export async function listContacts(
|
|
35
|
-
|
|
43
|
+
connection: OAuthConnection,
|
|
36
44
|
pageSize = 50,
|
|
37
45
|
pageToken?: string,
|
|
38
46
|
): Promise<PeopleConnectionsResponse> {
|
|
@@ -42,14 +50,14 @@ export async function listContacts(
|
|
|
42
50
|
});
|
|
43
51
|
if (pageToken) params.set("pageToken", pageToken);
|
|
44
52
|
return request<PeopleConnectionsResponse>(
|
|
45
|
-
|
|
46
|
-
|
|
53
|
+
connection,
|
|
54
|
+
`/people/me/connections?${params}`,
|
|
47
55
|
);
|
|
48
56
|
}
|
|
49
57
|
|
|
50
58
|
/** Search contacts by name or email. */
|
|
51
59
|
export async function searchContacts(
|
|
52
|
-
|
|
60
|
+
connection: OAuthConnection,
|
|
53
61
|
query: string,
|
|
54
62
|
): Promise<PeopleSearchResponse> {
|
|
55
63
|
const params = new URLSearchParams({
|
|
@@ -57,7 +65,7 @@ export async function searchContacts(
|
|
|
57
65
|
readMask: PERSON_FIELDS,
|
|
58
66
|
});
|
|
59
67
|
return request<PeopleSearchResponse>(
|
|
60
|
-
|
|
61
|
-
|
|
68
|
+
connection,
|
|
69
|
+
`/people:searchContacts?${params}`,
|
|
62
70
|
);
|
|
63
71
|
}
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
* and implements the MessagingProvider interface.
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
+
import type { OAuthConnection } from "../../../oauth/connection.js";
|
|
8
9
|
import type { MessagingProvider } from "../../provider.js";
|
|
9
10
|
import type {
|
|
10
11
|
ConnectionInfo,
|
|
@@ -27,13 +28,16 @@ import type {
|
|
|
27
28
|
// Cache user display names to avoid repeated API calls within a session
|
|
28
29
|
const userNameCache = new Map<string, string>();
|
|
29
30
|
|
|
30
|
-
async function resolveUserName(
|
|
31
|
+
async function resolveUserName(
|
|
32
|
+
connectionOrToken: OAuthConnection | string,
|
|
33
|
+
userId: string,
|
|
34
|
+
): Promise<string> {
|
|
31
35
|
if (!userId) return "unknown";
|
|
32
36
|
const cached = userNameCache.get(userId);
|
|
33
37
|
if (cached) return cached;
|
|
34
38
|
|
|
35
39
|
try {
|
|
36
|
-
const resp = await slack.userInfo(
|
|
40
|
+
const resp = await slack.userInfo(connectionOrToken, userId);
|
|
37
41
|
const name =
|
|
38
42
|
resp.user.profile?.display_name ||
|
|
39
43
|
resp.user.profile?.real_name ||
|
|
@@ -108,8 +112,10 @@ export const slackProvider: MessagingProvider = {
|
|
|
108
112
|
credentialService: "integration:slack",
|
|
109
113
|
capabilities: new Set(["reactions", "threads", "leave_channel"]),
|
|
110
114
|
|
|
111
|
-
async testConnection(
|
|
112
|
-
|
|
115
|
+
async testConnection(
|
|
116
|
+
connectionOrToken: OAuthConnection | string,
|
|
117
|
+
): Promise<ConnectionInfo> {
|
|
118
|
+
const resp = await slack.authTest(connectionOrToken);
|
|
113
119
|
return {
|
|
114
120
|
connected: true,
|
|
115
121
|
user: resp.user,
|
|
@@ -119,7 +125,7 @@ export const slackProvider: MessagingProvider = {
|
|
|
119
125
|
},
|
|
120
126
|
|
|
121
127
|
async listConversations(
|
|
122
|
-
|
|
128
|
+
connectionOrToken: OAuthConnection | string,
|
|
123
129
|
options?: ListOptions,
|
|
124
130
|
): Promise<Conversation[]> {
|
|
125
131
|
const typeMap: Record<string, string> = {
|
|
@@ -141,7 +147,7 @@ export const slackProvider: MessagingProvider = {
|
|
|
141
147
|
// Paginate through all results
|
|
142
148
|
do {
|
|
143
149
|
const resp = await slack.listConversations(
|
|
144
|
-
|
|
150
|
+
connectionOrToken,
|
|
145
151
|
types,
|
|
146
152
|
options?.excludeArchived ?? true,
|
|
147
153
|
options?.limit ?? 200,
|
|
@@ -158,7 +164,7 @@ export const slackProvider: MessagingProvider = {
|
|
|
158
164
|
for (const conv of conversations) {
|
|
159
165
|
if (conv.type === "dm" && conv.metadata?.dmUserId) {
|
|
160
166
|
conv.name = await resolveUserName(
|
|
161
|
-
|
|
167
|
+
connectionOrToken,
|
|
162
168
|
conv.metadata.dmUserId as string,
|
|
163
169
|
);
|
|
164
170
|
}
|
|
@@ -168,12 +174,12 @@ export const slackProvider: MessagingProvider = {
|
|
|
168
174
|
},
|
|
169
175
|
|
|
170
176
|
async getHistory(
|
|
171
|
-
|
|
177
|
+
connectionOrToken: OAuthConnection | string,
|
|
172
178
|
conversationId: string,
|
|
173
179
|
options?: HistoryOptions,
|
|
174
180
|
): Promise<Message[]> {
|
|
175
181
|
const resp = await slack.conversationHistory(
|
|
176
|
-
|
|
182
|
+
connectionOrToken,
|
|
177
183
|
conversationId,
|
|
178
184
|
options?.limit ?? 50,
|
|
179
185
|
options?.before,
|
|
@@ -182,7 +188,7 @@ export const slackProvider: MessagingProvider = {
|
|
|
182
188
|
|
|
183
189
|
const messages: Message[] = [];
|
|
184
190
|
for (const msg of resp.messages) {
|
|
185
|
-
const name = await resolveUserName(
|
|
191
|
+
const name = await resolveUserName(connectionOrToken, msg.user ?? "");
|
|
186
192
|
messages.push(mapMessage(msg, conversationId, name));
|
|
187
193
|
}
|
|
188
194
|
|
|
@@ -190,11 +196,15 @@ export const slackProvider: MessagingProvider = {
|
|
|
190
196
|
},
|
|
191
197
|
|
|
192
198
|
async search(
|
|
193
|
-
|
|
199
|
+
connectionOrToken: OAuthConnection | string,
|
|
194
200
|
query: string,
|
|
195
201
|
options?: SearchOptions,
|
|
196
202
|
): Promise<SearchResult> {
|
|
197
|
-
const resp = await slack.searchMessages(
|
|
203
|
+
const resp = await slack.searchMessages(
|
|
204
|
+
connectionOrToken,
|
|
205
|
+
query,
|
|
206
|
+
options?.count ?? 20,
|
|
207
|
+
);
|
|
198
208
|
return {
|
|
199
209
|
total: resp.messages.total,
|
|
200
210
|
messages: resp.messages.matches.map(mapSearchMatch),
|
|
@@ -203,13 +213,13 @@ export const slackProvider: MessagingProvider = {
|
|
|
203
213
|
},
|
|
204
214
|
|
|
205
215
|
async sendMessage(
|
|
206
|
-
|
|
216
|
+
connectionOrToken: OAuthConnection | string,
|
|
207
217
|
conversationId: string,
|
|
208
218
|
text: string,
|
|
209
219
|
options?: SendOptions,
|
|
210
220
|
): Promise<SendResult> {
|
|
211
221
|
const resp = await slack.postMessage(
|
|
212
|
-
|
|
222
|
+
connectionOrToken,
|
|
213
223
|
conversationId,
|
|
214
224
|
text,
|
|
215
225
|
options?.threadId,
|
|
@@ -222,32 +232,32 @@ export const slackProvider: MessagingProvider = {
|
|
|
222
232
|
},
|
|
223
233
|
|
|
224
234
|
async getThreadReplies(
|
|
225
|
-
|
|
235
|
+
connectionOrToken: OAuthConnection | string,
|
|
226
236
|
conversationId: string,
|
|
227
237
|
threadId: string,
|
|
228
238
|
options?: HistoryOptions,
|
|
229
239
|
): Promise<Message[]> {
|
|
230
240
|
const resp = await slack.conversationReplies(
|
|
231
|
-
|
|
241
|
+
connectionOrToken,
|
|
232
242
|
conversationId,
|
|
233
243
|
threadId,
|
|
234
244
|
options?.limit ?? 50,
|
|
235
245
|
);
|
|
236
246
|
const messages: Message[] = [];
|
|
237
247
|
for (const msg of resp.messages) {
|
|
238
|
-
const name = await resolveUserName(
|
|
248
|
+
const name = await resolveUserName(connectionOrToken, msg.user ?? "");
|
|
239
249
|
messages.push(mapMessage(msg, conversationId, name));
|
|
240
250
|
}
|
|
241
251
|
return messages;
|
|
242
252
|
},
|
|
243
253
|
|
|
244
254
|
async markRead(
|
|
245
|
-
|
|
255
|
+
connectionOrToken: OAuthConnection | string,
|
|
246
256
|
conversationId: string,
|
|
247
257
|
messageId?: string,
|
|
248
258
|
): Promise<void> {
|
|
249
259
|
// Slack's conversations.mark requires a timestamp — use the provided one or "now"
|
|
250
260
|
const ts = messageId ?? String(Date.now() / 1000);
|
|
251
|
-
await slack.conversationMark(
|
|
261
|
+
await slack.conversationMark(connectionOrToken, conversationId, ts);
|
|
252
262
|
},
|
|
253
263
|
};
|