lastlight 0.15.0 → 0.16.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/connectors/slack/connector.d.ts +44 -2
- package/dist/connectors/slack/connector.js +162 -9
- package/dist/connectors/slack/connector.js.map +1 -1
- package/dist/connectors/slack/mrkdwn.d.ts +11 -0
- package/dist/connectors/slack/mrkdwn.js +125 -8
- package/dist/connectors/slack/mrkdwn.js.map +1 -1
- package/dist/index.js +17 -0
- package/dist/index.js.map +1 -1
- package/dist/notify/blocks.d.ts +23 -0
- package/dist/notify/blocks.js +118 -0
- package/dist/notify/blocks.js.map +1 -0
- package/dist/notify/index.d.ts +2 -0
- package/dist/notify/index.js +1 -0
- package/dist/notify/index.js.map +1 -1
- package/dist/notify/notifier.d.ts +2 -1
- package/dist/notify/notifier.js +15 -2
- package/dist/notify/notifier.js.map +1 -1
- package/dist/notify/transports/github.d.ts +2 -2
- package/dist/notify/transports/github.js +2 -1
- package/dist/notify/transports/github.js.map +1 -1
- package/dist/notify/transports/slack.d.ts +3 -2
- package/dist/notify/transports/slack.js +12 -3
- package/dist/notify/transports/slack.js.map +1 -1
- package/dist/notify/types.d.ts +26 -2
- package/dist/workflows/phase-executor.d.ts +7 -0
- package/dist/workflows/phase-executor.js +11 -2
- package/dist/workflows/phase-executor.js.map +1 -1
- package/dist/workflows/runner.js +17 -0
- package/dist/workflows/runner.js.map +1 -1
- package/package.json +1 -1
- package/plugins/lastlight/.claude-plugin/plugin.json +1 -1
|
@@ -1,7 +1,21 @@
|
|
|
1
|
+
import { type KnownBlock } from "@slack/web-api";
|
|
1
2
|
import type { Hono } from "hono";
|
|
2
3
|
import { MessagingConnector } from "../messaging/base.js";
|
|
3
4
|
import type { SessionManager } from "../messaging/session-manager.js";
|
|
4
5
|
import type { MessagingConfig } from "../messaging/types.js";
|
|
6
|
+
import type { EventEnvelope } from "../types.js";
|
|
7
|
+
/**
|
|
8
|
+
* A resolved approval-button click, handed to the app for routing. `envelope`
|
|
9
|
+
* carries a `reply()` that posts a confirmation into the button's thread, so
|
|
10
|
+
* the same approval-resolution path used by `/approve` can run unchanged.
|
|
11
|
+
*/
|
|
12
|
+
export interface SlackApprovalAction {
|
|
13
|
+
decision: "approved" | "rejected";
|
|
14
|
+
/** The paused workflow run id (the button's `value`). */
|
|
15
|
+
workflowRunId: string;
|
|
16
|
+
sender: string;
|
|
17
|
+
envelope: EventEnvelope;
|
|
18
|
+
}
|
|
5
19
|
export interface SlackConnectorConfig extends MessagingConfig {
|
|
6
20
|
/** Bot User OAuth Token (xoxb-…) — used for all Web API calls (sending). */
|
|
7
21
|
botToken: string;
|
|
@@ -49,10 +63,28 @@ export declare class SlackConnector extends MessagingConnector {
|
|
|
49
63
|
/** Bounded set of processed Events API delivery ids, to drop Slack retries. */
|
|
50
64
|
private seenEventIds;
|
|
51
65
|
private seenEventOrder;
|
|
66
|
+
/** App-provided hook that routes an approval button click into the dispatcher. */
|
|
67
|
+
private approvalHandler?;
|
|
52
68
|
constructor(config: SlackConnectorConfig, sessionManager: SessionManager);
|
|
69
|
+
/**
|
|
70
|
+
* Register the hook that routes an approval button click into the app's
|
|
71
|
+
* dispatcher. Wired in `src/index.ts` (after the dispatch deps exist) to the
|
|
72
|
+
* same `approval-response` resolution path as the `/approve` slash command.
|
|
73
|
+
*/
|
|
74
|
+
onApprovalAction(handler: (action: SlackApprovalAction) => Promise<void>): void;
|
|
53
75
|
start(): Promise<void>;
|
|
54
76
|
stop(): Promise<void>;
|
|
55
|
-
|
|
77
|
+
/**
|
|
78
|
+
* Post a message. When `blocks` are supplied they carry the rich rendering;
|
|
79
|
+
* `text` is still sent as the notification preview + accessibility fallback
|
|
80
|
+
* (Slack requires it and truncates it for the push/desktop notification).
|
|
81
|
+
* When no explicit blocks are given but the text contains a markdown image,
|
|
82
|
+
* the message is auto-promoted to Block Kit so the image renders inline (the
|
|
83
|
+
* mrkdwn text path can only downgrade `` to a link); if Slack
|
|
84
|
+
* rejects the generated blocks (e.g. an unreachable image URL) it falls back
|
|
85
|
+
* to a plain-text post.
|
|
86
|
+
*/
|
|
87
|
+
sendMessage(channelId: string, threadId: string | null, text: string, blocks?: KnownBlock[]): Promise<string | void>;
|
|
56
88
|
/**
|
|
57
89
|
* Edit a previously-sent message in place (`chat.update`). Paired with the
|
|
58
90
|
* `ts` returned by `sendMessage`, this powers the single in-place status
|
|
@@ -61,7 +93,7 @@ export declare class SlackConnector extends MessagingConnector {
|
|
|
61
93
|
* silent — it does not re-notify — so a separate terminal message is posted
|
|
62
94
|
* at the end for an actual ping.
|
|
63
95
|
*/
|
|
64
|
-
updateMessage(channelId: string, ts: string, text: string): Promise<void>;
|
|
96
|
+
updateMessage(channelId: string, ts: string, text: string, blocks?: KnownBlock[]): Promise<void>;
|
|
65
97
|
addReaction(channelId: string, messageId: string, emoji: string): Promise<void>;
|
|
66
98
|
showTyping(channelId: string, messageId: string, threadRootId: string): Promise<void>;
|
|
67
99
|
/** Clear the thinking status after processing completes */
|
|
@@ -74,6 +106,16 @@ export declare class SlackConnector extends MessagingConnector {
|
|
|
74
106
|
* acks fast while processing the event asynchronously.
|
|
75
107
|
*/
|
|
76
108
|
private mountWebhookRoute;
|
|
109
|
+
/** Wire Bolt block-action listeners (socket mode) to the same handler. */
|
|
110
|
+
private setupInteractionListeners;
|
|
111
|
+
/**
|
|
112
|
+
* Resolve an approval button click: rewrite the prompt message to a
|
|
113
|
+
* button-free resolved state, then route the decision through the app's
|
|
114
|
+
* approval handler (the same path as the `/approve` slash command).
|
|
115
|
+
*/
|
|
116
|
+
private handleInteraction;
|
|
117
|
+
/** Rewrite an approval prompt to a resolved, button-free state. */
|
|
118
|
+
private resolveApprovalMessage;
|
|
77
119
|
/** Route a raw Events API `event` object to the right handler. */
|
|
78
120
|
private dispatchSlackEvent;
|
|
79
121
|
/**
|
|
@@ -2,7 +2,7 @@ import { App } from "@slack/bolt";
|
|
|
2
2
|
import { WebClient } from "@slack/web-api";
|
|
3
3
|
import { createHmac, timingSafeEqual } from "crypto";
|
|
4
4
|
import { MessagingConnector } from "../messaging/base.js";
|
|
5
|
-
import { markdownToSlackMrkdwn } from "./mrkdwn.js";
|
|
5
|
+
import { hasMarkdownImage, markdownToSlackBlocks, markdownToSlackMrkdwn } from "./mrkdwn.js";
|
|
6
6
|
/** Rotating status messages shown while the agent is thinking */
|
|
7
7
|
const THINKING_MESSAGES = [
|
|
8
8
|
"Thinking...",
|
|
@@ -45,6 +45,8 @@ export class SlackConnector extends MessagingConnector {
|
|
|
45
45
|
/** Bounded set of processed Events API delivery ids, to drop Slack retries. */
|
|
46
46
|
seenEventIds = new Set();
|
|
47
47
|
seenEventOrder = [];
|
|
48
|
+
/** App-provided hook that routes an approval button click into the dispatcher. */
|
|
49
|
+
approvalHandler;
|
|
48
50
|
constructor(config, sessionManager) {
|
|
49
51
|
super(config, sessionManager);
|
|
50
52
|
this.slackConfig = config;
|
|
@@ -70,6 +72,17 @@ export class SlackConnector extends MessagingConnector {
|
|
|
70
72
|
this.mountWebhookRoute(config.honoApp);
|
|
71
73
|
}
|
|
72
74
|
}
|
|
75
|
+
/**
|
|
76
|
+
* Register the hook that routes an approval button click into the app's
|
|
77
|
+
* dispatcher. Wired in `src/index.ts` (after the dispatch deps exist) to the
|
|
78
|
+
* same `approval-response` resolution path as the `/approve` slash command.
|
|
79
|
+
*/
|
|
80
|
+
onApprovalAction(handler) {
|
|
81
|
+
this.approvalHandler = handler;
|
|
82
|
+
// Socket mode needs Bolt action listeners; webhook mode uses the HTTP route.
|
|
83
|
+
if (this.bolt)
|
|
84
|
+
this.setupInteractionListeners();
|
|
85
|
+
}
|
|
73
86
|
async start() {
|
|
74
87
|
if (this.bolt) {
|
|
75
88
|
await this.bolt.start();
|
|
@@ -86,13 +99,46 @@ export class SlackConnector extends MessagingConnector {
|
|
|
86
99
|
}
|
|
87
100
|
// Webhook mode shares the GitHub connector's HTTP server; nothing to stop.
|
|
88
101
|
}
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
102
|
+
/**
|
|
103
|
+
* Post a message. When `blocks` are supplied they carry the rich rendering;
|
|
104
|
+
* `text` is still sent as the notification preview + accessibility fallback
|
|
105
|
+
* (Slack requires it and truncates it for the push/desktop notification).
|
|
106
|
+
* When no explicit blocks are given but the text contains a markdown image,
|
|
107
|
+
* the message is auto-promoted to Block Kit so the image renders inline (the
|
|
108
|
+
* mrkdwn text path can only downgrade `` to a link); if Slack
|
|
109
|
+
* rejects the generated blocks (e.g. an unreachable image URL) it falls back
|
|
110
|
+
* to a plain-text post.
|
|
111
|
+
*/
|
|
112
|
+
async sendMessage(channelId, threadId, text, blocks) {
|
|
113
|
+
const fallbackText = markdownToSlackMrkdwn(text);
|
|
114
|
+
const autoBlocks = !blocks && hasMarkdownImage(text);
|
|
115
|
+
const effectiveBlocks = blocks && blocks.length > 0
|
|
116
|
+
? blocks
|
|
117
|
+
: autoBlocks
|
|
118
|
+
? markdownToSlackBlocks(text)
|
|
119
|
+
: undefined;
|
|
120
|
+
try {
|
|
121
|
+
const result = await this.web.chat.postMessage({
|
|
122
|
+
channel: channelId,
|
|
123
|
+
text: fallbackText,
|
|
124
|
+
blocks: effectiveBlocks,
|
|
125
|
+
thread_ts: threadId || undefined,
|
|
126
|
+
});
|
|
127
|
+
return result.ts;
|
|
128
|
+
}
|
|
129
|
+
catch (err) {
|
|
130
|
+
// Only auto-generated image blocks are worth retrying without — an
|
|
131
|
+
// explicit-blocks caller owns its payload and should see the error.
|
|
132
|
+
if (!autoBlocks)
|
|
133
|
+
throw err;
|
|
134
|
+
console.warn(`[slack] image blocks rejected, falling back to text: ${err instanceof Error ? err.message : String(err)}`);
|
|
135
|
+
const result = await this.web.chat.postMessage({
|
|
136
|
+
channel: channelId,
|
|
137
|
+
text: fallbackText,
|
|
138
|
+
thread_ts: threadId || undefined,
|
|
139
|
+
});
|
|
140
|
+
return result.ts;
|
|
141
|
+
}
|
|
96
142
|
}
|
|
97
143
|
/**
|
|
98
144
|
* Edit a previously-sent message in place (`chat.update`). Paired with the
|
|
@@ -102,11 +148,17 @@ export class SlackConnector extends MessagingConnector {
|
|
|
102
148
|
* silent — it does not re-notify — so a separate terminal message is posted
|
|
103
149
|
* at the end for an actual ping.
|
|
104
150
|
*/
|
|
105
|
-
async updateMessage(channelId, ts, text) {
|
|
151
|
+
async updateMessage(channelId, ts, text, blocks) {
|
|
152
|
+
const effectiveBlocks = blocks && blocks.length > 0
|
|
153
|
+
? blocks
|
|
154
|
+
: hasMarkdownImage(text)
|
|
155
|
+
? markdownToSlackBlocks(text)
|
|
156
|
+
: []; // empty array (not undefined) clears any prior blocks on update
|
|
106
157
|
await this.web.chat.update({
|
|
107
158
|
channel: channelId,
|
|
108
159
|
ts,
|
|
109
160
|
text: markdownToSlackMrkdwn(text),
|
|
161
|
+
blocks: effectiveBlocks,
|
|
110
162
|
});
|
|
111
163
|
}
|
|
112
164
|
async addReaction(channelId, messageId, emoji) {
|
|
@@ -204,6 +256,107 @@ export class SlackConnector extends MessagingConnector {
|
|
|
204
256
|
}
|
|
205
257
|
return c.body(null, 200);
|
|
206
258
|
});
|
|
259
|
+
// Interactivity endpoint — Slack POSTs button clicks here as a
|
|
260
|
+
// form-encoded `payload=<json>` body (a DIFFERENT Request URL from the
|
|
261
|
+
// Events API above, configured under the app's Interactivity settings).
|
|
262
|
+
app.post("/webhooks/slack/interactions", async (c) => {
|
|
263
|
+
const body = await c.req.text();
|
|
264
|
+
const timestamp = c.req.header("x-slack-request-timestamp") || "";
|
|
265
|
+
const signature = c.req.header("x-slack-signature") || "";
|
|
266
|
+
if (!verifySlackSignature(body, timestamp, signature, this.slackConfig.signingSecret)) {
|
|
267
|
+
return c.json({ error: "Invalid signature" }, 401);
|
|
268
|
+
}
|
|
269
|
+
const raw = new URLSearchParams(body).get("payload");
|
|
270
|
+
if (!raw)
|
|
271
|
+
return c.body(null, 200);
|
|
272
|
+
let payload;
|
|
273
|
+
try {
|
|
274
|
+
payload = JSON.parse(raw);
|
|
275
|
+
}
|
|
276
|
+
catch {
|
|
277
|
+
return c.json({ error: "Invalid JSON" }, 400);
|
|
278
|
+
}
|
|
279
|
+
// Ack within Slack's 3s window; resolve the gate asynchronously.
|
|
280
|
+
setImmediate(() => {
|
|
281
|
+
this.handleInteraction(payload).catch((err) => console.error("[slack] interaction handler error:", err));
|
|
282
|
+
});
|
|
283
|
+
return c.body(null, 200);
|
|
284
|
+
});
|
|
285
|
+
}
|
|
286
|
+
/** Wire Bolt block-action listeners (socket mode) to the same handler. */
|
|
287
|
+
setupInteractionListeners() {
|
|
288
|
+
if (!this.bolt)
|
|
289
|
+
return;
|
|
290
|
+
const handle = async ({ ack, body }) => {
|
|
291
|
+
await ack();
|
|
292
|
+
await this.handleInteraction(body).catch((err) => console.error("[slack] interaction handler error:", err));
|
|
293
|
+
};
|
|
294
|
+
this.bolt.action("approval_approve", handle);
|
|
295
|
+
this.bolt.action("approval_reject", handle);
|
|
296
|
+
}
|
|
297
|
+
/**
|
|
298
|
+
* Resolve an approval button click: rewrite the prompt message to a
|
|
299
|
+
* button-free resolved state, then route the decision through the app's
|
|
300
|
+
* approval handler (the same path as the `/approve` slash command).
|
|
301
|
+
*/
|
|
302
|
+
async handleInteraction(payload) {
|
|
303
|
+
if (!payload || payload.type !== "block_actions")
|
|
304
|
+
return;
|
|
305
|
+
const action = Array.isArray(payload.actions) ? payload.actions[0] : undefined;
|
|
306
|
+
const actionId = action?.action_id;
|
|
307
|
+
if (actionId !== "approval_approve" && actionId !== "approval_reject")
|
|
308
|
+
return;
|
|
309
|
+
const channelId = payload.channel?.id;
|
|
310
|
+
const messageTs = payload.message?.ts;
|
|
311
|
+
const threadTs = payload.message?.thread_ts;
|
|
312
|
+
const workflowRunId = typeof action?.value === "string" ? action.value : "";
|
|
313
|
+
// Dedup Slack retries of the same interaction (at-least-once, like events).
|
|
314
|
+
const dedupKey = `interaction:${payload.trigger_id ?? `${channelId}:${messageTs}:${actionId}`}`;
|
|
315
|
+
if (this.markSeen(dedupKey))
|
|
316
|
+
return;
|
|
317
|
+
if (!workflowRunId || !this.approvalHandler)
|
|
318
|
+
return;
|
|
319
|
+
const decision = actionId === "approval_approve" ? "approved" : "rejected";
|
|
320
|
+
const sender = await this.resolveUsername(payload.user?.id ?? "");
|
|
321
|
+
// Rewrite the original message so the buttons can't be clicked twice.
|
|
322
|
+
await this.resolveApprovalMessage(payload, decision, sender).catch(() => { });
|
|
323
|
+
// Build a minimal envelope whose reply() posts a confirmation in-thread.
|
|
324
|
+
const replyThread = threadTs || messageTs || null;
|
|
325
|
+
const envelope = {
|
|
326
|
+
id: `slack-approval-${messageTs ?? workflowRunId}`,
|
|
327
|
+
source: this.name,
|
|
328
|
+
type: "message",
|
|
329
|
+
sender,
|
|
330
|
+
senderIsBot: false,
|
|
331
|
+
body: decision === "approved" ? "approve" : "reject",
|
|
332
|
+
raw: { channelId, threadId: replyThread, approvalAction: { decision, workflowRunId } },
|
|
333
|
+
reply: async (msg) => {
|
|
334
|
+
if (channelId)
|
|
335
|
+
await this.sendMessage(channelId, replyThread, msg);
|
|
336
|
+
},
|
|
337
|
+
timestamp: new Date(),
|
|
338
|
+
};
|
|
339
|
+
await this.approvalHandler({ decision, workflowRunId, sender, envelope });
|
|
340
|
+
}
|
|
341
|
+
/** Rewrite an approval prompt to a resolved, button-free state. */
|
|
342
|
+
async resolveApprovalMessage(payload, decision, sender) {
|
|
343
|
+
const channel = payload.channel?.id;
|
|
344
|
+
const ts = payload.message?.ts;
|
|
345
|
+
if (!channel || !ts)
|
|
346
|
+
return;
|
|
347
|
+
const verb = decision === "approved" ? "✅ Approved" : "❌ Rejected";
|
|
348
|
+
const original = Array.isArray(payload.message?.blocks) ? payload.message.blocks : [];
|
|
349
|
+
// Drop the interactive actions block; append a resolution status line.
|
|
350
|
+
const kept = original.filter((b) => b?.type !== "actions");
|
|
351
|
+
await this.web.chat.update({
|
|
352
|
+
channel,
|
|
353
|
+
ts,
|
|
354
|
+
text: `${verb} by ${sender}`,
|
|
355
|
+
blocks: [
|
|
356
|
+
...kept,
|
|
357
|
+
{ type: "context", elements: [{ type: "mrkdwn", text: `${verb} by ${sender}` }] },
|
|
358
|
+
],
|
|
359
|
+
});
|
|
207
360
|
}
|
|
208
361
|
/** Route a raw Events API `event` object to the right handler. */
|
|
209
362
|
async dispatchSlackEvent(event) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connector.js","sourceRoot":"","sources":["../../../src/connectors/slack/connector.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"connector.js","sourceRoot":"","sources":["../../../src/connectors/slack/connector.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { KnownBlock } from "@slack/web-api";
|
|
1
2
|
/**
|
|
2
3
|
* Convert standard Markdown to Slack's mrkdwn format.
|
|
3
4
|
*
|
|
@@ -6,3 +7,13 @@
|
|
|
6
7
|
* then restored after all transformations are applied.
|
|
7
8
|
*/
|
|
8
9
|
export declare function markdownToSlackMrkdwn(text: string): string;
|
|
10
|
+
/** True if the text contains at least one markdown image. */
|
|
11
|
+
export declare function hasMarkdownImage(text: string): boolean;
|
|
12
|
+
/**
|
|
13
|
+
* Convert markdown to Slack Block Kit, promoting markdown images to real
|
|
14
|
+
* `image` blocks — the mrkdwn text path can only downgrade `` to a
|
|
15
|
+
* link. Text between/around images is rendered as `section` mrkdwn blocks via
|
|
16
|
+
* {@link markdownToSlackMrkdwn}. A non-`http(s)` image URL is left as text
|
|
17
|
+
* (Slack rejects image blocks with an unusable URL).
|
|
18
|
+
*/
|
|
19
|
+
export declare function markdownToSlackBlocks(markdown: string): KnownBlock[];
|
|
@@ -26,10 +26,40 @@ function plainCell(cell) {
|
|
|
26
26
|
.replace(/`([^`]+)`/g, "$1")
|
|
27
27
|
.replace(/\*(.+?)\*/g, "$1");
|
|
28
28
|
}
|
|
29
|
+
/** Sizing caps for the monospace table fallback (Slack has no real tables). */
|
|
30
|
+
const MAX_COL_WIDTH = 28; // per-column char cap; longer cells are truncated
|
|
31
|
+
const MAX_TABLE_WIDTH = 72; // whole-row char budget (mobile-legible width)
|
|
32
|
+
const MAX_TABLE_ROWS = 30; // data rows rendered inline before eliding the rest
|
|
33
|
+
const MIN_COL_WIDTH = 3; // floor a column can be shrunk to
|
|
34
|
+
const GUTTER = " "; // between-column spacer
|
|
35
|
+
/** Truncate a cell to `width`, marking any elision with a trailing ellipsis. */
|
|
36
|
+
function truncateCell(cell, width) {
|
|
37
|
+
if (cell.length <= width)
|
|
38
|
+
return cell;
|
|
39
|
+
if (width <= 1)
|
|
40
|
+
return "…".slice(0, width);
|
|
41
|
+
return cell.slice(0, width - 1) + "…";
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Render a 2-column table as a `*label*: value` mrkdwn list. Used when the
|
|
45
|
+
* table is too wide for a legible monospace block — a stacked key/value list
|
|
46
|
+
* reads better on narrow (mobile) Slack views than a block that overflows the
|
|
47
|
+
* viewport. Emits Slack mrkdwn directly; the result is held as a placeholder so
|
|
48
|
+
* the `*bold*` is not re-processed by later transforms.
|
|
49
|
+
*/
|
|
50
|
+
function renderTwoColList(rows) {
|
|
51
|
+
// rows[0] is the header; the rest are key/value pairs.
|
|
52
|
+
return rows
|
|
53
|
+
.slice(1)
|
|
54
|
+
.map((r) => `*${r[0] ?? ""}*: ${r[1] ?? ""}`.replace(/\s+$/, ""))
|
|
55
|
+
.join("\n");
|
|
56
|
+
}
|
|
29
57
|
/**
|
|
30
58
|
* Render a GFM table block (header row, delimiter row, then data rows) as an
|
|
31
59
|
* aligned monospace code block. Slack has no table mrkdwn, so a raw GFM table
|
|
32
|
-
* shows as a wall of pipes; a fixed-width block keeps columns legible.
|
|
60
|
+
* shows as a wall of pipes; a fixed-width block keeps columns legible. Columns
|
|
61
|
+
* are capped and truncated, the whole row is kept within a mobile-legible
|
|
62
|
+
* budget, and very wide 2-column tables fall back to a stacked key/value list.
|
|
33
63
|
*/
|
|
34
64
|
function renderSlackTable(block) {
|
|
35
65
|
// Drop the delimiter row (index 1); keep header + data.
|
|
@@ -37,17 +67,48 @@ function renderSlackTable(block) {
|
|
|
37
67
|
.filter((_, idx) => idx !== 1)
|
|
38
68
|
.map((line) => splitTableCells(line).map(plainCell));
|
|
39
69
|
const colCount = Math.max(...rows.map((r) => r.length));
|
|
40
|
-
|
|
70
|
+
// Natural (uncapped) column widths + the row width they'd need.
|
|
71
|
+
const natural = [];
|
|
41
72
|
for (let c = 0; c < colCount; c++) {
|
|
42
|
-
|
|
73
|
+
natural[c] = Math.max(0, ...rows.map((r) => (r[c] ?? "").length));
|
|
74
|
+
}
|
|
75
|
+
const naturalWidth = natural.reduce((a, b) => a + b, 0) + GUTTER.length * (colCount - 1);
|
|
76
|
+
// A wide 2-column table reads better stacked as a key/value list on mobile
|
|
77
|
+
// than as a monospace block that overflows the viewport.
|
|
78
|
+
if (colCount === 2 && naturalWidth > MAX_TABLE_WIDTH) {
|
|
79
|
+
return renderTwoColList(rows);
|
|
80
|
+
}
|
|
81
|
+
// Cap each column, then, while the row is still too wide, shrink the widest
|
|
82
|
+
// column one char at a time until it fits the budget (or all hit the floor).
|
|
83
|
+
const widths = natural.map((w) => Math.min(w, MAX_COL_WIDTH));
|
|
84
|
+
const rowWidth = () => widths.reduce((a, b) => a + b, 0) + GUTTER.length * (colCount - 1);
|
|
85
|
+
while (rowWidth() > MAX_TABLE_WIDTH) {
|
|
86
|
+
let widest = -1;
|
|
87
|
+
let widestW = MIN_COL_WIDTH;
|
|
88
|
+
for (let c = 0; c < colCount; c++) {
|
|
89
|
+
if (widths[c] > widestW) {
|
|
90
|
+
widestW = widths[c];
|
|
91
|
+
widest = c;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
if (widest === -1)
|
|
95
|
+
break; // every column already at the floor
|
|
96
|
+
widths[widest] -= 1;
|
|
43
97
|
}
|
|
44
98
|
const fmtRow = (r) => widths
|
|
45
|
-
.map((w, c) => (r[c] ?? "").padEnd(w))
|
|
46
|
-
.join(
|
|
99
|
+
.map((w, c) => truncateCell(r[c] ?? "", w).padEnd(w))
|
|
100
|
+
.join(GUTTER)
|
|
47
101
|
.replace(/\s+$/, "");
|
|
48
|
-
const
|
|
49
|
-
|
|
50
|
-
|
|
102
|
+
const dataRows = rows.slice(1);
|
|
103
|
+
const lines = [
|
|
104
|
+
fmtRow(rows[0]),
|
|
105
|
+
widths.map((w) => "-".repeat(w)).join(GUTTER),
|
|
106
|
+
];
|
|
107
|
+
for (const r of dataRows.slice(0, MAX_TABLE_ROWS))
|
|
108
|
+
lines.push(fmtRow(r));
|
|
109
|
+
if (dataRows.length > MAX_TABLE_ROWS) {
|
|
110
|
+
lines.push(`… (${dataRows.length - MAX_TABLE_ROWS} more rows)`);
|
|
111
|
+
}
|
|
51
112
|
return "```\n" + lines.join("\n") + "\n```";
|
|
52
113
|
}
|
|
53
114
|
/**
|
|
@@ -120,4 +181,60 @@ export function markdownToSlackMrkdwn(text) {
|
|
|
120
181
|
out = out.replace(/\x00PH(\d+)\x00/g, (_m, idx) => placeholders[parseInt(idx)]);
|
|
121
182
|
return out;
|
|
122
183
|
}
|
|
184
|
+
// ── Block Kit conversion (inline images) ─────────────────────────────────────
|
|
185
|
+
/** Markdown image ``, optional title ignored. Fresh instance per use. */
|
|
186
|
+
const imageRegex = () => /!\[([^\]]*)\]\(([^)\s]+)(?:\s+"[^"]*")?\)/g;
|
|
187
|
+
/** Slack section text limit is 3000; batch under it with headroom. */
|
|
188
|
+
const MAX_SECTION_CHARS = 2900;
|
|
189
|
+
/** Slack caps a message at 50 blocks. */
|
|
190
|
+
const MAX_MESSAGE_BLOCKS = 50;
|
|
191
|
+
/** True if the text contains at least one markdown image. */
|
|
192
|
+
export function hasMarkdownImage(text) {
|
|
193
|
+
return imageRegex().test(text);
|
|
194
|
+
}
|
|
195
|
+
/** Append `raw` (converted to mrkdwn) as one or more section blocks. */
|
|
196
|
+
function pushTextSections(blocks, raw) {
|
|
197
|
+
const mrkdwn = markdownToSlackMrkdwn(raw).trim();
|
|
198
|
+
if (!mrkdwn)
|
|
199
|
+
return;
|
|
200
|
+
let buf = "";
|
|
201
|
+
for (const line of mrkdwn.split("\n")) {
|
|
202
|
+
const next = buf ? `${buf}\n${line}` : line;
|
|
203
|
+
if (next.length > MAX_SECTION_CHARS && buf) {
|
|
204
|
+
blocks.push({ type: "section", text: { type: "mrkdwn", text: buf } });
|
|
205
|
+
buf = line;
|
|
206
|
+
}
|
|
207
|
+
else {
|
|
208
|
+
buf = next;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
if (buf)
|
|
212
|
+
blocks.push({ type: "section", text: { type: "mrkdwn", text: buf } });
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Convert markdown to Slack Block Kit, promoting markdown images to real
|
|
216
|
+
* `image` blocks — the mrkdwn text path can only downgrade `` to a
|
|
217
|
+
* link. Text between/around images is rendered as `section` mrkdwn blocks via
|
|
218
|
+
* {@link markdownToSlackMrkdwn}. A non-`http(s)` image URL is left as text
|
|
219
|
+
* (Slack rejects image blocks with an unusable URL).
|
|
220
|
+
*/
|
|
221
|
+
export function markdownToSlackBlocks(markdown) {
|
|
222
|
+
const blocks = [];
|
|
223
|
+
const re = imageRegex();
|
|
224
|
+
let last = 0;
|
|
225
|
+
let m;
|
|
226
|
+
while ((m = re.exec(markdown)) !== null) {
|
|
227
|
+
const [full, alt, url] = m;
|
|
228
|
+
pushTextSections(blocks, markdown.slice(last, m.index));
|
|
229
|
+
last = m.index + full.length;
|
|
230
|
+
if (/^https?:\/\//i.test(url)) {
|
|
231
|
+
blocks.push({ type: "image", image_url: url, alt_text: (alt || url).slice(0, 2000) });
|
|
232
|
+
}
|
|
233
|
+
else {
|
|
234
|
+
pushTextSections(blocks, full);
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
pushTextSections(blocks, markdown.slice(last));
|
|
238
|
+
return blocks.slice(0, MAX_MESSAGE_BLOCKS);
|
|
239
|
+
}
|
|
123
240
|
//# sourceMappingURL=mrkdwn.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mrkdwn.js","sourceRoot":"","sources":["../../../src/connectors/slack/mrkdwn.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mrkdwn.js","sourceRoot":"","sources":["../../../src/connectors/slack/mrkdwn.ts"],"names":[],"mappings":"AAEA,2EAA2E;AAC3E,MAAM,eAAe,GAAG,qDAAqD,CAAC;AAE9E,oEAAoE;AACpE,SAAS,UAAU,CAAC,IAAY;IAC9B,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;AAClD,CAAC;AAED,2EAA2E;AAC3E,SAAS,eAAe,CAAC,IAAY;IACnC,OAAO,IAAI;SACR,IAAI,EAAE;SACN,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;SACvB,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;AAC1B,CAAC;AAED;;;;GAIG;AACH,SAAS,SAAS,CAAC,IAAY;IAC7B,OAAO,IAAI;SACR,OAAO,CAAC,0BAA0B,EAAE,SAAS,CAAC,CAAC,2BAA2B;SAC1E,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC;SAC/B,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC;SAC3B,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC;SAC3B,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC;SAC3B,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;AACjC,CAAC;AAED,+EAA+E;AAC/E,MAAM,aAAa,GAAG,EAAE,CAAC,CAAC,kDAAkD;AAC5E,MAAM,eAAe,GAAG,EAAE,CAAC,CAAC,+CAA+C;AAC3E,MAAM,cAAc,GAAG,EAAE,CAAC,CAAC,oDAAoD;AAC/E,MAAM,aAAa,GAAG,CAAC,CAAC,CAAC,kCAAkC;AAC3D,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,wBAAwB;AAE7C,gFAAgF;AAChF,SAAS,YAAY,CAAC,IAAY,EAAE,KAAa;IAC/C,IAAI,IAAI,CAAC,MAAM,IAAI,KAAK;QAAE,OAAO,IAAI,CAAC;IACtC,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAC3C,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;AACxC,CAAC;AAED;;;;;;GAMG;AACH,SAAS,gBAAgB,CAAC,IAAgB;IACxC,uDAAuD;IACvD,OAAO,IAAI;SACR,KAAK,CAAC,CAAC,CAAC;SACR,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;SAChE,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED;;;;;;GAMG;AACH,SAAS,gBAAgB,CAAC,KAAe;IACvC,wDAAwD;IACxD,MAAM,IAAI,GAAG,KAAK;SACf,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC;SAC7B,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;IACvD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IAExD,gEAAgE;IAChE,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;QAClC,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IACpE,CAAC;IACD,MAAM,YAAY,GAChB,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;IAEtE,2EAA2E;IAC3E,yDAAyD;IACzD,IAAI,QAAQ,KAAK,CAAC,IAAI,YAAY,GAAG,eAAe,EAAE,CAAC;QACrD,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAED,4EAA4E;IAC5E,6EAA6E;IAC7E,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC;IAC9D,MAAM,QAAQ,GAAG,GAAG,EAAE,CACpB,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;IACrE,OAAO,QAAQ,EAAE,GAAG,eAAe,EAAE,CAAC;QACpC,IAAI,MAAM,GAAG,CAAC,CAAC,CAAC;QAChB,IAAI,OAAO,GAAG,aAAa,CAAC;QAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;YAClC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC;gBACxB,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;gBACpB,MAAM,GAAG,CAAC,CAAC;YACb,CAAC;QACH,CAAC;QACD,IAAI,MAAM,KAAK,CAAC,CAAC;YAAE,MAAM,CAAC,oCAAoC;QAC9D,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IAED,MAAM,MAAM,GAAG,CAAC,CAAW,EAAU,EAAE,CACrC,MAAM;SACH,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;SACpD,IAAI,CAAC,MAAM,CAAC;SACZ,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAEzB,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC/B,MAAM,KAAK,GAAa;QACtB,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACf,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;KAC9C,CAAC;IACF,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IACzE,IAAI,QAAQ,CAAC,MAAM,GAAG,cAAc,EAAE,CAAC;QACrC,KAAK,CAAC,IAAI,CAAC,MAAM,QAAQ,CAAC,MAAM,GAAG,cAAc,aAAa,CAAC,CAAC;IAClE,CAAC;IACD,OAAO,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;AAC9C,CAAC;AAED;;;;GAIG;AACH,SAAS,qBAAqB,CAAC,IAAY,EAAE,MAAmC;IAC9E,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;QACxB,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YACvF,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACvC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACd,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACxE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YACxB,CAAC,GAAG,CAAC,CAAC;QACR,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACnB,CAAC,EAAE,CAAC;QACN,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAAY;IAChD,MAAM,YAAY,GAAa,EAAE,CAAC;IAElC,kDAAkD;IAClD,SAAS,IAAI,CAAC,OAAe;QAC3B,MAAM,GAAG,GAAG,YAAY,CAAC,MAAM,CAAC;QAChC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC3B,OAAO,SAAS,GAAG,MAAM,CAAC;IAC5B,CAAC;IAED,IAAI,GAAG,GAAG,IAAI,CAAC;IAEf,uDAAuD;IACvD,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,8BAA8B,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC;IAE9F,yEAAyE;IACzE,2EAA2E;IAC3E,6EAA6E;IAC7E,GAAG,GAAG,qBAAqB,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAE3E,yBAAyB;IACzB,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC;IAExE,iDAAiD;IACjD,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;IAE/C,yCAAyC;IACzC,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;IAC5C,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IAExC,oEAAoE;IACpE,gFAAgF;IAChF,gFAAgF;IAChF,yDAAyD;IAEzD,sCAAsC;IACtC,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IAExC,8DAA8D;IAC9D,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,2BAA2B,EAAE,SAAS,CAAC,CAAC;IAE1D,qCAAqC;IACrC,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,0BAA0B,EAAE,SAAS,CAAC,CAAC;IAEzD,qCAAqC;IACrC,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC;IAEzD,2BAA2B;IAC3B,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAEhF,OAAO,GAAG,CAAC;AACb,CAAC;AAED,gFAAgF;AAEhF,oFAAoF;AACpF,MAAM,UAAU,GAAG,GAAW,EAAE,CAAC,4CAA4C,CAAC;AAE9E,sEAAsE;AACtE,MAAM,iBAAiB,GAAG,IAAI,CAAC;AAC/B,yCAAyC;AACzC,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAE9B,6DAA6D;AAC7D,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,OAAO,UAAU,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjC,CAAC;AAED,wEAAwE;AACxE,SAAS,gBAAgB,CAAC,MAAoB,EAAE,GAAW;IACzD,MAAM,MAAM,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IACjD,IAAI,CAAC,MAAM;QAAE,OAAO;IACpB,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAC5C,IAAI,IAAI,CAAC,MAAM,GAAG,iBAAiB,IAAI,GAAG,EAAE,CAAC;YAC3C,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;YACtE,GAAG,GAAG,IAAI,CAAC;QACb,CAAC;aAAM,CAAC;YACN,GAAG,GAAG,IAAI,CAAC;QACb,CAAC;IACH,CAAC;IACD,IAAI,GAAG;QAAE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;AACjF,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CAAC,QAAgB;IACpD,MAAM,MAAM,GAAiB,EAAE,CAAC;IAChC,MAAM,EAAE,GAAG,UAAU,EAAE,CAAC;IACxB,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,IAAI,CAAyB,CAAC;IAC9B,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QACxC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;QAC3B,gBAAgB,CAAC,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QACxD,IAAI,GAAG,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;QAC7B,IAAI,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9B,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QACxF,CAAC;aAAM,CAAC;YACN,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IACD,gBAAgB,CAAC,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/C,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC;AAC7C,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -424,6 +424,7 @@ async function main() {
|
|
|
424
424
|
step: (k, s, d) => notifier?.step(k, s, d) ?? Promise.resolve(),
|
|
425
425
|
insertStep: (st, b) => notifier?.insertStep(st, b) ?? Promise.resolve(),
|
|
426
426
|
note: (m) => notifier?.note(m) ?? Promise.resolve(),
|
|
427
|
+
noteApproval: (m, meta) => notifier?.noteApproval(m, meta) ?? Promise.resolve(),
|
|
427
428
|
footer: (m) => notifier?.footer(m) ?? Promise.resolve(),
|
|
428
429
|
noteTerminal: (m) => notifier?.noteTerminal(m) ?? Promise.resolve(),
|
|
429
430
|
}
|
|
@@ -782,6 +783,22 @@ async function main() {
|
|
|
782
783
|
reviewPostsCheck: config.reviewPostsCheck,
|
|
783
784
|
publicUrl: config.publicUrl,
|
|
784
785
|
};
|
|
786
|
+
// Wire Slack approval buttons into the SAME approval-resolution path as the
|
|
787
|
+
// `/approve` slash command. The connector verifies + parses the button click
|
|
788
|
+
// (on /webhooks/slack/interactions) and hands us the workflow run id; we force
|
|
789
|
+
// the route to `approval-response`, reusing the whole dispatcher/resume seam.
|
|
790
|
+
if (slackConnector) {
|
|
791
|
+
slackConnector.onApprovalAction(async ({ decision, workflowRunId, sender, envelope }) => {
|
|
792
|
+
await dispatch(envelope, {
|
|
793
|
+
...dispatchDeps,
|
|
794
|
+
route: async () => ({
|
|
795
|
+
action: "handler",
|
|
796
|
+
handler: "approval-response",
|
|
797
|
+
context: { decision, workflowRunId, sender, source: "slack" },
|
|
798
|
+
}),
|
|
799
|
+
});
|
|
800
|
+
});
|
|
801
|
+
}
|
|
785
802
|
// One chat turn over HTTP — `lastlight chat` without a messaging platform.
|
|
786
803
|
// Routes through the SAME dispatcher seam Slack uses (forcing the chat
|
|
787
804
|
// handler), so the executions row, agent-session resume, and telemetry are
|