agentcord 0.1.9 → 0.2.0

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.
@@ -738,6 +738,12 @@ function detectNumberedOptions(text) {
738
738
  const hasQuestion = /\?\s*$/.test(preamble.trim()) || /\b(which|choose|select|pick|prefer|would you like|how would you|what approach|option)\b/.test(preamble);
739
739
  return hasQuestion ? options : null;
740
740
  }
741
+ var ABORT_PATTERNS = ["abort", "cancel", "interrupt", "killed", "signal"];
742
+ function isAbortError(err) {
743
+ if (err instanceof Error && err.name === "AbortError") return true;
744
+ const msg = (err.message || "").toLowerCase();
745
+ return ABORT_PATTERNS.some((p) => msg.includes(p));
746
+ }
741
747
  function detectYesNoPrompt(text) {
742
748
  const lower = text.toLowerCase();
743
749
  return /\b(y\/n|yes\/no|confirm|proceed)\b/.test(lower) || /\?\s*$/.test(text.trim()) && /\b(should|would you|do you want|shall)\b/.test(lower);
@@ -948,13 +954,6 @@ function buildSystemPromptParts(session) {
948
954
  if (modePrompt) parts.push(modePrompt);
949
955
  return parts;
950
956
  }
951
- function resetProviderSession(sessionId) {
952
- const session = sessions.get(sessionId);
953
- if (session) {
954
- session.providerSessionId = void 0;
955
- saveSessions();
956
- }
957
- }
958
957
  async function* sendPrompt(sessionId, prompt) {
959
958
  const session = sessions.get(sessionId);
960
959
  if (!session) throw new Error(`Session "${sessionId}" not found`);
@@ -985,7 +984,7 @@ async function* sendPrompt(sessionId, prompt) {
985
984
  }
986
985
  session.messageCount++;
987
986
  } catch (err) {
988
- if (err.name === "AbortError") {
987
+ if (isAbortError(err)) {
989
988
  } else {
990
989
  throw err;
991
990
  }
@@ -1026,7 +1025,7 @@ async function* continueSession(sessionId) {
1026
1025
  }
1027
1026
  session.messageCount++;
1028
1027
  } catch (err) {
1029
- if (err.name === "AbortError") {
1028
+ if (isAbortError(err)) {
1030
1029
  } else {
1031
1030
  throw err;
1032
1031
  }
@@ -1254,15 +1253,6 @@ function renderCodexTodoListEmbed(event) {
1254
1253
  }
1255
1254
 
1256
1255
  // src/output-handler.ts
1257
- var ABORT_PATTERNS = ["abort", "cancel", "interrupt", "killed", "signal"];
1258
- function isAbortLike(err) {
1259
- if (err.name === "AbortError") return true;
1260
- const msg = (err.message || "").toLowerCase();
1261
- return ABORT_PATTERNS.some((p) => msg.includes(p));
1262
- }
1263
- function isAbortError(errors) {
1264
- return errors.some((e) => ABORT_PATTERNS.some((p) => e.toLowerCase().includes(p)));
1265
- }
1266
1256
  var expandableStore = /* @__PURE__ */ new Map();
1267
1257
  var expandCounter = 0;
1268
1258
  var pendingAnswersStore = /* @__PURE__ */ new Map();
@@ -1730,10 +1720,6 @@ ${statusLine}`);
1730
1720
  ${event.errors.join("\n")}
1731
1721
  \`\`\``);
1732
1722
  }
1733
- if (!event.success && !isAbortError(event.errors)) {
1734
- resetProviderSession(sessionId);
1735
- streamer.append("\n-# Session reset \u2014 next message will start a fresh provider session.");
1736
- }
1737
1723
  await streamer.finalize();
1738
1724
  const components = [];
1739
1725
  const checkText = lastText || "";
@@ -1762,13 +1748,11 @@ ${event.message}
1762
1748
  }
1763
1749
  } catch (err) {
1764
1750
  await streamer.finalize();
1765
- const errMsg = err.message || "";
1766
- if (!isAbortLike(err)) {
1767
- resetProviderSession(sessionId);
1751
+ if (!isAbortError(err)) {
1752
+ const errMsg = err.message || "";
1768
1753
  const embed = new EmbedBuilder2().setColor(15158332).setTitle("Error").setDescription(`\`\`\`
1769
1754
  ${errMsg}
1770
- \`\`\`
1771
- -# Session reset \u2014 next message will start a fresh provider session.`);
1755
+ \`\`\``);
1772
1756
  await channel.send({ embeds: [embed] });
1773
1757
  }
1774
1758
  } finally {
@@ -3055,17 +3039,7 @@ async function handleMessage(message) {
3055
3039
  userLastMessage.set(message.author.id, now);
3056
3040
  if (session.isGenerating) {
3057
3041
  abortSession(session.id);
3058
- const deadline = Date.now() + 5e3;
3059
- while (session.isGenerating && Date.now() < deadline) {
3060
- await new Promise((r) => setTimeout(r, 100));
3061
- }
3062
- if (session.isGenerating) {
3063
- await message.reply({
3064
- content: "Could not interrupt the current generation. Try `/session stop`.",
3065
- allowedMentions: { repliedUser: false }
3066
- });
3067
- return;
3068
- }
3042
+ await new Promise((r) => setTimeout(r, 200));
3069
3043
  }
3070
3044
  const text = message.content.trim();
3071
3045
  const imageAttachments = message.attachments.filter(
@@ -3126,15 +3100,11 @@ ${result.value.content}
3126
3100
  const stream = sendPrompt(session.id, prompt);
3127
3101
  await handleOutputStream(stream, channel, session.id, session.verbose, session.mode, session.provider);
3128
3102
  } catch (err) {
3129
- const errMsg = err.message || "";
3130
- const isAbort = err.name === "AbortError" || /abort|cancel|interrupt/i.test(errMsg);
3131
- if (isAbort) {
3103
+ if (isAbortError(err)) {
3132
3104
  return;
3133
3105
  }
3134
- resetProviderSession(session.id);
3135
3106
  await message.reply({
3136
- content: `Error: ${errMsg}
3137
- -# Session reset \u2014 next message will start a fresh provider session.`,
3107
+ content: `Error: ${err.message || "Unknown error"}`,
3138
3108
  allowedMentions: { repliedUser: false }
3139
3109
  });
3140
3110
  }
package/dist/cli.js CHANGED
@@ -18,7 +18,7 @@ switch (command) {
18
18
  console.log("Run \x1B[36magentcord setup\x1B[0m to configure.\n");
19
19
  process.exit(1);
20
20
  }
21
- const { startBot } = await import("./bot-MOK6APSV.js");
21
+ const { startBot } = await import("./bot-HGP3MV5P.js");
22
22
  console.log("agentcord starting...");
23
23
  await startBot();
24
24
  break;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agentcord",
3
- "version": "0.1.9",
3
+ "version": "0.2.0",
4
4
  "type": "module",
5
5
  "description": "Discord bot for managing AI coding agent sessions (Claude Code, Codex, and more)",
6
6
  "bin": {