@stratusagent/channel-slack 0.13.6 → 0.14.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 +74 -7
- package/dist/index.d.ts +71 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +448 -84
- package/dist/index.js.map +1 -1
- package/manifest/stratus-agent.manifest.json +1 -0
- package/package.json +2 -3
package/README.md
CHANGED
|
@@ -129,7 +129,10 @@ typed, is a question in its own right and gets an answer. That needs the
|
|
|
129
129
|
without it should have the scope added under **OAuth & Permissions** and be
|
|
130
130
|
reinstalled once, and until then `stratus serve` warns, naming the scope,
|
|
131
131
|
each time an image arrives. An image over 5 MB or 8000 pixels a side (the
|
|
132
|
-
model API's limits) is
|
|
132
|
+
model API's limits) is sent as Slack's own largest preview of it, up to 1024
|
|
133
|
+
pixels a side, and the message tells the agent it is seeing a scaled preview,
|
|
134
|
+
so it asks for a crop rather than guessing at small text; an image Slack made
|
|
135
|
+
no preview of is not kept. One message's images stop at 20 MB
|
|
133
136
|
together — a request has a size limit too, and images past it are named as
|
|
134
137
|
unreadable; send them in a message of their own. The same 20 MB — and 20
|
|
135
138
|
images — is what a whole thread's images may take on one request, spent
|
|
@@ -365,7 +368,10 @@ Mode connection.
|
|
|
365
368
|
|
|
366
369
|
The same approvers answer an agent's `credential.request`. The gateway hands
|
|
367
370
|
the request to the adapter's `requestCredential`, the channel contract's
|
|
368
|
-
method for this, and waits for it
|
|
371
|
+
method for this, and waits for it (the adapter sets `credentialReplaceForms`
|
|
372
|
+
and `credentialEnvForms`, so it is also handed replacements and requests
|
|
373
|
+
with `env`, whose post and form say which variable the agent's shell will
|
|
374
|
+
read the key from): the adapter resolves once the form is
|
|
369
375
|
posted, and rejects, posting nothing, when the agent has no approvers, the
|
|
370
376
|
turn is a DM with someone who is not one of them or a private channel or
|
|
371
377
|
group DM none of them is a member of (`conversations.info`, then
|
|
@@ -536,17 +542,78 @@ The boundary is the outbound one plus a rule for DMs:
|
|
|
536
542
|
nothing, and another agent's app is never borrowed.
|
|
537
543
|
- The app must be a **member** of the channel, public or private. `/invite`
|
|
538
544
|
it where it should read.
|
|
539
|
-
- **DMs and group DMs are refused, member or not
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
and tells the agent
|
|
545
|
+
- **DMs and group DMs are refused, member or not, except the one the
|
|
546
|
+
session reading is in.** What someone says in a DM is said to the people
|
|
547
|
+
in it; a read from elsewhere, a public thread above all, would carry it
|
|
548
|
+
to people who were never in the room. This is not an approval: the
|
|
549
|
+
gateway refuses a DM read before anyone is asked, and tells the agent
|
|
550
|
+
approval can't unlock it.
|
|
551
|
+
- **The session's own DM is readable**, top level and threads, so an agent
|
|
552
|
+
in a DM can look back past what its session holds (a thread session, or
|
|
553
|
+
one started over). The check is the session id, read without a lookup
|
|
554
|
+
(`sessionConversation`): it must be exactly this app's key for that DM,
|
|
555
|
+
`slack:<agent>:<team>:<conversation>` or that plus one thread `ts`, and
|
|
556
|
+
the gateway and the adapter both ask it. A delegated or scheduled
|
|
557
|
+
session, an archived one, another agent's app and another workspace
|
|
558
|
+
never match. The read is still `gated` like any other, and
|
|
559
|
+
`approvals.channels` still never covers a DM. Anyone holding the
|
|
560
|
+
gateway token can open a session under any id; that is the operator,
|
|
561
|
+
who can read what the bot token reads anyway.
|
|
544
562
|
|
|
545
563
|
Messages come back as plain text with author ids and, where Slack supplies
|
|
546
564
|
one cheaply, a display name. File contents are not downloaded; their names
|
|
547
565
|
are listed. The tool labels the result `external`, so what an agent
|
|
548
566
|
remembers after reading carries that label.
|
|
549
567
|
|
|
568
|
+
A read of a channel's top level with no `before` or `after`, the first
|
|
569
|
+
page, also lists the channel's bookmarks (`bookmarks.list`, asked beside
|
|
570
|
+
the history and only after the checks above pass), so an agent told "the
|
|
571
|
+
doc is in the bookmarks" can find it. Each comes back as a title and a
|
|
572
|
+
link, nothing else: a title over 200 characters is cut, and a link over
|
|
573
|
+
2,000 is replaced by a note, since a cut link is a broken one. A thread or
|
|
574
|
+
a later page lists none, so paging costs no extra calls. This needs the
|
|
575
|
+
`bookmarks:read` scope, which the manifest asks for. An app created before
|
|
576
|
+
it reads messages exactly as before, and its first-page reads carry
|
|
577
|
+
`bookmarksUnavailable`, a sentence telling the agent the scope is missing;
|
|
578
|
+
any other failure to list them is said the same way, and the messages come
|
|
579
|
+
back either way. In `message.read`, bookmarks come first and may use 16,000
|
|
580
|
+
of its 40,000 characters, which holds Slack's limit of 100 at a typical
|
|
581
|
+
length. Any that don't fit are counted in `bookmarksOmitted`.
|
|
582
|
+
|
|
583
|
+
## Creating a channel
|
|
584
|
+
|
|
585
|
+
The adapter implements the channel contract's `createConversation`, which
|
|
586
|
+
is what the gateway's `channel.create` tool runs on. The agent's **own**
|
|
587
|
+
app creates the channel, so it is the first member, and its token never
|
|
588
|
+
leaves the adapter. The order:
|
|
589
|
+
|
|
590
|
+
1. Everything Slack would refuse once the channel exists is refused first,
|
|
591
|
+
with a sentence and nothing created: a name that isn't lowercase
|
|
592
|
+
letters, numbers, hyphens and underscores, or is over 80 characters (a
|
|
593
|
+
leading `#` is dropped); a topic or purpose over 250 characters; more
|
|
594
|
+
than 1,000 people to invite.
|
|
595
|
+
2. Each `invite` entry is resolved. An agent id on this host becomes the
|
|
596
|
+
Slack user its app posts as, in the same workspace only; the creating
|
|
597
|
+
agent is a member already. Anything else must be a Slack user id
|
|
598
|
+
(`U…` or `W…`).
|
|
599
|
+
3. `conversations.create`, then `setTopic` and `setPurpose` if given, then
|
|
600
|
+
one `conversations.invite` with `force`, so a bad id doesn't stop the
|
|
601
|
+
good ones.
|
|
602
|
+
|
|
603
|
+
A create Slack refuses is a sentence: a missing scope names
|
|
604
|
+
`channels:manage` (public) or `groups:write` (private) and the reinstall
|
|
605
|
+
step, and a taken name says so in words (Slack's names are unique, archived
|
|
606
|
+
channels included, so a retried create can't make a second channel).
|
|
607
|
+
Anything that fails after the channel exists doesn't undo it: the result
|
|
608
|
+
lists `notInvited` and `notSet`, each with the reason. When an invitation
|
|
609
|
+
call fails without naming everyone, the channel's members decide who was
|
|
610
|
+
added, and anyone that can't be checked is reported as unknown rather than
|
|
611
|
+
claimed.
|
|
612
|
+
|
|
613
|
+
Both scopes are left out of the default manifest, because they let an app
|
|
614
|
+
create and manage channels and most agents never need that. Add them to
|
|
615
|
+
the apps that should, under **OAuth & Permissions**, and reinstall.
|
|
616
|
+
|
|
550
617
|
## Speaking first: the outbound seam
|
|
551
618
|
|
|
552
619
|
The adapter also implements the channel contract's `resolveOutbound` — how a
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { type AgentWorkspaces, type TrustLevel } from '@stratusagent/core';
|
|
2
|
-
import { type AdmitPolicy, type ChannelAdapter } from '@stratusagent/channels';
|
|
1
|
+
import { type AgentWorkspaces, type TrustLevel, type AdmitPolicy, type ChannelAdapter } from '@stratusagent/core';
|
|
3
2
|
/**
|
|
4
3
|
* How many agent mentions one thread admits in a row before a person has
|
|
5
4
|
* to speak there again (card 513): enough for a question, an answer and a
|
|
@@ -179,6 +178,18 @@ export interface SlackInboundFile {
|
|
|
179
178
|
size?: number;
|
|
180
179
|
url_private?: string;
|
|
181
180
|
url_private_download?: string;
|
|
181
|
+
/**
|
|
182
|
+
* Slack's scaled copies of an image, each behind its own private URL
|
|
183
|
+
* that the same `files:read` token opens, named for the longest side
|
|
184
|
+
* they fit. One of these is what an image too big for the model is sent
|
|
185
|
+
* as (see `readImageAttachments`).
|
|
186
|
+
*/
|
|
187
|
+
thumb_360?: string;
|
|
188
|
+
thumb_480?: string;
|
|
189
|
+
thumb_720?: string;
|
|
190
|
+
thumb_800?: string;
|
|
191
|
+
thumb_960?: string;
|
|
192
|
+
thumb_1024?: string;
|
|
182
193
|
}
|
|
183
194
|
/**
|
|
184
195
|
* What came back from fetching a file's private URL. Slack answers a
|
|
@@ -331,6 +342,7 @@ export interface SlackWebLike {
|
|
|
331
342
|
channel_id: string;
|
|
332
343
|
thread_ts: string;
|
|
333
344
|
status: string;
|
|
345
|
+
loading_messages?: string[];
|
|
334
346
|
}): Promise<unknown>;
|
|
335
347
|
};
|
|
336
348
|
};
|
|
@@ -398,6 +410,46 @@ export interface SlackWebLike {
|
|
|
398
410
|
replies?(args: SlackHistoryArgs & {
|
|
399
411
|
ts: string;
|
|
400
412
|
}): Promise<SlackHistoryPage>;
|
|
413
|
+
/**
|
|
414
|
+
* Makes a channel, with the calling app as its first member — what
|
|
415
|
+
* `channel.create` runs on. Needs `channels:manage` for a public one and
|
|
416
|
+
* `groups:write` for a private one, which the default manifest leaves
|
|
417
|
+
* out; the same two cover `setTopic`, `setPurpose` and `invite`.
|
|
418
|
+
* Optional, like everything below it: an older SDK or fake without them
|
|
419
|
+
* says it cannot create channels.
|
|
420
|
+
*/
|
|
421
|
+
create?(args: {
|
|
422
|
+
name: string;
|
|
423
|
+
is_private: boolean;
|
|
424
|
+
}): Promise<{
|
|
425
|
+
channel?: {
|
|
426
|
+
id?: string;
|
|
427
|
+
name?: string;
|
|
428
|
+
};
|
|
429
|
+
}>;
|
|
430
|
+
setTopic?(args: {
|
|
431
|
+
channel: string;
|
|
432
|
+
topic: string;
|
|
433
|
+
}): Promise<unknown>;
|
|
434
|
+
setPurpose?(args: {
|
|
435
|
+
channel: string;
|
|
436
|
+
purpose: string;
|
|
437
|
+
}): Promise<unknown>;
|
|
438
|
+
/**
|
|
439
|
+
* Invites up to 1,000 users at once. With `force`, the valid ones are
|
|
440
|
+
* invited even when another id fails; each failure is listed in
|
|
441
|
+
* `errors`, on the answer or on the error the SDK throws.
|
|
442
|
+
*/
|
|
443
|
+
invite?(args: {
|
|
444
|
+
channel: string;
|
|
445
|
+
users: string;
|
|
446
|
+
force?: boolean;
|
|
447
|
+
}): Promise<{
|
|
448
|
+
errors?: Array<{
|
|
449
|
+
user?: string;
|
|
450
|
+
error?: string;
|
|
451
|
+
}>;
|
|
452
|
+
}>;
|
|
401
453
|
};
|
|
402
454
|
users: {
|
|
403
455
|
info(args: {
|
|
@@ -412,6 +464,23 @@ export interface SlackWebLike {
|
|
|
412
464
|
};
|
|
413
465
|
}>;
|
|
414
466
|
};
|
|
467
|
+
/**
|
|
468
|
+
* A channel's bookmarks, all of them in one call (Slack has no paging
|
|
469
|
+
* here and allows 100 per channel), listed on the first page of a
|
|
470
|
+
* top-level `message.read`. Needs `bookmarks:read`, which the manifest
|
|
471
|
+
* asks for; an app without it reads messages as before and is told the
|
|
472
|
+
* scope is missing. Optional so an older SDK or fake still reads.
|
|
473
|
+
*/
|
|
474
|
+
bookmarks?: {
|
|
475
|
+
list(args: {
|
|
476
|
+
channel_id: string;
|
|
477
|
+
}): Promise<{
|
|
478
|
+
bookmarks?: Array<{
|
|
479
|
+
title?: string;
|
|
480
|
+
link?: string;
|
|
481
|
+
}>;
|
|
482
|
+
}>;
|
|
483
|
+
};
|
|
415
484
|
/**
|
|
416
485
|
* Opens a modal, which is how a credential is entered: its answer comes
|
|
417
486
|
* back as a `view_submission` to this app and never becomes a message in
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAMA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|