@songsid/agend 2.1.1-beta.10 → 2.1.1-beta.12

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.
Files changed (92) hide show
  1. package/dist/backend/antigravity.js +9 -11
  2. package/dist/backend/antigravity.js.map +1 -1
  3. package/dist/backend/claude-code.js +7 -7
  4. package/dist/backend/claude-code.js.map +1 -1
  5. package/dist/backend/codex.d.ts +16 -0
  6. package/dist/backend/codex.js +251 -62
  7. package/dist/backend/codex.js.map +1 -1
  8. package/dist/backend/gemini-cli.js +4 -7
  9. package/dist/backend/gemini-cli.js.map +1 -1
  10. package/dist/backend/grok.js +24 -7
  11. package/dist/backend/grok.js.map +1 -1
  12. package/dist/backend/kiro.js +22 -9
  13. package/dist/backend/kiro.js.map +1 -1
  14. package/dist/backend/opencode.js +4 -7
  15. package/dist/backend/opencode.js.map +1 -1
  16. package/dist/backend/types.d.ts +7 -0
  17. package/dist/backend/types.js +3 -3
  18. package/dist/backend/types.js.map +1 -1
  19. package/dist/channel/adapters/discord.js +4 -5
  20. package/dist/channel/adapters/discord.js.map +1 -1
  21. package/dist/channel/adapters/telegram.js +50 -15
  22. package/dist/channel/adapters/telegram.js.map +1 -1
  23. package/dist/channel/ipc-bridge.d.ts +8 -0
  24. package/dist/channel/ipc-bridge.js +41 -14
  25. package/dist/channel/ipc-bridge.js.map +1 -1
  26. package/dist/channel/mcp-server.js +25 -10
  27. package/dist/channel/mcp-server.js.map +1 -1
  28. package/dist/channel/mcp-tools.js +25 -0
  29. package/dist/channel/mcp-tools.js.map +1 -1
  30. package/dist/channel/message-queue.d.ts +1 -0
  31. package/dist/channel/message-queue.js +49 -17
  32. package/dist/channel/message-queue.js.map +1 -1
  33. package/dist/channel/reconnect-backoff.d.ts +17 -0
  34. package/dist/channel/reconnect-backoff.js +21 -0
  35. package/dist/channel/reconnect-backoff.js.map +1 -0
  36. package/dist/cli.js +71 -26
  37. package/dist/cli.js.map +1 -1
  38. package/dist/completion.d.ts +27 -0
  39. package/dist/completion.js +121 -0
  40. package/dist/completion.js.map +1 -0
  41. package/dist/config-validator.js +9 -0
  42. package/dist/config-validator.js.map +1 -1
  43. package/dist/config.js +1 -0
  44. package/dist/config.js.map +1 -1
  45. package/dist/daemon.d.ts +74 -8
  46. package/dist/daemon.js +254 -18
  47. package/dist/daemon.js.map +1 -1
  48. package/dist/fleet-manager.d.ts +7 -1
  49. package/dist/fleet-manager.js +89 -16
  50. package/dist/fleet-manager.js.map +1 -1
  51. package/dist/general-knowledge/skills/cross-instance-messaging/SKILL.md +22 -0
  52. package/dist/general-knowledge/skills/model-discovery/SKILL.md +14 -23
  53. package/dist/general-knowledge/skills/session-management/SKILL.md +15 -34
  54. package/dist/instance-lifecycle.d.ts +13 -1
  55. package/dist/instance-lifecycle.js +70 -3
  56. package/dist/instance-lifecycle.js.map +1 -1
  57. package/dist/instructions.d.ts +5 -0
  58. package/dist/instructions.js +9 -11
  59. package/dist/instructions.js.map +1 -1
  60. package/dist/logger.js +14 -0
  61. package/dist/logger.js.map +1 -1
  62. package/dist/mcp-liveness.d.ts +21 -0
  63. package/dist/mcp-liveness.js +27 -0
  64. package/dist/mcp-liveness.js.map +1 -0
  65. package/dist/outbound-handlers.d.ts +9 -0
  66. package/dist/outbound-handlers.js +46 -26
  67. package/dist/outbound-handlers.js.map +1 -1
  68. package/dist/outbound-schemas.js +1 -1
  69. package/dist/outbound-schemas.js.map +1 -1
  70. package/dist/tmux-control.js +4 -2
  71. package/dist/tmux-control.js.map +1 -1
  72. package/dist/tmux-manager.d.ts +14 -0
  73. package/dist/tmux-manager.js +20 -6
  74. package/dist/tmux-manager.js.map +1 -1
  75. package/dist/topic-commands.d.ts +22 -1
  76. package/dist/topic-commands.js +95 -57
  77. package/dist/topic-commands.js.map +1 -1
  78. package/dist/tui-glyphs.d.ts +25 -0
  79. package/dist/tui-glyphs.js +26 -0
  80. package/dist/tui-glyphs.js.map +1 -0
  81. package/dist/types.d.ts +6 -0
  82. package/dist/ui/view.html +114 -2
  83. package/dist/usage/providers.d.ts +26 -0
  84. package/dist/usage/providers.js +447 -0
  85. package/dist/usage/providers.js.map +1 -0
  86. package/dist/usage/usage-api.d.ts +35 -0
  87. package/dist/usage/usage-api.js +52 -0
  88. package/dist/usage/usage-api.js.map +1 -0
  89. package/dist/view-api.d.ts +3 -0
  90. package/dist/view-api.js +10 -2
  91. package/dist/view-api.js.map +1 -1
  92. package/package.json +1 -1
@@ -4,20 +4,35 @@ const WORKER_BETWEEN_MS = 50;
4
4
  const MAX_BACKOFF_MS = 30_000;
5
5
  const FLOOD_CONTROL_THRESHOLD_MS = 10_000;
6
6
  const INITIAL_BACKOFF_MS = 1_000;
7
- function is429Error(err) {
7
+ function isDefinite429Rejection(err) {
8
8
  if (err instanceof Error) {
9
9
  const e = err;
10
10
  if (e.status === 429)
11
11
  return true;
12
12
  if (e.code === 429)
13
13
  return true;
14
- if (e.response?.status === 429)
14
+ if (e.error_code === 429)
15
15
  return true;
16
- if (e.message.includes("429") || e.message.toLowerCase().includes("too many requests"))
16
+ if (e.response?.status === 429)
17
17
  return true;
18
18
  }
19
19
  return false;
20
20
  }
21
+ /**
22
+ * Carries only operations which the remote API explicitly rejected before
23
+ * delivery. Earlier operations in the same merged batch may already have been
24
+ * accepted and must never be replayed.
25
+ */
26
+ class QueueDeliveryError extends Error {
27
+ cause;
28
+ retryItems;
29
+ constructor(cause, retryItems) {
30
+ super(cause instanceof Error ? cause.message : String(cause));
31
+ this.cause = cause;
32
+ this.retryItems = retryItems;
33
+ this.name = "QueueDeliveryError";
34
+ }
35
+ }
21
36
  function splitText(text) {
22
37
  const chunks = [];
23
38
  let offset = 0;
@@ -36,6 +51,13 @@ export class MessageQueue {
36
51
  this.sender = sender;
37
52
  this.logger = logger;
38
53
  }
54
+ warn(obj, msg) {
55
+ if (this.logger) {
56
+ this.logger.warn(obj, msg);
57
+ return;
58
+ }
59
+ console.warn(`[message-queue] ${msg}`, obj);
60
+ }
39
61
  queueKey(chatId, threadId) {
40
62
  return threadId != null ? `${chatId}:${threadId}` : `${chatId}:`;
41
63
  }
@@ -101,7 +123,7 @@ export class MessageQueue {
101
123
  // out the full exponential delay.
102
124
  state.backoffMs = INITIAL_BACKOFF_MS;
103
125
  state.backoffUntil = 0;
104
- this.logger?.warn({ chatId: state.key.chatId, dropped: before - state.items.length }, "MessageQueue flood control: dropped status_update items, backoff reset");
126
+ this.warn({ chatId: state.key.chatId, dropped: before - state.items.length }, "MessageQueue flood control: dropped status_update items, backoff reset");
105
127
  }
106
128
  }
107
129
  if (state.items.length === 0) {
@@ -122,16 +144,20 @@ export class MessageQueue {
122
144
  await this.sleep(WORKER_BETWEEN_MS);
123
145
  }
124
146
  catch (err) {
125
- if (is429Error(err)) {
126
- // Re-insert the consumed items back at the front of the queue
127
- state.items.unshift(...pendingItems);
147
+ const deliveryErr = err instanceof QueueDeliveryError ? err : null;
148
+ const cause = deliveryErr?.cause ?? err;
149
+ if (isDefinite429Rejection(cause)) {
150
+ // Re-insert only operations the API explicitly rejected. Content
151
+ // earlier in a merged batch may already have been delivered.
152
+ state.items.unshift(...(deliveryErr?.retryItems ?? pendingItems));
128
153
  // Exponential backoff, cap at MAX_BACKOFF_MS
129
154
  state.backoffUntil = Date.now() + state.backoffMs;
130
155
  state.backoffMs = Math.min(state.backoffMs * 2, MAX_BACKOFF_MS);
131
156
  }
132
157
  else {
133
- // Non-rate-limit error: drop the item to avoid infinite loops
134
- this.logger?.warn({ err, chatId: state.key.chatId }, "Message dropped due to non-retryable error");
158
+ // A timeout/network error may have happened after the remote API
159
+ // accepted the message. Drop rather than risk a duplicate.
160
+ this.warn({ err: cause, chatId: state.key.chatId }, "Message dropped because delivery outcome is unknown or error is non-retryable");
135
161
  state.backoffMs = INITIAL_BACKOFF_MS;
136
162
  state.backoffUntil = 0;
137
163
  await this.sleep(WORKER_BETWEEN_MS);
@@ -153,15 +179,21 @@ export class MessageQueue {
153
179
  if (first.type === "content") {
154
180
  const { merged, consumed } = this.mergeContentMessages(state);
155
181
  const work = async () => {
156
- for (const chunk of merged) {
157
- if (chunk.filePath) {
158
- await this.sender.sendFile(chatId, threadId, chunk.filePath);
159
- }
160
- else if (chunk.text) {
161
- const parts = splitText(chunk.text);
162
- for (const part of parts) {
163
- await this.sender.send(chatId, threadId, part);
182
+ for (let i = 0; i < merged.length; i++) {
183
+ const chunk = merged[i];
184
+ try {
185
+ if (chunk.filePath) {
186
+ await this.sender.sendFile(chatId, threadId, chunk.filePath);
164
187
  }
188
+ else if (chunk.text) {
189
+ await this.sender.send(chatId, threadId, chunk.text);
190
+ }
191
+ }
192
+ catch (err) {
193
+ const retryItems = merged.slice(i).map(remaining => remaining.filePath
194
+ ? { type: "content", filePath: remaining.filePath }
195
+ : { type: "content", text: remaining.text ?? "" });
196
+ throw new QueueDeliveryError(err, retryItems);
165
197
  }
166
198
  }
167
199
  };
@@ -1 +1 @@
1
- {"version":3,"file":"message-queue.js","sourceRoot":"","sources":["../../src/channel/message-queue.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"message-queue.js","sourceRoot":"","sources":["../../src/channel/message-queue.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * IPC reconnect backoff for the per-instance MCP server.
3
+ *
4
+ * Kept in its own module because mcp-server.ts runs `main()` on import (it is a
5
+ * CLI entrypoint) — importing it from a test would exit the process.
6
+ *
7
+ * There is deliberately NO give-up: the MCP server used to stop after
8
+ * 20 × 3s = 60s, but a fleet restart routinely takes longer (142s measured on a
9
+ * fleet with ~2k tasks), and an exited MCP server cannot be respawned mid-session
10
+ * by its client — the agent silently loses every agend tool until the user
11
+ * restarts the CLI. Idle retries cost ~nothing (one unix-socket connect), and the
12
+ * server's orphan check still terminates it when its own CLI goes away.
13
+ */
14
+ export declare const RECONNECT_BASE_MS = 1000;
15
+ export declare const RECONNECT_MAX_MS = 30000;
16
+ /** Delay before reconnect attempt N (1-based): 1s, 2s, 4s, 8s, 16s, then 30s forever. */
17
+ export declare function reconnectDelayMs(attempt: number): number;
@@ -0,0 +1,21 @@
1
+ /**
2
+ * IPC reconnect backoff for the per-instance MCP server.
3
+ *
4
+ * Kept in its own module because mcp-server.ts runs `main()` on import (it is a
5
+ * CLI entrypoint) — importing it from a test would exit the process.
6
+ *
7
+ * There is deliberately NO give-up: the MCP server used to stop after
8
+ * 20 × 3s = 60s, but a fleet restart routinely takes longer (142s measured on a
9
+ * fleet with ~2k tasks), and an exited MCP server cannot be respawned mid-session
10
+ * by its client — the agent silently loses every agend tool until the user
11
+ * restarts the CLI. Idle retries cost ~nothing (one unix-socket connect), and the
12
+ * server's orphan check still terminates it when its own CLI goes away.
13
+ */
14
+ export const RECONNECT_BASE_MS = 1_000;
15
+ export const RECONNECT_MAX_MS = 30_000;
16
+ /** Delay before reconnect attempt N (1-based): 1s, 2s, 4s, 8s, 16s, then 30s forever. */
17
+ export function reconnectDelayMs(attempt) {
18
+ const exp = Math.min(Math.max(attempt, 1) - 1, 5);
19
+ return Math.min(RECONNECT_BASE_MS * 2 ** exp, RECONNECT_MAX_MS);
20
+ }
21
+ //# sourceMappingURL=reconnect-backoff.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reconnect-backoff.js","sourceRoot":"","sources":["../../src/channel/reconnect-backoff.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,CAAC;AACvC,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAEvC,yFAAyF;AACzF,MAAM,UAAU,gBAAgB,CAAC,OAAe;IAC9C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAClD,OAAO,IAAI,CAAC,GAAG,CAAC,iBAAiB,GAAG,CAAC,IAAI,GAAG,EAAE,gBAAgB,CAAC,CAAC;AAClE,CAAC"}
package/dist/cli.js CHANGED
@@ -13,6 +13,8 @@ import { spawn, execSync, execFileSync } from "node:child_process";
13
13
  import { getAgendHome, getTmuxSocketName } from "./paths.js";
14
14
  import { readClassicLastActivityAt } from "./classic-channel-manager.js";
15
15
  import { hasPausedMarker } from "./pause-marker.js";
16
+ import { PIE_PERCENT_RE } from "./tui-glyphs.js";
17
+ import { COMPLETION_SHELLS, completionScript } from "./completion.js";
16
18
  import { getUpdateSelector, lookupTargetVersion, reportUpdateRestart, shouldSkipUpdate, } from "./update-check.js";
17
19
  /** Prefix tmux args with -L when socket isolation is active. */
18
20
  function tmuxArgs(args) {
@@ -1834,28 +1836,7 @@ async function fuzzyMatch(query, names) {
1834
1836
  return null;
1835
1837
  }
1836
1838
  async function resolveInstance(query, config) {
1837
- const names = Object.keys(config.instances);
1838
- // Include classic instances from classicBot.yaml
1839
- try {
1840
- const classicPath = join(DATA_DIR, "classicBot.yaml");
1841
- if (existsSync(classicPath)) {
1842
- const yamlMod = (await import("js-yaml")).default;
1843
- const classic = yamlMod.load(readFileSync(classicPath, "utf-8"));
1844
- if (classic?.channels) {
1845
- for (const [key, val] of Object.entries(classic.channels)) {
1846
- // New format persists instanceName; old format keyed by channelId.
1847
- if (val.instanceName) {
1848
- names.push(val.instanceName);
1849
- continue;
1850
- }
1851
- const channelId = val.channelId ?? key;
1852
- const chName = (val.name ?? channelId).toLowerCase().replace(/[^\p{L}\d-]/gu, "-").replace(/-+/g, "-").replace(/^-|-$/g, "") || "project";
1853
- names.push(`classic-${chName}-${channelId.slice(-4)}`);
1854
- }
1855
- }
1856
- }
1857
- }
1858
- catch { /* ignore */ }
1839
+ const names = await listInstanceNames(config);
1859
1840
  const match = await fuzzyMatch(query, names);
1860
1841
  if (!match) {
1861
1842
  console.error(`No instance matching "${query}". Available: ${names.join(", ")}`);
@@ -1950,7 +1931,7 @@ function formatTimeSince(isoStr) {
1950
1931
  * Universal context-% parser for `agend ls` (all backends). Kept in sync with
1951
1932
  * parseContextPercent() in topic-commands.ts — same formats, bottom-up so the
1952
1933
  * most recent prompt wins:
1953
- * kiro classic "8% !>" / TUI "◔ 1%" / bracket "[8%]" / prompt "8% ❯"
1934
+ * kiro classic "8% !>" / TUI "◑ 1%" (any pie glyph) / bracket "[8%]" / prompt "8% ❯"
1954
1935
  * codex "Context N% left" (remaining → 100-N) or "Context N% used"
1955
1936
  * opencode "1.2K (6%)"
1956
1937
  * grok "12K / 500K" (used tokens / context window)
@@ -1977,7 +1958,7 @@ const defaultParser = (output) => {
1977
1958
  return used / total * 100;
1978
1959
  }
1979
1960
  const m = line.match(/(\d+)%.*[!❯>]/)
1980
- || line.match(/◔\s*(\d+)%/)
1961
+ || line.match(PIE_PERCENT_RE)
1981
1962
  || line.match(/\[(\d+)%\]/)
1982
1963
  || line.match(/Context\s+(\d+)%\s+used/i)
1983
1964
  || line.match(/\d+(?:\.\d+)?[KM]?\s*\((\d+)%\)/);
@@ -1988,10 +1969,48 @@ const defaultParser = (output) => {
1988
1969
  };
1989
1970
  /** Optional backend-specific overrides; none needed — defaultParser covers all. */
1990
1971
  const contextParsers = {};
1972
+ /**
1973
+ * Every instance name the CLI accepts: fleet.yaml instances plus the
1974
+ * dynamically-created ClassicBot ones. Shared by `resolveInstance` (fuzzy
1975
+ * matching for `attach`) and `ls --names-only` (shell completion), so the
1976
+ * candidates offered by tab-completion are exactly the ones `attach` resolves.
1977
+ */
1978
+ async function listInstanceNames(config) {
1979
+ const names = Object.keys(config.instances);
1980
+ try {
1981
+ const classicPath = join(DATA_DIR, "classicBot.yaml");
1982
+ if (existsSync(classicPath)) {
1983
+ const yamlMod = (await import("js-yaml")).default;
1984
+ const classic = yamlMod.load(readFileSync(classicPath, "utf-8"));
1985
+ if (classic?.channels) {
1986
+ for (const [key, val] of Object.entries(classic.channels)) {
1987
+ // New format persists instanceName; old format keyed by channelId.
1988
+ if (val.instanceName) {
1989
+ names.push(val.instanceName);
1990
+ continue;
1991
+ }
1992
+ const channelId = val.channelId ?? key;
1993
+ const chName = (val.name ?? channelId).toLowerCase().replace(/[^\p{L}\d-]/gu, "-").replace(/-+/g, "-").replace(/^-|-$/g, "") || "project";
1994
+ names.push(`classic-${chName}-${channelId.slice(-4)}`);
1995
+ }
1996
+ }
1997
+ }
1998
+ }
1999
+ catch { /* ignore */ }
2000
+ return names;
2001
+ }
1991
2002
  async function lsAction(opts) {
1992
2003
  const yaml = (await import("js-yaml")).default;
1993
2004
  const config = yaml.load(readFileSync(FLEET_CONFIG_PATH, "utf-8"));
1994
2005
  const names = Object.keys(config.instances);
2006
+ // --names-only feeds shell completion, so it must return before any tmux or
2007
+ // status work (a tab press should not wait on the fleet) and must print
2008
+ // nothing but names — a "no instances" notice would become a candidate.
2009
+ if (opts.namesOnly) {
2010
+ for (const n of await listInstanceNames(config))
2011
+ console.log(n);
2012
+ return;
2013
+ }
1995
2014
  // Load classic channels from classicBot.yaml (keyed by channelId)
1996
2015
  const classicPath = join(DATA_DIR, "classicBot.yaml");
1997
2016
  let classicConfig = null;
@@ -2277,12 +2296,38 @@ program
2277
2296
  .command("ls")
2278
2297
  .description("List all instances with status, backend, team, and last activity")
2279
2298
  .option("--json", "Output as JSON")
2299
+ .option("--names-only", "Print instance names one per line (for shell completion)")
2280
2300
  .action(async (opts) => {
2281
2301
  await lsAction(opts);
2282
2302
  });
2283
2303
  program
2284
- .command("health")
2285
- .description("Fleet health check — shows problems and diagnostics")
2304
+ .command("completion")
2305
+ .description("Print a shell completion script (bash or zsh)")
2306
+ .argument("<shell>", `Shell to generate for (${COMPLETION_SHELLS.join(", ")})`)
2307
+ .addHelpText("after", `
2308
+ Install:
2309
+ bash echo 'eval "$(agend completion bash)"' >> ~/.bashrc
2310
+ zsh echo 'eval "$(agend completion zsh)"' >> ~/.zshrc
2311
+
2312
+ Then reload the shell. Tab-completes instance names for \`agend attach\` and
2313
+ \`agend fleet start|stop|restart\`, and subcommands elsewhere.`)
2314
+ .action((shell) => {
2315
+ if (!COMPLETION_SHELLS.includes(shell)) {
2316
+ console.error(`Unsupported shell: ${shell}. Supported: ${COMPLETION_SHELLS.join(", ")}`);
2317
+ process.exit(2);
2318
+ }
2319
+ // Subcommand names come from commander itself, so the script can't drift
2320
+ // out of sync with the CLI the way a hardcoded list would.
2321
+ const fleetCmd = program.commands.find(c => c.name() === "fleet");
2322
+ console.log(completionScript(shell, {
2323
+ topLevel: program.commands.map(c => c.name()),
2324
+ fleetSub: fleetCmd?.commands.map(c => c.name()) ?? [],
2325
+ instanceCommands: ["attach"],
2326
+ fleetInstanceCommands: ["start", "stop", "restart"],
2327
+ }));
2328
+ });
2329
+ program
2330
+ .command("health").description("Fleet health check — shows problems and diagnostics")
2286
2331
  .option("--json", "Output as JSON")
2287
2332
  .option("-q, --quiet", "One-line summary only")
2288
2333
  .action(async (opts) => {