@gonzih/cc-discord 0.2.6 → 0.2.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/bot.js +7 -1
- package/dist/notifier.d.ts +2 -1
- package/dist/notifier.js +10 -7
- package/package.json +1 -1
package/dist/bot.js
CHANGED
|
@@ -1150,6 +1150,9 @@ export class CcDiscordBot {
|
|
|
1150
1150
|
}
|
|
1151
1151
|
await this.sendToChannelById(channelId, `✅ Goal completed: ${loopState.goal.slice(0, 100)}`);
|
|
1152
1152
|
await this.loopManager.endLoop(channelId);
|
|
1153
|
+
if (thread && thread.isThread()) {
|
|
1154
|
+
await thread.setArchived(true).catch(() => { });
|
|
1155
|
+
}
|
|
1153
1156
|
}
|
|
1154
1157
|
else if (emoji === "❌") {
|
|
1155
1158
|
if (thread) {
|
|
@@ -1157,6 +1160,9 @@ export class CcDiscordBot {
|
|
|
1157
1160
|
}
|
|
1158
1161
|
await this.sendToChannelById(channelId, `❌ Loop killed: ${loopState.goal.slice(0, 100)}`);
|
|
1159
1162
|
await this.loopManager.endLoop(channelId);
|
|
1163
|
+
if (thread && thread.isThread()) {
|
|
1164
|
+
await thread.setArchived(true).catch(() => { });
|
|
1165
|
+
}
|
|
1160
1166
|
}
|
|
1161
1167
|
}
|
|
1162
1168
|
/**
|
|
@@ -1192,7 +1198,7 @@ export class CcDiscordBot {
|
|
|
1192
1198
|
return;
|
|
1193
1199
|
try {
|
|
1194
1200
|
session.claude.sendPrompt(stampPrompt(text));
|
|
1195
|
-
this.writeChatMessage("user", "cc-
|
|
1201
|
+
this.writeChatMessage("user", "cc-discord", text, channelId);
|
|
1196
1202
|
}
|
|
1197
1203
|
catch (err) {
|
|
1198
1204
|
console.error(`[forwardNotification:${channelId}] failed:`, err.message);
|
package/dist/notifier.d.ts
CHANGED
|
@@ -15,7 +15,7 @@ import { type EvalReport } from "./loop-manager.js";
|
|
|
15
15
|
import type { CcDiscordBot } from "./bot.js";
|
|
16
16
|
export interface ChatMessage {
|
|
17
17
|
id: string;
|
|
18
|
-
source: "discord" | "ui" | "claude" | "cc-tg";
|
|
18
|
+
source: "discord" | "ui" | "claude" | "cc-tg" | "cc-discord";
|
|
19
19
|
role: "user" | "assistant" | "tool";
|
|
20
20
|
content: string;
|
|
21
21
|
timestamp: string;
|
|
@@ -24,6 +24,7 @@ export interface ChatMessage {
|
|
|
24
24
|
export interface ParsedNotification {
|
|
25
25
|
text: string;
|
|
26
26
|
chatId?: number;
|
|
27
|
+
isCron: boolean;
|
|
27
28
|
/** Populated when the notification JSON contains an `eval_report` object. */
|
|
28
29
|
evalReport?: EvalReport;
|
|
29
30
|
}
|
package/dist/notifier.js
CHANGED
|
@@ -44,6 +44,7 @@ export function parseNotification(raw) {
|
|
|
44
44
|
let model;
|
|
45
45
|
let cost;
|
|
46
46
|
let chatId;
|
|
47
|
+
let isCron = false;
|
|
47
48
|
try {
|
|
48
49
|
const parsed = JSON.parse(raw);
|
|
49
50
|
// routing: absent/empty → all transports; non-empty → only listed transports
|
|
@@ -58,18 +59,20 @@ export function parseNotification(raw) {
|
|
|
58
59
|
cost = parsed.cost;
|
|
59
60
|
if (typeof parsed.chat_id === "number" && parsed.chat_id !== 0)
|
|
60
61
|
chatId = parsed.chat_id;
|
|
62
|
+
if (typeof parsed.is_cron === "boolean")
|
|
63
|
+
isCron = parsed.is_cron;
|
|
61
64
|
}
|
|
62
65
|
catch {
|
|
63
|
-
return { text };
|
|
66
|
+
return { text, isCron };
|
|
64
67
|
}
|
|
65
68
|
// Parse eval_report if present — this field is non-standard and not in NotificationPayload type
|
|
66
69
|
const evalReport = parseEvalReport(raw);
|
|
67
70
|
if (!driver)
|
|
68
|
-
return { text, chatId, evalReport: evalReport ?? undefined };
|
|
71
|
+
return { text, chatId, isCron, evalReport: evalReport ?? undefined };
|
|
69
72
|
const shortModel = shortenModelName(model ?? "", driver);
|
|
70
73
|
const badge = shortModel ? `${driver}:${shortModel}` : driver;
|
|
71
74
|
const costStr = cost != null ? ` cost: $${cost.toFixed(3)}` : "";
|
|
72
|
-
return { text: `${text}\n[${badge}]${costStr}`, chatId, evalReport: evalReport ?? undefined };
|
|
75
|
+
return { text: `${text}\n[${badge}]${costStr}`, chatId, isCron, evalReport: evalReport ?? undefined };
|
|
73
76
|
}
|
|
74
77
|
/**
|
|
75
78
|
* Write a message to the chat log in Redis.
|
|
@@ -298,8 +301,8 @@ export function startNotifier(bot, notifyChannelId, namespace, redis, handleUser
|
|
|
298
301
|
bot.sendToChannelById(destChannelId, notification.text).catch((err) => {
|
|
299
302
|
log("warn", `notify list send failed (ns=${ns}):`, err.message);
|
|
300
303
|
});
|
|
301
|
-
if (
|
|
302
|
-
|
|
304
|
+
if (!notification.isCron && handleUserMessage) {
|
|
305
|
+
handleUserMessage(mainChannelId, notification.text);
|
|
303
306
|
}
|
|
304
307
|
}
|
|
305
308
|
if (remaining > 0) {
|
|
@@ -358,8 +361,8 @@ export function startNotifier(bot, notifyChannelId, namespace, redis, handleUser
|
|
|
358
361
|
bot.sendToChannelById(deliverTo, notification.text).catch((err) => {
|
|
359
362
|
log("warn", `notify send failed (ns=${ns}):`, err.message);
|
|
360
363
|
});
|
|
361
|
-
if (
|
|
362
|
-
|
|
364
|
+
if (!notification.isCron && handleUserMessage) {
|
|
365
|
+
handleUserMessage(mainChannelId, notification.text);
|
|
363
366
|
}
|
|
364
367
|
}
|
|
365
368
|
else {
|