@calliopelabs/cli 2.2.0 → 2.5.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.
Files changed (244) hide show
  1. package/README.md +17 -0
  2. package/dist/agents/agent-config-loader.js +1 -1
  3. package/dist/agents/agent-config-presets.js +13 -13
  4. package/dist/agents/agent-config-presets.js.map +1 -1
  5. package/dist/agents/agent-config-types.d.ts +1 -1
  6. package/dist/agents/agent-config-types.d.ts.map +1 -1
  7. package/dist/agents/council-types.d.ts +2 -0
  8. package/dist/agents/council-types.d.ts.map +1 -1
  9. package/dist/agents/council-types.js.map +1 -1
  10. package/dist/agents/council.d.ts +5 -0
  11. package/dist/agents/council.d.ts.map +1 -1
  12. package/dist/agents/council.js +150 -14
  13. package/dist/agents/council.js.map +1 -1
  14. package/dist/agents/dynamic-tools.d.ts.map +1 -1
  15. package/dist/agents/dynamic-tools.js +39 -10
  16. package/dist/agents/dynamic-tools.js.map +1 -1
  17. package/dist/agents/orchestrator.d.ts +7 -0
  18. package/dist/agents/orchestrator.d.ts.map +1 -1
  19. package/dist/agents/orchestrator.js +48 -7
  20. package/dist/agents/orchestrator.js.map +1 -1
  21. package/dist/agents/sdk-backend.js +1 -1
  22. package/dist/agents/sdk-backend.js.map +1 -1
  23. package/dist/agents/swarm-types.d.ts +1 -0
  24. package/dist/agents/swarm-types.d.ts.map +1 -1
  25. package/dist/agents/swarm.d.ts +5 -0
  26. package/dist/agents/swarm.d.ts.map +1 -1
  27. package/dist/agents/swarm.js +85 -17
  28. package/dist/agents/swarm.js.map +1 -1
  29. package/dist/agents/types.d.ts +1 -0
  30. package/dist/agents/types.d.ts.map +1 -1
  31. package/dist/agents/types.js.map +1 -1
  32. package/dist/api-server.d.ts +9 -0
  33. package/dist/api-server.d.ts.map +1 -1
  34. package/dist/api-server.js +75 -4
  35. package/dist/api-server.js.map +1 -1
  36. package/dist/auto-checkpoint.d.ts.map +1 -1
  37. package/dist/auto-checkpoint.js +50 -17
  38. package/dist/auto-checkpoint.js.map +1 -1
  39. package/dist/auto-compressor.d.ts +14 -0
  40. package/dist/auto-compressor.d.ts.map +1 -1
  41. package/dist/auto-compressor.js +67 -10
  42. package/dist/auto-compressor.js.map +1 -1
  43. package/dist/background-jobs.d.ts.map +1 -1
  44. package/dist/background-jobs.js +8 -3
  45. package/dist/background-jobs.js.map +1 -1
  46. package/dist/bin.d.ts +8 -0
  47. package/dist/bin.d.ts.map +1 -1
  48. package/dist/bin.js +63 -4
  49. package/dist/bin.js.map +1 -1
  50. package/dist/branching.d.ts.map +1 -1
  51. package/dist/branching.js +14 -1
  52. package/dist/branching.js.map +1 -1
  53. package/dist/checkpoint.d.ts.map +1 -1
  54. package/dist/checkpoint.js +13 -1
  55. package/dist/checkpoint.js.map +1 -1
  56. package/dist/cli/agent.d.ts.map +1 -1
  57. package/dist/cli/agent.js +130 -62
  58. package/dist/cli/agent.js.map +1 -1
  59. package/dist/cli/commands.d.ts.map +1 -1
  60. package/dist/cli/commands.js +218 -11
  61. package/dist/cli/commands.js.map +1 -1
  62. package/dist/cli/index.d.ts.map +1 -1
  63. package/dist/cli/index.js +55 -6
  64. package/dist/cli/index.js.map +1 -1
  65. package/dist/cli/types.d.ts +3 -0
  66. package/dist/cli/types.d.ts.map +1 -1
  67. package/dist/cli/types.js +2 -1
  68. package/dist/cli/types.js.map +1 -1
  69. package/dist/config.d.ts +1 -0
  70. package/dist/config.d.ts.map +1 -1
  71. package/dist/config.js +15 -3
  72. package/dist/config.js.map +1 -1
  73. package/dist/diff.d.ts.map +1 -1
  74. package/dist/diff.js +42 -4
  75. package/dist/diff.js.map +1 -1
  76. package/dist/env-expansion.d.ts +15 -0
  77. package/dist/env-expansion.d.ts.map +1 -0
  78. package/dist/env-expansion.js +43 -0
  79. package/dist/env-expansion.js.map +1 -0
  80. package/dist/errors.d.ts.map +1 -1
  81. package/dist/errors.js +30 -3
  82. package/dist/errors.js.map +1 -1
  83. package/dist/headless.d.ts.map +1 -1
  84. package/dist/headless.js +59 -4
  85. package/dist/headless.js.map +1 -1
  86. package/dist/hooks.d.ts +8 -2
  87. package/dist/hooks.d.ts.map +1 -1
  88. package/dist/hooks.js +97 -11
  89. package/dist/hooks.js.map +1 -1
  90. package/dist/idle-eviction.d.ts.map +1 -1
  91. package/dist/idle-eviction.js +8 -1
  92. package/dist/idle-eviction.js.map +1 -1
  93. package/dist/iteration-ledger.d.ts +111 -2
  94. package/dist/iteration-ledger.d.ts.map +1 -1
  95. package/dist/iteration-ledger.js +327 -19
  96. package/dist/iteration-ledger.js.map +1 -1
  97. package/dist/iteration-limit.d.ts +5 -0
  98. package/dist/iteration-limit.d.ts.map +1 -0
  99. package/dist/iteration-limit.js +17 -0
  100. package/dist/iteration-limit.js.map +1 -0
  101. package/dist/markdown.d.ts.map +1 -1
  102. package/dist/markdown.js +32 -10
  103. package/dist/markdown.js.map +1 -1
  104. package/dist/mcp.d.ts +35 -5
  105. package/dist/mcp.d.ts.map +1 -1
  106. package/dist/mcp.js +191 -12
  107. package/dist/mcp.js.map +1 -1
  108. package/dist/memory.d.ts.map +1 -1
  109. package/dist/memory.js +4 -9
  110. package/dist/memory.js.map +1 -1
  111. package/dist/model-detection.d.ts +14 -1
  112. package/dist/model-detection.d.ts.map +1 -1
  113. package/dist/model-detection.js +307 -114
  114. package/dist/model-detection.js.map +1 -1
  115. package/dist/model-router.js +7 -7
  116. package/dist/model-router.js.map +1 -1
  117. package/dist/parallel-tools.d.ts +9 -1
  118. package/dist/parallel-tools.d.ts.map +1 -1
  119. package/dist/parallel-tools.js +6 -5
  120. package/dist/parallel-tools.js.map +1 -1
  121. package/dist/plugins.d.ts +37 -0
  122. package/dist/plugins.d.ts.map +1 -1
  123. package/dist/plugins.js +87 -0
  124. package/dist/plugins.js.map +1 -1
  125. package/dist/prevent-sleep.d.ts +10 -0
  126. package/dist/prevent-sleep.d.ts.map +1 -0
  127. package/dist/prevent-sleep.js +85 -0
  128. package/dist/prevent-sleep.js.map +1 -0
  129. package/dist/providers/anthropic.d.ts.map +1 -1
  130. package/dist/providers/anthropic.js +36 -2
  131. package/dist/providers/anthropic.js.map +1 -1
  132. package/dist/providers/bedrock.d.ts.map +1 -1
  133. package/dist/providers/bedrock.js +81 -17
  134. package/dist/providers/bedrock.js.map +1 -1
  135. package/dist/providers/compat.d.ts.map +1 -1
  136. package/dist/providers/compat.js +21 -6
  137. package/dist/providers/compat.js.map +1 -1
  138. package/dist/providers/index.d.ts.map +1 -1
  139. package/dist/providers/index.js +2 -0
  140. package/dist/providers/index.js.map +1 -1
  141. package/dist/providers/openai-compat-shims.d.ts +31 -0
  142. package/dist/providers/openai-compat-shims.d.ts.map +1 -0
  143. package/dist/providers/openai-compat-shims.js +179 -0
  144. package/dist/providers/openai-compat-shims.js.map +1 -0
  145. package/dist/providers/openai.d.ts.map +1 -1
  146. package/dist/providers/types.d.ts.map +1 -1
  147. package/dist/providers/types.js +19 -10
  148. package/dist/providers/types.js.map +1 -1
  149. package/dist/risk.d.ts.map +1 -1
  150. package/dist/risk.js +15 -5
  151. package/dist/risk.js.map +1 -1
  152. package/dist/sandbox-native.d.ts +1 -0
  153. package/dist/sandbox-native.d.ts.map +1 -1
  154. package/dist/sandbox-native.js +37 -5
  155. package/dist/sandbox-native.js.map +1 -1
  156. package/dist/scope.d.ts +10 -0
  157. package/dist/scope.d.ts.map +1 -1
  158. package/dist/scope.js +75 -15
  159. package/dist/scope.js.map +1 -1
  160. package/dist/scuttlebot/client.d.ts +83 -0
  161. package/dist/scuttlebot/client.d.ts.map +1 -0
  162. package/dist/scuttlebot/client.js +350 -0
  163. package/dist/scuttlebot/client.js.map +1 -0
  164. package/dist/scuttlebot/config.d.ts +28 -0
  165. package/dist/scuttlebot/config.d.ts.map +1 -0
  166. package/dist/scuttlebot/config.js +91 -0
  167. package/dist/scuttlebot/config.js.map +1 -0
  168. package/dist/scuttlebot/http-client.d.ts +63 -0
  169. package/dist/scuttlebot/http-client.d.ts.map +1 -0
  170. package/dist/scuttlebot/http-client.js +124 -0
  171. package/dist/scuttlebot/http-client.js.map +1 -0
  172. package/dist/scuttlebot/index.d.ts +13 -0
  173. package/dist/scuttlebot/index.d.ts.map +1 -0
  174. package/dist/scuttlebot/index.js +10 -0
  175. package/dist/scuttlebot/index.js.map +1 -0
  176. package/dist/scuttlebot/irc-client.d.ts +124 -0
  177. package/dist/scuttlebot/irc-client.d.ts.map +1 -0
  178. package/dist/scuttlebot/irc-client.js +599 -0
  179. package/dist/scuttlebot/irc-client.js.map +1 -0
  180. package/dist/skills.d.ts +19 -0
  181. package/dist/skills.d.ts.map +1 -1
  182. package/dist/skills.js +98 -10
  183. package/dist/skills.js.map +1 -1
  184. package/dist/smart-router.js +4 -4
  185. package/dist/smart-router.js.map +1 -1
  186. package/dist/storage.d.ts +18 -3
  187. package/dist/storage.d.ts.map +1 -1
  188. package/dist/storage.js +182 -14
  189. package/dist/storage.js.map +1 -1
  190. package/dist/tools.d.ts.map +1 -1
  191. package/dist/tools.js +233 -39
  192. package/dist/tools.js.map +1 -1
  193. package/dist/trust.d.ts +16 -3
  194. package/dist/trust.d.ts.map +1 -1
  195. package/dist/trust.js +23 -4
  196. package/dist/trust.js.map +1 -1
  197. package/dist/types.d.ts.map +1 -1
  198. package/dist/types.js +18 -12
  199. package/dist/types.js.map +1 -1
  200. package/dist/ui/agent.d.ts +1 -1
  201. package/dist/ui/agent.d.ts.map +1 -1
  202. package/dist/ui/agent.js +175 -121
  203. package/dist/ui/agent.js.map +1 -1
  204. package/dist/ui/chat-input.d.ts +3 -1
  205. package/dist/ui/chat-input.d.ts.map +1 -1
  206. package/dist/ui/chat-input.js +82 -17
  207. package/dist/ui/chat-input.js.map +1 -1
  208. package/dist/ui/commands.d.ts +4 -0
  209. package/dist/ui/commands.d.ts.map +1 -1
  210. package/dist/ui/commands.js +562 -39
  211. package/dist/ui/commands.js.map +1 -1
  212. package/dist/ui/completions.d.ts.map +1 -1
  213. package/dist/ui/completions.js +2 -0
  214. package/dist/ui/completions.js.map +1 -1
  215. package/dist/ui/index.d.ts.map +1 -1
  216. package/dist/ui/index.js +288 -60
  217. package/dist/ui/index.js.map +1 -1
  218. package/dist/ui/input-utils.d.ts +20 -0
  219. package/dist/ui/input-utils.d.ts.map +1 -0
  220. package/dist/ui/input-utils.js +35 -0
  221. package/dist/ui/input-utils.js.map +1 -0
  222. package/dist/ui/messages.d.ts +6 -2
  223. package/dist/ui/messages.d.ts.map +1 -1
  224. package/dist/ui/messages.js +42 -11
  225. package/dist/ui/messages.js.map +1 -1
  226. package/dist/ui/modals.d.ts +21 -1
  227. package/dist/ui/modals.d.ts.map +1 -1
  228. package/dist/ui/modals.js +67 -5
  229. package/dist/ui/modals.js.map +1 -1
  230. package/dist/ui/status-bar.d.ts +4 -1
  231. package/dist/ui/status-bar.d.ts.map +1 -1
  232. package/dist/ui/status-bar.js +12 -1
  233. package/dist/ui/status-bar.js.map +1 -1
  234. package/dist/ui/types.d.ts +3 -0
  235. package/dist/ui/types.d.ts.map +1 -1
  236. package/package.json +4 -7
  237. package/dist/completion.d.ts +0 -75
  238. package/dist/completion.d.ts.map +0 -1
  239. package/dist/completion.js +0 -234
  240. package/dist/completion.js.map +0 -1
  241. package/dist/keyboard.d.ts +0 -57
  242. package/dist/keyboard.d.ts.map +0 -1
  243. package/dist/keyboard.js +0 -265
  244. package/dist/keyboard.js.map +0 -1
@@ -43,15 +43,80 @@ export interface FailedApproach {
43
43
  /** Tool calls involved */
44
44
  tools: string[];
45
45
  }
46
+ export type LedgerRunKind = 'agent' | 'loop' | 'swarm' | 'council' | 'workflow';
47
+ export type LedgerRunStatus = 'running' | 'completed' | 'cancelled' | 'failed' | 'interrupted' | 'stopped';
48
+ export interface LedgerRun {
49
+ id: string;
50
+ kind: LedgerRunKind;
51
+ prompt: string;
52
+ status: LedgerRunStatus;
53
+ startedAt: number;
54
+ updatedAt: number;
55
+ completedAt?: number;
56
+ completionPromise?: string;
57
+ maxIterations?: number | null;
58
+ entryCountAtStart: number;
59
+ entryCountAtEnd?: number;
60
+ errorSummary?: string;
61
+ }
62
+ export interface IterationLedgerSnapshot {
63
+ version: 1;
64
+ entries: LedgerEntry[];
65
+ failedApproaches: FailedApproach[];
66
+ currentEntry: Partial<LedgerEntry> | null;
67
+ iterationStart: number;
68
+ runs: LedgerRun[];
69
+ nextIterationNumber?: number;
70
+ totalEntryCount?: number;
71
+ totalTokenCount?: number;
72
+ totalCostUsd?: number;
73
+ totalDurationMs?: number;
74
+ totalFailureCount?: number;
75
+ totalFailedApproachCount?: number;
76
+ }
46
77
  export declare class IterationLedger {
47
78
  private entries;
48
79
  private failedApproaches;
80
+ private runs;
49
81
  private currentEntry;
50
82
  private iterationStart;
83
+ private nextIterationNumber;
84
+ private totalEntryCount;
85
+ private totalTokenCount;
86
+ private totalCostUsd;
87
+ private totalDurationMs;
88
+ private totalFailureCount;
89
+ private totalFailedApproachCount;
90
+ private retentionLimit;
91
+ private onChange?;
92
+ constructor(snapshot?: IterationLedgerSnapshot | null);
93
+ /**
94
+ * Register a callback invoked whenever the ledger changes.
95
+ */
96
+ setOnChange(onChange?: (ledger: IterationLedger) => void): void;
97
+ /**
98
+ * Serialize the ledger for storage.
99
+ */
100
+ toSnapshot(): IterationLedgerSnapshot;
101
+ /**
102
+ * Configure in-memory/session retention for entries, failures, and runs.
103
+ * A value of 0 disables pruning.
104
+ */
105
+ setRetentionLimit(limit: number): void;
106
+ /**
107
+ * Get the current retention limit.
108
+ */
109
+ getRetentionLimit(): number;
110
+ /**
111
+ * Load a snapshot and recover any interrupted work.
112
+ */
113
+ loadSnapshot(snapshot?: IterationLedgerSnapshot | null, options?: {
114
+ recoverInterrupted?: boolean;
115
+ }): void;
51
116
  /**
52
117
  * Start tracking a new iteration.
53
118
  */
54
- startIteration(iteration: number): void;
119
+ startIteration(iteration?: number): void;
55
120
  /**
56
121
  * Record a tool call and its outcome within the current iteration.
57
122
  */
@@ -69,6 +134,19 @@ export declare class IterationLedger {
69
134
  * like "tried approach X but it didn't work").
70
135
  */
71
136
  recordFailedApproach(description: string, reason: string, tools?: string[]): void;
137
+ /**
138
+ * Start tracking a higher-level run, such as a loop or standalone agent turn.
139
+ */
140
+ startRun(kind: LedgerRunKind, prompt: string, options?: {
141
+ completionPromise?: string;
142
+ maxIterations?: number | null;
143
+ }): string;
144
+ /**
145
+ * Finish a higher-level run and capture its final status.
146
+ */
147
+ finishRun(runId: string, status: Exclude<LedgerRunStatus, 'running'>, options?: {
148
+ errorSummary?: string;
149
+ }): void;
72
150
  /**
73
151
  * Get a compact context string for injection into the agent's messages.
74
152
  * Shows recent iterations and failed approaches so the agent avoids repetition.
@@ -88,7 +166,27 @@ export declare class IterationLedger {
88
166
  */
89
167
  getEntries(): readonly LedgerEntry[];
90
168
  /**
91
- * Get session totals.
169
+ * Get failed approaches recorded for this session.
170
+ */
171
+ getFailedApproaches(): readonly FailedApproach[];
172
+ /**
173
+ * Get recent run records.
174
+ */
175
+ getRuns(limit?: number): readonly LedgerRun[];
176
+ /**
177
+ * Get the latest run, optionally filtered by kind or status.
178
+ */
179
+ getLatestRun(kind?: LedgerRunKind): LedgerRun | undefined;
180
+ /**
181
+ * Get an active run, optionally filtered by kind.
182
+ */
183
+ getActiveRun(kind?: LedgerRunKind): LedgerRun | undefined;
184
+ /**
185
+ * Get the next global iteration number for session-wide logging.
186
+ */
187
+ getNextIterationNumber(): number;
188
+ /**
189
+ * Get session totals across the full session, including pruned history.
92
190
  */
93
191
  getTotals(): {
94
192
  iterations: number;
@@ -97,9 +195,20 @@ export declare class IterationLedger {
97
195
  totalDurationMs: number;
98
196
  failures: number;
99
197
  };
198
+ /**
199
+ * Get the total number of failed approaches recorded across the full session.
200
+ */
201
+ getFailedApproachCount(): number;
100
202
  /**
101
203
  * Reset the ledger (e.g. on /clear).
102
204
  */
103
205
  reset(): void;
206
+ /**
207
+ * Recover interrupted state from a persisted snapshot.
208
+ * Returns true if anything was recovered.
209
+ */
210
+ recoverInterruptedState(reason?: string): boolean;
211
+ private touch;
212
+ private pruneRetainedState;
104
213
  }
105
214
  //# sourceMappingURL=iteration-ledger.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"iteration-ledger.d.ts","sourceRoot":"","sources":["../src/iteration-ledger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAMH,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAEpF,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,8DAA8D;IAC9D,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,wCAAwC;IACxC,OAAO,EAAE,aAAa,CAAC;IACvB,qCAAqC;IACrC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1C,gCAAgC;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB;IAClB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,IAAI,GAAG,OAAO,GAAG,SAAS,CAAC;IACnC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,cAAc;IAC7B,yBAAyB;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,oBAAoB;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,sBAAsB;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,0BAA0B;IAC1B,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAMD,qBAAa,eAAe;IAC1B,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,gBAAgB,CAAwB;IAChD,OAAO,CAAC,YAAY,CAAqC;IACzD,OAAO,CAAC,cAAc,CAAK;IAE3B;;OAEG;IACH,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAWvC;;OAEG;IACH,YAAY,CACV,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,MAAM,EAAE,IAAI,GAAG,OAAO,GAAG,SAAS,EAClC,YAAY,CAAC,EAAE,MAAM,GACpB,IAAI;IAcP;;OAEG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAM/D;;OAEG;IACH,YAAY,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,IAAI;IAwC3C;;;OAGG;IACH,oBAAoB,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,GAAE,MAAM,EAAO,GAAG,IAAI;IASrF;;;OAGG;IACH,iBAAiB,CAAC,UAAU,SAAK,GAAG,MAAM;IA8B1C;;;OAGG;IACH,0BAA0B,IAAI,MAAM,GAAG,IAAI;IAc3C;;OAEG;IACH,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,cAAc,GAAG,SAAS;IAMxF;;OAEG;IACH,UAAU,IAAI,SAAS,WAAW,EAAE;IAIpC;;OAEG;IACH,SAAS,IAAI;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE;IAsBtH;;OAEG;IACH,KAAK,IAAI,IAAI;CAKd"}
1
+ {"version":3,"file":"iteration-ledger.d.ts","sourceRoot":"","sources":["../src/iteration-ledger.ts"],"names":[],"mappings":"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"}
@@ -15,12 +15,161 @@
15
15
  export class IterationLedger {
16
16
  entries = [];
17
17
  failedApproaches = [];
18
+ runs = [];
18
19
  currentEntry = null;
19
20
  iterationStart = 0;
21
+ nextIterationNumber = 1;
22
+ totalEntryCount = 0;
23
+ totalTokenCount = 0;
24
+ totalCostUsd = 0;
25
+ totalDurationMs = 0;
26
+ totalFailureCount = 0;
27
+ totalFailedApproachCount = 0;
28
+ retentionLimit = 0;
29
+ onChange;
30
+ constructor(snapshot) {
31
+ if (snapshot) {
32
+ this.loadSnapshot(snapshot);
33
+ }
34
+ }
35
+ /**
36
+ * Register a callback invoked whenever the ledger changes.
37
+ */
38
+ setOnChange(onChange) {
39
+ this.onChange = onChange;
40
+ }
41
+ /**
42
+ * Serialize the ledger for storage.
43
+ */
44
+ toSnapshot() {
45
+ return {
46
+ version: 1,
47
+ entries: this.entries.map(entry => ({
48
+ ...entry,
49
+ actions: entry.actions.map(action => ({ ...action })),
50
+ tokens: { ...entry.tokens },
51
+ })),
52
+ failedApproaches: this.failedApproaches.map(approach => ({
53
+ ...approach,
54
+ tools: [...approach.tools],
55
+ })),
56
+ currentEntry: this.currentEntry
57
+ ? {
58
+ ...this.currentEntry,
59
+ actions: this.currentEntry.actions?.map(action => ({ ...action })),
60
+ tokens: this.currentEntry.tokens ? { ...this.currentEntry.tokens } : undefined,
61
+ }
62
+ : null,
63
+ iterationStart: this.iterationStart,
64
+ runs: this.runs.map(run => ({ ...run })),
65
+ nextIterationNumber: this.nextIterationNumber,
66
+ totalEntryCount: this.totalEntryCount,
67
+ totalTokenCount: this.totalTokenCount,
68
+ totalCostUsd: this.totalCostUsd,
69
+ totalDurationMs: this.totalDurationMs,
70
+ totalFailureCount: this.totalFailureCount,
71
+ totalFailedApproachCount: this.totalFailedApproachCount,
72
+ };
73
+ }
74
+ /**
75
+ * Configure in-memory/session retention for entries, failures, and runs.
76
+ * A value of 0 disables pruning.
77
+ */
78
+ setRetentionLimit(limit) {
79
+ const normalized = Number.isFinite(limit) && limit > 0
80
+ ? Math.floor(limit)
81
+ : 0;
82
+ if (normalized === this.retentionLimit) {
83
+ return;
84
+ }
85
+ this.retentionLimit = normalized;
86
+ this.touch();
87
+ }
88
+ /**
89
+ * Get the current retention limit.
90
+ */
91
+ getRetentionLimit() {
92
+ return this.retentionLimit;
93
+ }
94
+ /**
95
+ * Load a snapshot and recover any interrupted work.
96
+ */
97
+ loadSnapshot(snapshot, options = {}) {
98
+ if (!snapshot) {
99
+ this.entries = [];
100
+ this.failedApproaches = [];
101
+ this.runs = [];
102
+ this.currentEntry = null;
103
+ this.iterationStart = 0;
104
+ this.nextIterationNumber = 1;
105
+ this.totalEntryCount = 0;
106
+ this.totalTokenCount = 0;
107
+ this.totalCostUsd = 0;
108
+ this.totalDurationMs = 0;
109
+ this.totalFailureCount = 0;
110
+ this.totalFailedApproachCount = 0;
111
+ return;
112
+ }
113
+ this.entries = Array.isArray(snapshot.entries)
114
+ ? snapshot.entries.map(entry => ({
115
+ ...entry,
116
+ actions: Array.isArray(entry.actions) ? entry.actions.map(action => ({ ...action })) : [],
117
+ tokens: entry.tokens ? { ...entry.tokens } : { input: 0, output: 0 },
118
+ }))
119
+ : [];
120
+ this.failedApproaches = Array.isArray(snapshot.failedApproaches)
121
+ ? snapshot.failedApproaches.map(approach => ({
122
+ ...approach,
123
+ tools: Array.isArray(approach.tools) ? [...approach.tools] : [],
124
+ }))
125
+ : [];
126
+ this.runs = Array.isArray(snapshot.runs)
127
+ ? snapshot.runs.map(run => ({ ...run }))
128
+ : [];
129
+ this.currentEntry = snapshot.currentEntry && typeof snapshot.currentEntry === 'object' && !Array.isArray(snapshot.currentEntry)
130
+ ? {
131
+ ...snapshot.currentEntry,
132
+ actions: Array.isArray(snapshot.currentEntry.actions)
133
+ ? snapshot.currentEntry.actions.map(action => ({ ...action }))
134
+ : [],
135
+ tokens: snapshot.currentEntry.tokens ? { ...snapshot.currentEntry.tokens } : { input: 0, output: 0 },
136
+ }
137
+ : null;
138
+ this.iterationStart = typeof snapshot.iterationStart === 'number' ? snapshot.iterationStart : 0;
139
+ const maxKnownIteration = Math.max(0, ...this.entries.map(entry => entry.iteration), typeof this.currentEntry?.iteration === 'number' ? this.currentEntry.iteration : 0);
140
+ this.totalEntryCount = typeof snapshot.totalEntryCount === 'number'
141
+ ? snapshot.totalEntryCount
142
+ : maxKnownIteration;
143
+ this.nextIterationNumber = typeof snapshot.nextIterationNumber === 'number'
144
+ ? snapshot.nextIterationNumber
145
+ : maxKnownIteration + 1;
146
+ this.totalTokenCount = typeof snapshot.totalTokenCount === 'number'
147
+ ? snapshot.totalTokenCount
148
+ : this.entries.reduce((sum, entry) => sum + entry.tokens.input + entry.tokens.output, 0);
149
+ this.totalCostUsd = typeof snapshot.totalCostUsd === 'number'
150
+ ? snapshot.totalCostUsd
151
+ : this.entries.reduce((sum, entry) => sum + entry.cost, 0);
152
+ this.totalDurationMs = typeof snapshot.totalDurationMs === 'number'
153
+ ? snapshot.totalDurationMs
154
+ : this.entries.reduce((sum, entry) => sum + entry.durationMs, 0);
155
+ this.totalFailureCount = typeof snapshot.totalFailureCount === 'number'
156
+ ? snapshot.totalFailureCount
157
+ : this.entries.reduce((sum, entry) => sum + (entry.outcome === 'error' ? 1 : 0), 0);
158
+ this.totalFailedApproachCount = typeof snapshot.totalFailedApproachCount === 'number'
159
+ ? snapshot.totalFailedApproachCount
160
+ : this.failedApproaches.length;
161
+ if (options.recoverInterrupted !== false) {
162
+ this.recoverInterruptedState();
163
+ }
164
+ this.pruneRetainedState();
165
+ }
20
166
  /**
21
167
  * Start tracking a new iteration.
22
168
  */
23
- startIteration(iteration) {
169
+ startIteration(iteration = this.nextIterationNumber) {
170
+ if (this.currentEntry) {
171
+ this.endIteration('error');
172
+ }
24
173
  this.currentEntry = {
25
174
  iteration,
26
175
  timestamp: Date.now(),
@@ -29,6 +178,8 @@ export class IterationLedger {
29
178
  cost: 0,
30
179
  };
31
180
  this.iterationStart = Date.now();
181
+ this.nextIterationNumber = Math.max(this.nextIterationNumber, iteration + 1);
182
+ this.touch();
32
183
  }
33
184
  /**
34
185
  * Record a tool call and its outcome within the current iteration.
@@ -44,6 +195,7 @@ export class IterationLedger {
44
195
  result,
45
196
  errorSummary: errorSummary?.split('\n')[0]?.substring(0, 120),
46
197
  });
198
+ this.touch();
47
199
  }
48
200
  /**
49
201
  * Record token usage for the current iteration.
@@ -53,6 +205,7 @@ export class IterationLedger {
53
205
  return;
54
206
  this.currentEntry.tokens = { input, output };
55
207
  this.currentEntry.cost = cost;
208
+ this.touch();
56
209
  }
57
210
  /**
58
211
  * End the current iteration and compute its outcome.
@@ -70,6 +223,13 @@ export class IterationLedger {
70
223
  cost: this.currentEntry.cost || 0,
71
224
  };
72
225
  this.entries.push(entry);
226
+ this.totalEntryCount = Math.max(this.totalEntryCount + 1, entry.iteration);
227
+ this.totalTokenCount += entry.tokens.input + entry.tokens.output;
228
+ this.totalCostUsd += entry.cost;
229
+ this.totalDurationMs += entry.durationMs;
230
+ if (entry.outcome === 'error') {
231
+ this.totalFailureCount++;
232
+ }
73
233
  // Auto-detect failed approaches from error patterns
74
234
  if (entry.outcome === 'error') {
75
235
  const errorActions = entry.actions.filter(a => a.result === 'error');
@@ -88,9 +248,11 @@ export class IterationLedger {
88
248
  iteration: entry.iteration,
89
249
  tools,
90
250
  });
251
+ this.totalFailedApproachCount++;
91
252
  }
92
253
  }
93
254
  this.currentEntry = null;
255
+ this.touch();
94
256
  }
95
257
  /**
96
258
  * Manually record a failed approach (for higher-level failures
@@ -100,9 +262,49 @@ export class IterationLedger {
100
262
  this.failedApproaches.push({
101
263
  description,
102
264
  reason,
103
- iteration: this.entries.length,
265
+ iteration: Math.max(this.totalEntryCount, this.entries[this.entries.length - 1]?.iteration || 0),
104
266
  tools,
105
267
  });
268
+ this.totalFailedApproachCount++;
269
+ this.touch();
270
+ }
271
+ /**
272
+ * Start tracking a higher-level run, such as a loop or standalone agent turn.
273
+ */
274
+ startRun(kind, prompt, options = {}) {
275
+ const runId = `run_${Date.now()}_${Math.random().toString(36).slice(2, 8)}`;
276
+ const now = Date.now();
277
+ this.runs.push({
278
+ id: runId,
279
+ kind,
280
+ prompt: truncate(prompt.replace(/\s+/g, ' ').trim(), 160),
281
+ status: 'running',
282
+ startedAt: now,
283
+ updatedAt: now,
284
+ completedAt: undefined,
285
+ completionPromise: options.completionPromise,
286
+ maxIterations: options.maxIterations,
287
+ entryCountAtStart: this.totalEntryCount,
288
+ });
289
+ this.touch();
290
+ return runId;
291
+ }
292
+ /**
293
+ * Finish a higher-level run and capture its final status.
294
+ */
295
+ finishRun(runId, status, options = {}) {
296
+ const run = this.runs.find(entry => entry.id === runId);
297
+ if (!run)
298
+ return;
299
+ const now = Date.now();
300
+ run.status = status;
301
+ run.updatedAt = now;
302
+ run.completedAt = now;
303
+ run.entryCountAtEnd = this.totalEntryCount;
304
+ run.errorSummary = options.errorSummary
305
+ ? truncate(options.errorSummary.replace(/\s+/g, ' ').trim(), 200)
306
+ : run.errorSummary;
307
+ this.touch();
106
308
  }
107
309
  /**
108
310
  * Get a compact context string for injection into the agent's messages.
@@ -163,35 +365,141 @@ export class IterationLedger {
163
365
  return this.entries;
164
366
  }
165
367
  /**
166
- * Get session totals.
368
+ * Get failed approaches recorded for this session.
167
369
  */
168
- getTotals() {
169
- let totalTokens = 0;
170
- let totalCost = 0;
171
- let totalDurationMs = 0;
172
- let failures = 0;
173
- for (const entry of this.entries) {
174
- totalTokens += entry.tokens.input + entry.tokens.output;
175
- totalCost += entry.cost;
176
- totalDurationMs += entry.durationMs;
177
- if (entry.outcome === 'error')
178
- failures++;
370
+ getFailedApproaches() {
371
+ return this.failedApproaches;
372
+ }
373
+ /**
374
+ * Get recent run records.
375
+ */
376
+ getRuns(limit) {
377
+ if (!limit || limit <= 0)
378
+ return this.runs;
379
+ return this.runs.slice(-limit);
380
+ }
381
+ /**
382
+ * Get the latest run, optionally filtered by kind or status.
383
+ */
384
+ getLatestRun(kind) {
385
+ for (let i = this.runs.length - 1; i >= 0; i--) {
386
+ if (!kind || this.runs[i].kind === kind) {
387
+ return this.runs[i];
388
+ }
179
389
  }
390
+ return undefined;
391
+ }
392
+ /**
393
+ * Get an active run, optionally filtered by kind.
394
+ */
395
+ getActiveRun(kind) {
396
+ return this.runs.find(run => run.status === 'running' && (!kind || run.kind === kind));
397
+ }
398
+ /**
399
+ * Get the next global iteration number for session-wide logging.
400
+ */
401
+ getNextIterationNumber() {
402
+ return this.nextIterationNumber;
403
+ }
404
+ /**
405
+ * Get session totals across the full session, including pruned history.
406
+ */
407
+ getTotals() {
180
408
  return {
181
- iterations: this.entries.length,
182
- totalTokens,
183
- totalCost,
184
- totalDurationMs,
185
- failures,
409
+ iterations: this.totalEntryCount,
410
+ totalTokens: this.totalTokenCount,
411
+ totalCost: this.totalCostUsd,
412
+ totalDurationMs: this.totalDurationMs,
413
+ failures: this.totalFailureCount,
186
414
  };
187
415
  }
416
+ /**
417
+ * Get the total number of failed approaches recorded across the full session.
418
+ */
419
+ getFailedApproachCount() {
420
+ return this.totalFailedApproachCount;
421
+ }
188
422
  /**
189
423
  * Reset the ledger (e.g. on /clear).
190
424
  */
191
425
  reset() {
192
426
  this.entries = [];
193
427
  this.failedApproaches = [];
428
+ this.runs = [];
194
429
  this.currentEntry = null;
430
+ this.iterationStart = 0;
431
+ this.nextIterationNumber = 1;
432
+ this.totalEntryCount = 0;
433
+ this.totalTokenCount = 0;
434
+ this.totalCostUsd = 0;
435
+ this.totalDurationMs = 0;
436
+ this.totalFailureCount = 0;
437
+ this.totalFailedApproachCount = 0;
438
+ this.touch();
439
+ }
440
+ /**
441
+ * Recover interrupted state from a persisted snapshot.
442
+ * Returns true if anything was recovered.
443
+ */
444
+ recoverInterruptedState(reason = 'Previous session ended before completion') {
445
+ let recovered = false;
446
+ const now = Date.now();
447
+ if (this.currentEntry && typeof this.currentEntry.iteration === 'number' && typeof this.currentEntry.timestamp === 'number') {
448
+ const recoveredEntry = {
449
+ iteration: this.currentEntry.iteration,
450
+ timestamp: this.currentEntry.timestamp,
451
+ actions: this.currentEntry.actions || [],
452
+ outcome: 'error',
453
+ tokens: this.currentEntry.tokens || { input: 0, output: 0 },
454
+ durationMs: this.iterationStart > 0 ? Math.max(0, now - this.iterationStart) : 0,
455
+ cost: this.currentEntry.cost || 0,
456
+ };
457
+ this.entries.push(recoveredEntry);
458
+ this.totalEntryCount = Math.max(this.totalEntryCount + 1, this.currentEntry.iteration);
459
+ this.nextIterationNumber = Math.max(this.nextIterationNumber, this.currentEntry.iteration + 1);
460
+ this.totalTokenCount += recoveredEntry.tokens.input + recoveredEntry.tokens.output;
461
+ this.totalCostUsd += recoveredEntry.cost;
462
+ this.totalDurationMs += recoveredEntry.durationMs;
463
+ this.totalFailureCount++;
464
+ this.currentEntry = null;
465
+ this.iterationStart = 0;
466
+ recovered = true;
467
+ }
468
+ for (const run of this.runs) {
469
+ if (run.status === 'running') {
470
+ run.status = 'interrupted';
471
+ run.updatedAt = now;
472
+ run.completedAt = now;
473
+ run.entryCountAtEnd = this.totalEntryCount;
474
+ if (!run.errorSummary) {
475
+ run.errorSummary = truncate(reason, 200);
476
+ }
477
+ recovered = true;
478
+ }
479
+ }
480
+ return recovered;
481
+ }
482
+ touch() {
483
+ this.pruneRetainedState();
484
+ this.onChange?.(this);
485
+ }
486
+ pruneRetainedState() {
487
+ if (this.retentionLimit <= 0) {
488
+ return;
489
+ }
490
+ if (this.entries.length > this.retentionLimit) {
491
+ this.entries = this.entries.slice(-this.retentionLimit);
492
+ }
493
+ if (this.failedApproaches.length > this.retentionLimit) {
494
+ this.failedApproaches = this.failedApproaches.slice(-this.retentionLimit);
495
+ }
496
+ if (this.runs.length > this.retentionLimit) {
497
+ const activeRuns = this.runs.filter(run => run.status === 'running');
498
+ const finishedRuns = this.runs.filter(run => run.status !== 'running');
499
+ const maxFinished = Math.max(0, this.retentionLimit - activeRuns.length);
500
+ this.runs = [...finishedRuns.slice(-maxFinished), ...activeRuns]
501
+ .sort((a, b) => a.startedAt - b.startedAt);
502
+ }
195
503
  }
196
504
  }
197
505
  // ============================================================================
@@ -1 +1 @@
1
- {"version":3,"file":"iteration-ledger.js","sourceRoot":"","sources":["../src/iteration-ledger.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"iteration-ledger.js","sourceRoot":"","sources":["../src/iteration-ledger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export declare function resolveIterationLimit(value: number | undefined | null): number;
2
+ export declare function isFiniteIterationLimit(value: number | undefined | null): value is number;
3
+ export declare function formatIterationLimit(value: number | undefined | null): string;
4
+ export declare function formatIterationProgress(iteration: number, maxIterations: number | undefined | null): string;
5
+ //# sourceMappingURL=iteration-limit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"iteration-limit.d.ts","sourceRoot":"","sources":["../src/iteration-limit.ts"],"names":[],"mappings":"AAAA,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,MAAM,CAI9E;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,KAAK,IAAI,MAAM,CAExF;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,MAAM,CAE7E;AAED,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,MAAM,CAI3G"}
@@ -0,0 +1,17 @@
1
+ export function resolveIterationLimit(value) {
2
+ return typeof value === 'number' && Number.isFinite(value) && value > 0
3
+ ? value
4
+ : Infinity;
5
+ }
6
+ export function isFiniteIterationLimit(value) {
7
+ return typeof value === 'number' && Number.isFinite(value) && value > 0;
8
+ }
9
+ export function formatIterationLimit(value) {
10
+ return isFiniteIterationLimit(value) ? String(value) : 'unlimited';
11
+ }
12
+ export function formatIterationProgress(iteration, maxIterations) {
13
+ return isFiniteIterationLimit(maxIterations)
14
+ ? `${iteration}/${maxIterations}`
15
+ : String(iteration);
16
+ }
17
+ //# sourceMappingURL=iteration-limit.js.map