@sena-ai/connector-slack 0.0.7 → 0.0.9
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 +42 -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,23 @@ 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 (context block = small text, like v1)
|
|
80
|
+
if (thinkingMessage && thinkingMessage !== '') {
|
|
81
|
+
slack.chat.postMessage({
|
|
82
|
+
channel,
|
|
83
|
+
thread_ts: threadTs,
|
|
84
|
+
text: thinkingMessage,
|
|
85
|
+
blocks: [{ type: 'context', elements: [{ type: 'mrkdwn', text: thinkingMessage }] }],
|
|
86
|
+
})
|
|
87
|
+
.then(r => { progressTs = r.ts; lastProgressTime = Date.now(); })
|
|
88
|
+
.catch(() => { });
|
|
89
|
+
}
|
|
77
90
|
return {
|
|
78
91
|
async showProgress(text) {
|
|
79
92
|
const now = Date.now();
|
|
@@ -81,18 +94,10 @@ function createSlackOutput(slack, context) {
|
|
|
81
94
|
return;
|
|
82
95
|
try {
|
|
83
96
|
if (progressTs) {
|
|
84
|
-
await slack.chat.update({
|
|
85
|
-
channel: context.conversationId.split(':')[0] || context.conversationId,
|
|
86
|
-
ts: progressTs,
|
|
87
|
-
text: `_${text}_`,
|
|
88
|
-
});
|
|
97
|
+
await slack.chat.update({ channel, ts: progressTs, text: `_${text}_` });
|
|
89
98
|
}
|
|
90
99
|
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
|
-
});
|
|
100
|
+
const result = await slack.chat.postMessage({ channel, thread_ts: threadTs, text: `_${text}_` });
|
|
96
101
|
progressTs = result.ts;
|
|
97
102
|
}
|
|
98
103
|
lastProgressTime = now;
|
|
@@ -102,39 +107,42 @@ function createSlackOutput(slack, context) {
|
|
|
102
107
|
}
|
|
103
108
|
},
|
|
104
109
|
async sendResult(text) {
|
|
105
|
-
// Delete progress message if exists
|
|
110
|
+
// Delete progress/thinking message if exists
|
|
106
111
|
if (progressTs) {
|
|
107
112
|
try {
|
|
108
|
-
await slack.chat.delete({
|
|
109
|
-
channel: context.conversationId.split(':')[0] || context.conversationId,
|
|
110
|
-
ts: progressTs,
|
|
111
|
-
});
|
|
113
|
+
await slack.chat.delete({ channel, ts: progressTs });
|
|
112
114
|
}
|
|
113
115
|
catch {
|
|
114
116
|
// Ignore
|
|
115
117
|
}
|
|
116
118
|
}
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
thread_ts:
|
|
120
|
-
|
|
121
|
-
}
|
|
119
|
+
console.log(`[slack] sendResult: channel=${channel}, thread_ts=${threadTs}, text.length=${text.length}`);
|
|
120
|
+
try {
|
|
121
|
+
const result = await slack.chat.postMessage({ channel, thread_ts: threadTs, text });
|
|
122
|
+
console.log(`[slack] sendResult ok: ts=${result.ts}, ok=${result.ok}`);
|
|
123
|
+
}
|
|
124
|
+
catch (err) {
|
|
125
|
+
console.error(`[slack] sendResult failed:`, err);
|
|
126
|
+
throw err;
|
|
127
|
+
}
|
|
122
128
|
},
|
|
123
129
|
async sendError(message) {
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
130
|
+
// Delete progress/thinking message if exists
|
|
131
|
+
if (progressTs) {
|
|
132
|
+
try {
|
|
133
|
+
await slack.chat.delete({ channel, ts: progressTs });
|
|
134
|
+
}
|
|
135
|
+
catch {
|
|
136
|
+
// Ignore
|
|
137
|
+
}
|
|
138
|
+
progressTs = undefined;
|
|
139
|
+
}
|
|
140
|
+
await slack.chat.postMessage({ channel, thread_ts: threadTs, text: `:warning: ${message}` });
|
|
129
141
|
},
|
|
130
142
|
async dispose() {
|
|
131
|
-
// Clean up progress message
|
|
132
143
|
if (progressTs) {
|
|
133
144
|
try {
|
|
134
|
-
await slack.chat.delete({
|
|
135
|
-
channel: context.conversationId.split(':')[0] || context.conversationId,
|
|
136
|
-
ts: progressTs,
|
|
137
|
-
});
|
|
145
|
+
await slack.chat.delete({ channel, ts: progressTs });
|
|
138
146
|
}
|
|
139
147
|
catch {
|
|
140
148
|
// 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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"}
|