lastlight 0.4.0 → 0.6.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.
- package/.claude-plugin/marketplace.json +14 -0
- package/README.md +56 -6
- package/agent-context/rules.md +0 -38
- package/agent-context/soul.md +0 -11
- package/deploy/entrypoint.sh +21 -6
- package/deploy/sandbox-entrypoint.sh +1 -1
- package/dist/cli.js +24 -0
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +13 -2
- package/dist/config.js +29 -9
- package/dist/config.js.map +1 -1
- package/dist/connectors/messaging/base.js +22 -9
- package/dist/connectors/messaging/base.js.map +1 -1
- package/dist/connectors/slack/connector.d.ts +62 -9
- package/dist/connectors/slack/connector.js +216 -63
- package/dist/connectors/slack/connector.js.map +1 -1
- package/dist/connectors/slack/connector.test.d.ts +1 -0
- package/dist/connectors/slack/connector.test.js +135 -0
- package/dist/connectors/slack/connector.test.js.map +1 -0
- package/dist/connectors/types.d.ts +7 -0
- package/dist/engine/agent-executor.d.ts +29 -144
- package/dist/engine/agent-executor.js +280 -962
- package/dist/engine/agent-executor.js.map +1 -1
- package/dist/engine/agent-executor.seam.test.d.ts +1 -0
- package/dist/engine/agent-executor.seam.test.js +57 -0
- package/dist/engine/agent-executor.seam.test.js.map +1 -0
- package/dist/engine/dispatcher.d.ts +13 -0
- package/dist/engine/dispatcher.js +26 -7
- package/dist/engine/dispatcher.js.map +1 -1
- package/dist/engine/dispatcher.test.js.map +1 -1
- package/dist/engine/executors/backends.d.ts +41 -0
- package/dist/engine/executors/backends.js +541 -0
- package/dist/engine/executors/backends.js.map +1 -0
- package/dist/engine/executors/shared.d.ts +189 -0
- package/dist/engine/executors/shared.js +612 -0
- package/dist/engine/executors/shared.js.map +1 -0
- package/dist/engine/message-batcher.d.ts +32 -0
- package/dist/engine/message-batcher.js +109 -0
- package/dist/engine/message-batcher.js.map +1 -0
- package/dist/engine/message-batcher.test.d.ts +1 -0
- package/dist/engine/message-batcher.test.js +109 -0
- package/dist/engine/message-batcher.test.js.map +1 -0
- package/dist/engine/profiles.d.ts +9 -0
- package/dist/engine/profiles.js.map +1 -1
- package/dist/evals-api.d.ts +24 -0
- package/dist/evals-api.js +22 -0
- package/dist/evals-api.js.map +1 -0
- package/dist/index.js +41 -4
- package/dist/index.js.map +1 -1
- package/dist/sandbox/command-exec.integration.test.d.ts +1 -0
- package/dist/sandbox/command-exec.integration.test.js +183 -0
- package/dist/sandbox/command-exec.integration.test.js.map +1 -0
- package/dist/sandbox/docker.d.ts +32 -0
- package/dist/sandbox/docker.js +109 -4
- package/dist/sandbox/docker.js.map +1 -1
- package/dist/sandbox/index.d.ts +1 -1
- package/dist/sandbox/index.js +1 -1
- package/dist/sandbox/index.js.map +1 -1
- package/dist/sandbox/smol.d.ts +162 -0
- package/dist/sandbox/smol.integration.test.d.ts +1 -0
- package/dist/sandbox/smol.integration.test.js +130 -0
- package/dist/sandbox/smol.integration.test.js.map +1 -0
- package/dist/sandbox/smol.js +485 -0
- package/dist/sandbox/smol.js.map +1 -0
- package/dist/skills-install.d.ts +12 -0
- package/dist/skills-install.js +179 -0
- package/dist/skills-install.js.map +1 -0
- package/dist/workflows/loader.test.js +83 -0
- package/dist/workflows/loader.test.js.map +1 -1
- package/dist/workflows/phase-executor.d.ts +28 -3
- package/dist/workflows/phase-executor.js +170 -45
- package/dist/workflows/phase-executor.js.map +1 -1
- package/dist/workflows/phase-executor.test.js +64 -1
- package/dist/workflows/phase-executor.test.js.map +1 -1
- package/dist/workflows/runner.test.js +32 -27
- package/dist/workflows/runner.test.js.map +1 -1
- package/dist/workflows/schema.d.ts +20 -0
- package/dist/workflows/schema.js +72 -2
- package/dist/workflows/schema.js.map +1 -1
- package/package.json +15 -3
- package/plugins/lastlight/.claude-plugin/plugin.json +12 -0
- package/plugins/lastlight/README.md +44 -0
- package/plugins/lastlight/skills/lastlight-client/SKILL.md +82 -0
- package/plugins/lastlight/skills/lastlight-evals/SKILL.md +97 -0
- package/plugins/lastlight/skills/lastlight-evals/references/instance-schema.md +84 -0
- package/plugins/lastlight/skills/lastlight-evals/references/models-json.md +42 -0
- package/plugins/lastlight/skills/lastlight-overlay/SKILL.md +72 -0
- package/plugins/lastlight/skills/lastlight-overlay/references/forking.md +55 -0
- package/plugins/lastlight/skills/lastlight-overlay/references/overlay-layout.md +52 -0
- package/plugins/lastlight/skills/lastlight-server/SKILL.md +124 -0
- package/plugins/lastlight/skills/lastlight-server/references/env-schema.md +103 -0
- package/plugins/lastlight/skills/lastlight-server/references/operations.md +60 -0
- package/sandbox.Dockerfile +7 -0
- package/skills/browser-qa/scripts/agent-browser.mjs +15 -0
- package/skills/demo/SKILL.md +45 -19
- package/skills/demo/scripts/compose-demo.sh +77 -39
- package/workflows/examples/bash-smoke.yaml +41 -0
- package/workflows/prompts/demo.md +27 -5
- package/workflows/qa-test.yaml +1 -1
- package/workflows/verify.yaml +1 -1
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -39,10 +39,15 @@ export class MessagingConnector extends EventEmitter {
|
|
|
39
39
|
const cleanText = this.stripBotMention(text).trim();
|
|
40
40
|
if (!cleanText)
|
|
41
41
|
return;
|
|
42
|
-
// Thread anchor for status indicators / replies
|
|
43
|
-
// existing thread
|
|
44
|
-
//
|
|
45
|
-
//
|
|
42
|
+
// Thread anchor for status indicators / replies, and the session key.
|
|
43
|
+
// A reply inside an existing thread carries its parent thread ts and
|
|
44
|
+
// continues that thread/session; a top-level message (no thread_ts —
|
|
45
|
+
// e.g. the user starting a NEW conversation in a DM, or a fresh channel
|
|
46
|
+
// @mention) roots a new thread on its own ts. This is exactly Slack's
|
|
47
|
+
// own threading: each distinct thread is its own conversation, so each
|
|
48
|
+
// maps to its own session. (Do NOT collapse top-level DM messages into
|
|
49
|
+
// the most-recent thread — that strands a deliberately-new thread's
|
|
50
|
+
// replies back in the old one.)
|
|
46
51
|
const replyThreadId = threadId || messageId;
|
|
47
52
|
// Show acknowledgment
|
|
48
53
|
this.showTyping(channelId, messageId, replyThreadId).catch(() => { });
|
|
@@ -53,9 +58,14 @@ export class MessagingConnector extends EventEmitter {
|
|
|
53
58
|
threadId: replyThreadId,
|
|
54
59
|
userId: platformUserId,
|
|
55
60
|
});
|
|
56
|
-
//
|
|
57
|
-
|
|
58
|
-
|
|
61
|
+
// NOTE: conversation persistence (user + assistant rows in
|
|
62
|
+
// messaging_messages, plus touchSession) is owned solely by the chat
|
|
63
|
+
// engine (src/engine/chat-runner.ts), which is the only path common to
|
|
64
|
+
// every chat surface — Slack here and the CLI /api/chat route, which
|
|
65
|
+
// never touches this connector. Recording here as well double-wrote
|
|
66
|
+
// every turn (a clean copy AND chat-runner's untrusted-wrapped copy)
|
|
67
|
+
// and fed both back into the model's rehydrated history. Build the
|
|
68
|
+
// session for routing/ids only; let chat-runner do the writes.
|
|
59
69
|
// Build the reply callback — sends to same channel/thread
|
|
60
70
|
const reply = async (msg) => {
|
|
61
71
|
// Clear thinking indicator before sending response
|
|
@@ -65,9 +75,11 @@ export class MessagingConnector extends EventEmitter {
|
|
|
65
75
|
for (const chunk of chunks) {
|
|
66
76
|
await this.sendMessage(channelId, replyThreadId, chunk);
|
|
67
77
|
}
|
|
68
|
-
// Record assistant message
|
|
69
|
-
this.sessionManager.addMessage(session.id, "assistant", msg);
|
|
70
78
|
};
|
|
79
|
+
// Re-show the thinking indicator at the start of each turn. The per-arrival
|
|
80
|
+
// showTyping above is cleared by the first turn's reply, so without this a
|
|
81
|
+
// burst that drains as a second batch would process with no indicator.
|
|
82
|
+
const typing = () => this.showTyping(channelId, messageId, replyThreadId);
|
|
71
83
|
// Build EventEnvelope
|
|
72
84
|
const envelope = {
|
|
73
85
|
id: `${this.name}-${messageId}`,
|
|
@@ -84,6 +96,7 @@ export class MessagingConnector extends EventEmitter {
|
|
|
84
96
|
threadId: replyThreadId,
|
|
85
97
|
},
|
|
86
98
|
reply,
|
|
99
|
+
typing,
|
|
87
100
|
timestamp: new Date(),
|
|
88
101
|
};
|
|
89
102
|
this.emit("event", envelope);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/connectors/messaging/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAMtC;;;;;;;;GAQG;AACH,MAAM,OAAgB,kBAAmB,SAAQ,YAAY;IAEjD,MAAM,CAAkB;IACxB,cAAc,CAAiB;IAEzC,YAAY,MAAuB,EAAE,cAA8B;QACjE,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;IACvC,CAAC;IAeD,qFAAqF;IACrF,KAAK,CAAC,WAAW,CAAC,UAAkB,EAAE,SAAiB,IAAkB,CAAC;IAE1E;;;OAGG;IACO,KAAK,CAAC,qBAAqB,CAAC,MAA6B;QACjE,MAAM,EAAE,cAAc,EAAE,gBAAgB,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC;QAEhH,kBAAkB;QAClB,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;YAC9F,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,8CAA8C,gBAAgB,KAAK,cAAc,GAAG,CAAC,CAAC;YAC/G,OAAO;QACT,CAAC;QAED,gFAAgF;QAChF,IAAI,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACxB,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,CAAC;gBACtF,OAAO;YACT,CAAC;QACH,CAAC;QAED,0CAA0C;QAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;QACpD,IAAI,CAAC,SAAS;YAAE,OAAO;QAEvB,
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/connectors/messaging/base.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,27 +1,54 @@
|
|
|
1
|
+
import type { Hono } from "hono";
|
|
1
2
|
import { MessagingConnector } from "../messaging/base.js";
|
|
2
3
|
import type { SessionManager } from "../messaging/session-manager.js";
|
|
3
4
|
import type { MessagingConfig } from "../messaging/types.js";
|
|
4
5
|
export interface SlackConnectorConfig extends MessagingConfig {
|
|
5
|
-
/** Bot User OAuth Token (xoxb
|
|
6
|
+
/** Bot User OAuth Token (xoxb-…) — used for all Web API calls (sending). */
|
|
6
7
|
botToken: string;
|
|
7
|
-
/**
|
|
8
|
-
|
|
8
|
+
/** How events are received. */
|
|
9
|
+
mode: "webhook" | "socket";
|
|
10
|
+
/** App-Level Token for Socket Mode (xapp-…). Required when mode === "socket". */
|
|
11
|
+
appToken?: string;
|
|
12
|
+
/** Events API signing secret. Required when mode === "webhook". */
|
|
13
|
+
signingSecret?: string;
|
|
9
14
|
/** Channel ID for cron report delivery */
|
|
10
15
|
deliveryChannel?: string;
|
|
16
|
+
/**
|
|
17
|
+
* Shared Hono app to mount `POST /webhooks/slack` on (webhook mode). This is
|
|
18
|
+
* the same HTTP server the GitHub webhook + /api/chat already run on. Must be
|
|
19
|
+
* present in webhook mode.
|
|
20
|
+
*/
|
|
21
|
+
honoApp?: Hono;
|
|
11
22
|
}
|
|
12
23
|
/**
|
|
13
|
-
* Slack connector
|
|
24
|
+
* Slack connector. Two receive modes:
|
|
25
|
+
*
|
|
26
|
+
* - **webhook** (default/prod): the HTTP Events API. Slack POSTs to
|
|
27
|
+
* `/webhooks/slack`; we verify the signing-secret signature, answer the
|
|
28
|
+
* one-time url_verification handshake, dedup retries by `event_id`, and ack
|
|
29
|
+
* within Slack's 3s window while processing async. Slack retries failed
|
|
30
|
+
* deliveries, so this is at-least-once — it does not silently drop messages
|
|
31
|
+
* the way Socket Mode does.
|
|
32
|
+
* - **socket** (dev fallback): Socket Mode over a WebSocket, no public URL
|
|
33
|
+
* needed. At-most-once; kept only for local development.
|
|
34
|
+
*
|
|
35
|
+
* Sending is identical in both modes via a `WebClient`.
|
|
14
36
|
*
|
|
15
37
|
* Behaviors:
|
|
16
|
-
* - DMs: responds to every message
|
|
17
|
-
* - Channels: only responds when @mentioned
|
|
18
|
-
* - Supports multi-turn conversations via SessionManager
|
|
38
|
+
* - DMs: responds to every message (subscribe `message.im` in webhook mode)
|
|
39
|
+
* - Channels: only responds when @mentioned (subscribe `app_mention`)
|
|
19
40
|
*/
|
|
20
41
|
export declare class SlackConnector extends MessagingConnector {
|
|
21
42
|
readonly name = "slack";
|
|
22
|
-
|
|
43
|
+
/** Web API client for sending — used in both modes. */
|
|
44
|
+
private web;
|
|
45
|
+
/** Bolt app — constructed only in socket mode, purely as the receiver. */
|
|
46
|
+
private bolt;
|
|
23
47
|
private slackConfig;
|
|
24
48
|
private userCache;
|
|
49
|
+
/** Bounded set of processed Events API delivery ids, to drop Slack retries. */
|
|
50
|
+
private seenEventIds;
|
|
51
|
+
private seenEventOrder;
|
|
25
52
|
constructor(config: SlackConnectorConfig, sessionManager: SessionManager);
|
|
26
53
|
start(): Promise<void>;
|
|
27
54
|
stop(): Promise<void>;
|
|
@@ -41,7 +68,33 @@ export declare class SlackConnector extends MessagingConnector {
|
|
|
41
68
|
clearTyping(channelId: string, threadId: string): Promise<void>;
|
|
42
69
|
/** Send a message to the configured delivery channel (for cron reports) */
|
|
43
70
|
sendToDeliveryChannel(text: string): Promise<void>;
|
|
44
|
-
|
|
71
|
+
/**
|
|
72
|
+
* Mount `POST /webhooks/slack` on the shared Hono app. Verifies the request
|
|
73
|
+
* signature, handles the url_verification handshake, dedups retries, and
|
|
74
|
+
* acks fast while processing the event asynchronously.
|
|
75
|
+
*/
|
|
76
|
+
private mountWebhookRoute;
|
|
77
|
+
/** Route a raw Events API `event` object to the right handler. */
|
|
78
|
+
private dispatchSlackEvent;
|
|
79
|
+
/**
|
|
80
|
+
* Record an Events API delivery id as seen. Returns true if it was already
|
|
81
|
+
* seen (a Slack retry). Bounded to the most recent ~1000 ids.
|
|
82
|
+
*/
|
|
83
|
+
private markSeen;
|
|
84
|
+
private setupSocketListeners;
|
|
85
|
+
/** A raw Slack `message` event (DM or channel). */
|
|
86
|
+
private onMessageEvent;
|
|
87
|
+
/** A raw Slack `app_mention` event (always a channel mention). */
|
|
88
|
+
private onAppMention;
|
|
45
89
|
/** Resolve a Slack user ID to a username (cached) */
|
|
46
90
|
private resolveUsername;
|
|
47
91
|
}
|
|
92
|
+
/**
|
|
93
|
+
* Verify a Slack Events API request signature.
|
|
94
|
+
*
|
|
95
|
+
* Slack signs `v0:{timestamp}:{rawBody}` with the app's signing secret and
|
|
96
|
+
* sends it as `x-slack-signature: v0=…`. We recompute and compare in constant
|
|
97
|
+
* time, and reject requests whose timestamp is more than 5 minutes off (replay
|
|
98
|
+
* protection). `now` is injectable for tests. Exported for unit testing.
|
|
99
|
+
*/
|
|
100
|
+
export declare function verifySlackSignature(body: string, timestamp: string, signature: string, signingSecret: string, now?: number): boolean;
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { App } from "@slack/bolt";
|
|
2
|
+
import { WebClient } from "@slack/web-api";
|
|
3
|
+
import { createHmac, timingSafeEqual } from "crypto";
|
|
2
4
|
import { MessagingConnector } from "../messaging/base.js";
|
|
3
5
|
import { markdownToSlackMrkdwn } from "./mrkdwn.js";
|
|
4
6
|
/** Rotating status messages shown while the agent is thinking */
|
|
@@ -15,38 +17,77 @@ const THINKING_MESSAGES = [
|
|
|
15
17
|
"Almost there...",
|
|
16
18
|
];
|
|
17
19
|
/**
|
|
18
|
-
* Slack connector
|
|
20
|
+
* Slack connector. Two receive modes:
|
|
21
|
+
*
|
|
22
|
+
* - **webhook** (default/prod): the HTTP Events API. Slack POSTs to
|
|
23
|
+
* `/webhooks/slack`; we verify the signing-secret signature, answer the
|
|
24
|
+
* one-time url_verification handshake, dedup retries by `event_id`, and ack
|
|
25
|
+
* within Slack's 3s window while processing async. Slack retries failed
|
|
26
|
+
* deliveries, so this is at-least-once — it does not silently drop messages
|
|
27
|
+
* the way Socket Mode does.
|
|
28
|
+
* - **socket** (dev fallback): Socket Mode over a WebSocket, no public URL
|
|
29
|
+
* needed. At-most-once; kept only for local development.
|
|
30
|
+
*
|
|
31
|
+
* Sending is identical in both modes via a `WebClient`.
|
|
19
32
|
*
|
|
20
33
|
* Behaviors:
|
|
21
|
-
* - DMs: responds to every message
|
|
22
|
-
* - Channels: only responds when @mentioned
|
|
23
|
-
* - Supports multi-turn conversations via SessionManager
|
|
34
|
+
* - DMs: responds to every message (subscribe `message.im` in webhook mode)
|
|
35
|
+
* - Channels: only responds when @mentioned (subscribe `app_mention`)
|
|
24
36
|
*/
|
|
25
37
|
export class SlackConnector extends MessagingConnector {
|
|
26
38
|
name = "slack";
|
|
27
|
-
|
|
39
|
+
/** Web API client for sending — used in both modes. */
|
|
40
|
+
web;
|
|
41
|
+
/** Bolt app — constructed only in socket mode, purely as the receiver. */
|
|
42
|
+
bolt = null;
|
|
28
43
|
slackConfig;
|
|
29
44
|
userCache = new Map(); // userId → username
|
|
45
|
+
/** Bounded set of processed Events API delivery ids, to drop Slack retries. */
|
|
46
|
+
seenEventIds = new Set();
|
|
47
|
+
seenEventOrder = [];
|
|
30
48
|
constructor(config, sessionManager) {
|
|
31
49
|
super(config, sessionManager);
|
|
32
50
|
this.slackConfig = config;
|
|
33
|
-
this.
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
51
|
+
this.web = new WebClient(config.botToken);
|
|
52
|
+
if (config.mode === "socket") {
|
|
53
|
+
if (!config.appToken)
|
|
54
|
+
throw new Error("[slack] socket mode requires appToken");
|
|
55
|
+
this.bolt = new App({
|
|
56
|
+
token: config.botToken,
|
|
57
|
+
appToken: config.appToken,
|
|
58
|
+
socketMode: true,
|
|
59
|
+
});
|
|
60
|
+
this.setupSocketListeners();
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
if (!config.honoApp) {
|
|
64
|
+
throw new Error("[slack] webhook mode requires an HTTP server to mount /webhooks/slack on " +
|
|
65
|
+
"(none available — is the GitHub webhook connector configured?). " +
|
|
66
|
+
"Set SLACK_MODE=socket for a standalone Slack deployment.");
|
|
67
|
+
}
|
|
68
|
+
if (!config.signingSecret)
|
|
69
|
+
throw new Error("[slack] webhook mode requires signingSecret");
|
|
70
|
+
this.mountWebhookRoute(config.honoApp);
|
|
71
|
+
}
|
|
39
72
|
}
|
|
40
73
|
async start() {
|
|
41
|
-
|
|
42
|
-
|
|
74
|
+
if (this.bolt) {
|
|
75
|
+
await this.bolt.start();
|
|
76
|
+
console.log(`[slack] Connected via Socket Mode`);
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
console.log(`[slack] Listening via HTTP Events API at /webhooks/slack`);
|
|
80
|
+
}
|
|
43
81
|
}
|
|
44
82
|
async stop() {
|
|
45
|
-
|
|
46
|
-
|
|
83
|
+
if (this.bolt) {
|
|
84
|
+
await this.bolt.stop();
|
|
85
|
+
console.log(`[slack] Disconnected`);
|
|
86
|
+
}
|
|
87
|
+
// Webhook mode shares the GitHub connector's HTTP server; nothing to stop.
|
|
47
88
|
}
|
|
48
89
|
async sendMessage(channelId, threadId, text) {
|
|
49
|
-
const result = await this.
|
|
90
|
+
const result = await this.web.chat.postMessage({
|
|
50
91
|
channel: channelId,
|
|
51
92
|
text: markdownToSlackMrkdwn(text),
|
|
52
93
|
thread_ts: threadId || undefined,
|
|
@@ -62,7 +103,7 @@ export class SlackConnector extends MessagingConnector {
|
|
|
62
103
|
* at the end for an actual ping.
|
|
63
104
|
*/
|
|
64
105
|
async updateMessage(channelId, ts, text) {
|
|
65
|
-
await this.
|
|
106
|
+
await this.web.chat.update({
|
|
66
107
|
channel: channelId,
|
|
67
108
|
ts,
|
|
68
109
|
text: markdownToSlackMrkdwn(text),
|
|
@@ -70,7 +111,7 @@ export class SlackConnector extends MessagingConnector {
|
|
|
70
111
|
}
|
|
71
112
|
async addReaction(channelId, messageId, emoji) {
|
|
72
113
|
try {
|
|
73
|
-
await this.
|
|
114
|
+
await this.web.reactions.add({
|
|
74
115
|
channel: channelId,
|
|
75
116
|
timestamp: messageId,
|
|
76
117
|
name: emoji,
|
|
@@ -85,7 +126,7 @@ export class SlackConnector extends MessagingConnector {
|
|
|
85
126
|
// thread_ts MUST be the thread root — passing the new reply's ts in an
|
|
86
127
|
// existing thread silently errors and the indicator never shows.
|
|
87
128
|
try {
|
|
88
|
-
await this.
|
|
129
|
+
await this.web.assistant.threads.setStatus({
|
|
89
130
|
channel_id: channelId,
|
|
90
131
|
thread_ts: threadRootId,
|
|
91
132
|
status: "Thinking...",
|
|
@@ -101,7 +142,7 @@ export class SlackConnector extends MessagingConnector {
|
|
|
101
142
|
/** Clear the thinking status after processing completes */
|
|
102
143
|
async clearTyping(channelId, threadId) {
|
|
103
144
|
try {
|
|
104
|
-
await this.
|
|
145
|
+
await this.web.assistant.threads.setStatus({
|
|
105
146
|
channel_id: channelId,
|
|
106
147
|
thread_ts: threadId,
|
|
107
148
|
status: "",
|
|
@@ -122,51 +163,137 @@ export class SlackConnector extends MessagingConnector {
|
|
|
122
163
|
await this.sendMessage(this.slackConfig.deliveryChannel, null, chunk);
|
|
123
164
|
}
|
|
124
165
|
}
|
|
125
|
-
|
|
166
|
+
// ── Webhook (HTTP Events API) receiver ─────────────────────────────────
|
|
167
|
+
/**
|
|
168
|
+
* Mount `POST /webhooks/slack` on the shared Hono app. Verifies the request
|
|
169
|
+
* signature, handles the url_verification handshake, dedups retries, and
|
|
170
|
+
* acks fast while processing the event asynchronously.
|
|
171
|
+
*/
|
|
172
|
+
mountWebhookRoute(app) {
|
|
173
|
+
app.post("/webhooks/slack", async (c) => {
|
|
174
|
+
const body = await c.req.text();
|
|
175
|
+
const timestamp = c.req.header("x-slack-request-timestamp") || "";
|
|
176
|
+
const signature = c.req.header("x-slack-signature") || "";
|
|
177
|
+
if (!verifySlackSignature(body, timestamp, signature, this.slackConfig.signingSecret)) {
|
|
178
|
+
return c.json({ error: "Invalid signature" }, 401);
|
|
179
|
+
}
|
|
180
|
+
let payload;
|
|
181
|
+
try {
|
|
182
|
+
payload = JSON.parse(body);
|
|
183
|
+
}
|
|
184
|
+
catch {
|
|
185
|
+
return c.json({ error: "Invalid JSON" }, 400);
|
|
186
|
+
}
|
|
187
|
+
// One-time handshake when (re)configuring the Request URL in the Slack app.
|
|
188
|
+
if (payload.type === "url_verification") {
|
|
189
|
+
return c.json({ challenge: payload.challenge });
|
|
190
|
+
}
|
|
191
|
+
if (payload.type === "event_callback") {
|
|
192
|
+
const eventId = typeof payload.event_id === "string" ? payload.event_id : undefined;
|
|
193
|
+
// Slack retries on any non-200 / >3s; dedup so a retry of an event we
|
|
194
|
+
// already accepted is a no-op rather than a double-processed message.
|
|
195
|
+
if (eventId && this.markSeen(eventId)) {
|
|
196
|
+
return c.body(null, 200);
|
|
197
|
+
}
|
|
198
|
+
const event = payload.event;
|
|
199
|
+
// Ack immediately, process async — never hold the response past 3s or
|
|
200
|
+
// Slack will retry (and we'd handle it twice if it slipped past dedup).
|
|
201
|
+
setImmediate(() => {
|
|
202
|
+
this.dispatchSlackEvent(event).catch((err) => console.error("[slack] event handler error:", err));
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
return c.body(null, 200);
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
/** Route a raw Events API `event` object to the right handler. */
|
|
209
|
+
async dispatchSlackEvent(event) {
|
|
210
|
+
if (!event || typeof event !== "object")
|
|
211
|
+
return;
|
|
212
|
+
if (event.type === "message") {
|
|
213
|
+
await this.onMessageEvent(event);
|
|
214
|
+
}
|
|
215
|
+
else if (event.type === "app_mention") {
|
|
216
|
+
await this.onAppMention(event);
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Record an Events API delivery id as seen. Returns true if it was already
|
|
221
|
+
* seen (a Slack retry). Bounded to the most recent ~1000 ids.
|
|
222
|
+
*/
|
|
223
|
+
markSeen(eventId) {
|
|
224
|
+
if (this.seenEventIds.has(eventId))
|
|
225
|
+
return true;
|
|
226
|
+
this.seenEventIds.add(eventId);
|
|
227
|
+
this.seenEventOrder.push(eventId);
|
|
228
|
+
if (this.seenEventOrder.length > 1000) {
|
|
229
|
+
const evicted = this.seenEventOrder.shift();
|
|
230
|
+
if (evicted)
|
|
231
|
+
this.seenEventIds.delete(evicted);
|
|
232
|
+
}
|
|
233
|
+
return false;
|
|
234
|
+
}
|
|
235
|
+
// ── Socket Mode receiver (dev fallback) ────────────────────────────────
|
|
236
|
+
setupSocketListeners() {
|
|
126
237
|
// Handle all message events (DMs, channels, groups)
|
|
127
|
-
this.
|
|
128
|
-
|
|
129
|
-
const msg = message;
|
|
130
|
-
if (msg.subtype)
|
|
131
|
-
return;
|
|
132
|
-
if (!msg.user || !msg.text)
|
|
133
|
-
return;
|
|
134
|
-
// Ignore bot messages
|
|
135
|
-
if (msg.bot_id)
|
|
136
|
-
return;
|
|
137
|
-
const username = await this.resolveUsername(msg.user);
|
|
138
|
-
const isDM = msg.channel_type === "im";
|
|
139
|
-
const isMention = this.config.botIdentifier
|
|
140
|
-
? msg.text.includes(`<@${this.config.botIdentifier}>`)
|
|
141
|
-
: false;
|
|
142
|
-
await this.handleIncomingMessage({
|
|
143
|
-
platformUserId: msg.user,
|
|
144
|
-
platformUsername: username,
|
|
145
|
-
channelId: msg.channel,
|
|
146
|
-
threadId: msg.thread_ts || null,
|
|
147
|
-
messageId: msg.ts,
|
|
148
|
-
text: msg.text,
|
|
149
|
-
isDM,
|
|
150
|
-
isMention,
|
|
151
|
-
raw: msg,
|
|
152
|
-
});
|
|
238
|
+
this.bolt.message(async ({ message }) => {
|
|
239
|
+
await this.onMessageEvent(message);
|
|
153
240
|
});
|
|
154
241
|
// Handle explicit @mentions (app_mention event)
|
|
155
|
-
this.
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
});
|
|
242
|
+
this.bolt.event("app_mention", async ({ event }) => {
|
|
243
|
+
await this.onAppMention(event);
|
|
244
|
+
});
|
|
245
|
+
}
|
|
246
|
+
// ── Shared event handling (both modes feed these) ──────────────────────
|
|
247
|
+
/** A raw Slack `message` event (DM or channel). */
|
|
248
|
+
async onMessageEvent(msg) {
|
|
249
|
+
// Log EVERY inbound message before any filtering. When a DM looks like it
|
|
250
|
+
// "dropped" messages, this line tells us whether Slack delivered the event
|
|
251
|
+
// at all and, if so, why we ignored it (a subtype like message_changed, a
|
|
252
|
+
// bot_id, or empty text) — versus Slack never sending it.
|
|
253
|
+
console.log(`[slack] inbound msg ch=${msg.channel ?? "-"} ts=${msg.ts ?? "-"} ` +
|
|
254
|
+
`thread_ts=${msg.thread_ts ?? "-"} subtype=${msg.subtype ?? "-"} ` +
|
|
255
|
+
`bot_id=${msg.bot_id ?? "-"} channel_type=${msg.channel_type ?? "-"} ` +
|
|
256
|
+
`user=${msg.user ?? "-"} hasText=${msg.text ? "y" : "n"}`);
|
|
257
|
+
// Filter out non-standard message subtypes (edits, deletes, joins, etc.)
|
|
258
|
+
if (msg.subtype)
|
|
259
|
+
return;
|
|
260
|
+
if (!msg.user || !msg.text)
|
|
261
|
+
return;
|
|
262
|
+
// Ignore bot messages
|
|
263
|
+
if (msg.bot_id)
|
|
264
|
+
return;
|
|
265
|
+
const username = await this.resolveUsername(msg.user);
|
|
266
|
+
const isDM = msg.channel_type === "im";
|
|
267
|
+
const isMention = this.config.botIdentifier
|
|
268
|
+
? msg.text.includes(`<@${this.config.botIdentifier}>`)
|
|
269
|
+
: false;
|
|
270
|
+
await this.handleIncomingMessage({
|
|
271
|
+
platformUserId: msg.user,
|
|
272
|
+
platformUsername: username,
|
|
273
|
+
channelId: msg.channel,
|
|
274
|
+
threadId: msg.thread_ts || null,
|
|
275
|
+
messageId: msg.ts,
|
|
276
|
+
text: msg.text,
|
|
277
|
+
isDM,
|
|
278
|
+
isMention,
|
|
279
|
+
raw: msg,
|
|
280
|
+
});
|
|
281
|
+
}
|
|
282
|
+
/** A raw Slack `app_mention` event (always a channel mention). */
|
|
283
|
+
async onAppMention(event) {
|
|
284
|
+
if (!event.user || !event.text)
|
|
285
|
+
return;
|
|
286
|
+
const username = await this.resolveUsername(event.user);
|
|
287
|
+
await this.handleIncomingMessage({
|
|
288
|
+
platformUserId: event.user,
|
|
289
|
+
platformUsername: username,
|
|
290
|
+
channelId: event.channel,
|
|
291
|
+
threadId: event.thread_ts || null,
|
|
292
|
+
messageId: event.ts,
|
|
293
|
+
text: event.text,
|
|
294
|
+
isDM: false,
|
|
295
|
+
isMention: true,
|
|
296
|
+
raw: event,
|
|
170
297
|
});
|
|
171
298
|
}
|
|
172
299
|
/** Resolve a Slack user ID to a username (cached) */
|
|
@@ -175,7 +302,7 @@ export class SlackConnector extends MessagingConnector {
|
|
|
175
302
|
if (cached)
|
|
176
303
|
return cached;
|
|
177
304
|
try {
|
|
178
|
-
const result = await this.
|
|
305
|
+
const result = await this.web.users.info({ user: userId });
|
|
179
306
|
const username = result.user?.name || result.user?.real_name || userId;
|
|
180
307
|
this.userCache.set(userId, username);
|
|
181
308
|
return username;
|
|
@@ -185,4 +312,30 @@ export class SlackConnector extends MessagingConnector {
|
|
|
185
312
|
}
|
|
186
313
|
}
|
|
187
314
|
}
|
|
315
|
+
/**
|
|
316
|
+
* Verify a Slack Events API request signature.
|
|
317
|
+
*
|
|
318
|
+
* Slack signs `v0:{timestamp}:{rawBody}` with the app's signing secret and
|
|
319
|
+
* sends it as `x-slack-signature: v0=…`. We recompute and compare in constant
|
|
320
|
+
* time, and reject requests whose timestamp is more than 5 minutes off (replay
|
|
321
|
+
* protection). `now` is injectable for tests. Exported for unit testing.
|
|
322
|
+
*/
|
|
323
|
+
export function verifySlackSignature(body, timestamp, signature, signingSecret, now = Date.now()) {
|
|
324
|
+
if (!timestamp || !signature || !signingSecret)
|
|
325
|
+
return false;
|
|
326
|
+
const ts = Number.parseInt(timestamp, 10);
|
|
327
|
+
if (!Number.isFinite(ts))
|
|
328
|
+
return false;
|
|
329
|
+
if (Math.abs(now / 1000 - ts) > 300)
|
|
330
|
+
return false; // 5-minute replay window
|
|
331
|
+
const expected = "v0=" + createHmac("sha256", signingSecret)
|
|
332
|
+
.update(`v0:${timestamp}:${body}`)
|
|
333
|
+
.digest("hex");
|
|
334
|
+
try {
|
|
335
|
+
return timingSafeEqual(Buffer.from(expected), Buffer.from(signature));
|
|
336
|
+
}
|
|
337
|
+
catch {
|
|
338
|
+
return false;
|
|
339
|
+
}
|
|
340
|
+
}
|
|
188
341
|
//# sourceMappingURL=connector.js.map
|