@intentface/latch-channels 0.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (111) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +27 -0
  3. package/dist/ask.d.ts +69 -0
  4. package/dist/ask.d.ts.map +1 -0
  5. package/dist/ask.js +94 -0
  6. package/dist/ask.js.map +1 -0
  7. package/dist/commands.d.ts +41 -0
  8. package/dist/commands.d.ts.map +1 -0
  9. package/dist/commands.js +54 -0
  10. package/dist/commands.js.map +1 -0
  11. package/dist/index.d.ts +19 -0
  12. package/dist/index.d.ts.map +1 -0
  13. package/dist/index.js +19 -0
  14. package/dist/index.js.map +1 -0
  15. package/dist/kernel.d.ts +207 -0
  16. package/dist/kernel.d.ts.map +1 -0
  17. package/dist/kernel.js +883 -0
  18. package/dist/kernel.js.map +1 -0
  19. package/dist/render.d.ts +43 -0
  20. package/dist/render.d.ts.map +1 -0
  21. package/dist/render.js +192 -0
  22. package/dist/render.js.map +1 -0
  23. package/dist/slack/api.d.ts +207 -0
  24. package/dist/slack/api.d.ts.map +1 -0
  25. package/dist/slack/api.js +249 -0
  26. package/dist/slack/api.js.map +1 -0
  27. package/dist/slack/blocks.d.ts +36 -0
  28. package/dist/slack/blocks.d.ts.map +1 -0
  29. package/dist/slack/blocks.js +161 -0
  30. package/dist/slack/blocks.js.map +1 -0
  31. package/dist/slack/ids.d.ts +40 -0
  32. package/dist/slack/ids.d.ts.map +1 -0
  33. package/dist/slack/ids.js +47 -0
  34. package/dist/slack/ids.js.map +1 -0
  35. package/dist/slack/index.d.ts +24 -0
  36. package/dist/slack/index.d.ts.map +1 -0
  37. package/dist/slack/index.js +18 -0
  38. package/dist/slack/index.js.map +1 -0
  39. package/dist/slack/manifest.d.ts +23 -0
  40. package/dist/slack/manifest.d.ts.map +1 -0
  41. package/dist/slack/manifest.js +102 -0
  42. package/dist/slack/manifest.js.map +1 -0
  43. package/dist/slack/normalize.d.ts +35 -0
  44. package/dist/slack/normalize.d.ts.map +1 -0
  45. package/dist/slack/normalize.js +63 -0
  46. package/dist/slack/normalize.js.map +1 -0
  47. package/dist/slack/payloads.d.ts +36 -0
  48. package/dist/slack/payloads.d.ts.map +1 -0
  49. package/dist/slack/payloads.js +80 -0
  50. package/dist/slack/payloads.js.map +1 -0
  51. package/dist/slack/slackChannel.d.ts +152 -0
  52. package/dist/slack/slackChannel.d.ts.map +1 -0
  53. package/dist/slack/slackChannel.js +650 -0
  54. package/dist/slack/slackChannel.js.map +1 -0
  55. package/dist/slack/stream.d.ts +88 -0
  56. package/dist/slack/stream.d.ts.map +1 -0
  57. package/dist/slack/stream.js +418 -0
  58. package/dist/slack/stream.js.map +1 -0
  59. package/dist/slack/verify.d.ts +20 -0
  60. package/dist/slack/verify.d.ts.map +1 -0
  61. package/dist/slack/verify.js +32 -0
  62. package/dist/slack/verify.js.map +1 -0
  63. package/dist/telegram/api.d.ts +110 -0
  64. package/dist/telegram/api.d.ts.map +1 -0
  65. package/dist/telegram/api.js +170 -0
  66. package/dist/telegram/api.js.map +1 -0
  67. package/dist/telegram/format.d.ts +26 -0
  68. package/dist/telegram/format.d.ts.map +1 -0
  69. package/dist/telegram/format.js +56 -0
  70. package/dist/telegram/format.js.map +1 -0
  71. package/dist/telegram/html.d.ts +11 -0
  72. package/dist/telegram/html.d.ts.map +1 -0
  73. package/dist/telegram/html.js +35 -0
  74. package/dist/telegram/html.js.map +1 -0
  75. package/dist/telegram/index.d.ts +15 -0
  76. package/dist/telegram/index.d.ts.map +1 -0
  77. package/dist/telegram/index.js +15 -0
  78. package/dist/telegram/index.js.map +1 -0
  79. package/dist/telegram/stream.d.ts +59 -0
  80. package/dist/telegram/stream.d.ts.map +1 -0
  81. package/dist/telegram/stream.js +185 -0
  82. package/dist/telegram/stream.js.map +1 -0
  83. package/dist/telegram/telegramChannel.d.ts +136 -0
  84. package/dist/telegram/telegramChannel.d.ts.map +1 -0
  85. package/dist/telegram/telegramChannel.js +277 -0
  86. package/dist/telegram/telegramChannel.js.map +1 -0
  87. package/dist/telegram/verify.d.ts +7 -0
  88. package/dist/telegram/verify.d.ts.map +1 -0
  89. package/dist/telegram/verify.js +14 -0
  90. package/dist/telegram/verify.js.map +1 -0
  91. package/dist/types.d.ts +240 -0
  92. package/dist/types.d.ts.map +1 -0
  93. package/dist/types.js +12 -0
  94. package/dist/types.js.map +1 -0
  95. package/dist/whatsapp/api.d.ts +59 -0
  96. package/dist/whatsapp/api.d.ts.map +1 -0
  97. package/dist/whatsapp/api.js +154 -0
  98. package/dist/whatsapp/api.js.map +1 -0
  99. package/dist/whatsapp/index.d.ts +13 -0
  100. package/dist/whatsapp/index.d.ts.map +1 -0
  101. package/dist/whatsapp/index.js +13 -0
  102. package/dist/whatsapp/index.js.map +1 -0
  103. package/dist/whatsapp/verify.d.ts +17 -0
  104. package/dist/whatsapp/verify.d.ts.map +1 -0
  105. package/dist/whatsapp/verify.js +32 -0
  106. package/dist/whatsapp/verify.js.map +1 -0
  107. package/dist/whatsapp/whatsappChannel.d.ts +104 -0
  108. package/dist/whatsapp/whatsappChannel.d.ts.map +1 -0
  109. package/dist/whatsapp/whatsappChannel.js +217 -0
  110. package/dist/whatsapp/whatsappChannel.js.map +1 -0
  111. package/package.json +68 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kernel.js","sourceRoot":"","sources":["../src/kernel.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ import type { AppMessage } from "@intentface/latch-core";
2
+ import type { PendingApproval, PendingQuestion, RenderEvent } from "./types.js";
3
+ /**
4
+ * Fold a Latch run's streaming `Response` (the SSE the chat handler speaks —
5
+ * `runtime.handleChat` / `applyApproval` / `applyToolResult` all return it) into
6
+ * normalized `RenderEvent`s. Server-side and transport-agnostic: it consumes the
7
+ * public SSE contract, so a channel works whether the runtime is in-process or a
8
+ * remote Latch over HTTP.
9
+ *
10
+ * Approvals are intentionally NOT derived here — they are persisted message
11
+ * state, not stream chunks. After this generator finishes, ask
12
+ * {@link pendingApprovals} against fresh history.
13
+ */
14
+ export declare function consumeRun(response: Response): AsyncGenerator<RenderEvent>;
15
+ /**
16
+ * Scan the live pause point for tool parts parked in `approval-requested` with
17
+ * an undecided approval — the HITL prompts a channel should render as buttons
18
+ * (or, for `connect_*`, an authorize link). Mirrors the web UI's filter.
19
+ */
20
+ export declare function pendingApprovals(messages: AppMessage[]): PendingApproval[];
21
+ /**
22
+ * The questionnaire the turn is parked on, or null. Tail-scoped for the same
23
+ * reason as {@link pendingApprovals}: a parked `askUser` call buried by a later
24
+ * user turn will never resolve (the runtime closes it in the model projection),
25
+ * so re-prompting it would nag forever with buttons that can't complete.
26
+ *
27
+ * Answers go back via `runtime.applyToolResult` — ONE call closes the whole tool
28
+ * call, so a channel must collect every question's answer before submitting.
29
+ */
30
+ export declare function pendingQuestion(messages: AppMessage[]): PendingQuestion | null;
31
+ /**
32
+ * True for the error `handleChat` throws when a decision is still outstanding
33
+ * (`PendingApprovalError` in latch-core). Structural check on the stable `code`
34
+ * so this package stays decoupled from the runtime's classes.
35
+ */
36
+ export declare function isPendingApprovalError(e: unknown): boolean;
37
+ /**
38
+ * True for the runtime's refusal when a turn is already live in the chat
39
+ * (`ChatBusyError`, code `chat_busy`) — the storage-level one-active-run-per-
40
+ * chat rule. A channel renders it as "still working", not as an error.
41
+ */
42
+ export declare function isChatBusyError(e: unknown): boolean;
43
+ //# sourceMappingURL=render.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAY,WAAW,EAAE,MAAM,YAAY,CAAC;AAE1F;;;;;;;;;;GAUG;AACH,wBAAuB,UAAU,CAAC,QAAQ,EAAE,QAAQ,GAAG,cAAc,CAAC,WAAW,CAAC,CAkEjF;AAsCD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,UAAU,EAAE,GAAG,eAAe,EAAE,CAsC1E;AAKD;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,UAAU,EAAE,GAAG,eAAe,GAAG,IAAI,CAY9E;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAE1D;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAEnD"}
package/dist/render.js ADDED
@@ -0,0 +1,192 @@
1
+ import { jsonSchema, parseJsonEventStream } from "ai";
2
+ /**
3
+ * Fold a Latch run's streaming `Response` (the SSE the chat handler speaks —
4
+ * `runtime.handleChat` / `applyApproval` / `applyToolResult` all return it) into
5
+ * normalized `RenderEvent`s. Server-side and transport-agnostic: it consumes the
6
+ * public SSE contract, so a channel works whether the runtime is in-process or a
7
+ * remote Latch over HTTP.
8
+ *
9
+ * Approvals are intentionally NOT derived here — they are persisted message
10
+ * state, not stream chunks. After this generator finishes, ask
11
+ * {@link pendingApprovals} against fresh history.
12
+ */
13
+ export async function* consumeRun(response) {
14
+ if (!response.body)
15
+ return;
16
+ const stream = parseJsonEventStream({
17
+ stream: response.body,
18
+ schema: jsonSchema({}),
19
+ });
20
+ const reader = stream.getReader();
21
+ // tool-input-start gives us the name; tool-output-* only the id — remember it.
22
+ const toolNames = new Map();
23
+ yield { type: "status", status: "working" };
24
+ try {
25
+ for (;;) {
26
+ const { done, value } = await reader.read();
27
+ if (done)
28
+ break;
29
+ if (!value.success)
30
+ continue;
31
+ const chunk = value.value;
32
+ switch (chunk.type) {
33
+ case "text-delta":
34
+ if (chunk.delta)
35
+ yield { type: "text-delta", text: chunk.delta };
36
+ break;
37
+ case "reasoning-delta":
38
+ if (chunk.delta)
39
+ yield { type: "reasoning-delta", text: chunk.delta };
40
+ break;
41
+ case "tool-input-start":
42
+ toolNames.set(chunk.toolCallId, chunk.toolName);
43
+ break;
44
+ case "tool-input-available":
45
+ toolNames.set(chunk.toolCallId, chunk.toolName);
46
+ yield {
47
+ type: "tool-start",
48
+ toolCallId: chunk.toolCallId,
49
+ toolName: chunk.toolName,
50
+ input: chunk.input,
51
+ };
52
+ break;
53
+ case "tool-output-available":
54
+ yield {
55
+ type: "tool-end",
56
+ toolCallId: chunk.toolCallId,
57
+ toolName: toolNames.get(chunk.toolCallId) ?? "",
58
+ output: chunk.output,
59
+ };
60
+ break;
61
+ case "tool-output-error":
62
+ yield {
63
+ type: "tool-end",
64
+ toolCallId: chunk.toolCallId,
65
+ toolName: toolNames.get(chunk.toolCallId) ?? "",
66
+ error: chunk.errorText,
67
+ };
68
+ break;
69
+ case "error":
70
+ yield { type: "error", message: chunk.errorText || "The run failed." };
71
+ break;
72
+ }
73
+ }
74
+ }
75
+ finally {
76
+ reader.releaseLock();
77
+ }
78
+ yield { type: "finish" };
79
+ }
80
+ // ── Approvals (from persisted history, not the stream) ──────────────────────
81
+ const CONNECT_PREFIX = "connect_";
82
+ /** Bare tool name for a tool part (`tool-web_search` → `web_search`). */
83
+ function toolNameOf(part) {
84
+ if (part.type === "dynamic-tool")
85
+ return part.toolName ?? "";
86
+ return part.type.replace(/^tool-/, "");
87
+ }
88
+ /**
89
+ * Parts of the LAST assistant message — the live pause point.
90
+ *
91
+ * A paused turn's gated calls and client-tool calls all sit on the assistant
92
+ * message it paused on (a resume starts a new one). Undecided parts in older
93
+ * messages belong to abandoned turns: the runtime's own gate ignores them (see
94
+ * `hasPendingApproval` in latch-core) and `closeDanglingToolCalls` fabricates a
95
+ * terminal result for the model view. Scanning all of history instead re-posts
96
+ * the same stale card on every later turn.
97
+ */
98
+ function lastAssistantParts(messages) {
99
+ const last = messages[messages.length - 1];
100
+ // Strictly the FINAL message: a later user message means the turn moved on and
101
+ // buried whatever the old one was waiting for.
102
+ if (last?.role !== "assistant")
103
+ return [];
104
+ return (last.parts ?? []);
105
+ }
106
+ /**
107
+ * Scan the live pause point for tool parts parked in `approval-requested` with
108
+ * an undecided approval — the HITL prompts a channel should render as buttons
109
+ * (or, for `connect_*`, an authorize link). Mirrors the web UI's filter.
110
+ */
111
+ export function pendingApprovals(messages) {
112
+ const out = [];
113
+ for (const part of lastAssistantParts(messages)) {
114
+ // A gated tool inside a spawned subagent bubbles up as a
115
+ // `data-subagent-approval` part (not a tool part). Surface it so the
116
+ // channel renders Approve/Deny; the decision routes via applyApproval.
117
+ const sub = part;
118
+ if (sub.type === "data-subagent-approval") {
119
+ if (sub.data?.approvalId && sub.data.approved === undefined) {
120
+ out.push({
121
+ approvalId: sub.data.approvalId,
122
+ toolName: sub.data.summaries?.join(", ") || "connector action",
123
+ input: undefined,
124
+ isConnect: false,
125
+ });
126
+ }
127
+ continue;
128
+ }
129
+ const isTool = part.type === "dynamic-tool" || part.type.startsWith("tool-");
130
+ if (!isTool)
131
+ continue;
132
+ if (part.state !== "approval-requested")
133
+ continue;
134
+ const approvalId = part.approval?.id;
135
+ if (!approvalId || part.approval?.approved !== undefined)
136
+ continue;
137
+ const toolName = toolNameOf(part);
138
+ const isConnect = toolName.startsWith(CONNECT_PREFIX);
139
+ out.push({
140
+ approvalId,
141
+ toolName,
142
+ input: part.input,
143
+ isConnect,
144
+ connectionName: isConnect ? toolName.slice(CONNECT_PREFIX.length) : undefined,
145
+ });
146
+ }
147
+ return out;
148
+ }
149
+ /** The client-handled tool that asks the user questions. */
150
+ const ASK_USER_PART = "tool-askUser";
151
+ /**
152
+ * The questionnaire the turn is parked on, or null. Tail-scoped for the same
153
+ * reason as {@link pendingApprovals}: a parked `askUser` call buried by a later
154
+ * user turn will never resolve (the runtime closes it in the model projection),
155
+ * so re-prompting it would nag forever with buttons that can't complete.
156
+ *
157
+ * Answers go back via `runtime.applyToolResult` — ONE call closes the whole tool
158
+ * call, so a channel must collect every question's answer before submitting.
159
+ */
160
+ export function pendingQuestion(messages) {
161
+ for (const part of lastAssistantParts(messages)) {
162
+ if (part.type !== ASK_USER_PART || part.state !== "input-available")
163
+ continue;
164
+ const toolCallId = part.toolCallId;
165
+ const questions = part.input?.questions;
166
+ if (!toolCallId || !questions?.length)
167
+ continue;
168
+ // Drop malformed questions rather than rendering an empty keyboard.
169
+ const usable = questions.filter((q) => q?.question && q.options?.length);
170
+ if (!usable.length)
171
+ continue;
172
+ return { toolCallId, questions: usable };
173
+ }
174
+ return null;
175
+ }
176
+ /**
177
+ * True for the error `handleChat` throws when a decision is still outstanding
178
+ * (`PendingApprovalError` in latch-core). Structural check on the stable `code`
179
+ * so this package stays decoupled from the runtime's classes.
180
+ */
181
+ export function isPendingApprovalError(e) {
182
+ return e?.code === "pending_approval";
183
+ }
184
+ /**
185
+ * True for the runtime's refusal when a turn is already live in the chat
186
+ * (`ChatBusyError`, code `chat_busy`) — the storage-level one-active-run-per-
187
+ * chat rule. A channel renders it as "still working", not as an error.
188
+ */
189
+ export function isChatBusyError(e) {
190
+ return e?.code === "chat_busy";
191
+ }
192
+ //# sourceMappingURL=render.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render.js","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,207 @@
1
+ /**
2
+ * Minimal Slack Web API client — just the methods a channel needs.
3
+ *
4
+ * Form-encoded POSTs with a bearer bot token (Slack accepts form on every
5
+ * method used here, including the streaming ones; complex values like
6
+ * `blocks`/`chunks`/`metadata` go as JSON-in-form fields). Typed errors, a
7
+ * bounded retry policy, and an injectable fetch for tests:
8
+ *
9
+ * 429 → honor `Retry-After` (capped) and retry ONCE
10
+ * 5xx → retry once after a beat
11
+ * ok:false, 4xx → throw {@link SlackApiError} immediately (the caller
12
+ * decides what's fatal — e.g. `stopped_by_user` on a
13
+ * streaming append is a signal, not a failure)
14
+ */
15
+ export type SlackToken = string | (() => string | Promise<string>);
16
+ export declare class SlackApiError extends Error {
17
+ /** The Slack method that failed (`chat.postMessage`). */
18
+ readonly method: string;
19
+ /** HTTP status of the response (200 for ok:false payload errors). */
20
+ readonly status: number;
21
+ /** Slack's error code (`channel_not_found`, `stopped_by_user`, …) if any. */
22
+ readonly code?: string;
23
+ /** Seconds Slack asked us to wait, when it said. */
24
+ readonly retryAfterS?: number;
25
+ /**
26
+ * Slack's `response_metadata.messages`, when present — for
27
+ * `invalid_arguments` it names the offending field as a JSON pointer,
28
+ * which is the difference between a fix and a guessing game.
29
+ */
30
+ readonly detail?: string;
31
+ constructor(method: string, status: number, code?: string, retryAfterS?: number, detail?: string);
32
+ }
33
+ export interface SlackApiOptions {
34
+ /** Test seam / custom transport. */
35
+ fetchImpl?: typeof fetch;
36
+ /** Test seam — defaults to https://slack.com/api. */
37
+ baseUrl?: string;
38
+ /** Test seam for the retry waits. */
39
+ sleep?: (ms: number) => Promise<void>;
40
+ /** Per-request timeout; a hung Slack call must not hold a worker forever. */
41
+ timeoutMs?: number;
42
+ }
43
+ /** One streamed unit for `chat.appendStream`/`stopStream` `chunks[]`. */
44
+ export type StreamChunk = {
45
+ type: "markdown_text";
46
+ text: string;
47
+ } | {
48
+ type: "task_update";
49
+ id: string;
50
+ title: string;
51
+ status: "in_progress" | "complete" | "error";
52
+ details?: string;
53
+ output?: string;
54
+ } | {
55
+ type: "plan_update";
56
+ title: string;
57
+ } | {
58
+ type: "blocks";
59
+ blocks: unknown[];
60
+ };
61
+ /** A bot-scoped client bound to one token. */
62
+ export declare function slackApi(token: SlackToken, options?: SlackApiOptions): {
63
+ /**
64
+ * Post a message. NOTE: `markdown_text` is EXCLUSIVE with `text`/`blocks`
65
+ * (`markdown_text_conflict`) — for markdown with a notification fallback,
66
+ * use `markdown` blocks + `text` instead.
67
+ */
68
+ postMessage(input: {
69
+ channel: string;
70
+ text?: string;
71
+ blocks?: unknown[];
72
+ /** Slack renders this as full markdown (≤12k chars) — preferred for LLM output. */
73
+ markdown_text?: string;
74
+ thread_ts?: string;
75
+ username?: string;
76
+ icon_emoji?: string;
77
+ icon_url?: string;
78
+ metadata?: unknown;
79
+ }): Promise<{
80
+ ts: string;
81
+ channel: string;
82
+ }>;
83
+ /** Edit a previously posted message in place (e.g. resolve an approval card). */
84
+ update(input: {
85
+ channel: string;
86
+ ts: string;
87
+ text?: string;
88
+ blocks?: unknown[];
89
+ markdown_text?: string;
90
+ }): Promise<void>;
91
+ /** Delete one of the bot's own messages (dead-stream cleanup). */
92
+ deleteMessage(input: {
93
+ channel: string;
94
+ ts: string;
95
+ }): Promise<void>;
96
+ /** Post a message only the given user sees (sign-in links, refusals). */
97
+ postEphemeral(input: {
98
+ channel: string;
99
+ user: string;
100
+ text?: string;
101
+ blocks?: unknown[];
102
+ thread_ts?: string;
103
+ }): Promise<void>;
104
+ /**
105
+ * Open a streamed message. In a CHANNEL Slack requires `recipient_team_id`
106
+ * (`missing_recipient_team_id` otherwise); in the bot's DM it's optional.
107
+ */
108
+ startStream(input: {
109
+ channel: string;
110
+ thread_ts?: string;
111
+ recipient_team_id?: string;
112
+ recipient_user_id?: string;
113
+ /** `"timeline"` (default) = task cards interleaved with the streamed
114
+ * text; `"plan"` = tasks grouped in one plan block. Anything else is
115
+ * `invalid_arguments` — the "task" value we first shipped was one. */
116
+ task_display_mode?: "timeline" | "plan";
117
+ chunks?: StreamChunk[];
118
+ markdown_text?: string;
119
+ }): Promise<{
120
+ ts: string;
121
+ channel: string;
122
+ }>;
123
+ /**
124
+ * Append to a live stream. Throws `SlackApiError` with code
125
+ * `stopped_by_user` when the viewer pressed the native Stop button —
126
+ * callers treat that as a stop signal, not a failure.
127
+ */
128
+ appendStream(input: {
129
+ channel: string;
130
+ ts: string;
131
+ markdown_text?: string;
132
+ chunks?: StreamChunk[];
133
+ }): Promise<void>;
134
+ /** Close a stream, optionally with final content and (≤50) blocks. */
135
+ stopStream(input: {
136
+ channel: string;
137
+ ts: string;
138
+ markdown_text?: string;
139
+ chunks?: StreamChunk[];
140
+ blocks?: unknown[];
141
+ metadata?: unknown;
142
+ }): Promise<void>;
143
+ /**
144
+ * Set a session's lifecycle status (`processing` shows the working UI and,
145
+ * with the `agent_session_stopped` subscription, the Stop button). Creates
146
+ * the session if it doesn't exist. Status does NOT auto-clear.
147
+ */
148
+ sessionsSetStatus(input: {
149
+ channel_id: string;
150
+ status: "active" | "processing" | "suspended" | "closed";
151
+ thread_ts?: string;
152
+ title?: string;
153
+ icon_emoji?: string;
154
+ username?: string;
155
+ }): Promise<void>;
156
+ /** Fetch a thread's messages (oldest first) — for seeding prior context. */
157
+ threadReplies(channel: string, ts: string, limit?: number): Promise<{
158
+ userId?: string;
159
+ text: string;
160
+ isBot: boolean;
161
+ ts: string;
162
+ }[]>;
163
+ /** Channel history (newest first, as Slack returns it). */
164
+ conversationsHistory(input: {
165
+ channel: string;
166
+ limit?: number;
167
+ oldest?: string;
168
+ latest?: string;
169
+ }): Promise<{
170
+ userId?: string;
171
+ text: string;
172
+ isBot: boolean;
173
+ ts: string;
174
+ threadTs?: string;
175
+ }[]>;
176
+ /**
177
+ * ALL member ids of a conversation, paginated. `maxPages` bounds the walk;
178
+ * hitting the bound throws (callers gating access must fail CLOSED, never
179
+ * conclude "not a member" from a truncated list).
180
+ */
181
+ conversationsMembers(channel: string, maxPages?: number): Promise<string[]>;
182
+ /** Open (or fetch) a DM channel with a user; returns the IM channel id. */
183
+ openDm(user: string): Promise<string>;
184
+ /**
185
+ * The channels this bot can post to, for pickers. PUBLIC channels only:
186
+ * the manifest asks for `channels:read` but deliberately not `groups:read`
187
+ * for listing purposes — a private channel never appears here and has to
188
+ * be entered by id. One page — a picker doesn't need to paginate a
189
+ * workspace, and Slack caps `limit` at 1000 anyway.
190
+ */
191
+ conversationsList(limit?: number): Promise<{
192
+ id: string;
193
+ name: string;
194
+ }[]>;
195
+ /**
196
+ * v1 compatibility — the free-text assistant status line. Superseded by
197
+ * `sessionsSetStatus`; removed with the v1 channel.
198
+ * @deprecated
199
+ */
200
+ setStatus(input: {
201
+ channel_id: string;
202
+ thread_ts: string;
203
+ status: string;
204
+ }): Promise<void>;
205
+ };
206
+ export type SlackClient = ReturnType<typeof slackApi>;
207
+ //# sourceMappingURL=api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/slack/api.ts"],"names":[],"mappings":"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"}