@sena-ai/connector-slack 0.0.7 → 0.0.8
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/connector.d.ts +2 -0
- package/dist/connector.d.ts.map +1 -1
- package/dist/connector.js +29 -34
- package/dist/connector.js.map +1 -1
- package/package.json +1 -1
package/dist/connector.d.ts
CHANGED
|
@@ -3,6 +3,8 @@ export type SlackConnectorOptions = {
|
|
|
3
3
|
appId: string;
|
|
4
4
|
botToken: string;
|
|
5
5
|
signingSecret: string;
|
|
6
|
+
/** Message shown immediately when a turn starts (e.g. ":loading-dots: *세나가 생각중이에요*"). Set to false to disable. */
|
|
7
|
+
thinkingMessage?: string | false;
|
|
6
8
|
};
|
|
7
9
|
export declare function slackConnector(options: SlackConnectorOptions): Connector;
|
|
8
10
|
//# sourceMappingURL=connector.d.ts.map
|
package/dist/connector.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connector.d.ts","sourceRoot":"","sources":["../src/connector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAiF,MAAM,eAAe,CAAA;AAI7H,MAAM,MAAM,qBAAqB,GAAG;IAClC,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,aAAa,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"connector.d.ts","sourceRoot":"","sources":["../src/connector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAiF,MAAM,eAAe,CAAA;AAI7H,MAAM,MAAM,qBAAqB,GAAG;IAClC,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,aAAa,EAAE,MAAM,CAAA;IACrB,kHAAkH;IAClH,eAAe,CAAC,EAAE,MAAM,GAAG,KAAK,CAAA;CACjC,CAAA;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,qBAAqB,GAAG,SAAS,CAiBxE"}
|
package/dist/connector.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { WebClient } from '@slack/web-api';
|
|
2
2
|
import { verifySignature } from './verify.js';
|
|
3
3
|
export function slackConnector(options) {
|
|
4
|
-
const { appId, botToken, signingSecret } = options;
|
|
4
|
+
const { appId, botToken, signingSecret, thinkingMessage } = options;
|
|
5
5
|
const slack = new WebClient(botToken);
|
|
6
6
|
return {
|
|
7
7
|
name: 'slack',
|
|
@@ -11,7 +11,7 @@ export function slackConnector(options) {
|
|
|
11
11
|
});
|
|
12
12
|
},
|
|
13
13
|
createOutput(context) {
|
|
14
|
-
return createSlackOutput(slack, context);
|
|
14
|
+
return createSlackOutput(slack, context, thinkingMessage);
|
|
15
15
|
},
|
|
16
16
|
};
|
|
17
17
|
}
|
|
@@ -51,7 +51,7 @@ async function handleSlackEvent(req, res, engine, signingSecret, appId) {
|
|
|
51
51
|
console.log(`[slack] ${event.type} from ${event.user} in ${event.channel}`);
|
|
52
52
|
const inbound = {
|
|
53
53
|
connector: 'slack',
|
|
54
|
-
conversationId: event.thread_ts ?? event.ts
|
|
54
|
+
conversationId: `${event.channel}:${event.thread_ts ?? event.ts}`, // channel:thread_ts
|
|
55
55
|
userId: event.user ?? '',
|
|
56
56
|
userName: event.user ?? '',
|
|
57
57
|
text: event.text ?? '',
|
|
@@ -70,10 +70,18 @@ async function handleSlackEvent(req, res, engine, signingSecret, appId) {
|
|
|
70
70
|
console.error('[slack] submitTurn error:', err);
|
|
71
71
|
}
|
|
72
72
|
}
|
|
73
|
-
function createSlackOutput(slack, context) {
|
|
73
|
+
function createSlackOutput(slack, context, thinkingMessage) {
|
|
74
|
+
// conversationId format: "channel:thread_ts"
|
|
75
|
+
const [channel, threadTs] = context.conversationId.split(':');
|
|
74
76
|
let progressTs;
|
|
75
77
|
let lastProgressTime = 0;
|
|
76
78
|
const THROTTLE_MS = 1500;
|
|
79
|
+
// Send thinking indicator immediately on creation
|
|
80
|
+
if (thinkingMessage && thinkingMessage !== '') {
|
|
81
|
+
slack.chat.postMessage({ channel, thread_ts: threadTs, text: thinkingMessage })
|
|
82
|
+
.then(r => { progressTs = r.ts; lastProgressTime = Date.now(); })
|
|
83
|
+
.catch(() => { });
|
|
84
|
+
}
|
|
77
85
|
return {
|
|
78
86
|
async showProgress(text) {
|
|
79
87
|
const now = Date.now();
|
|
@@ -81,18 +89,10 @@ function createSlackOutput(slack, context) {
|
|
|
81
89
|
return;
|
|
82
90
|
try {
|
|
83
91
|
if (progressTs) {
|
|
84
|
-
await slack.chat.update({
|
|
85
|
-
channel: context.conversationId.split(':')[0] || context.conversationId,
|
|
86
|
-
ts: progressTs,
|
|
87
|
-
text: `_${text}_`,
|
|
88
|
-
});
|
|
92
|
+
await slack.chat.update({ channel, ts: progressTs, text: `_${text}_` });
|
|
89
93
|
}
|
|
90
94
|
else {
|
|
91
|
-
const result = await slack.chat.postMessage({
|
|
92
|
-
channel: context.conversationId.split(':')[0] || context.conversationId,
|
|
93
|
-
thread_ts: context.conversationId,
|
|
94
|
-
text: `_${text}_`,
|
|
95
|
-
});
|
|
95
|
+
const result = await slack.chat.postMessage({ channel, thread_ts: threadTs, text: `_${text}_` });
|
|
96
96
|
progressTs = result.ts;
|
|
97
97
|
}
|
|
98
98
|
lastProgressTime = now;
|
|
@@ -102,39 +102,34 @@ function createSlackOutput(slack, context) {
|
|
|
102
102
|
}
|
|
103
103
|
},
|
|
104
104
|
async sendResult(text) {
|
|
105
|
-
// Delete progress message if exists
|
|
105
|
+
// Delete progress/thinking message if exists
|
|
106
106
|
if (progressTs) {
|
|
107
107
|
try {
|
|
108
|
-
await slack.chat.delete({
|
|
109
|
-
channel: context.conversationId.split(':')[0] || context.conversationId,
|
|
110
|
-
ts: progressTs,
|
|
111
|
-
});
|
|
108
|
+
await slack.chat.delete({ channel, ts: progressTs });
|
|
112
109
|
}
|
|
113
110
|
catch {
|
|
114
111
|
// Ignore
|
|
115
112
|
}
|
|
116
113
|
}
|
|
117
|
-
await slack.chat.postMessage({
|
|
118
|
-
channel: context.conversationId.split(':')[0] || context.conversationId,
|
|
119
|
-
thread_ts: context.conversationId,
|
|
120
|
-
text,
|
|
121
|
-
});
|
|
114
|
+
await slack.chat.postMessage({ channel, thread_ts: threadTs, text });
|
|
122
115
|
},
|
|
123
116
|
async sendError(message) {
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
117
|
+
// Delete progress/thinking message if exists
|
|
118
|
+
if (progressTs) {
|
|
119
|
+
try {
|
|
120
|
+
await slack.chat.delete({ channel, ts: progressTs });
|
|
121
|
+
}
|
|
122
|
+
catch {
|
|
123
|
+
// Ignore
|
|
124
|
+
}
|
|
125
|
+
progressTs = undefined;
|
|
126
|
+
}
|
|
127
|
+
await slack.chat.postMessage({ channel, thread_ts: threadTs, text: `:warning: ${message}` });
|
|
129
128
|
},
|
|
130
129
|
async dispose() {
|
|
131
|
-
// Clean up progress message
|
|
132
130
|
if (progressTs) {
|
|
133
131
|
try {
|
|
134
|
-
await slack.chat.delete({
|
|
135
|
-
channel: context.conversationId.split(':')[0] || context.conversationId,
|
|
136
|
-
ts: progressTs,
|
|
137
|
-
});
|
|
132
|
+
await slack.chat.delete({ channel, ts: progressTs });
|
|
138
133
|
}
|
|
139
134
|
catch {
|
|
140
135
|
// Ignore
|
package/dist/connector.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connector.js","sourceRoot":"","sources":["../src/connector.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"connector.js","sourceRoot":"","sources":["../src/connector.ts"],"names":[],"mappings":"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"}
|