@songsid/agend 2.0.8-beta.3 → 2.0.8-beta.31

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 (56) hide show
  1. package/README.md +8 -3
  2. package/dist/adapter-world.d.ts +1 -1
  3. package/dist/adapter-world.js +2 -2
  4. package/dist/adapter-world.js.map +1 -1
  5. package/dist/backend/antigravity.js +6 -2
  6. package/dist/backend/antigravity.js.map +1 -1
  7. package/dist/backend/claude-code.js +3 -2
  8. package/dist/backend/claude-code.js.map +1 -1
  9. package/dist/backend/codex.js +14 -5
  10. package/dist/backend/codex.js.map +1 -1
  11. package/dist/backend/kiro.js +4 -2
  12. package/dist/backend/kiro.js.map +1 -1
  13. package/dist/backend/opencode.js.map +1 -1
  14. package/dist/backend/types.d.ts +8 -0
  15. package/dist/backend/types.js +12 -0
  16. package/dist/backend/types.js.map +1 -1
  17. package/dist/channel/adapters/discord.d.ts +5 -1
  18. package/dist/channel/adapters/discord.js +192 -105
  19. package/dist/channel/adapters/discord.js.map +1 -1
  20. package/dist/channel/adapters/telegram.d.ts +3 -0
  21. package/dist/channel/adapters/telegram.js +7 -0
  22. package/dist/channel/adapters/telegram.js.map +1 -1
  23. package/dist/channel/tool-router.js +1 -1
  24. package/dist/channel/tool-router.js.map +1 -1
  25. package/dist/channel/tool-tracker.js +2 -2
  26. package/dist/channel/tool-tracker.js.map +1 -1
  27. package/dist/channel/types.d.ts +12 -2
  28. package/dist/cli.js +150 -95
  29. package/dist/cli.js.map +1 -1
  30. package/dist/daemon.d.ts +31 -1
  31. package/dist/daemon.js +163 -47
  32. package/dist/daemon.js.map +1 -1
  33. package/dist/fleet-context.d.ts +2 -0
  34. package/dist/fleet-manager.d.ts +53 -0
  35. package/dist/fleet-manager.js +514 -139
  36. package/dist/fleet-manager.js.map +1 -1
  37. package/dist/general-knowledge/skills/session-management/SKILL.md +56 -1
  38. package/dist/instance-lifecycle.js +9 -0
  39. package/dist/instance-lifecycle.js.map +1 -1
  40. package/dist/logger.d.ts +9 -1
  41. package/dist/logger.js +17 -7
  42. package/dist/logger.js.map +1 -1
  43. package/dist/outbound-handlers.d.ts +2 -0
  44. package/dist/outbound-handlers.js +13 -0
  45. package/dist/outbound-handlers.js.map +1 -1
  46. package/dist/outbound-schemas.d.ts +1 -1
  47. package/dist/tmux-control.d.ts +10 -0
  48. package/dist/tmux-control.js +29 -0
  49. package/dist/tmux-control.js.map +1 -1
  50. package/dist/tmux-manager.d.ts +7 -1
  51. package/dist/tmux-manager.js +17 -0
  52. package/dist/tmux-manager.js.map +1 -1
  53. package/dist/topic-commands.d.ts +21 -0
  54. package/dist/topic-commands.js +81 -6
  55. package/dist/topic-commands.js.map +1 -1
  56. package/package.json +1 -1
@@ -52,6 +52,8 @@ export interface FleetContext {
52
52
  getSysInfo(): SysInfo;
53
53
  getInstanceStatus(name: string): "running" | "stopped" | "crashed";
54
54
  toggleFleetCollab(instanceName: string): boolean;
55
+ /** Interrupt an instance's current generation (cancel button / /cancel). */
56
+ cancelInstance(instanceName: string): boolean;
55
57
  startInstance(name: string, config: InstanceConfig, topicMode: boolean): Promise<void>;
56
58
  stopInstance(name: string): Promise<void>;
57
59
  connectIpcToInstance(name: string): Promise<void>;
@@ -48,6 +48,8 @@ export declare class FleetManager implements FleetContext, LifecycleContext, Arc
48
48
  private topicIcons;
49
49
  private lastActivity;
50
50
  private lastInboundUser;
51
+ private cancelButtons;
52
+ private lastInboundMsg;
51
53
  private topicArchiver;
52
54
  controlClient: TmuxControlClient | null;
53
55
  classicChannels: ClassicChannelManager | null;
@@ -102,6 +104,13 @@ export declare class FleetManager implements FleetContext, LifecycleContext, Arc
102
104
  private loadEnvFile;
103
105
  /** Start all instances from fleet config */
104
106
  startAll(configPath: string): Promise<void>;
107
+ /**
108
+ * Delete inbox files older than retentionDays (by mtime). Cleans the shared
109
+ * inbox (`<dataDir>/inbox`) and every workspace inbox
110
+ * (`<agendHome>/workspaces/*\/inbox`). Piggybacks on the daily summary timer,
111
+ * mirroring classic chat-log rotation (same 7-day retention).
112
+ */
113
+ private rotateInboxes;
105
114
  /** Start the shared channel adapter(s) for topic mode */
106
115
  private startSharedAdapter;
107
116
  /** Start the primary adapter (backward-compatible, sets this.adapter) */
@@ -160,6 +169,43 @@ export declare class FleetManager implements FleetContext, LifecycleContext, Arc
160
169
  checkModelFailover(name: string, fiveHourPct: number): void;
161
170
  toggleFleetCollab(instanceName: string): boolean;
162
171
  notifyInstanceTopic(instanceName: string, text: string): void;
172
+ /** Send a "🛑 Cancel" button to the instance's topic/channel after delivery. */
173
+ /**
174
+ * Handle the DC `/save` slash command for both classic AND fleet-topic targets.
175
+ * Picks the backend-appropriate command (kiro → /chat save, claude → /export);
176
+ * unsupported backends get a clear error. Routes via classic paste or fleet IPC.
177
+ */
178
+ private handleSlashSave;
179
+ /** Whether the instance currently has at least one live cancel button. */
180
+ private hasCancelButton;
181
+ sendCancelButton(instanceName: string): Promise<void>;
182
+ /** Retire (delete) every cancel button belonging to an instance. */
183
+ private retireInstanceButtons;
184
+ /** Begin retiring one button (delete + bounded retry on failure). Idempotent:
185
+ * a button already in a retire cycle is left to its own timer, so a second
186
+ * retire request (e.g. a new send + the post-await sweep) won't double-delete. */
187
+ private retireButton;
188
+ private attemptButtonDelete;
189
+ /** Re-attempt a failed button delete up to CANCEL_BTN_MAX_RETRIES times. */
190
+ private scheduleButtonRetry;
191
+ /** Delete one button's message via its own adapter. Resolves on success,
192
+ * rejects on failure so the caller can retry. */
193
+ private deleteButtonMessage;
194
+ /** Retire all cancel buttons for an instance — on reply, cancel, or report. */
195
+ clearCancelButton(instanceName: string): void;
196
+ /**
197
+ * Reaction target chat id. Telegram reactions key on the supergroup chat_id
198
+ * (the topic thread is NOT a chat_id), so a forum-topic message must react on
199
+ * msg.chatId — reacting on threadId silently fails. Discord reactions key on
200
+ * the channel/thread id.
201
+ */
202
+ private reactTarget;
203
+ /** Remember the user message just delivered, so we can react ✅ when done. */
204
+ private trackInboundMsg;
205
+ /** React ✅ on the last user message after the agent replies. */
206
+ private reactDone;
207
+ /** Interrupt an instance's current generation (cancel button / /cancel). */
208
+ cancelInstance(instanceName: string): boolean;
163
209
  queueMirrorMessage(text: string): void;
164
210
  /** Push an SSE event to all connected Web UI clients. */
165
211
  emitSseEvent(event: string, data: unknown): void;
@@ -220,6 +266,13 @@ export declare class FleetManager implements FleetContext, LifecycleContext, Arc
220
266
  private reconcileInstances;
221
267
  restartInstances(): Promise<void>;
222
268
  private checkForUpdates;
269
+ /**
270
+ * Semver "a > b". Compares major.minor.patch numerically; a version without a
271
+ * prerelease outranks the same core with one (2.0.8 > 2.0.8-beta.16); two
272
+ * prereleases compare identifier-by-identifier (numeric < alphanumeric, numeric
273
+ * fields compared as numbers). Sufficient for our X.Y.Z[-beta.N] scheme.
274
+ */
275
+ private semverGt;
223
276
  private startHealthServer;
224
277
  getUiStatus(): unknown;
225
278
  }