groove-dev 0.19.3 → 0.19.5

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 (34) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/node_modules/@groove-dev/cli/bin/groove.js +1 -1
  3. package/node_modules/@groove-dev/daemon/src/api.js +18 -2
  4. package/node_modules/@groove-dev/daemon/src/providers/ollama.js +37 -0
  5. package/node_modules/@groove-dev/gui/.groove/codebase-index.json +3 -3
  6. package/node_modules/@groove-dev/gui/.groove/state.json +1 -1
  7. package/node_modules/@groove-dev/gui/.groove/timeline.json +448 -0
  8. package/node_modules/@groove-dev/gui/dist/assets/index-BU5gUCxA.js +537 -0
  9. package/node_modules/@groove-dev/gui/dist/assets/index-CK7vwVXU.css +1 -0
  10. package/node_modules/@groove-dev/gui/dist/index.html +2 -2
  11. package/node_modules/@groove-dev/gui/src/app.jsx +2 -0
  12. package/node_modules/@groove-dev/gui/src/components/agents/ollama-setup.jsx +79 -26
  13. package/node_modules/@groove-dev/gui/src/components/layout/activity-bar.jsx +1 -1
  14. package/node_modules/@groove-dev/gui/src/stores/groove.js +1 -1
  15. package/node_modules/@groove-dev/gui/src/views/settings.jsx +440 -0
  16. package/package.json +1 -1
  17. package/packages/cli/bin/groove.js +1 -1
  18. package/packages/daemon/src/api.js +18 -2
  19. package/packages/daemon/src/providers/ollama.js +37 -0
  20. package/packages/gui/dist/assets/index-BU5gUCxA.js +537 -0
  21. package/packages/gui/dist/assets/index-CK7vwVXU.css +1 -0
  22. package/packages/gui/dist/index.html +2 -2
  23. package/packages/gui/src/app.jsx +2 -0
  24. package/packages/gui/src/components/agents/ollama-setup.jsx +79 -26
  25. package/packages/gui/src/components/layout/activity-bar.jsx +1 -1
  26. package/packages/gui/src/stores/groove.js +1 -1
  27. package/packages/gui/src/views/settings.jsx +440 -0
  28. package/node_modules/@groove-dev/gui/.groove/daemon.host +0 -1
  29. package/node_modules/@groove-dev/gui/.groove/daemon.pid +0 -1
  30. package/node_modules/@groove-dev/gui/AGENTS_REGISTRY.md +0 -9
  31. package/node_modules/@groove-dev/gui/dist/assets/index-CBSgTE0t.js +0 -537
  32. package/node_modules/@groove-dev/gui/dist/assets/index-DgIS4D-j.css +0 -1
  33. package/packages/gui/dist/assets/index-CBSgTE0t.js +0 -537
  34. package/packages/gui/dist/assets/index-DgIS4D-j.css +0 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,20 @@
1
1
  # Changelog
2
2
 
3
+ ## v0.19.5 — Settings page: providers, API keys, config, account (2026-04-08)
4
+
5
+ - **Settings view** — proper settings page with three tabs: Providers, Configuration, Account
6
+ - **Providers tab** — all providers with status badges, expandable cards, API key management (add/update/remove with masked display), Ollama setup inline with full model catalog
7
+ - **Configuration tab** — daemon settings with live save: default provider, working directory, auto-rotation toggle, rotation threshold, QC threshold, max agents, journalist interval
8
+ - **Account tab** — marketplace sign-in/out, user profile display, daemon info (version, port, host, PID, uptime)
9
+ - **Activity bar fix** — Settings gear icon now opens Settings view (was incorrectly pointing to Teams/Management)
10
+
11
+ ## v0.19.4 — Ollama server lifecycle, UI state fix (2026-04-08)
12
+
13
+ - **Server detection** — checks if Ollama server is running (not just binary installed), shows "Start Ollama Server" button with auto-start via brew services or ollama serve
14
+ - **Three-state install flow** — not installed → installed but server down → ready with models
15
+ - **UI state fix** — closing/reopening Ollama dropdown no longer reverts to install screen; provider list refreshes on state change
16
+ - **New API endpoints** — `POST /api/providers/ollama/serve` (auto-start server), `/check` now returns `serverRunning` flag
17
+
3
18
  ## v0.19.3 — Ollama setup experience: hardware detection, model catalog, one-click pull (2026-04-08)
4
19
 
5
20
  - **Ollama model catalog** — 22 models across Code and General categories with RAM requirements and download sizes
@@ -24,7 +24,7 @@ import { federationPair, federationUnpair, federationList, federationStatus } fr
24
24
  program
25
25
  .name('groove')
26
26
  .description('Agent orchestration layer for AI coding tools')
27
- .version('0.19.3');
27
+ .version('0.19.5');
28
28
 
29
29
  program
30
30
  .command('start')
@@ -170,12 +170,28 @@ export function createApi(app, daemon) {
170
170
  }
171
171
  });
172
172
 
173
- app.post('/api/providers/ollama/check', (req, res) => {
173
+ app.post('/api/providers/ollama/check', async (req, res) => {
174
174
  const installed = OllamaProvider.isInstalled();
175
+ const serverRunning = installed ? await OllamaProvider.isServerRunning() : false;
175
176
  const install = OllamaProvider.installCommand();
176
177
  const hardware = OllamaProvider.getSystemHardware();
177
178
  const requirements = OllamaProvider.hardwareRequirements();
178
- res.json({ installed, install, hardware, requirements });
179
+ res.json({ installed, serverRunning, install, hardware, requirements });
180
+ });
181
+
182
+ app.post('/api/providers/ollama/serve', async (req, res) => {
183
+ if (!OllamaProvider.isInstalled()) return res.status(400).json({ error: 'Ollama is not installed' });
184
+ const already = await OllamaProvider.isServerRunning();
185
+ if (already) return res.json({ ok: true, alreadyRunning: true });
186
+ const result = OllamaProvider.startServer();
187
+ if (result.started) {
188
+ // Wait a moment for server to come up
189
+ await new Promise((r) => setTimeout(r, 2000));
190
+ const running = await OllamaProvider.isServerRunning();
191
+ res.json({ ok: running, method: result.method });
192
+ } else {
193
+ res.status(500).json({ error: 'Could not start server', command: result.command });
194
+ }
179
195
  });
180
196
 
181
197
  // --- Credentials ---
@@ -71,6 +71,43 @@ export class OllamaProvider extends Provider {
71
71
  return { command: 'Download from https://ollama.ai/download', platform: 'other' };
72
72
  }
73
73
 
74
+ static async isServerRunning() {
75
+ try {
76
+ const controller = new AbortController();
77
+ const timeout = setTimeout(() => controller.abort(), 3000);
78
+ const res = await fetch('http://localhost:11434/', { signal: controller.signal });
79
+ clearTimeout(timeout);
80
+ return res.ok;
81
+ } catch {
82
+ return false;
83
+ }
84
+ }
85
+
86
+ static startServer() {
87
+ const platform = process.platform;
88
+ if (platform === 'darwin') {
89
+ // Try brew services first, fall back to ollama serve
90
+ try {
91
+ execSync('brew services start ollama', { stdio: 'ignore', timeout: 10000 });
92
+ return { started: true, method: 'brew services' };
93
+ } catch {
94
+ try {
95
+ execFile('ollama', ['serve'], { stdio: 'ignore', detached: true }).unref();
96
+ return { started: true, method: 'ollama serve' };
97
+ } catch {
98
+ return { started: false, command: 'ollama serve' };
99
+ }
100
+ }
101
+ }
102
+ // Linux / other
103
+ try {
104
+ execFile('ollama', ['serve'], { stdio: 'ignore', detached: true }).unref();
105
+ return { started: true, method: 'ollama serve' };
106
+ } catch {
107
+ return { started: false, command: 'ollama serve' };
108
+ }
109
+ }
110
+
74
111
  static hardwareRequirements() {
75
112
  return {
76
113
  minRAM: 4,
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "projectName": "gui",
3
- "scannedAt": "2026-04-09T05:29:41.298Z",
3
+ "scannedAt": "2026-04-09T05:52:27.246Z",
4
4
  "stats": {
5
- "totalFiles": 84,
5
+ "totalFiles": 85,
6
6
  "totalDirs": 14,
7
7
  "treeDepth": 4
8
8
  },
@@ -66,7 +66,7 @@
66
66
  "path": "src/components/agents",
67
67
  "depth": 3,
68
68
  "dirs": 0,
69
- "files": 14,
69
+ "files": 15,
70
70
  "children": []
71
71
  },
72
72
  {
@@ -16,7 +16,7 @@
16
16
  "status": "stopped",
17
17
  "pid": null,
18
18
  "spawnedAt": "2026-04-09T02:46:11.349Z",
19
- "lastActivity": "2026-04-09T05:10:09.157Z",
19
+ "lastActivity": "2026-04-09T05:32:30.003Z",
20
20
  "tokensUsed": 41952,
21
21
  "contextUsage": 0.020954,
22
22
  "sessionId": "b870e8f8-84b1-4ad2-a0d3-fef8035466c0",
@@ -6151,6 +6151,454 @@
6151
6151
  "agents": 1,
6152
6152
  "running": 0,
6153
6153
  "cacheHitRate": 0.8360697165954649
6154
+ },
6155
+ {
6156
+ "t": 1775713091296,
6157
+ "tokens": 3005468,
6158
+ "costUsd": 0.42406725000000006,
6159
+ "agents": 1,
6160
+ "running": 0,
6161
+ "cacheHitRate": 0.8360697165954649
6162
+ },
6163
+ {
6164
+ "t": 1775713121297,
6165
+ "tokens": 3005468,
6166
+ "costUsd": 0.42406725000000006,
6167
+ "agents": 1,
6168
+ "running": 0,
6169
+ "cacheHitRate": 0.8360697165954649
6170
+ },
6171
+ {
6172
+ "t": 1775713151299,
6173
+ "tokens": 3005468,
6174
+ "costUsd": 0.42406725000000006,
6175
+ "agents": 1,
6176
+ "running": 0,
6177
+ "cacheHitRate": 0.8360697165954649
6178
+ },
6179
+ {
6180
+ "t": 1775713181300,
6181
+ "tokens": 3005468,
6182
+ "costUsd": 0.42406725000000006,
6183
+ "agents": 1,
6184
+ "running": 0,
6185
+ "cacheHitRate": 0.8360697165954649
6186
+ },
6187
+ {
6188
+ "t": 1775713211302,
6189
+ "tokens": 3005468,
6190
+ "costUsd": 0.42406725000000006,
6191
+ "agents": 1,
6192
+ "running": 0,
6193
+ "cacheHitRate": 0.8360697165954649
6194
+ },
6195
+ {
6196
+ "t": 1775713241302,
6197
+ "tokens": 3005468,
6198
+ "costUsd": 0.42406725000000006,
6199
+ "agents": 1,
6200
+ "running": 0,
6201
+ "cacheHitRate": 0.8360697165954649
6202
+ },
6203
+ {
6204
+ "t": 1775713271304,
6205
+ "tokens": 3005468,
6206
+ "costUsd": 0.42406725000000006,
6207
+ "agents": 1,
6208
+ "running": 0,
6209
+ "cacheHitRate": 0.8360697165954649
6210
+ },
6211
+ {
6212
+ "t": 1775713301306,
6213
+ "tokens": 3005468,
6214
+ "costUsd": 0.42406725000000006,
6215
+ "agents": 1,
6216
+ "running": 0,
6217
+ "cacheHitRate": 0.8360697165954649
6218
+ },
6219
+ {
6220
+ "t": 1775713331307,
6221
+ "tokens": 3005468,
6222
+ "costUsd": 0.42406725000000006,
6223
+ "agents": 1,
6224
+ "running": 0,
6225
+ "cacheHitRate": 0.8360697165954649
6226
+ },
6227
+ {
6228
+ "t": 1775713361307,
6229
+ "tokens": 3005468,
6230
+ "costUsd": 0.42406725000000006,
6231
+ "agents": 1,
6232
+ "running": 0,
6233
+ "cacheHitRate": 0.8360697165954649
6234
+ },
6235
+ {
6236
+ "t": 1775713391308,
6237
+ "tokens": 3005468,
6238
+ "costUsd": 0.42406725000000006,
6239
+ "agents": 1,
6240
+ "running": 0,
6241
+ "cacheHitRate": 0.8360697165954649
6242
+ },
6243
+ {
6244
+ "t": 1775713421307,
6245
+ "tokens": 3005468,
6246
+ "costUsd": 0.42406725000000006,
6247
+ "agents": 1,
6248
+ "running": 0,
6249
+ "cacheHitRate": 0.8360697165954649
6250
+ },
6251
+ {
6252
+ "t": 1775713451308,
6253
+ "tokens": 3005468,
6254
+ "costUsd": 0.42406725000000006,
6255
+ "agents": 1,
6256
+ "running": 0,
6257
+ "cacheHitRate": 0.8360697165954649
6258
+ },
6259
+ {
6260
+ "t": 1775713481308,
6261
+ "tokens": 3005468,
6262
+ "costUsd": 0.42406725000000006,
6263
+ "agents": 1,
6264
+ "running": 0,
6265
+ "cacheHitRate": 0.8360697165954649
6266
+ },
6267
+ {
6268
+ "t": 1775713511309,
6269
+ "tokens": 3005468,
6270
+ "costUsd": 0.42406725000000006,
6271
+ "agents": 1,
6272
+ "running": 0,
6273
+ "cacheHitRate": 0.8360697165954649
6274
+ },
6275
+ {
6276
+ "t": 1775713541310,
6277
+ "tokens": 3005468,
6278
+ "costUsd": 0.42406725000000006,
6279
+ "agents": 1,
6280
+ "running": 0,
6281
+ "cacheHitRate": 0.8360697165954649
6282
+ },
6283
+ {
6284
+ "t": 1775713571311,
6285
+ "tokens": 3005468,
6286
+ "costUsd": 0.42406725000000006,
6287
+ "agents": 1,
6288
+ "running": 0,
6289
+ "cacheHitRate": 0.8360697165954649
6290
+ },
6291
+ {
6292
+ "t": 1775713601312,
6293
+ "tokens": 3005468,
6294
+ "costUsd": 0.42406725000000006,
6295
+ "agents": 1,
6296
+ "running": 0,
6297
+ "cacheHitRate": 0.8360697165954649
6298
+ },
6299
+ {
6300
+ "t": 1775713631312,
6301
+ "tokens": 3005468,
6302
+ "costUsd": 0.42406725000000006,
6303
+ "agents": 1,
6304
+ "running": 0,
6305
+ "cacheHitRate": 0.8360697165954649
6306
+ },
6307
+ {
6308
+ "t": 1775713661313,
6309
+ "tokens": 3005468,
6310
+ "costUsd": 0.42406725000000006,
6311
+ "agents": 1,
6312
+ "running": 0,
6313
+ "cacheHitRate": 0.8360697165954649
6314
+ },
6315
+ {
6316
+ "t": 1775713691313,
6317
+ "tokens": 3005468,
6318
+ "costUsd": 0.42406725000000006,
6319
+ "agents": 1,
6320
+ "running": 0,
6321
+ "cacheHitRate": 0.8360697165954649
6322
+ },
6323
+ {
6324
+ "t": 1775713721314,
6325
+ "tokens": 3005468,
6326
+ "costUsd": 0.42406725000000006,
6327
+ "agents": 1,
6328
+ "running": 0,
6329
+ "cacheHitRate": 0.8360697165954649
6330
+ },
6331
+ {
6332
+ "t": 1775713751314,
6333
+ "tokens": 3005468,
6334
+ "costUsd": 0.42406725000000006,
6335
+ "agents": 1,
6336
+ "running": 0,
6337
+ "cacheHitRate": 0.8360697165954649
6338
+ },
6339
+ {
6340
+ "t": 1775713781314,
6341
+ "tokens": 3005468,
6342
+ "costUsd": 0.42406725000000006,
6343
+ "agents": 1,
6344
+ "running": 0,
6345
+ "cacheHitRate": 0.8360697165954649
6346
+ },
6347
+ {
6348
+ "t": 1775713811316,
6349
+ "tokens": 3005468,
6350
+ "costUsd": 0.42406725000000006,
6351
+ "agents": 1,
6352
+ "running": 0,
6353
+ "cacheHitRate": 0.8360697165954649
6354
+ },
6355
+ {
6356
+ "t": 1775713841317,
6357
+ "tokens": 3005468,
6358
+ "costUsd": 0.42406725000000006,
6359
+ "agents": 1,
6360
+ "running": 0,
6361
+ "cacheHitRate": 0.8360697165954649
6362
+ },
6363
+ {
6364
+ "t": 1775713871316,
6365
+ "tokens": 3005468,
6366
+ "costUsd": 0.42406725000000006,
6367
+ "agents": 1,
6368
+ "running": 0,
6369
+ "cacheHitRate": 0.8360697165954649
6370
+ },
6371
+ {
6372
+ "t": 1775713901318,
6373
+ "tokens": 3005468,
6374
+ "costUsd": 0.42406725000000006,
6375
+ "agents": 1,
6376
+ "running": 0,
6377
+ "cacheHitRate": 0.8360697165954649
6378
+ },
6379
+ {
6380
+ "t": 1775713947242,
6381
+ "tokens": 3005468,
6382
+ "costUsd": 0.42406725000000006,
6383
+ "agents": 1,
6384
+ "running": 0,
6385
+ "cacheHitRate": 0.8360697165954649
6386
+ },
6387
+ {
6388
+ "t": 1775713977242,
6389
+ "tokens": 3005468,
6390
+ "costUsd": 0.42406725000000006,
6391
+ "agents": 1,
6392
+ "running": 0,
6393
+ "cacheHitRate": 0.8360697165954649
6394
+ },
6395
+ {
6396
+ "t": 1775714007241,
6397
+ "tokens": 3005468,
6398
+ "costUsd": 0.42406725000000006,
6399
+ "agents": 1,
6400
+ "running": 0,
6401
+ "cacheHitRate": 0.8360697165954649
6402
+ },
6403
+ {
6404
+ "t": 1775714037242,
6405
+ "tokens": 3005468,
6406
+ "costUsd": 0.42406725000000006,
6407
+ "agents": 1,
6408
+ "running": 0,
6409
+ "cacheHitRate": 0.8360697165954649
6410
+ },
6411
+ {
6412
+ "t": 1775714067241,
6413
+ "tokens": 3005468,
6414
+ "costUsd": 0.42406725000000006,
6415
+ "agents": 1,
6416
+ "running": 0,
6417
+ "cacheHitRate": 0.8360697165954649
6418
+ },
6419
+ {
6420
+ "t": 1775714097242,
6421
+ "tokens": 3005468,
6422
+ "costUsd": 0.42406725000000006,
6423
+ "agents": 1,
6424
+ "running": 0,
6425
+ "cacheHitRate": 0.8360697165954649
6426
+ },
6427
+ {
6428
+ "t": 1775714127241,
6429
+ "tokens": 3005468,
6430
+ "costUsd": 0.42406725000000006,
6431
+ "agents": 1,
6432
+ "running": 0,
6433
+ "cacheHitRate": 0.8360697165954649
6434
+ },
6435
+ {
6436
+ "t": 1775714157240,
6437
+ "tokens": 3005468,
6438
+ "costUsd": 0.42406725000000006,
6439
+ "agents": 1,
6440
+ "running": 0,
6441
+ "cacheHitRate": 0.8360697165954649
6442
+ },
6443
+ {
6444
+ "t": 1775714187240,
6445
+ "tokens": 3005468,
6446
+ "costUsd": 0.42406725000000006,
6447
+ "agents": 1,
6448
+ "running": 0,
6449
+ "cacheHitRate": 0.8360697165954649
6450
+ },
6451
+ {
6452
+ "t": 1775714217241,
6453
+ "tokens": 3005468,
6454
+ "costUsd": 0.42406725000000006,
6455
+ "agents": 1,
6456
+ "running": 0,
6457
+ "cacheHitRate": 0.8360697165954649
6458
+ },
6459
+ {
6460
+ "t": 1775714247240,
6461
+ "tokens": 3005468,
6462
+ "costUsd": 0.42406725000000006,
6463
+ "agents": 1,
6464
+ "running": 0,
6465
+ "cacheHitRate": 0.8360697165954649
6466
+ },
6467
+ {
6468
+ "t": 1775714277241,
6469
+ "tokens": 3005468,
6470
+ "costUsd": 0.42406725000000006,
6471
+ "agents": 1,
6472
+ "running": 0,
6473
+ "cacheHitRate": 0.8360697165954649
6474
+ },
6475
+ {
6476
+ "t": 1775714307240,
6477
+ "tokens": 3005468,
6478
+ "costUsd": 0.42406725000000006,
6479
+ "agents": 1,
6480
+ "running": 0,
6481
+ "cacheHitRate": 0.8360697165954649
6482
+ },
6483
+ {
6484
+ "t": 1775714337241,
6485
+ "tokens": 3005468,
6486
+ "costUsd": 0.42406725000000006,
6487
+ "agents": 1,
6488
+ "running": 0,
6489
+ "cacheHitRate": 0.8360697165954649
6490
+ },
6491
+ {
6492
+ "t": 1775714367239,
6493
+ "tokens": 3005468,
6494
+ "costUsd": 0.42406725000000006,
6495
+ "agents": 1,
6496
+ "running": 0,
6497
+ "cacheHitRate": 0.8360697165954649
6498
+ },
6499
+ {
6500
+ "t": 1775714397240,
6501
+ "tokens": 3005468,
6502
+ "costUsd": 0.42406725000000006,
6503
+ "agents": 1,
6504
+ "running": 0,
6505
+ "cacheHitRate": 0.8360697165954649
6506
+ },
6507
+ {
6508
+ "t": 1775714427240,
6509
+ "tokens": 3005468,
6510
+ "costUsd": 0.42406725000000006,
6511
+ "agents": 1,
6512
+ "running": 0,
6513
+ "cacheHitRate": 0.8360697165954649
6514
+ },
6515
+ {
6516
+ "t": 1775714457239,
6517
+ "tokens": 3005468,
6518
+ "costUsd": 0.42406725000000006,
6519
+ "agents": 1,
6520
+ "running": 0,
6521
+ "cacheHitRate": 0.8360697165954649
6522
+ },
6523
+ {
6524
+ "t": 1775714487239,
6525
+ "tokens": 3005468,
6526
+ "costUsd": 0.42406725000000006,
6527
+ "agents": 1,
6528
+ "running": 0,
6529
+ "cacheHitRate": 0.8360697165954649
6530
+ },
6531
+ {
6532
+ "t": 1775714517239,
6533
+ "tokens": 3005468,
6534
+ "costUsd": 0.42406725000000006,
6535
+ "agents": 1,
6536
+ "running": 0,
6537
+ "cacheHitRate": 0.8360697165954649
6538
+ },
6539
+ {
6540
+ "t": 1775714547239,
6541
+ "tokens": 3005468,
6542
+ "costUsd": 0.42406725000000006,
6543
+ "agents": 1,
6544
+ "running": 0,
6545
+ "cacheHitRate": 0.8360697165954649
6546
+ },
6547
+ {
6548
+ "t": 1775714577239,
6549
+ "tokens": 3005468,
6550
+ "costUsd": 0.42406725000000006,
6551
+ "agents": 1,
6552
+ "running": 0,
6553
+ "cacheHitRate": 0.8360697165954649
6554
+ },
6555
+ {
6556
+ "t": 1775714607239,
6557
+ "tokens": 3005468,
6558
+ "costUsd": 0.42406725000000006,
6559
+ "agents": 1,
6560
+ "running": 0,
6561
+ "cacheHitRate": 0.8360697165954649
6562
+ },
6563
+ {
6564
+ "t": 1775714637240,
6565
+ "tokens": 3005468,
6566
+ "costUsd": 0.42406725000000006,
6567
+ "agents": 1,
6568
+ "running": 0,
6569
+ "cacheHitRate": 0.8360697165954649
6570
+ },
6571
+ {
6572
+ "t": 1775714667238,
6573
+ "tokens": 3005468,
6574
+ "costUsd": 0.42406725000000006,
6575
+ "agents": 1,
6576
+ "running": 0,
6577
+ "cacheHitRate": 0.8360697165954649
6578
+ },
6579
+ {
6580
+ "t": 1775714697238,
6581
+ "tokens": 3005468,
6582
+ "costUsd": 0.42406725000000006,
6583
+ "agents": 1,
6584
+ "running": 0,
6585
+ "cacheHitRate": 0.8360697165954649
6586
+ },
6587
+ {
6588
+ "t": 1775714727238,
6589
+ "tokens": 3005468,
6590
+ "costUsd": 0.42406725000000006,
6591
+ "agents": 1,
6592
+ "running": 0,
6593
+ "cacheHitRate": 0.8360697165954649
6594
+ },
6595
+ {
6596
+ "t": 1775714757238,
6597
+ "tokens": 3005468,
6598
+ "costUsd": 0.42406725000000006,
6599
+ "agents": 1,
6600
+ "running": 0,
6601
+ "cacheHitRate": 0.8360697165954649
6154
6602
  }
6155
6603
  ],
6156
6604
  "events": [