openryoko 2026.7.5 → 2026.7.10
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/package.json +1 -1
- package/dist/src/cli/setup.js +1 -1
- package/dist/src/connectors/slack/__tests__/conversation-tracker.test.js +27 -0
- package/dist/src/connectors/slack/__tests__/conversation-tracker.test.js.map +1 -1
- package/dist/src/connectors/slack/__tests__/respond-policy.test.d.ts +2 -0
- package/dist/src/connectors/slack/__tests__/respond-policy.test.d.ts.map +1 -0
- package/dist/src/connectors/slack/__tests__/respond-policy.test.js +137 -0
- package/dist/src/connectors/slack/__tests__/respond-policy.test.js.map +1 -0
- package/dist/src/connectors/slack/conversation-tracker.d.ts +7 -0
- package/dist/src/connectors/slack/conversation-tracker.d.ts.map +1 -1
- package/dist/src/connectors/slack/conversation-tracker.js +11 -0
- package/dist/src/connectors/slack/conversation-tracker.js.map +1 -1
- package/dist/src/connectors/slack/index.d.ts +8 -0
- package/dist/src/connectors/slack/index.d.ts.map +1 -1
- package/dist/src/connectors/slack/index.js +73 -40
- package/dist/src/connectors/slack/index.js.map +1 -1
- package/dist/src/connectors/slack/respond-policy.d.ts +44 -0
- package/dist/src/connectors/slack/respond-policy.d.ts.map +1 -0
- package/dist/src/connectors/slack/respond-policy.js +44 -0
- package/dist/src/connectors/slack/respond-policy.js.map +1 -0
- package/dist/src/shared/models.js +1 -1
- package/dist/src/shared/models.js.map +1 -1
- package/dist/src/shared/types.d.ts +24 -0
- package/dist/src/shared/types.d.ts.map +1 -1
- package/dist/web/404.html +1 -1
- package/dist/web/__next.__PAGE__.txt +1 -1
- package/dist/web/__next._full.txt +1 -1
- package/dist/web/__next._head.txt +1 -1
- package/dist/web/__next._index.txt +1 -1
- package/dist/web/__next._tree.txt +1 -1
- package/dist/web/_next/static/chunks/04wkiqo1hhxd0.js +1 -0
- package/dist/web/_not-found/__next._full.txt +1 -1
- package/dist/web/_not-found/__next._head.txt +1 -1
- package/dist/web/_not-found/__next._index.txt +1 -1
- package/dist/web/_not-found/__next._not-found.__PAGE__.txt +1 -1
- package/dist/web/_not-found/__next._not-found.txt +1 -1
- package/dist/web/_not-found/__next._tree.txt +1 -1
- package/dist/web/_not-found.html +1 -1
- package/dist/web/_not-found.txt +1 -1
- package/dist/web/chat/__next._full.txt +1 -1
- package/dist/web/chat/__next._head.txt +1 -1
- package/dist/web/chat/__next._index.txt +1 -1
- package/dist/web/chat/__next._tree.txt +1 -1
- package/dist/web/chat/__next.chat.__PAGE__.txt +1 -1
- package/dist/web/chat/__next.chat.txt +1 -1
- package/dist/web/chat.html +1 -1
- package/dist/web/chat.txt +1 -1
- package/dist/web/cron/__next._full.txt +1 -1
- package/dist/web/cron/__next._head.txt +1 -1
- package/dist/web/cron/__next._index.txt +1 -1
- package/dist/web/cron/__next._tree.txt +1 -1
- package/dist/web/cron/__next.cron.__PAGE__.txt +1 -1
- package/dist/web/cron/__next.cron.txt +1 -1
- package/dist/web/cron.html +1 -1
- package/dist/web/cron.txt +1 -1
- package/dist/web/index.html +1 -1
- package/dist/web/index.txt +1 -1
- package/dist/web/kanban/__next._full.txt +1 -1
- package/dist/web/kanban/__next._head.txt +1 -1
- package/dist/web/kanban/__next._index.txt +1 -1
- package/dist/web/kanban/__next._tree.txt +1 -1
- package/dist/web/kanban/__next.kanban.__PAGE__.txt +1 -1
- package/dist/web/kanban/__next.kanban.txt +1 -1
- package/dist/web/kanban.html +1 -1
- package/dist/web/kanban.txt +1 -1
- package/dist/web/logs/__next._full.txt +1 -1
- package/dist/web/logs/__next._head.txt +1 -1
- package/dist/web/logs/__next._index.txt +1 -1
- package/dist/web/logs/__next._tree.txt +1 -1
- package/dist/web/logs/__next.logs.__PAGE__.txt +1 -1
- package/dist/web/logs/__next.logs.txt +1 -1
- package/dist/web/logs.html +1 -1
- package/dist/web/logs.txt +1 -1
- package/dist/web/org/__next._full.txt +1 -1
- package/dist/web/org/__next._head.txt +1 -1
- package/dist/web/org/__next._index.txt +1 -1
- package/dist/web/org/__next._tree.txt +1 -1
- package/dist/web/org/__next.org.__PAGE__.txt +1 -1
- package/dist/web/org/__next.org.txt +1 -1
- package/dist/web/org.html +1 -1
- package/dist/web/org.txt +1 -1
- package/dist/web/sessions/__next._full.txt +1 -1
- package/dist/web/sessions/__next._head.txt +1 -1
- package/dist/web/sessions/__next._index.txt +1 -1
- package/dist/web/sessions/__next._tree.txt +1 -1
- package/dist/web/sessions/__next.sessions.__PAGE__.txt +1 -1
- package/dist/web/sessions/__next.sessions.txt +1 -1
- package/dist/web/sessions.html +1 -1
- package/dist/web/sessions.txt +1 -1
- package/dist/web/settings/__next._full.txt +2 -2
- package/dist/web/settings/__next._head.txt +1 -1
- package/dist/web/settings/__next._index.txt +1 -1
- package/dist/web/settings/__next._tree.txt +1 -1
- package/dist/web/settings/__next.settings.__PAGE__.txt +2 -2
- package/dist/web/settings/__next.settings.txt +1 -1
- package/dist/web/settings.html +1 -1
- package/dist/web/settings.txt +2 -2
- package/dist/web/skills/__next._full.txt +1 -1
- package/dist/web/skills/__next._head.txt +1 -1
- package/dist/web/skills/__next._index.txt +1 -1
- package/dist/web/skills/__next._tree.txt +1 -1
- package/dist/web/skills/__next.skills.__PAGE__.txt +1 -1
- package/dist/web/skills/__next.skills.txt +1 -1
- package/dist/web/skills.html +1 -1
- package/dist/web/skills.txt +1 -1
- package/package.json +1 -1
- package/template/config.default.yaml +4 -2
- package/template/docs/connectors.md +30 -0
- package/template/migrations/2026.7.10/MIGRATION.md +65 -0
- package/template/migrations/2026.7.10/config-patch.json +3 -0
- package/dist/web/_next/static/chunks/0ye0gt~bwlgy~.js +0 -1
- /package/dist/web/_next/static/{jsJO_tAphtOhs2xGLy0QA → hhYAL7ZMLLlvTxKXXOGJ6}/_buildManifest.js +0 -0
- /package/dist/web/_next/static/{jsJO_tAphtOhs2xGLy0QA → hhYAL7ZMLLlvTxKXXOGJ6}/_clientMiddlewareManifest.js +0 -0
- /package/dist/web/_next/static/{jsJO_tAphtOhs2xGLy0QA → hhYAL7ZMLLlvTxKXXOGJ6}/_ssgManifest.js +0 -0
package/dist/package.json
CHANGED
package/dist/src/cli/setup.js
CHANGED
|
@@ -129,4 +129,31 @@ describe("ConversationTracker — robustness", () => {
|
|
|
129
129
|
expect(t.isDmEquivalent({ channel: "C1", ts: "T3", userId: "U1" })).toBe(false);
|
|
130
130
|
});
|
|
131
131
|
});
|
|
132
|
+
describe("ConversationTracker.isBotEngagedThread", () => {
|
|
133
|
+
it("is true after the bot replies in the thread (recordBotInitiatedThread)", () => {
|
|
134
|
+
const t = new ConversationTracker();
|
|
135
|
+
t.recordBotInitiatedThread("C1", "T1");
|
|
136
|
+
expect(t.isBotEngagedThread("C1", "T1")).toBe(true);
|
|
137
|
+
});
|
|
138
|
+
it("is true after recordBotEngaged on a threaded message", () => {
|
|
139
|
+
const t = new ConversationTracker();
|
|
140
|
+
t.recordBotEngaged({ channel: "C1", threadTs: "T1", ts: "T2", userId: "U1" });
|
|
141
|
+
expect(t.isBotEngagedThread("C1", "T1")).toBe(true);
|
|
142
|
+
});
|
|
143
|
+
it("is false for threads the bot never engaged", () => {
|
|
144
|
+
const t = new ConversationTracker();
|
|
145
|
+
t.recordHumanMessage({ channel: "C1", threadTs: "T1", ts: "T2", userId: "U1" });
|
|
146
|
+
expect(t.isBotEngagedThread("C1", "T1")).toBe(false);
|
|
147
|
+
});
|
|
148
|
+
it("is false for user-key engagement (top-level messages, no thread)", () => {
|
|
149
|
+
const t = new ConversationTracker();
|
|
150
|
+
t.recordBotEngaged({ channel: "C1", ts: "T1", userId: "U1" });
|
|
151
|
+
expect(t.isBotEngagedThread("C1", "T1")).toBe(false);
|
|
152
|
+
});
|
|
153
|
+
it("tolerates missing fields", () => {
|
|
154
|
+
const t = new ConversationTracker();
|
|
155
|
+
expect(t.isBotEngagedThread("", "T1")).toBe(false);
|
|
156
|
+
expect(t.isBotEngagedThread("C1", "")).toBe(false);
|
|
157
|
+
});
|
|
158
|
+
});
|
|
132
159
|
//# sourceMappingURL=conversation-tracker.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversation-tracker.test.js","sourceRoot":"","sources":["../../../../../src/connectors/slack/__tests__/conversation-tracker.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"conversation-tracker.test.js","sourceRoot":"","sources":["../../../../../src/connectors/slack/__tests__/conversation-tracker.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"respond-policy.test.d.ts","sourceRoot":"","sources":["../../../../../src/connectors/slack/__tests__/respond-policy.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import { describe, it, expect } from "vitest";
|
|
2
|
+
import { scopeForChannelType, resolveRespondMode, evaluateRespondPolicy, hasMentionScope, respondPolicyNeedsTracking, } from "../respond-policy.js";
|
|
3
|
+
describe("scopeForChannelType", () => {
|
|
4
|
+
it("maps im to im", () => {
|
|
5
|
+
expect(scopeForChannelType("im")).toBe("im");
|
|
6
|
+
});
|
|
7
|
+
it("maps mpim to mpim", () => {
|
|
8
|
+
expect(scopeForChannelType("mpim")).toBe("mpim");
|
|
9
|
+
});
|
|
10
|
+
it("maps channel to channel", () => {
|
|
11
|
+
expect(scopeForChannelType("channel")).toBe("channel");
|
|
12
|
+
});
|
|
13
|
+
it("maps legacy private-channel type 'group' to channel", () => {
|
|
14
|
+
expect(scopeForChannelType("group")).toBe("channel");
|
|
15
|
+
});
|
|
16
|
+
it("maps unknown/undefined to channel (safe default)", () => {
|
|
17
|
+
expect(scopeForChannelType(undefined)).toBe("channel");
|
|
18
|
+
expect(scopeForChannelType("something-new")).toBe("channel");
|
|
19
|
+
});
|
|
20
|
+
});
|
|
21
|
+
describe("resolveRespondMode", () => {
|
|
22
|
+
it("defaults every scope to always when config is absent", () => {
|
|
23
|
+
expect(resolveRespondMode(undefined, "im")).toBe("always");
|
|
24
|
+
expect(resolveRespondMode(undefined, "mpim")).toBe("always");
|
|
25
|
+
expect(resolveRespondMode(undefined, "channel")).toBe("always");
|
|
26
|
+
});
|
|
27
|
+
it("defaults unset scopes to always when config is partial", () => {
|
|
28
|
+
const config = { channel: "mention" };
|
|
29
|
+
expect(resolveRespondMode(config, "im")).toBe("always");
|
|
30
|
+
expect(resolveRespondMode(config, "mpim")).toBe("always");
|
|
31
|
+
expect(resolveRespondMode(config, "channel")).toBe("mention");
|
|
32
|
+
});
|
|
33
|
+
it("treats invalid values as always (config files are untyped YAML)", () => {
|
|
34
|
+
const config = { channel: "sometimes" };
|
|
35
|
+
expect(resolveRespondMode(config, "channel")).toBe("always");
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
describe("evaluateRespondPolicy", () => {
|
|
39
|
+
const mentionOnly = {
|
|
40
|
+
im: "always",
|
|
41
|
+
mpim: "mention",
|
|
42
|
+
channel: "mention",
|
|
43
|
+
};
|
|
44
|
+
it("allows everything when config is absent (legacy behavior)", () => {
|
|
45
|
+
expect(evaluateRespondPolicy({
|
|
46
|
+
config: undefined,
|
|
47
|
+
channelType: "channel",
|
|
48
|
+
wasMentioned: false,
|
|
49
|
+
isEngagedThread: false,
|
|
50
|
+
}).allow).toBe(true);
|
|
51
|
+
});
|
|
52
|
+
it("allows DMs without a mention under the mention-only config", () => {
|
|
53
|
+
expect(evaluateRespondPolicy({
|
|
54
|
+
config: mentionOnly,
|
|
55
|
+
channelType: "im",
|
|
56
|
+
wasMentioned: false,
|
|
57
|
+
isEngagedThread: false,
|
|
58
|
+
}).allow).toBe(true);
|
|
59
|
+
});
|
|
60
|
+
it("drops un-mentioned channel messages", () => {
|
|
61
|
+
const decision = evaluateRespondPolicy({
|
|
62
|
+
config: mentionOnly,
|
|
63
|
+
channelType: "channel",
|
|
64
|
+
wasMentioned: false,
|
|
65
|
+
isEngagedThread: false,
|
|
66
|
+
});
|
|
67
|
+
expect(decision.allow).toBe(false);
|
|
68
|
+
if (!decision.allow)
|
|
69
|
+
expect(decision.reason).toContain("channel=mention");
|
|
70
|
+
});
|
|
71
|
+
it("drops un-mentioned group-DM (mpim) messages", () => {
|
|
72
|
+
expect(evaluateRespondPolicy({
|
|
73
|
+
config: mentionOnly,
|
|
74
|
+
channelType: "mpim",
|
|
75
|
+
wasMentioned: false,
|
|
76
|
+
isEngagedThread: false,
|
|
77
|
+
}).allow).toBe(false);
|
|
78
|
+
});
|
|
79
|
+
it("allows @-mentioned channel messages", () => {
|
|
80
|
+
expect(evaluateRespondPolicy({
|
|
81
|
+
config: mentionOnly,
|
|
82
|
+
channelType: "channel",
|
|
83
|
+
wasMentioned: true,
|
|
84
|
+
isEngagedThread: false,
|
|
85
|
+
}).allow).toBe(true);
|
|
86
|
+
});
|
|
87
|
+
it("allows un-mentioned follow-ups inside a bot-engaged thread by default", () => {
|
|
88
|
+
expect(evaluateRespondPolicy({
|
|
89
|
+
config: mentionOnly,
|
|
90
|
+
channelType: "channel",
|
|
91
|
+
wasMentioned: false,
|
|
92
|
+
isEngagedThread: true,
|
|
93
|
+
}).allow).toBe(true);
|
|
94
|
+
});
|
|
95
|
+
it("drops engaged-thread follow-ups when engagedThreads is false", () => {
|
|
96
|
+
expect(evaluateRespondPolicy({
|
|
97
|
+
config: { ...mentionOnly, engagedThreads: false },
|
|
98
|
+
channelType: "channel",
|
|
99
|
+
wasMentioned: false,
|
|
100
|
+
isEngagedThread: true,
|
|
101
|
+
}).allow).toBe(false);
|
|
102
|
+
});
|
|
103
|
+
it("treats legacy private-channel type 'group' under the channel scope", () => {
|
|
104
|
+
expect(evaluateRespondPolicy({
|
|
105
|
+
config: mentionOnly,
|
|
106
|
+
channelType: "group",
|
|
107
|
+
wasMentioned: false,
|
|
108
|
+
isEngagedThread: false,
|
|
109
|
+
}).allow).toBe(false);
|
|
110
|
+
});
|
|
111
|
+
it("drops everything in a never scope, even mentions", () => {
|
|
112
|
+
expect(evaluateRespondPolicy({
|
|
113
|
+
config: { channel: "never" },
|
|
114
|
+
channelType: "channel",
|
|
115
|
+
wasMentioned: true,
|
|
116
|
+
isEngagedThread: true,
|
|
117
|
+
}).allow).toBe(false);
|
|
118
|
+
});
|
|
119
|
+
});
|
|
120
|
+
describe("hasMentionScope / respondPolicyNeedsTracking", () => {
|
|
121
|
+
it("is false when config is absent", () => {
|
|
122
|
+
expect(hasMentionScope(undefined)).toBe(false);
|
|
123
|
+
expect(respondPolicyNeedsTracking(undefined)).toBe(false);
|
|
124
|
+
});
|
|
125
|
+
it("is false when no scope uses mention", () => {
|
|
126
|
+
expect(hasMentionScope({ im: "always", channel: "never" })).toBe(false);
|
|
127
|
+
});
|
|
128
|
+
it("is true when any scope uses mention", () => {
|
|
129
|
+
expect(hasMentionScope({ channel: "mention" })).toBe(true);
|
|
130
|
+
expect(hasMentionScope({ mpim: "mention" })).toBe(true);
|
|
131
|
+
});
|
|
132
|
+
it("needs tracking only when engaged-thread continuation is on", () => {
|
|
133
|
+
expect(respondPolicyNeedsTracking({ channel: "mention" })).toBe(true);
|
|
134
|
+
expect(respondPolicyNeedsTracking({ channel: "mention", engagedThreads: false })).toBe(false);
|
|
135
|
+
});
|
|
136
|
+
});
|
|
137
|
+
//# sourceMappingURL=respond-policy.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"respond-policy.test.js","sourceRoot":"","sources":["../../../../../src/connectors/slack/__tests__/respond-policy.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -42,6 +42,13 @@ export declare class ConversationTracker {
|
|
|
42
42
|
* this conversation.
|
|
43
43
|
*/
|
|
44
44
|
isDmEquivalent(input: ConversationKeyInput): boolean;
|
|
45
|
+
/**
|
|
46
|
+
* True when the bot has engaged (replied, reacted, or posted the root)
|
|
47
|
+
* in the given thread. Used by the deterministic respondTo gate to keep
|
|
48
|
+
* replying inside threads the bot is already part of without requiring a
|
|
49
|
+
* re-mention on every message.
|
|
50
|
+
*/
|
|
51
|
+
isBotEngagedThread(channel: string, threadTs: string): boolean;
|
|
45
52
|
/** For tests / debugging. */
|
|
46
53
|
size(): number;
|
|
47
54
|
/** Remove a key (e.g. on member_left_channel). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversation-tracker.d.ts","sourceRoot":"","sources":["../../../../src/connectors/slack/conversation-tracker.ts"],"names":[],"mappings":"AAsBA,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;CAChB;AASD,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwC;IAEhE;;;OAGG;IACH,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,oBAAoB,GAAG,MAAM,GAAG,IAAI;IAQzD;;;;OAIG;IACH,kBAAkB,CAAC,KAAK,EAAE,oBAAoB,GAAG,IAAI;IAMrD;;;;;;;;;;OAUG;IACH,gBAAgB,CAAC,KAAK,EAAE,oBAAoB,GAAG,IAAI;IAOnD;;;;;OAKG;IACH,wBAAwB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAQjE;;;;OAIG;IACH,cAAc,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO;IAQpD,6BAA6B;IAC7B,IAAI,IAAI,MAAM;IAId,kDAAkD;IAClD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAI7B,OAAO,CAAC,UAAU;IAelB,OAAO,CAAC,WAAW;IAOnB,OAAO,CAAC,KAAK;IAOb;;;;;;;;;OASG;IACH,OAAO,CAAC,qBAAqB;CAS9B"}
|
|
1
|
+
{"version":3,"file":"conversation-tracker.d.ts","sourceRoot":"","sources":["../../../../src/connectors/slack/conversation-tracker.ts"],"names":[],"mappings":"AAsBA,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;CAChB;AASD,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwC;IAEhE;;;OAGG;IACH,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,oBAAoB,GAAG,MAAM,GAAG,IAAI;IAQzD;;;;OAIG;IACH,kBAAkB,CAAC,KAAK,EAAE,oBAAoB,GAAG,IAAI;IAMrD;;;;;;;;;;OAUG;IACH,gBAAgB,CAAC,KAAK,EAAE,oBAAoB,GAAG,IAAI;IAOnD;;;;;OAKG;IACH,wBAAwB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAQjE;;;;OAIG;IACH,cAAc,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO;IAQpD;;;;;OAKG;IACH,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO;IAK9D,6BAA6B;IAC7B,IAAI,IAAI,MAAM;IAId,kDAAkD;IAClD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAI7B,OAAO,CAAC,UAAU;IAelB,OAAO,CAAC,WAAW;IAOnB,OAAO,CAAC,KAAK;IAOb;;;;;;;;;OASG;IACH,OAAO,CAAC,qBAAqB;CAS9B"}
|
|
@@ -92,6 +92,17 @@ export class ConversationTracker {
|
|
|
92
92
|
return false;
|
|
93
93
|
return state.botEngaged && state.humanSpeakers.size === 1;
|
|
94
94
|
}
|
|
95
|
+
/**
|
|
96
|
+
* True when the bot has engaged (replied, reacted, or posted the root)
|
|
97
|
+
* in the given thread. Used by the deterministic respondTo gate to keep
|
|
98
|
+
* replying inside threads the bot is already part of without requiring a
|
|
99
|
+
* re-mention on every message.
|
|
100
|
+
*/
|
|
101
|
+
isBotEngagedThread(channel, threadTs) {
|
|
102
|
+
if (!channel || !threadTs)
|
|
103
|
+
return false;
|
|
104
|
+
return this.entries.get(`${channel}:thread:${threadTs}`)?.botEngaged === true;
|
|
105
|
+
}
|
|
95
106
|
/** For tests / debugging. */
|
|
96
107
|
size() {
|
|
97
108
|
return this.entries.size;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversation-tracker.js","sourceRoot":"","sources":["../../../../src/connectors/slack/conversation-tracker.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"conversation-tracker.js","sourceRoot":"","sources":["../../../../src/connectors/slack/conversation-tracker.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,6 +23,7 @@ export declare class SlackConnector implements Connector {
|
|
|
23
23
|
private botUserId;
|
|
24
24
|
private typingIntervals;
|
|
25
25
|
private readonly triageConfig;
|
|
26
|
+
private readonly respondTo;
|
|
26
27
|
private readonly goalExtractionConfig;
|
|
27
28
|
private readonly portalName;
|
|
28
29
|
private readonly operatorName;
|
|
@@ -41,6 +42,13 @@ export declare class SlackConnector implements Connector {
|
|
|
41
42
|
*/
|
|
42
43
|
setTypingStatus(channelId: string, threadTs: string | undefined, status: string): Promise<void>;
|
|
43
44
|
constructor(config: SlackConnectorConfig, context?: SlackConnectorContext);
|
|
45
|
+
/**
|
|
46
|
+
* Conversation tracking feeds two consumers: triage DM-equivalence and the
|
|
47
|
+
* respondTo engaged-thread exception. When neither is active, tracking is
|
|
48
|
+
* skipped entirely — engaged entries can't be evicted, so tracking in the
|
|
49
|
+
* default configuration would just leak memory.
|
|
50
|
+
*/
|
|
51
|
+
private conversationTrackingEnabled;
|
|
44
52
|
private resolveSpeakerInfo;
|
|
45
53
|
private speakerTransportFields;
|
|
46
54
|
private runSlackTriage;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/connectors/slack/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,SAAS,EACT,qBAAqB,EACrB,eAAe,EACf,eAAe,EACf,YAAY,EACZ,oBAAoB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/connectors/slack/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,7 @@ import { formatResponse, downloadAttachment } from "./format.js";
|
|
|
4
4
|
import { normalizeSpeakerInfo } from "./speaker.js";
|
|
5
5
|
import { runTriage } from "./triage.js";
|
|
6
6
|
import { isShortAckCandidate } from "./triage-prompt.js";
|
|
7
|
+
import { evaluateRespondPolicy, hasMentionScope, respondPolicyNeedsTracking, } from "./respond-policy.js";
|
|
7
8
|
import { isOperatorSpeaker } from "../../shared/operator-match.js";
|
|
8
9
|
import { ConversationTracker } from "./conversation-tracker.js";
|
|
9
10
|
import { AgentsCanvasUpdater } from "./agents-canvas.js";
|
|
@@ -25,6 +26,7 @@ export class SlackConnector {
|
|
|
25
26
|
botUserId = null;
|
|
26
27
|
typingIntervals = new Map();
|
|
27
28
|
triageConfig;
|
|
29
|
+
respondTo;
|
|
28
30
|
goalExtractionConfig;
|
|
29
31
|
portalName;
|
|
30
32
|
operatorName;
|
|
@@ -105,6 +107,7 @@ export class SlackConnector {
|
|
|
105
107
|
: [];
|
|
106
108
|
this.allowedUsers = allowFrom.length > 0 ? new Set(allowFrom) : null;
|
|
107
109
|
this.triageConfig = config.triage;
|
|
110
|
+
this.respondTo = config.respondTo;
|
|
108
111
|
this.goalExtractionConfig = config.goalExtraction;
|
|
109
112
|
this.portalName = context.portalName;
|
|
110
113
|
this.operatorName = context.operatorName;
|
|
@@ -115,6 +118,15 @@ export class SlackConnector {
|
|
|
115
118
|
? new AgentsCanvasUpdater(this.app, config.agentsCanvas)
|
|
116
119
|
: null;
|
|
117
120
|
}
|
|
121
|
+
/**
|
|
122
|
+
* Conversation tracking feeds two consumers: triage DM-equivalence and the
|
|
123
|
+
* respondTo engaged-thread exception. When neither is active, tracking is
|
|
124
|
+
* skipped entirely — engaged entries can't be evicted, so tracking in the
|
|
125
|
+
* default configuration would just leak memory.
|
|
126
|
+
*/
|
|
127
|
+
conversationTrackingEnabled() {
|
|
128
|
+
return this.triageConfig?.enabled === true || respondPolicyNeedsTracking(this.respondTo);
|
|
129
|
+
}
|
|
118
130
|
async resolveSpeakerInfo(userId) {
|
|
119
131
|
if (!userId)
|
|
120
132
|
return null;
|
|
@@ -270,11 +282,56 @@ export class SlackConnector {
|
|
|
270
282
|
logger.debug(`Ignoring Slack message from unauthorized user ${event.user}`);
|
|
271
283
|
return;
|
|
272
284
|
}
|
|
285
|
+
const slackUserId = event.user;
|
|
286
|
+
const rawText = (event.text || "");
|
|
287
|
+
const channelType = event.channel_type || "channel";
|
|
288
|
+
const threadTs = event.thread_ts;
|
|
289
|
+
const wasMentioned = !!this.botUserId && rawText.includes(`<@${this.botUserId}>`);
|
|
290
|
+
const triageEnabled = this.triageConfig?.enabled === true;
|
|
291
|
+
const conversationKey = {
|
|
292
|
+
channel: event.channel,
|
|
293
|
+
threadTs,
|
|
294
|
+
ts: event.ts,
|
|
295
|
+
userId: slackUserId,
|
|
296
|
+
};
|
|
297
|
+
// Record the human speaker even for messages the gates below drop:
|
|
298
|
+
// a third human joining a thread must invalidate DM-equivalence
|
|
299
|
+
// whether or not we end up responding to their message.
|
|
300
|
+
if (this.conversationTrackingEnabled()) {
|
|
301
|
+
this.conversations.recordHumanMessage(conversationKey);
|
|
302
|
+
}
|
|
303
|
+
// Deterministic respondTo gate — evaluated before any network fetches
|
|
304
|
+
// and before LLM triage, so gated scopes cost nothing for dropped
|
|
305
|
+
// messages. "mention" scopes drop un-mentioned messages outright,
|
|
306
|
+
// except inside threads the bot has already engaged.
|
|
307
|
+
const respondDecision = evaluateRespondPolicy({
|
|
308
|
+
config: this.respondTo,
|
|
309
|
+
channelType,
|
|
310
|
+
wasMentioned,
|
|
311
|
+
isEngagedThread: !!threadTs &&
|
|
312
|
+
this.conversations.isBotEngagedThread(event.channel, threadTs),
|
|
313
|
+
});
|
|
314
|
+
if (!respondDecision.allow) {
|
|
315
|
+
logger.info(`[slack] respondTo gate → silent (${respondDecision.reason}) for ts=${event.ts}`);
|
|
316
|
+
return;
|
|
317
|
+
}
|
|
318
|
+
// Early silent for cross-bot / cross-user traffic in shared channels.
|
|
319
|
+
// If the message @-mentions specific user(s), none of whom are us, and
|
|
320
|
+
// it isn't a DM, stay silent — regardless of whether the thread was
|
|
321
|
+
// previously marked "active" by an earlier reply. The activeThread
|
|
322
|
+
// TTL exists for mid-conversation follow-ups, not for sibling mentions
|
|
323
|
+
// directed at another bot or human in the same channel.
|
|
324
|
+
if (!wasMentioned && this.botUserId && channelType !== "im") {
|
|
325
|
+
const mentionedUsers = Array.from(rawText.matchAll(/<@([UW][A-Z0-9]+)>/g), (m) => m[1]);
|
|
326
|
+
if (mentionedUsers.length > 0 && !mentionedUsers.includes(this.botUserId)) {
|
|
327
|
+
logger.info(`[slack] message @-mentions ${mentionedUsers.join(",")} (not us) — staying silent for ts=${event.ts}`);
|
|
328
|
+
return;
|
|
329
|
+
}
|
|
330
|
+
}
|
|
273
331
|
const sessionKey = deriveSessionKey(event);
|
|
274
332
|
const replyContext = buildReplyContext(event);
|
|
275
333
|
// Fetch parent message for thread replies so the session has full context
|
|
276
334
|
let parentContext = "";
|
|
277
|
-
const threadTs = event.thread_ts;
|
|
278
335
|
if (threadTs && threadTs !== event.ts) {
|
|
279
336
|
try {
|
|
280
337
|
const parentResult = await this.app.client.conversations.replies({
|
|
@@ -310,30 +367,13 @@ export class SlackConnector {
|
|
|
310
367
|
}
|
|
311
368
|
}
|
|
312
369
|
}
|
|
313
|
-
const slackUserId = event.user;
|
|
314
370
|
const [channelInfo, speaker] = await Promise.all([
|
|
315
371
|
this.resolveChannelInfo(event.channel),
|
|
316
372
|
this.resolveSpeakerInfo(slackUserId),
|
|
317
373
|
]);
|
|
318
374
|
const channelName = channelInfo.name;
|
|
319
|
-
const channelType = event.channel_type || "channel";
|
|
320
375
|
// DM is never "external"; otherwise trust the Slack Connect flag.
|
|
321
376
|
const channelExternal = channelType !== "im" && channelInfo.isExtShared;
|
|
322
|
-
const rawText = (event.text || "");
|
|
323
|
-
const wasMentioned = !!this.botUserId && rawText.includes(`<@${this.botUserId}>`);
|
|
324
|
-
// Early silent for cross-bot / cross-user traffic in shared channels.
|
|
325
|
-
// If the message @-mentions specific user(s), none of whom are us, and
|
|
326
|
-
// it isn't a DM, stay silent — regardless of whether the thread was
|
|
327
|
-
// previously marked "active" by an earlier reply. The activeThread
|
|
328
|
-
// TTL exists for mid-conversation follow-ups, not for sibling mentions
|
|
329
|
-
// directed at another bot or human in the same channel.
|
|
330
|
-
if (!wasMentioned && this.botUserId && channelType !== "im") {
|
|
331
|
-
const mentionedUsers = Array.from(rawText.matchAll(/<@([UW][A-Z0-9]+)>/g), (m) => m[1]);
|
|
332
|
-
if (mentionedUsers.length > 0 && !mentionedUsers.includes(this.botUserId)) {
|
|
333
|
-
logger.info(`[slack] message @-mentions ${mentionedUsers.join(",")} (not us) — staying silent for ts=${event.ts}`);
|
|
334
|
-
return;
|
|
335
|
-
}
|
|
336
|
-
}
|
|
337
377
|
// Slash commands (/new, /status, …) are control directives the session
|
|
338
378
|
// manager parses by exact string match. Wrapping them in the
|
|
339
379
|
// "[Thread context — …]" preamble below silently breaks that parsing,
|
|
@@ -369,20 +409,6 @@ export class SlackConnector {
|
|
|
369
409
|
// - DM-equivalent conversation: bot has engaged AND only this user has
|
|
370
410
|
// spoken in the conversation (thread or channel-user scope). Permanent
|
|
371
411
|
// until a third human joins.
|
|
372
|
-
const triageEnabled = this.triageConfig?.enabled === true;
|
|
373
|
-
const conversationKey = {
|
|
374
|
-
channel: event.channel,
|
|
375
|
-
threadTs: event.thread_ts,
|
|
376
|
-
ts: event.ts,
|
|
377
|
-
userId: slackUserId,
|
|
378
|
-
};
|
|
379
|
-
// Skip conversation tracking entirely when triage is disabled — it
|
|
380
|
-
// serves no purpose (skipTriage is unconditionally true) and engaged
|
|
381
|
-
// entries can't be evicted, so doing it would leak memory in the
|
|
382
|
-
// default no-triage configuration.
|
|
383
|
-
if (triageEnabled) {
|
|
384
|
-
this.conversations.recordHumanMessage(conversationKey);
|
|
385
|
-
}
|
|
386
412
|
const isDmEquivalent = triageEnabled && channelType !== "im" && !wasMentioned
|
|
387
413
|
? this.conversations.isDmEquivalent(conversationKey)
|
|
388
414
|
: false;
|
|
@@ -442,7 +468,7 @@ export class SlackConnector {
|
|
|
442
468
|
}
|
|
443
469
|
logger.info(`[slack] triage → reply (${decision.reason ?? "no reason"}) for ts=${event.ts}`);
|
|
444
470
|
}
|
|
445
|
-
if (
|
|
471
|
+
if (this.conversationTrackingEnabled()) {
|
|
446
472
|
this.conversations.recordBotEngaged(conversationKey);
|
|
447
473
|
}
|
|
448
474
|
// Natural-language `/goal` injection.
|
|
@@ -484,6 +510,13 @@ export class SlackConnector {
|
|
|
484
510
|
catch (err) {
|
|
485
511
|
logger.warn(`[slack] Failed to get bot user ID: ${err}`);
|
|
486
512
|
}
|
|
513
|
+
// Fail closed: without our own user ID, mention detection is impossible,
|
|
514
|
+
// so mention-gated scopes will drop everything (except engaged threads).
|
|
515
|
+
// That honors "never barge in un-mentioned" at the cost of missed
|
|
516
|
+
// mentions until the next successful start — surface it loudly.
|
|
517
|
+
if (!this.botUserId && hasMentionScope(this.respondTo)) {
|
|
518
|
+
logger.warn("[slack] respondTo mention gate is configured but the bot user ID could not be resolved — un-mentioned messages in mention scopes will be dropped");
|
|
519
|
+
}
|
|
487
520
|
this.app.event("reaction_added", async ({ event }) => {
|
|
488
521
|
// Only handle reactions on messages (not files, etc.)
|
|
489
522
|
if (event.item.type !== "message")
|
|
@@ -677,8 +710,8 @@ export class SlackConnector {
|
|
|
677
710
|
lastTs = res.ts;
|
|
678
711
|
}
|
|
679
712
|
// A newly-posted root message will be the thread_ts for any follow-up replies,
|
|
680
|
-
// so mark its future thread as bot-engaged. Only relevant when
|
|
681
|
-
if (lastTs && this.
|
|
713
|
+
// so mark its future thread as bot-engaged. Only relevant when tracking is on.
|
|
714
|
+
if (lastTs && this.conversationTrackingEnabled()) {
|
|
682
715
|
this.conversations.recordBotInitiatedThread(target.channel, lastTs);
|
|
683
716
|
}
|
|
684
717
|
return lastTs;
|
|
@@ -700,9 +733,9 @@ export class SlackConnector {
|
|
|
700
733
|
lastTs = res.ts;
|
|
701
734
|
}
|
|
702
735
|
// Record the thread the bot just replied in. Subsequent user replies in
|
|
703
|
-
// this same thread will carry thread_ts === threadTs and bypass triage
|
|
704
|
-
// Only relevant when
|
|
705
|
-
if (threadTs && this.
|
|
736
|
+
// this same thread will carry thread_ts === threadTs and bypass triage
|
|
737
|
+
// and the respondTo mention gate. Only relevant when tracking is on.
|
|
738
|
+
if (threadTs && this.conversationTrackingEnabled()) {
|
|
706
739
|
this.conversations.recordBotInitiatedThread(target.channel, threadTs);
|
|
707
740
|
}
|
|
708
741
|
return lastTs;
|
|
@@ -722,9 +755,9 @@ export class SlackConnector {
|
|
|
722
755
|
}
|
|
723
756
|
// A reaction on a message also counts as engagement; mark the target's
|
|
724
757
|
// thread anchor so follow-ups in that thread are treated as bot-engaged.
|
|
725
|
-
// Only relevant when
|
|
758
|
+
// Only relevant when tracking is on.
|
|
726
759
|
const anchor = target.thread || target.messageTs;
|
|
727
|
-
if (anchor && this.
|
|
760
|
+
if (anchor && this.conversationTrackingEnabled()) {
|
|
728
761
|
this.conversations.recordBotInitiatedThread(target.channel, anchor);
|
|
729
762
|
}
|
|
730
763
|
}
|