crewly 1.20.155 → 1.20.157
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/config/skills/agent/core/attach-file/SKILL.md +1 -1
- package/config/skills/agent/core/attach-file/execute.sh +1 -1
- package/config/skills/agent/core/reply-channel/SKILL.md +4 -1
- package/config/skills/agent/core/reply-chat/SKILL.md +17 -0
- package/config/skills/agent/core/reply-chat/execute.sh +6 -1
- package/config/skills/agent/core/slack-post/SKILL.md +1 -1
- package/dist/backend/backend/src/constants.d.ts +195 -4
- package/dist/backend/backend/src/constants.d.ts.map +1 -1
- package/dist/backend/backend/src/constants.js +208 -6
- package/dist/backend/backend/src/constants.js.map +1 -1
- package/dist/backend/backend/src/controllers/chat/chat.controller.d.ts +18 -0
- package/dist/backend/backend/src/controllers/chat/chat.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/chat/chat.controller.js +42 -6
- package/dist/backend/backend/src/controllers/chat/chat.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/owner-receipt/owner-receipt.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/owner-receipt/owner-receipt.controller.js +5 -0
- package/dist/backend/backend/src/controllers/owner-receipt/owner-receipt.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/slack/slack.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/slack/slack.controller.js +6 -1
- package/dist/backend/backend/src/controllers/slack/slack.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/tickets/tickets.controller.d.ts +18 -0
- package/dist/backend/backend/src/controllers/tickets/tickets.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/tickets/tickets.controller.js +42 -0
- package/dist/backend/backend/src/controllers/tickets/tickets.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/tickets/tickets.routes.d.ts +1 -0
- package/dist/backend/backend/src/controllers/tickets/tickets.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/tickets/tickets.routes.js +3 -1
- package/dist/backend/backend/src/controllers/tickets/tickets.routes.js.map +1 -1
- package/dist/backend/backend/src/index.d.ts.map +1 -1
- package/dist/backend/backend/src/index.js +15 -2
- package/dist/backend/backend/src/index.js.map +1 -1
- package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts +1 -0
- package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/agent-registration.service.js +18 -4
- package/dist/backend/backend/src/services/agent/agent-registration.service.js.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/communication.module.d.ts +13 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/communication.module.d.ts.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/communication.module.js +16 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/communication.module.js.map +1 -1
- package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts +30 -1
- package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.js +46 -3
- package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.js.map +1 -1
- package/dist/backend/backend/src/services/chat-v2/chat-v2.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/chat-v2/chat-v2.service.js +17 -4
- package/dist/backend/backend/src/services/chat-v2/chat-v2.service.js.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-agent-dm.service.d.ts +93 -6
- package/dist/backend/backend/src/services/slack/slack-agent-dm.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-agent-dm.service.js +169 -15
- package/dist/backend/backend/src/services/slack/slack-agent-dm.service.js.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-agent-post.service.d.ts +2 -2
- package/dist/backend/backend/src/services/slack/slack-agent-post.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-agent-post.service.js +15 -2
- package/dist/backend/backend/src/services/slack/slack-agent-post.service.js.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-initializer.d.ts.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-initializer.js +7 -1
- package/dist/backend/backend/src/services/slack/slack-initializer.js.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts +40 -0
- package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js +86 -9
- package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-team-channel.service.d.ts +1 -1
- package/dist/backend/backend/src/services/slack/slack-team-channel.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-team-channel.service.js +33 -4
- package/dist/backend/backend/src/services/slack/slack-team-channel.service.js.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-thread-context.service.d.ts +227 -0
- package/dist/backend/backend/src/services/slack/slack-thread-context.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/slack/slack-thread-context.service.js +455 -0
- package/dist/backend/backend/src/services/slack/slack-thread-context.service.js.map +1 -0
- package/dist/backend/backend/src/services/slack/slack-thread-key.d.ts +66 -0
- package/dist/backend/backend/src/services/slack/slack-thread-key.d.ts.map +1 -0
- package/dist/backend/backend/src/services/slack/slack-thread-key.js +109 -0
- package/dist/backend/backend/src/services/slack/slack-thread-key.js.map +1 -0
- package/dist/backend/backend/src/services/slack/slack-typing-placeholder.service.d.ts +89 -13
- package/dist/backend/backend/src/services/slack/slack-typing-placeholder.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-typing-placeholder.service.js +224 -50
- package/dist/backend/backend/src/services/slack/slack-typing-placeholder.service.js.map +1 -1
- package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt-data.d.ts +84 -0
- package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt-data.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt-data.js +301 -6
- package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt-data.js.map +1 -1
- package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.boot.d.ts +8 -0
- package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.boot.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.boot.js +16 -0
- package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.boot.js.map +1 -1
- package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.renderer.d.ts +28 -10
- package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.renderer.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.renderer.js +46 -193
- package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.renderer.js.map +1 -1
- package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.service.d.ts +15 -2
- package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.service.js +26 -4
- package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.service.js.map +1 -1
- package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.types.d.ts +35 -0
- package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.types.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.types.js.map +1 -1
- package/dist/backend/backend/src/services/v3/request.service.d.ts +2 -0
- package/dist/backend/backend/src/services/v3/request.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/request.service.js +16 -4
- package/dist/backend/backend/src/services/v3/request.service.js.map +1 -1
- package/dist/backend/backend/src/services/v3/ticket-ask-classifier.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/ticket-ask-classifier.js +2 -0
- package/dist/backend/backend/src/services/v3/ticket-ask-classifier.js.map +1 -1
- package/dist/backend/backend/src/services/v3/ticket-channel-hooks.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/ticket-channel-hooks.js +2 -1
- package/dist/backend/backend/src/services/v3/ticket-channel-hooks.js.map +1 -1
- package/dist/backend/backend/src/services/v3/ticket-hygiene.d.ts +162 -0
- package/dist/backend/backend/src/services/v3/ticket-hygiene.d.ts.map +1 -0
- package/dist/backend/backend/src/services/v3/ticket-hygiene.js +221 -0
- package/dist/backend/backend/src/services/v3/ticket-hygiene.js.map +1 -0
- package/dist/backend/backend/src/services/v3/ticket-intake.service.d.ts +71 -6
- package/dist/backend/backend/src/services/v3/ticket-intake.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/ticket-intake.service.js +151 -25
- package/dist/backend/backend/src/services/v3/ticket-intake.service.js.map +1 -1
- package/dist/backend/backend/src/services/v3/ticket-review.service.d.ts +22 -3
- package/dist/backend/backend/src/services/v3/ticket-review.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/ticket-review.service.js +99 -40
- package/dist/backend/backend/src/services/v3/ticket-review.service.js.map +1 -1
- package/dist/backend/backend/src/types/slack.types.d.ts +43 -0
- package/dist/backend/backend/src/types/slack.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/slack.types.js.map +1 -1
- package/dist/backend/backend/src/types/v2/request.types.d.ts +13 -0
- package/dist/backend/backend/src/types/v2/request.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/v2/request.types.js.map +1 -1
- package/dist/backend/build-info.json +2 -2
- package/dist/cli/backend/src/constants.d.ts +195 -4
- package/dist/cli/backend/src/constants.d.ts.map +1 -1
- package/dist/cli/backend/src/constants.js +208 -6
- package/dist/cli/backend/src/constants.js.map +1 -1
- package/dist/cli/backend/src/services/agent/agent-registration.service.d.ts +1 -0
- package/dist/cli/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/agent/agent-registration.service.js +18 -4
- package/dist/cli/backend/src/services/agent/agent-registration.service.js.map +1 -1
- package/dist/cli/backend/src/services/ai/prompt-modules/communication.module.d.ts +13 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/communication.module.d.ts.map +1 -1
- package/dist/cli/backend/src/services/ai/prompt-modules/communication.module.js +16 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/communication.module.js.map +1 -1
- package/dist/cli/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts +30 -1
- package/dist/cli/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/chat-v2/chat-v2.dispatcher.service.js +46 -3
- package/dist/cli/backend/src/services/chat-v2/chat-v2.dispatcher.service.js.map +1 -1
- package/dist/cli/backend/src/services/chat-v2/chat-v2.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/chat-v2/chat-v2.service.js +17 -4
- package/dist/cli/backend/src/services/chat-v2/chat-v2.service.js.map +1 -1
- package/dist/cli/backend/src/services/slack/slack-agent-dm.service.d.ts +93 -6
- package/dist/cli/backend/src/services/slack/slack-agent-dm.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/slack/slack-agent-dm.service.js +169 -15
- package/dist/cli/backend/src/services/slack/slack-agent-dm.service.js.map +1 -1
- package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.d.ts +40 -0
- package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.d.ts.map +1 -1
- package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.js +86 -9
- package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -1
- package/dist/cli/backend/src/services/slack/slack-team-channel.service.d.ts +1 -1
- package/dist/cli/backend/src/services/slack/slack-team-channel.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/slack/slack-team-channel.service.js +33 -4
- package/dist/cli/backend/src/services/slack/slack-team-channel.service.js.map +1 -1
- package/dist/cli/backend/src/services/slack/slack-thread-context.service.d.ts +227 -0
- package/dist/cli/backend/src/services/slack/slack-thread-context.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/slack/slack-thread-context.service.js +455 -0
- package/dist/cli/backend/src/services/slack/slack-thread-context.service.js.map +1 -0
- package/dist/cli/backend/src/services/slack/slack-thread-key.d.ts +66 -0
- package/dist/cli/backend/src/services/slack/slack-thread-key.d.ts.map +1 -0
- package/dist/cli/backend/src/services/slack/slack-thread-key.js +109 -0
- package/dist/cli/backend/src/services/slack/slack-thread-key.js.map +1 -0
- package/dist/cli/backend/src/services/slack/slack-typing-placeholder.service.d.ts +89 -13
- package/dist/cli/backend/src/services/slack/slack-typing-placeholder.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/slack/slack-typing-placeholder.service.js +224 -50
- package/dist/cli/backend/src/services/slack/slack-typing-placeholder.service.js.map +1 -1
- package/dist/cli/backend/src/services/v3/request.service.d.ts +2 -0
- package/dist/cli/backend/src/services/v3/request.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/v3/request.service.js +16 -4
- package/dist/cli/backend/src/services/v3/request.service.js.map +1 -1
- package/dist/cli/backend/src/services/v3/ticket-ask-classifier.d.ts.map +1 -1
- package/dist/cli/backend/src/services/v3/ticket-ask-classifier.js +2 -0
- package/dist/cli/backend/src/services/v3/ticket-ask-classifier.js.map +1 -1
- package/dist/cli/backend/src/services/v3/ticket-channel-hooks.d.ts.map +1 -1
- package/dist/cli/backend/src/services/v3/ticket-channel-hooks.js +2 -1
- package/dist/cli/backend/src/services/v3/ticket-channel-hooks.js.map +1 -1
- package/dist/cli/backend/src/services/v3/ticket-hygiene.d.ts +162 -0
- package/dist/cli/backend/src/services/v3/ticket-hygiene.d.ts.map +1 -0
- package/dist/cli/backend/src/services/v3/ticket-hygiene.js +221 -0
- package/dist/cli/backend/src/services/v3/ticket-hygiene.js.map +1 -0
- package/dist/cli/backend/src/services/v3/ticket-intake.service.d.ts +71 -6
- package/dist/cli/backend/src/services/v3/ticket-intake.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/v3/ticket-intake.service.js +151 -25
- package/dist/cli/backend/src/services/v3/ticket-intake.service.js.map +1 -1
- package/dist/cli/backend/src/services/v3/ticket-review.service.d.ts +22 -3
- package/dist/cli/backend/src/services/v3/ticket-review.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/v3/ticket-review.service.js +99 -40
- package/dist/cli/backend/src/services/v3/ticket-review.service.js.map +1 -1
- package/dist/cli/backend/src/types/slack.types.d.ts +43 -0
- package/dist/cli/backend/src/types/slack.types.d.ts.map +1 -1
- package/dist/cli/backend/src/types/slack.types.js.map +1 -1
- package/dist/cli/backend/src/types/v2/request.types.d.ts +13 -0
- package/dist/cli/backend/src/types/v2/request.types.d.ts.map +1 -1
- package/dist/cli/backend/src/types/v2/request.types.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slack-thread-context.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/slack/slack-thread-context.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Stable Slack thread keys — `<slack channel id>:<thread root ts>`.
|
|
3
|
+
*
|
|
4
|
+
* An agent that is handed messages from two Slack threads of one DM has to
|
|
5
|
+
* be able to say which thread each answer belongs to. Before this key the
|
|
6
|
+
* reply path could only guess, and it guessed "the thread the owner wrote in
|
|
7
|
+
* last": an answer owed in thread A was posted in thread B together with the
|
|
8
|
+
* answer for B (2026-09-28, Ella: EFT form + HSA screenshots). The key is
|
|
9
|
+
* shown to the agent as `[SLACK-THREAD:<key>]` on every delivered Slack
|
|
10
|
+
* message, and every reply tool accepts it back.
|
|
11
|
+
*
|
|
12
|
+
* @module services/slack/slack-thread-key
|
|
13
|
+
*/
|
|
14
|
+
/** One Slack thread: conversation + root ts. */
|
|
15
|
+
export interface SlackThreadKeyParts {
|
|
16
|
+
/** Slack conversation id (`C…`, `D…`, `G…`) */
|
|
17
|
+
slackChannelId: string;
|
|
18
|
+
/** Thread root ts (a top-level message's own ts) */
|
|
19
|
+
threadTs: string;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Build the key for a Slack thread.
|
|
23
|
+
*
|
|
24
|
+
* @param slackChannelId - Slack conversation id
|
|
25
|
+
* @param threadTs - Thread root ts (the message's own ts when top-level)
|
|
26
|
+
* @returns `<channel>:<ts>`
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* formatSlackThreadKey('D0C31U6JWBF', '1790392986.498639') // 'D0C31U6JWBF:1790392986.498639'
|
|
30
|
+
*/
|
|
31
|
+
export declare function formatSlackThreadKey(slackChannelId: string, threadTs: string): string;
|
|
32
|
+
/**
|
|
33
|
+
* Parse a key. Tolerates the whole tag being passed (`[SLACK-THREAD:…]`) —
|
|
34
|
+
* an agent copying from its prompt may take the brackets along.
|
|
35
|
+
*
|
|
36
|
+
* @param raw - Key, tag, or anything else
|
|
37
|
+
* @returns The parts, or null when `raw` is not a Slack thread key
|
|
38
|
+
*/
|
|
39
|
+
export declare function parseSlackThreadKey(raw: unknown): SlackThreadKeyParts | null;
|
|
40
|
+
/**
|
|
41
|
+
* The tag an agent sees on a delivered Slack message.
|
|
42
|
+
*
|
|
43
|
+
* @param slackChannelId - Slack conversation id
|
|
44
|
+
* @param threadTs - Thread root ts
|
|
45
|
+
* @returns `[SLACK-THREAD:<channel>:<ts>]`
|
|
46
|
+
*/
|
|
47
|
+
export declare function slackThreadTag(slackChannelId: string, threadTs: string): string;
|
|
48
|
+
/**
|
|
49
|
+
* Every distinct valid thread key tagged in a text, in order of appearance.
|
|
50
|
+
*
|
|
51
|
+
* @param text - Any text (a delivered prompt, a reply)
|
|
52
|
+
* @returns Parsed keys, de-duplicated
|
|
53
|
+
*/
|
|
54
|
+
export declare function extractSlackThreadKeys(text: string): SlackThreadKeyParts[];
|
|
55
|
+
/**
|
|
56
|
+
* The thread a chat-v2 message's metadata names, when it names exactly one.
|
|
57
|
+
*
|
|
58
|
+
* Reads the agent-reply field ({@link SLACK_THREAD_KEY_CONSTANTS.METADATA_KEY})
|
|
59
|
+
* first, then the inbound Slack correlation fields (`slackChannelId` +
|
|
60
|
+
* `slackThreadTs`) every bridged Slack turn carries.
|
|
61
|
+
*
|
|
62
|
+
* @param metadata - chat-v2 message metadata
|
|
63
|
+
* @returns The thread, or null
|
|
64
|
+
*/
|
|
65
|
+
export declare function slackThreadOfMetadata(metadata: Record<string, unknown> | undefined | null): SlackThreadKeyParts | null;
|
|
66
|
+
//# sourceMappingURL=slack-thread-key.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slack-thread-key.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/slack/slack-thread-key.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,gDAAgD;AAChD,MAAM,WAAW,mBAAmB;IAClC,+CAA+C;IAC/C,cAAc,EAAE,MAAM,CAAC;IACvB,oDAAoD;IACpD,QAAQ,EAAE,MAAM,CAAC;CAClB;AAeD;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAAC,cAAc,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAErF;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,mBAAmB,GAAG,IAAI,CAO5E;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,cAAc,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE/E;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,mBAAmB,EAAE,CAY1E;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAAG,IAAI,GAAG,mBAAmB,GAAG,IAAI,CAQtH"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Stable Slack thread keys — `<slack channel id>:<thread root ts>`.
|
|
3
|
+
*
|
|
4
|
+
* An agent that is handed messages from two Slack threads of one DM has to
|
|
5
|
+
* be able to say which thread each answer belongs to. Before this key the
|
|
6
|
+
* reply path could only guess, and it guessed "the thread the owner wrote in
|
|
7
|
+
* last": an answer owed in thread A was posted in thread B together with the
|
|
8
|
+
* answer for B (2026-09-28, Ella: EFT form + HSA screenshots). The key is
|
|
9
|
+
* shown to the agent as `[SLACK-THREAD:<key>]` on every delivered Slack
|
|
10
|
+
* message, and every reply tool accepts it back.
|
|
11
|
+
*
|
|
12
|
+
* @module services/slack/slack-thread-key
|
|
13
|
+
*/
|
|
14
|
+
import { SLACK_THREAD_KEY_CONSTANTS } from '../../constants.js';
|
|
15
|
+
/** `C0ABC:1790392986.498639` — conversation id, a colon, a Slack ts. */
|
|
16
|
+
const KEY_PATTERN = /^([CDG][A-Z0-9]+):(\d{6,}\.\d{1,})$/;
|
|
17
|
+
/**
|
|
18
|
+
* `[SLACK-THREAD:<key>]` anywhere in a text. Built on use, not at load:
|
|
19
|
+
* suites that partially mock the constants module import this file too.
|
|
20
|
+
*
|
|
21
|
+
* @returns A fresh global regex
|
|
22
|
+
*/
|
|
23
|
+
function tagPattern() {
|
|
24
|
+
return new RegExp(`\\[${SLACK_THREAD_KEY_CONSTANTS.TAG}:([^\\]\\s]+)\\]`, 'g');
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Build the key for a Slack thread.
|
|
28
|
+
*
|
|
29
|
+
* @param slackChannelId - Slack conversation id
|
|
30
|
+
* @param threadTs - Thread root ts (the message's own ts when top-level)
|
|
31
|
+
* @returns `<channel>:<ts>`
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* formatSlackThreadKey('D0C31U6JWBF', '1790392986.498639') // 'D0C31U6JWBF:1790392986.498639'
|
|
35
|
+
*/
|
|
36
|
+
export function formatSlackThreadKey(slackChannelId, threadTs) {
|
|
37
|
+
return `${slackChannelId}:${threadTs}`;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Parse a key. Tolerates the whole tag being passed (`[SLACK-THREAD:…]`) —
|
|
41
|
+
* an agent copying from its prompt may take the brackets along.
|
|
42
|
+
*
|
|
43
|
+
* @param raw - Key, tag, or anything else
|
|
44
|
+
* @returns The parts, or null when `raw` is not a Slack thread key
|
|
45
|
+
*/
|
|
46
|
+
export function parseSlackThreadKey(raw) {
|
|
47
|
+
if (typeof raw !== 'string')
|
|
48
|
+
return null;
|
|
49
|
+
let s = raw.trim();
|
|
50
|
+
const tagPrefix = `[${SLACK_THREAD_KEY_CONSTANTS.TAG}:`;
|
|
51
|
+
if (s.startsWith(tagPrefix) && s.endsWith(']'))
|
|
52
|
+
s = s.slice(tagPrefix.length, -1);
|
|
53
|
+
const m = KEY_PATTERN.exec(s);
|
|
54
|
+
return m ? { slackChannelId: m[1], threadTs: m[2] } : null;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* The tag an agent sees on a delivered Slack message.
|
|
58
|
+
*
|
|
59
|
+
* @param slackChannelId - Slack conversation id
|
|
60
|
+
* @param threadTs - Thread root ts
|
|
61
|
+
* @returns `[SLACK-THREAD:<channel>:<ts>]`
|
|
62
|
+
*/
|
|
63
|
+
export function slackThreadTag(slackChannelId, threadTs) {
|
|
64
|
+
return `[${SLACK_THREAD_KEY_CONSTANTS.TAG}:${formatSlackThreadKey(slackChannelId, threadTs)}]`;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Every distinct valid thread key tagged in a text, in order of appearance.
|
|
68
|
+
*
|
|
69
|
+
* @param text - Any text (a delivered prompt, a reply)
|
|
70
|
+
* @returns Parsed keys, de-duplicated
|
|
71
|
+
*/
|
|
72
|
+
export function extractSlackThreadKeys(text) {
|
|
73
|
+
const out = [];
|
|
74
|
+
const seen = new Set();
|
|
75
|
+
for (const m of text.matchAll(tagPattern())) {
|
|
76
|
+
const parts = parseSlackThreadKey(m[1]);
|
|
77
|
+
if (!parts)
|
|
78
|
+
continue;
|
|
79
|
+
const k = formatSlackThreadKey(parts.slackChannelId, parts.threadTs);
|
|
80
|
+
if (seen.has(k))
|
|
81
|
+
continue;
|
|
82
|
+
seen.add(k);
|
|
83
|
+
out.push(parts);
|
|
84
|
+
}
|
|
85
|
+
return out;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* The thread a chat-v2 message's metadata names, when it names exactly one.
|
|
89
|
+
*
|
|
90
|
+
* Reads the agent-reply field ({@link SLACK_THREAD_KEY_CONSTANTS.METADATA_KEY})
|
|
91
|
+
* first, then the inbound Slack correlation fields (`slackChannelId` +
|
|
92
|
+
* `slackThreadTs`) every bridged Slack turn carries.
|
|
93
|
+
*
|
|
94
|
+
* @param metadata - chat-v2 message metadata
|
|
95
|
+
* @returns The thread, or null
|
|
96
|
+
*/
|
|
97
|
+
export function slackThreadOfMetadata(metadata) {
|
|
98
|
+
if (!metadata)
|
|
99
|
+
return null;
|
|
100
|
+
const explicit = parseSlackThreadKey(metadata[SLACK_THREAD_KEY_CONSTANTS.METADATA_KEY]);
|
|
101
|
+
if (explicit)
|
|
102
|
+
return explicit;
|
|
103
|
+
const ch = metadata.slackChannelId;
|
|
104
|
+
const ts = metadata.slackThreadTs;
|
|
105
|
+
if (typeof ch === 'string' && ch && typeof ts === 'string' && ts)
|
|
106
|
+
return { slackChannelId: ch, threadTs: ts };
|
|
107
|
+
return null;
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=slack-thread-key.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slack-thread-key.js","sourceRoot":"","sources":["../../../../../../backend/src/services/slack/slack-thread-key.ts"],"names":[],"mappings":"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"}
|
|
@@ -66,6 +66,8 @@ export interface TypingPlaceholder {
|
|
|
66
66
|
phase: TypingPhase;
|
|
67
67
|
/** The person's message this placeholder answers (gets ✅ when the agent settles without replying) */
|
|
68
68
|
sourceTs?: string;
|
|
69
|
+
/** When it was posted (ms) — the order replies are owed in */
|
|
70
|
+
postedAt?: number;
|
|
69
71
|
}
|
|
70
72
|
/** Identifies one pending reply: this agent, in this Slack conversation/thread. */
|
|
71
73
|
export interface TypingKeyParts {
|
|
@@ -85,6 +87,14 @@ export interface SlackTypingPlaceholderDeps {
|
|
|
85
87
|
* "working on it" stayed after the 17:40 restart, 2026-09-25).
|
|
86
88
|
*/
|
|
87
89
|
storePath?: string;
|
|
90
|
+
/**
|
|
91
|
+
* Whether the agent is in the middle of a turn right now. Consulted when a
|
|
92
|
+
* placeholder that was too young to take down at turn end is looked at
|
|
93
|
+
* again; without it the second look takes it down unconditionally.
|
|
94
|
+
*/
|
|
95
|
+
isAgentMidTurn?: (agentSession: string) => boolean;
|
|
96
|
+
/** Override for {@link SLACK_TYPING_CONSTANTS.REPLACE_BY_EDIT} (tests). */
|
|
97
|
+
replaceByEdit?: boolean;
|
|
88
98
|
}
|
|
89
99
|
/**
|
|
90
100
|
* Posts, resolves, and expires typing placeholders.
|
|
@@ -101,6 +111,15 @@ export declare class SlackTypingPlaceholderService {
|
|
|
101
111
|
private readonly expired;
|
|
102
112
|
/** Placeholders being posted right now (two copies of one message must not post two). */
|
|
103
113
|
private readonly inFlight;
|
|
114
|
+
/**
|
|
115
|
+
* One operation at a time per thread. An interim note (take the
|
|
116
|
+
* placeholder down, put a fresh one back) racing the final answer let the
|
|
117
|
+
* answer find nothing to replace and then the fresh placeholder appear
|
|
118
|
+
* under it, where it stayed (2026-09-28).
|
|
119
|
+
*/
|
|
120
|
+
private readonly locks;
|
|
121
|
+
/** Agents with a turn-end second look already scheduled. */
|
|
122
|
+
private readonly recheckScheduled;
|
|
104
123
|
/**
|
|
105
124
|
* @param deps - Slack slice plus optional timer overrides for tests
|
|
106
125
|
*/
|
|
@@ -115,6 +134,14 @@ export declare class SlackTypingPlaceholderService {
|
|
|
115
134
|
* @returns The placeholder, or null when Slack is disconnected or the post failed
|
|
116
135
|
*/
|
|
117
136
|
begin(key: TypingKeyParts, identity: TypingIdentity, phase?: TypingPhase, sourceTs?: string): Promise<TypingPlaceholder | null>;
|
|
137
|
+
/**
|
|
138
|
+
* Run `fn` after every earlier operation on the same thread has finished.
|
|
139
|
+
*
|
|
140
|
+
* @param k - Thread key
|
|
141
|
+
* @param fn - The operation
|
|
142
|
+
* @returns Its result
|
|
143
|
+
*/
|
|
144
|
+
private withLock;
|
|
118
145
|
/**
|
|
119
146
|
* Move a pending placeholder to another phase (e.g. the agent finished
|
|
120
147
|
* waking and now holds the message → "is working on it…"). No-op when nothing
|
|
@@ -142,29 +169,67 @@ export declare class SlackTypingPlaceholderService {
|
|
|
142
169
|
*/
|
|
143
170
|
take(key: TypingKeyParts): TypingPlaceholder | null;
|
|
144
171
|
/**
|
|
145
|
-
*
|
|
172
|
+
* Every placeholder outstanding in one thread (pending and timed out),
|
|
173
|
+
* oldest first, no longer tracked. Timers are cancelled.
|
|
174
|
+
*
|
|
175
|
+
* @param key - Agent + conversation (+ thread)
|
|
176
|
+
* @returns The placeholders, oldest first
|
|
177
|
+
*/
|
|
178
|
+
private takeAll;
|
|
179
|
+
/**
|
|
180
|
+
* Take one placeholder off Slack: deleted, or — where this bot cannot
|
|
181
|
+
* delete — edited to the settled note so it no longer reads as pending.
|
|
182
|
+
*
|
|
183
|
+
* @param placeholder - The placeholder
|
|
184
|
+
*/
|
|
185
|
+
private remove;
|
|
186
|
+
/**
|
|
187
|
+
* The answer for a thread arrived: it takes the place of the thread's
|
|
188
|
+
* placeholder, and no other placeholder is left in that thread.
|
|
146
189
|
*
|
|
147
|
-
*
|
|
148
|
-
*
|
|
149
|
-
*
|
|
150
|
-
*
|
|
151
|
-
*
|
|
152
|
-
* the thread never goes without
|
|
190
|
+
* With REPLACE_BY_EDIT (default) the OLDEST placeholder in the thread is
|
|
191
|
+
* edited into the answer and every other one there is deleted — one
|
|
192
|
+
* answer covering two messages sent back to back leaves nothing behind
|
|
193
|
+
* (2026-09-28). Otherwise (the 2026-09-23 behaviour: an edit raises no
|
|
194
|
+
* notification) the answer is posted as a new message and the
|
|
195
|
+
* placeholders are deleted after it, so the thread never goes without
|
|
196
|
+
* either. A failed edit falls back to posting.
|
|
153
197
|
*
|
|
154
|
-
*
|
|
155
|
-
*
|
|
198
|
+
* Waits for a placeholder still being posted in that thread, and for any
|
|
199
|
+
* other operation there, so a placeholder can never go up after the
|
|
200
|
+
* answer that should have replaced it.
|
|
156
201
|
*
|
|
157
202
|
* @param key - Agent + conversation (+ thread)
|
|
158
203
|
* @param text - The reply
|
|
159
204
|
* @param identity - The agent's bot token
|
|
160
|
-
* @
|
|
205
|
+
* @param opts - `reopen`: the reply is an interim note — put a fresh placeholder back under it, in the same step
|
|
206
|
+
* @returns 'edited' when a placeholder became the reply, 'replaced' when the reply was posted and a placeholder removed, 'posted' when there was none
|
|
161
207
|
*/
|
|
162
|
-
resolve(key: TypingKeyParts, text: string, identity: TypingIdentity
|
|
208
|
+
resolve(key: TypingKeyParts, text: string, identity: TypingIdentity, opts?: {
|
|
209
|
+
reopen?: TypingPhase;
|
|
210
|
+
}): Promise<'replaced' | 'edited' | 'posted'>;
|
|
211
|
+
/**
|
|
212
|
+
* The agent answered in this thread some other way (a file, a post with
|
|
213
|
+
* its own thread): take every placeholder in the thread down.
|
|
214
|
+
*
|
|
215
|
+
* @param key - Agent + conversation (+ thread)
|
|
216
|
+
* @returns How many were taken down
|
|
217
|
+
*/
|
|
218
|
+
dropThread(key: TypingKeyParts): Promise<number>;
|
|
219
|
+
/**
|
|
220
|
+
* Whether a placeholder (pending or timed out) is outstanding in this thread.
|
|
221
|
+
*
|
|
222
|
+
* @param key - Agent + conversation (+ thread)
|
|
223
|
+
* @returns True when the agent owes an answer there
|
|
224
|
+
*/
|
|
225
|
+
owes(key: TypingKeyParts): boolean;
|
|
163
226
|
/**
|
|
164
227
|
* The conversation an agent still owes an answer in, on one Slack channel
|
|
165
|
-
* or DM: its pending (or timed-out) placeholder,
|
|
228
|
+
* or DM: its pending (or timed-out) placeholder, OLDEST first. An agent that
|
|
166
229
|
* answers with the `slack-post` skill instead of its reply skill names no
|
|
167
|
-
* thread; this is where that answer belongs.
|
|
230
|
+
* thread; this is where that answer belongs. Oldest, because answers come
|
|
231
|
+
* in the order questions were asked: newest-first put the answer owed in
|
|
232
|
+
* an earlier thread under the latest question (2026-09-28).
|
|
168
233
|
*
|
|
169
234
|
* @param agentSession - The agent
|
|
170
235
|
* @param slackChannelId - Channel or DM it is posting to
|
|
@@ -185,6 +250,17 @@ export declare class SlackTypingPlaceholderService {
|
|
|
185
250
|
* @returns How many placeholders were removed
|
|
186
251
|
*/
|
|
187
252
|
settleTurnWithoutReply(agentSession: string, now?: number): Promise<number>;
|
|
253
|
+
/**
|
|
254
|
+
* A placeholder too young to take down when the turn ended (it may belong
|
|
255
|
+
* to a message delivered just before the idle signal) gets a second look
|
|
256
|
+
* once it is old enough: gone then unless the agent is mid-turn — in which
|
|
257
|
+
* case that turn's own end settles it. Without this it waited for the
|
|
258
|
+
* agent's next turn, which might be hours away (2026-09-28).
|
|
259
|
+
*
|
|
260
|
+
* @param agentSession - Agent whose turn ended
|
|
261
|
+
* @param at - When (epoch ms) the youngest skipped placeholder is old enough, margin included
|
|
262
|
+
*/
|
|
263
|
+
private scheduleSettleRecheck;
|
|
188
264
|
/** Save outstanding placeholders (pending + timed out) so a restart can still take them down. */
|
|
189
265
|
private persist;
|
|
190
266
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slack-typing-placeholder.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/slack/slack-typing-placeholder.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAOH;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,GAAG,OAAO,CAElF;AAED,mDAAmD;AACnD,MAAM,WAAW,cAAc;IAC7B,WAAW,IAAI,OAAO,CAAC;IACvB,WAAW,CAAC,OAAO,EAAE;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,gBAAgB,CAAC,EAAE,OAAO,CAAC;KAC5B,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACpB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxH,aAAa,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvF,WAAW,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACrG;AAED,uDAAuD;AACvD,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE9C;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,yDAAyD;AACzD,MAAM,WAAW,iBAAiB;IAChC,cAAc,EAAE,MAAM,CAAC;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,WAAW,CAAC;IACnB,qGAAqG;IACrG,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,mFAAmF;AACnF,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,gCAAgC;AAChC,MAAM,WAAW,0BAA0B;IACzC,KAAK,EAAE,cAAc,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,IAAI,EAAE,EAAE,EAAE,MAAM,KAAK,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;IACzE,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,KAAK,IAAI,CAAC;IACxD;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"slack-typing-placeholder.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/slack/slack-typing-placeholder.service.ts"],"names":[],"mappings":"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"}
|