@openacp/cli 0.6.0 → 0.6.2
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/README.md +11 -2
- package/dist/{admin-IKPS5PFC.js → admin-IVQTC72V.js} +2 -2
- package/dist/{agent-catalog-T5ECPEDA.js → agent-catalog-IVU2KANH.js} +2 -2
- package/dist/{agents-55NX3DHM.js → agents-SXIY4IEF.js} +2 -2
- package/dist/{chunk-6Q7PZWCL.js → chunk-2OFIWTYD.js} +3 -3
- package/dist/{chunk-H7ZMPBZC.js → chunk-3KGRVAEV.js} +1 -1
- package/dist/chunk-3KGRVAEV.js.map +1 -0
- package/dist/{chunk-IURZ4QHG.js → chunk-7QJS2XBD.js} +2 -1
- package/dist/chunk-7QJS2XBD.js.map +1 -0
- package/dist/{chunk-MHFCZGRW.js → chunk-7WQH4SOY.js} +15 -5
- package/dist/{chunk-MHFCZGRW.js.map → chunk-7WQH4SOY.js.map} +1 -1
- package/dist/{chunk-J6X5SW6O.js → chunk-CKOK7JW6.js} +3 -2
- package/dist/{chunk-J6X5SW6O.js.map → chunk-CKOK7JW6.js.map} +1 -1
- package/dist/{chunk-DWQKUECJ.js → chunk-EWYNCHUH.js} +68 -17
- package/dist/chunk-EWYNCHUH.js.map +1 -0
- package/dist/{chunk-Z46LGZ7R.js → chunk-F3AICYO4.js} +56 -1
- package/dist/chunk-F3AICYO4.js.map +1 -0
- package/dist/{chunk-3WPG7GXA.js → chunk-FF4C3ZE4.js} +2 -2
- package/dist/chunk-FF4C3ZE4.js.map +1 -0
- package/dist/{chunk-5NBWM7P6.js → chunk-FMWSVLRM.js} +35 -2
- package/dist/chunk-FMWSVLRM.js.map +1 -0
- package/dist/{chunk-THBR6OXH.js → chunk-HSGUPJU5.js} +1 -1
- package/dist/chunk-HSGUPJU5.js.map +1 -0
- package/dist/{chunk-V2V767XI.js → chunk-IFTYEG5J.js} +2439 -957
- package/dist/chunk-IFTYEG5J.js.map +1 -0
- package/dist/{chunk-7G5QKLLF.js → chunk-IUIMBEBX.js} +1 -1
- package/dist/chunk-IUIMBEBX.js.map +1 -0
- package/dist/{chunk-YYQXWA62.js → chunk-KO5RL7MZ.js} +2 -2
- package/dist/{chunk-AKIU4JBF.js → chunk-ONENT7JQ.js} +2 -2
- package/dist/chunk-ONENT7JQ.js.map +1 -0
- package/dist/{chunk-437NLISU.js → chunk-TMCQZAXN.js} +2 -2
- package/dist/chunk-TMCQZAXN.js.map +1 -0
- package/dist/{chunk-T22OLSET.js → chunk-TTDSLV35.js} +1 -1
- package/dist/chunk-TTDSLV35.js.map +1 -0
- package/dist/{chunk-SPX7CKWV.js → chunk-WQZ4RXH7.js} +2 -2
- package/dist/cli.js +41 -36
- package/dist/cli.js.map +1 -1
- package/dist/{config-KF2MQWAP.js → config-4YSJ4NCI.js} +2 -2
- package/dist/{config-editor-OTODXUF7.js → config-editor-TOZUBMO7.js} +4 -4
- package/dist/{config-registry-SNKA2EH2.js → config-registry-7I6GGDOY.js} +2 -2
- package/dist/{daemon-U6UC7OM4.js → daemon-I6XMRQ6P.js} +3 -3
- package/dist/{discord-SLLKRUP7.js → discord-7B5NWW5Z.js} +154 -146
- package/dist/discord-7B5NWW5Z.js.map +1 -0
- package/dist/{doctor-DB5PRQ6D.js → doctor-FR5GASOQ.js} +4 -4
- package/dist/doctor-UOH7YCT2.js +9 -0
- package/dist/index.d.ts +475 -72
- package/dist/index.js +29 -11
- package/dist/{integrate-VOUYBPPZ.js → integrate-QTK4PPYQ.js} +15 -6
- package/dist/integrate-QTK4PPYQ.js.map +1 -0
- package/dist/{main-M6RH3SS5.js → main-46BVXFWI.js} +20 -19
- package/dist/main-46BVXFWI.js.map +1 -0
- package/dist/{menu-J5YVH665.js → menu-XR2GET2B.js} +2 -2
- package/dist/{new-session-DRRP2J7E.js → new-session-BVNE6S3A.js} +3 -3
- package/dist/{session-FVFLBREJ.js → session-ZMAM67AA.js} +2 -2
- package/dist/{settings-LPOLJ6SA.js → settings-LQ57CFY4.js} +2 -2
- package/dist/{setup-LI5CKYDK.js → setup-DZXZTQRD.js} +3 -3
- package/dist/{tunnel-service-U6V4HQOO.js → tunnel-service-O5EKGFLO.js} +19 -1
- package/dist/tunnel-service-O5EKGFLO.js.map +1 -0
- package/package.json +2 -1
- package/dist/chunk-3WPG7GXA.js.map +0 -1
- package/dist/chunk-437NLISU.js.map +0 -1
- package/dist/chunk-5NBWM7P6.js.map +0 -1
- package/dist/chunk-7G5QKLLF.js.map +0 -1
- package/dist/chunk-AKIU4JBF.js.map +0 -1
- package/dist/chunk-DWQKUECJ.js.map +0 -1
- package/dist/chunk-H7ZMPBZC.js.map +0 -1
- package/dist/chunk-IURZ4QHG.js.map +0 -1
- package/dist/chunk-T22OLSET.js.map +0 -1
- package/dist/chunk-THBR6OXH.js.map +0 -1
- package/dist/chunk-V2V767XI.js.map +0 -1
- package/dist/chunk-Z46LGZ7R.js.map +0 -1
- package/dist/discord-SLLKRUP7.js.map +0 -1
- package/dist/doctor-SYWNJFYK.js +0 -9
- package/dist/integrate-VOUYBPPZ.js.map +0 -1
- package/dist/main-M6RH3SS5.js.map +0 -1
- package/dist/tunnel-service-U6V4HQOO.js.map +0 -1
- /package/dist/{admin-IKPS5PFC.js.map → admin-IVQTC72V.js.map} +0 -0
- /package/dist/{agent-catalog-T5ECPEDA.js.map → agent-catalog-IVU2KANH.js.map} +0 -0
- /package/dist/{agents-55NX3DHM.js.map → agents-SXIY4IEF.js.map} +0 -0
- /package/dist/{chunk-6Q7PZWCL.js.map → chunk-2OFIWTYD.js.map} +0 -0
- /package/dist/{chunk-YYQXWA62.js.map → chunk-KO5RL7MZ.js.map} +0 -0
- /package/dist/{chunk-SPX7CKWV.js.map → chunk-WQZ4RXH7.js.map} +0 -0
- /package/dist/{config-KF2MQWAP.js.map → config-4YSJ4NCI.js.map} +0 -0
- /package/dist/{config-editor-OTODXUF7.js.map → config-editor-TOZUBMO7.js.map} +0 -0
- /package/dist/{config-registry-SNKA2EH2.js.map → config-registry-7I6GGDOY.js.map} +0 -0
- /package/dist/{daemon-U6UC7OM4.js.map → daemon-I6XMRQ6P.js.map} +0 -0
- /package/dist/{doctor-DB5PRQ6D.js.map → doctor-FR5GASOQ.js.map} +0 -0
- /package/dist/{doctor-SYWNJFYK.js.map → doctor-UOH7YCT2.js.map} +0 -0
- /package/dist/{menu-J5YVH665.js.map → menu-XR2GET2B.js.map} +0 -0
- /package/dist/{new-session-DRRP2J7E.js.map → new-session-BVNE6S3A.js.map} +0 -0
- /package/dist/{session-FVFLBREJ.js.map → session-ZMAM67AA.js.map} +0 -0
- /package/dist/{settings-LPOLJ6SA.js.map → settings-LQ57CFY4.js.map} +0 -0
- /package/dist/{setup-LI5CKYDK.js.map → setup-DZXZTQRD.js.map} +0 -0
|
@@ -4,20 +4,20 @@ import {
|
|
|
4
4
|
handleHandoff,
|
|
5
5
|
handleSessions,
|
|
6
6
|
handleStatus
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-TTDSLV35.js";
|
|
8
8
|
import {
|
|
9
9
|
handleAgentButton,
|
|
10
10
|
handleAgents,
|
|
11
11
|
handleInstall
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-3KGRVAEV.js";
|
|
13
13
|
import {
|
|
14
14
|
handleSettings,
|
|
15
15
|
handleSettingsButton
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-HSGUPJU5.js";
|
|
17
17
|
import {
|
|
18
18
|
handleDoctor,
|
|
19
19
|
handleDoctorButton
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-FF4C3ZE4.js";
|
|
21
21
|
import {
|
|
22
22
|
buildActionKeyboard,
|
|
23
23
|
detectAction,
|
|
@@ -27,7 +27,7 @@ import {
|
|
|
27
27
|
handleNew,
|
|
28
28
|
handleNewChat,
|
|
29
29
|
handleNewSessionButton
|
|
30
|
-
} from "./chunk-
|
|
30
|
+
} from "./chunk-ONENT7JQ.js";
|
|
31
31
|
import {
|
|
32
32
|
buildDeepLink,
|
|
33
33
|
createSessionThread,
|
|
@@ -41,13 +41,14 @@ import {
|
|
|
41
41
|
handleDangerousButton,
|
|
42
42
|
handleRestart,
|
|
43
43
|
handleUpdate
|
|
44
|
-
} from "./chunk-
|
|
44
|
+
} from "./chunk-IUIMBEBX.js";
|
|
45
45
|
import {
|
|
46
46
|
ChannelAdapter,
|
|
47
|
-
PRODUCT_GUIDE
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
import "./chunk-
|
|
47
|
+
PRODUCT_GUIDE,
|
|
48
|
+
dispatchMessage
|
|
49
|
+
} from "./chunk-FMWSVLRM.js";
|
|
50
|
+
import "./chunk-WQZ4RXH7.js";
|
|
51
|
+
import "./chunk-EWYNCHUH.js";
|
|
51
52
|
import {
|
|
52
53
|
log
|
|
53
54
|
} from "./chunk-ESOPMQAY.js";
|
|
@@ -816,8 +817,10 @@ var SkillCommandManager = class {
|
|
|
816
817
|
const record = this.sessionManager.getSessionRecord(sessionId);
|
|
817
818
|
if (record) {
|
|
818
819
|
const platform = record.platform;
|
|
819
|
-
|
|
820
|
-
|
|
820
|
+
if (platform && typeof platform === "object" && "threadId" in platform) {
|
|
821
|
+
const { skillMsgId: _removed, ...rest } = platform;
|
|
822
|
+
await this.sessionManager.patchRecord(sessionId, { platform: rest });
|
|
823
|
+
}
|
|
821
824
|
}
|
|
822
825
|
}
|
|
823
826
|
};
|
|
@@ -980,12 +983,12 @@ Each session gets its own forum thread \u2014 chat there to work with the agent.
|
|
|
980
983
|
}
|
|
981
984
|
async function handleClear(interaction, adapter) {
|
|
982
985
|
await interaction.deferReply({ ephemeral: true });
|
|
983
|
-
if (!adapter.
|
|
986
|
+
if (!adapter.getAssistantSessionId()) {
|
|
984
987
|
await interaction.editReply("\u26A0\uFE0F Assistant is not available.");
|
|
985
988
|
return;
|
|
986
989
|
}
|
|
987
990
|
try {
|
|
988
|
-
await adapter.
|
|
991
|
+
await adapter.respawnAssistant();
|
|
989
992
|
await interaction.editReply("\u2705 Assistant history cleared.");
|
|
990
993
|
} catch (err) {
|
|
991
994
|
const message = err instanceof Error ? err.message : String(err);
|
|
@@ -1001,12 +1004,12 @@ async function handleMenuButton(interaction, adapter) {
|
|
|
1001
1004
|
try {
|
|
1002
1005
|
switch (customId) {
|
|
1003
1006
|
case "m:new": {
|
|
1004
|
-
const { handleNew: handleNew2 } = await import("./new-session-
|
|
1007
|
+
const { handleNew: handleNew2 } = await import("./new-session-BVNE6S3A.js");
|
|
1005
1008
|
await interaction.followUp({ content: "Use `/new` to create a new session.", ephemeral: true });
|
|
1006
1009
|
break;
|
|
1007
1010
|
}
|
|
1008
1011
|
case "m:sessions": {
|
|
1009
|
-
const { handleSessions: handleSessions2 } = await import("./session-
|
|
1012
|
+
const { handleSessions: handleSessions2 } = await import("./session-ZMAM67AA.js");
|
|
1010
1013
|
await showSessionsList(interaction, adapter);
|
|
1011
1014
|
break;
|
|
1012
1015
|
}
|
|
@@ -1015,12 +1018,12 @@ async function handleMenuButton(interaction, adapter) {
|
|
|
1015
1018
|
break;
|
|
1016
1019
|
}
|
|
1017
1020
|
case "m:agents": {
|
|
1018
|
-
const { showAgentsList } = await import("./agents-
|
|
1021
|
+
const { showAgentsList } = await import("./agents-SXIY4IEF.js");
|
|
1019
1022
|
await showAgentsList(interaction, adapter);
|
|
1020
1023
|
break;
|
|
1021
1024
|
}
|
|
1022
1025
|
case "m:settings": {
|
|
1023
|
-
const { showSettingsInfo } = await import("./settings-
|
|
1026
|
+
const { showSettingsInfo } = await import("./settings-LQ57CFY4.js");
|
|
1024
1027
|
await showSettingsInfo(interaction, adapter);
|
|
1025
1028
|
break;
|
|
1026
1029
|
}
|
|
@@ -1029,7 +1032,7 @@ async function handleMenuButton(interaction, adapter) {
|
|
|
1029
1032
|
break;
|
|
1030
1033
|
}
|
|
1031
1034
|
case "m:restart": {
|
|
1032
|
-
const { handleRestart: handleRestart2 } = await import("./admin-
|
|
1035
|
+
const { handleRestart: handleRestart2 } = await import("./admin-IVQTC72V.js");
|
|
1033
1036
|
if (!adapter.core.requestRestart) {
|
|
1034
1037
|
await interaction.followUp({ content: "\u26A0\uFE0F Restart not available.", ephemeral: true });
|
|
1035
1038
|
} else {
|
|
@@ -1048,7 +1051,7 @@ async function handleMenuButton(interaction, adapter) {
|
|
|
1048
1051
|
break;
|
|
1049
1052
|
}
|
|
1050
1053
|
case "m:doctor": {
|
|
1051
|
-
const { runDoctorInline } = await import("./doctor-
|
|
1054
|
+
const { runDoctorInline } = await import("./doctor-FR5GASOQ.js");
|
|
1052
1055
|
await runDoctorInline(interaction, adapter);
|
|
1053
1056
|
break;
|
|
1054
1057
|
}
|
|
@@ -1287,11 +1290,11 @@ async function setupButtonCallbacks(interaction, adapter) {
|
|
|
1287
1290
|
}
|
|
1288
1291
|
}
|
|
1289
1292
|
async function executeNewSession(interaction, adapter, agentName, workspace) {
|
|
1290
|
-
const { executeNewSession: doExecute } = await import("./new-session-
|
|
1293
|
+
const { executeNewSession: doExecute } = await import("./new-session-BVNE6S3A.js");
|
|
1291
1294
|
await doExecute(interaction, adapter, agentName, workspace);
|
|
1292
1295
|
}
|
|
1293
1296
|
async function executeCancelSession(interaction, adapter) {
|
|
1294
|
-
const { executeCancelSession: doCancel } = await import("./session-
|
|
1297
|
+
const { executeCancelSession: doCancel } = await import("./session-ZMAM67AA.js");
|
|
1295
1298
|
await doCancel(interaction, adapter);
|
|
1296
1299
|
}
|
|
1297
1300
|
|
|
@@ -1795,138 +1798,151 @@ var DiscordAdapter = class extends ChannelAdapter {
|
|
|
1795
1798
|
return null;
|
|
1796
1799
|
}
|
|
1797
1800
|
}
|
|
1798
|
-
// ───
|
|
1799
|
-
|
|
1800
|
-
if (this.assistantInitializing && this.assistantSession && sessionId === this.assistantSession.id) {
|
|
1801
|
-
return;
|
|
1802
|
-
}
|
|
1803
|
-
const thread = await this.getThread(sessionId);
|
|
1804
|
-
if (!thread) return;
|
|
1805
|
-
await ensureUnarchived(thread);
|
|
1806
|
-
const isAssistant = this.assistantSession != null && sessionId === this.assistantSession.id;
|
|
1801
|
+
// ─── Helper: get or create activity tracker ──────────────────────────────
|
|
1802
|
+
getOrCreateTracker(sessionId, thread) {
|
|
1807
1803
|
if (!this.sessionTrackers.has(sessionId)) {
|
|
1808
1804
|
this.sessionTrackers.set(sessionId, new ActivityTracker(thread, this.sendQueue));
|
|
1809
1805
|
}
|
|
1810
|
-
|
|
1811
|
-
|
|
1812
|
-
|
|
1813
|
-
|
|
1814
|
-
|
|
1815
|
-
|
|
1816
|
-
|
|
1817
|
-
|
|
1818
|
-
|
|
1819
|
-
|
|
1820
|
-
|
|
1821
|
-
|
|
1822
|
-
|
|
1823
|
-
|
|
1824
|
-
|
|
1825
|
-
|
|
1826
|
-
|
|
1827
|
-
|
|
1828
|
-
|
|
1829
|
-
|
|
1830
|
-
|
|
1831
|
-
|
|
1832
|
-
|
|
1833
|
-
|
|
1834
|
-
|
|
1835
|
-
|
|
1836
|
-
|
|
1837
|
-
|
|
1838
|
-
|
|
1839
|
-
|
|
1840
|
-
|
|
1841
|
-
|
|
1842
|
-
|
|
1843
|
-
|
|
1844
|
-
|
|
1845
|
-
|
|
1846
|
-
|
|
1847
|
-
|
|
1806
|
+
return this.sessionTrackers.get(sessionId);
|
|
1807
|
+
}
|
|
1808
|
+
// --- MessageHandlers for dispatchMessage ---
|
|
1809
|
+
messageHandlers = {
|
|
1810
|
+
onThought: async (ctx, _content) => {
|
|
1811
|
+
const tracker = this.getOrCreateTracker(ctx.sessionId, ctx.thread);
|
|
1812
|
+
await tracker.onThought();
|
|
1813
|
+
},
|
|
1814
|
+
onText: async (ctx, content) => {
|
|
1815
|
+
const tracker = this.getOrCreateTracker(ctx.sessionId, ctx.thread);
|
|
1816
|
+
await tracker.onTextStart();
|
|
1817
|
+
const draft = this.draftManager.getOrCreate(ctx.sessionId, ctx.thread);
|
|
1818
|
+
draft.append(content.text);
|
|
1819
|
+
this.draftManager.appendText(ctx.sessionId, content.text);
|
|
1820
|
+
},
|
|
1821
|
+
onToolCall: async (ctx, content) => {
|
|
1822
|
+
const tracker = this.getOrCreateTracker(ctx.sessionId, ctx.thread);
|
|
1823
|
+
await tracker.onToolCall();
|
|
1824
|
+
await this.draftManager.finalize(ctx.sessionId, ctx.thread, ctx.isAssistant);
|
|
1825
|
+
const meta = content.metadata ?? {};
|
|
1826
|
+
await this.toolTracker.trackNewCall(ctx.sessionId, ctx.thread, {
|
|
1827
|
+
id: String(meta.id ?? ""),
|
|
1828
|
+
name: content.text || String(meta.name ?? "Tool"),
|
|
1829
|
+
kind: meta.kind,
|
|
1830
|
+
status: String(meta.status ?? "running"),
|
|
1831
|
+
content: meta.content,
|
|
1832
|
+
viewerLinks: meta.viewerLinks,
|
|
1833
|
+
viewerFilePath: meta.viewerFilePath
|
|
1834
|
+
});
|
|
1835
|
+
},
|
|
1836
|
+
onToolUpdate: async (ctx, content) => {
|
|
1837
|
+
const meta = content.metadata ?? {};
|
|
1838
|
+
await this.toolTracker.updateCall(ctx.sessionId, {
|
|
1839
|
+
id: String(meta.id ?? ""),
|
|
1840
|
+
name: content.text || String(meta.name ?? ""),
|
|
1841
|
+
kind: meta.kind,
|
|
1842
|
+
status: String(meta.status ?? "completed"),
|
|
1843
|
+
content: meta.content,
|
|
1844
|
+
viewerLinks: meta.viewerLinks,
|
|
1845
|
+
viewerFilePath: meta.viewerFilePath
|
|
1846
|
+
});
|
|
1847
|
+
},
|
|
1848
|
+
onPlan: async (ctx, content) => {
|
|
1849
|
+
const entries = content.metadata?.entries ?? [];
|
|
1850
|
+
const tracker = this.getOrCreateTracker(ctx.sessionId, ctx.thread);
|
|
1851
|
+
await tracker.onPlan(entries);
|
|
1852
|
+
},
|
|
1853
|
+
onUsage: async (ctx, content) => {
|
|
1854
|
+
await this.draftManager.finalize(ctx.sessionId, ctx.thread, ctx.isAssistant);
|
|
1855
|
+
const meta = content.metadata ?? {};
|
|
1856
|
+
const tracker = this.getOrCreateTracker(ctx.sessionId, ctx.thread);
|
|
1857
|
+
await tracker.sendUsage({
|
|
1858
|
+
tokensUsed: meta.tokensUsed,
|
|
1859
|
+
contextSize: meta.contextSize
|
|
1860
|
+
});
|
|
1861
|
+
try {
|
|
1862
|
+
const deepLink = buildDeepLink(this.guild.id, ctx.thread.id);
|
|
1863
|
+
await this.sendNotification({
|
|
1864
|
+
sessionId: ctx.sessionId,
|
|
1865
|
+
type: "completed",
|
|
1866
|
+
summary: content.text || "Session completed",
|
|
1867
|
+
deepLink
|
|
1848
1868
|
});
|
|
1849
|
-
|
|
1869
|
+
} catch {
|
|
1850
1870
|
}
|
|
1851
|
-
|
|
1852
|
-
|
|
1853
|
-
|
|
1854
|
-
|
|
1871
|
+
},
|
|
1872
|
+
onSessionEnd: async (ctx, _content) => {
|
|
1873
|
+
await this.draftManager.finalize(ctx.sessionId, ctx.thread, ctx.isAssistant);
|
|
1874
|
+
const tracker = this.getOrCreateTracker(ctx.sessionId, ctx.thread);
|
|
1875
|
+
await tracker.cleanup();
|
|
1876
|
+
this.toolTracker.cleanup(ctx.sessionId);
|
|
1877
|
+
this.sessionTrackers.delete(ctx.sessionId);
|
|
1878
|
+
await this.skillManager.cleanup(ctx.sessionId);
|
|
1879
|
+
try {
|
|
1880
|
+
await this.sendQueue.enqueue(
|
|
1881
|
+
() => ctx.thread.send({ content: "\u2705 Done" }),
|
|
1882
|
+
{ type: "other" }
|
|
1883
|
+
);
|
|
1884
|
+
} catch {
|
|
1855
1885
|
}
|
|
1856
|
-
|
|
1857
|
-
|
|
1858
|
-
|
|
1859
|
-
|
|
1860
|
-
|
|
1861
|
-
|
|
1862
|
-
|
|
1863
|
-
|
|
1864
|
-
|
|
1865
|
-
|
|
1866
|
-
|
|
1867
|
-
|
|
1868
|
-
|
|
1869
|
-
deepLink
|
|
1870
|
-
});
|
|
1871
|
-
} catch {
|
|
1872
|
-
}
|
|
1873
|
-
break;
|
|
1886
|
+
},
|
|
1887
|
+
onError: async (ctx, content) => {
|
|
1888
|
+
await this.draftManager.finalize(ctx.sessionId, ctx.thread, ctx.isAssistant);
|
|
1889
|
+
const tracker = this.getOrCreateTracker(ctx.sessionId, ctx.thread);
|
|
1890
|
+
await tracker.cleanup();
|
|
1891
|
+
this.toolTracker.cleanup(ctx.sessionId);
|
|
1892
|
+
this.sessionTrackers.delete(ctx.sessionId);
|
|
1893
|
+
try {
|
|
1894
|
+
await this.sendQueue.enqueue(
|
|
1895
|
+
() => ctx.thread.send({ content: `\u274C Error: ${content.text}` }),
|
|
1896
|
+
{ type: "other" }
|
|
1897
|
+
);
|
|
1898
|
+
} catch {
|
|
1874
1899
|
}
|
|
1875
|
-
|
|
1876
|
-
|
|
1877
|
-
|
|
1878
|
-
|
|
1879
|
-
|
|
1880
|
-
|
|
1900
|
+
},
|
|
1901
|
+
onAttachment: async (ctx, content) => {
|
|
1902
|
+
if (!content.attachment) return;
|
|
1903
|
+
const { attachment } = content;
|
|
1904
|
+
await this.draftManager.finalize(ctx.sessionId, ctx.thread, ctx.isAssistant);
|
|
1905
|
+
if (isAttachmentTooLarge(attachment.size)) {
|
|
1906
|
+
log.warn({ sessionId: ctx.sessionId, fileName: attachment.fileName, size: attachment.size }, "[discord-media] File too large (>25MB)");
|
|
1881
1907
|
try {
|
|
1882
1908
|
await this.sendQueue.enqueue(
|
|
1883
|
-
() => thread.send({ content:
|
|
1909
|
+
() => ctx.thread.send({ content: `\u26A0\uFE0F File too large to send (${Math.round(attachment.size / 1024 / 1024)}MB): ${attachment.fileName}` }),
|
|
1884
1910
|
{ type: "other" }
|
|
1885
1911
|
);
|
|
1886
1912
|
} catch {
|
|
1887
1913
|
}
|
|
1888
|
-
|
|
1914
|
+
return;
|
|
1889
1915
|
}
|
|
1890
|
-
|
|
1891
|
-
await this.
|
|
1892
|
-
|
|
1893
|
-
|
|
1894
|
-
|
|
1895
|
-
|
|
1896
|
-
|
|
1897
|
-
() => thread.send({ content: `\u274C Error: ${content.text}` }),
|
|
1898
|
-
{ type: "other" }
|
|
1899
|
-
);
|
|
1900
|
-
} catch {
|
|
1901
|
-
}
|
|
1902
|
-
break;
|
|
1916
|
+
try {
|
|
1917
|
+
await this.sendQueue.enqueue(
|
|
1918
|
+
() => ctx.thread.send({ files: [{ attachment: attachment.filePath, name: attachment.fileName }] }),
|
|
1919
|
+
{ type: "other" }
|
|
1920
|
+
);
|
|
1921
|
+
} catch (err) {
|
|
1922
|
+
log.error({ err, sessionId: ctx.sessionId, fileName: attachment.fileName }, "[discord-media] Failed to send attachment");
|
|
1903
1923
|
}
|
|
1904
|
-
|
|
1905
|
-
|
|
1906
|
-
|
|
1907
|
-
await this.
|
|
1908
|
-
|
|
1909
|
-
|
|
1910
|
-
|
|
1911
|
-
|
|
1912
|
-
() => thread.send({ content: `\u26A0\uFE0F File too large to send (${Math.round(attachment.size / 1024 / 1024)}MB): ${attachment.fileName}` }),
|
|
1913
|
-
{ type: "other" }
|
|
1914
|
-
);
|
|
1915
|
-
} catch {
|
|
1916
|
-
}
|
|
1917
|
-
break;
|
|
1918
|
-
}
|
|
1919
|
-
try {
|
|
1920
|
-
await this.sendQueue.enqueue(
|
|
1921
|
-
() => thread.send({ files: [{ attachment: attachment.filePath, name: attachment.fileName }] }),
|
|
1922
|
-
{ type: "other" }
|
|
1923
|
-
);
|
|
1924
|
-
} catch (err) {
|
|
1925
|
-
log.error({ err, sessionId, fileName: attachment.fileName }, "[discord-media] Failed to send attachment");
|
|
1926
|
-
}
|
|
1927
|
-
break;
|
|
1924
|
+
},
|
|
1925
|
+
onSystemMessage: async (ctx, content) => {
|
|
1926
|
+
try {
|
|
1927
|
+
await this.sendQueue.enqueue(
|
|
1928
|
+
() => ctx.thread.send({ content: content.text }),
|
|
1929
|
+
{ type: "other" }
|
|
1930
|
+
);
|
|
1931
|
+
} catch {
|
|
1928
1932
|
}
|
|
1929
1933
|
}
|
|
1934
|
+
};
|
|
1935
|
+
// ─── sendMessage ──────────────────────────────────────────────────────────
|
|
1936
|
+
async sendMessage(sessionId, content) {
|
|
1937
|
+
if (this.assistantInitializing && this.assistantSession && sessionId === this.assistantSession.id) {
|
|
1938
|
+
return;
|
|
1939
|
+
}
|
|
1940
|
+
const thread = await this.getThread(sessionId);
|
|
1941
|
+
if (!thread) return;
|
|
1942
|
+
await ensureUnarchived(thread);
|
|
1943
|
+
const isAssistant = this.assistantSession != null && sessionId === this.assistantSession.id;
|
|
1944
|
+
const ctx = { sessionId, thread, isAssistant };
|
|
1945
|
+
await dispatchMessage(this.messageHandlers, ctx, content);
|
|
1930
1946
|
}
|
|
1931
1947
|
// ─── sendPermissionRequest ────────────────────────────────────────────────
|
|
1932
1948
|
async sendPermissionRequest(sessionId, request) {
|
|
@@ -1935,14 +1951,6 @@ var DiscordAdapter = class extends ChannelAdapter {
|
|
|
1935
1951
|
log.warn({ sessionId }, "[DiscordAdapter] sendPermissionRequest: session not found");
|
|
1936
1952
|
return;
|
|
1937
1953
|
}
|
|
1938
|
-
const autoApprove = request.description.toLowerCase().includes("openacp") || session.dangerousMode;
|
|
1939
|
-
if (autoApprove) {
|
|
1940
|
-
const allowOption = request.options.find((o) => o.isAllow);
|
|
1941
|
-
if (allowOption && session.permissionGate.requestId === request.id) {
|
|
1942
|
-
session.permissionGate.resolve(allowOption.id);
|
|
1943
|
-
}
|
|
1944
|
-
return;
|
|
1945
|
-
}
|
|
1946
1954
|
const thread = await this.getThread(sessionId);
|
|
1947
1955
|
if (!thread) return;
|
|
1948
1956
|
await this.permissionHandler.sendPermissionRequest(session, request, thread);
|
|
@@ -2031,4 +2039,4 @@ ${notification.deepLink}`;
|
|
|
2031
2039
|
export {
|
|
2032
2040
|
DiscordAdapter
|
|
2033
2041
|
};
|
|
2034
|
-
//# sourceMappingURL=discord-
|
|
2042
|
+
//# sourceMappingURL=discord-7B5NWW5Z.js.map
|