@openagentsy/ledger 0.0.0-stage → 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.
Files changed (86) hide show
  1. package/LICENSE +674 -0
  2. package/README.md +20 -2
  3. package/data/pricing/litellm.json +8882 -0
  4. package/data/pricing/models.dev.json +12151 -0
  5. package/data/pricing/openrouter.json +1017 -0
  6. package/dist/db.d.ts +44 -0
  7. package/dist/db.d.ts.map +1 -0
  8. package/dist/db.js +97 -0
  9. package/dist/db.js.map +1 -0
  10. package/dist/export.d.ts +71 -0
  11. package/dist/export.d.ts.map +1 -0
  12. package/dist/export.js +78 -0
  13. package/dist/export.js.map +1 -0
  14. package/dist/footprint.d.ts +24 -0
  15. package/dist/footprint.d.ts.map +1 -0
  16. package/dist/footprint.js +33 -0
  17. package/dist/footprint.js.map +1 -0
  18. package/dist/git.d.ts +44 -0
  19. package/dist/git.d.ts.map +1 -0
  20. package/dist/git.js +126 -0
  21. package/dist/git.js.map +1 -0
  22. package/dist/git.test.d.ts +2 -0
  23. package/dist/git.test.d.ts.map +1 -0
  24. package/dist/git.test.js +101 -0
  25. package/dist/git.test.js.map +1 -0
  26. package/dist/index.d.ts +19 -0
  27. package/dist/index.d.ts.map +1 -0
  28. package/dist/index.js +19 -0
  29. package/dist/index.js.map +1 -0
  30. package/dist/ingest.d.ts +133 -0
  31. package/dist/ingest.d.ts.map +1 -0
  32. package/dist/ingest.js +324 -0
  33. package/dist/ingest.js.map +1 -0
  34. package/dist/ingest.test.d.ts +2 -0
  35. package/dist/ingest.test.d.ts.map +1 -0
  36. package/dist/ingest.test.js +245 -0
  37. package/dist/ingest.test.js.map +1 -0
  38. package/dist/outcomes.d.ts +81 -0
  39. package/dist/outcomes.d.ts.map +1 -0
  40. package/dist/outcomes.js +85 -0
  41. package/dist/outcomes.js.map +1 -0
  42. package/dist/outcomes.test.d.ts +2 -0
  43. package/dist/outcomes.test.d.ts.map +1 -0
  44. package/dist/outcomes.test.js +160 -0
  45. package/dist/outcomes.test.js.map +1 -0
  46. package/dist/policy.d.ts +48 -0
  47. package/dist/policy.d.ts.map +1 -0
  48. package/dist/policy.js +99 -0
  49. package/dist/policy.js.map +1 -0
  50. package/dist/policy.test.d.ts +2 -0
  51. package/dist/policy.test.d.ts.map +1 -0
  52. package/dist/policy.test.js +126 -0
  53. package/dist/policy.test.js.map +1 -0
  54. package/dist/pricing.d.ts +92 -0
  55. package/dist/pricing.d.ts.map +1 -0
  56. package/dist/pricing.js +341 -0
  57. package/dist/pricing.js.map +1 -0
  58. package/dist/pricing.test.d.ts +2 -0
  59. package/dist/pricing.test.d.ts.map +1 -0
  60. package/dist/pricing.test.js +167 -0
  61. package/dist/pricing.test.js.map +1 -0
  62. package/dist/query.d.ts +134 -0
  63. package/dist/query.d.ts.map +1 -0
  64. package/dist/query.js +247 -0
  65. package/dist/query.js.map +1 -0
  66. package/dist/query.test.d.ts +2 -0
  67. package/dist/query.test.d.ts.map +1 -0
  68. package/dist/query.test.js +242 -0
  69. package/dist/query.test.js.map +1 -0
  70. package/dist/schema.d.ts +33 -0
  71. package/dist/schema.d.ts.map +1 -0
  72. package/dist/schema.js +139 -0
  73. package/dist/schema.js.map +1 -0
  74. package/dist/schema.test.d.ts +2 -0
  75. package/dist/schema.test.d.ts.map +1 -0
  76. package/dist/schema.test.js +129 -0
  77. package/dist/schema.test.js.map +1 -0
  78. package/dist/waste.d.ts +116 -0
  79. package/dist/waste.d.ts.map +1 -0
  80. package/dist/waste.js +553 -0
  81. package/dist/waste.js.map +1 -0
  82. package/dist/waste.test.d.ts +2 -0
  83. package/dist/waste.test.d.ts.map +1 -0
  84. package/dist/waste.test.js +278 -0
  85. package/dist/waste.test.js.map +1 -0
  86. package/package.json +52 -4
@@ -0,0 +1,278 @@
1
+ import { Database } from 'bun:sqlite';
2
+ import { mkdtemp, rm, writeFile } from 'node:fs/promises';
3
+ import { tmpdir } from 'node:os';
4
+ import { join } from 'node:path';
5
+ import { afterEach, beforeEach, describe, expect, it } from 'vitest';
6
+ import { closeLedger, openLedger } from './db.js';
7
+ import { runGit } from './git.js';
8
+ import { recordAssistantMessage } from './ingest.js';
9
+ import { detectCacheMiss, detectNoProgress, detectNoProgressAtPath, recordWasteRows, scanReverts, } from './waste.js';
10
+ let root;
11
+ beforeEach(async () => {
12
+ root = await mkdtemp(join(tmpdir(), 'openagentsy-waste-'));
13
+ });
14
+ afterEach(async () => {
15
+ await rm(root, { recursive: true, force: true });
16
+ });
17
+ /**
18
+ * A storage file of the shape the OpenCode version of this project writes.
19
+ *
20
+ * The table and the JSON are the ones the backfill reads, so the detector is
21
+ * proven against the same shape it meets in the wild. The parts table is
22
+ * written only when the fixture needs it: a storage without parts is a
23
+ * storage that cannot say what a user turn carried.
24
+ */
25
+ async function seedStorage(messages, parts = []) {
26
+ const dir = await mkdtemp(join(tmpdir(), 'openagentsy-storage-'));
27
+ const db = new Database(join(dir, 'opencode.db'), { create: true });
28
+ db.exec('CREATE TABLE message (id TEXT PRIMARY KEY, session_id TEXT NOT NULL, time_created INTEGER NOT NULL, time_updated INTEGER NOT NULL, data TEXT NOT NULL)');
29
+ const insert = db.query('INSERT INTO message (id, session_id, time_created, time_updated, data) VALUES (?,?,?,?,?)');
30
+ for (const message of messages) {
31
+ const data = { role: message.role, time: { created: message.at } };
32
+ if (message.tokens !== undefined) {
33
+ data.tokens = message.tokens;
34
+ data.modelID = 'claude-sonnet-4-5';
35
+ data.providerID = 'anthropic';
36
+ }
37
+ insert.run(message.id, 'ses_1', message.at, message.at, JSON.stringify(data));
38
+ }
39
+ if (parts.length > 0) {
40
+ db.exec('CREATE TABLE part (id TEXT PRIMARY KEY, message_id TEXT NOT NULL, session_id TEXT NOT NULL, time_created INTEGER NOT NULL, time_updated INTEGER NOT NULL, data TEXT NOT NULL)');
41
+ const insertPart = db.query('INSERT INTO part (id, message_id, session_id, time_created, time_updated, data) VALUES (?,?,?,?,?,?)');
42
+ for (const part of parts) {
43
+ insertPart.run(`part_${part.messageId}`, part.messageId, 'ses_1', 0, 0, JSON.stringify({ type: part.type, text: part.text ?? '' }));
44
+ }
45
+ }
46
+ db.close();
47
+ return dir;
48
+ }
49
+ /** A board database of the shape the board writes. */
50
+ async function seedBoard(records, reads = []) {
51
+ const path = join(root, 'board.sqlite');
52
+ const db = new Database(path, { create: true });
53
+ db.exec(`
54
+ CREATE TABLE records (
55
+ id INTEGER PRIMARY KEY, bean TEXT, kind TEXT, from_agent TEXT, to_agent TEXT,
56
+ action TEXT, state TEXT, confidence TEXT, created_at TEXT);
57
+ CREATE TABLE record_reads (record_id INTEGER, agent TEXT, read_at TEXT);
58
+ CREATE TABLE leases (id INTEGER PRIMARY KEY, bean TEXT, agent TEXT, glob TEXT, granted_at TEXT);
59
+ `);
60
+ const insert = db.query('INSERT INTO records (id, bean, kind, from_agent, to_agent, action, state, confidence, created_at) VALUES (?,?,?,?,?,?,?,?,?)');
61
+ for (const record of records) {
62
+ insert.run(record.id, 'bean', 'status', record.from, record.to, 'action', 'state', 'verified', record.at);
63
+ }
64
+ const read = db.query('INSERT INTO record_reads (record_id, agent, read_at) VALUES (?,?,?)');
65
+ for (const entry of reads)
66
+ read.run(entry.id, entry.agent, entry.at);
67
+ db.close();
68
+ return path;
69
+ }
70
+ /** A Lead message in the ledger. */
71
+ function leadMessage(id, ts, tokens) {
72
+ const db = openLedger(root);
73
+ try {
74
+ recordAssistantMessage(db, {
75
+ id,
76
+ sessionID: 'ses_lead',
77
+ providerID: 'anthropic',
78
+ modelID: 'claude-sonnet-4-5',
79
+ tokens: { input: tokens, output: 0 },
80
+ }, { rootSessionId: 'ses_lead', role: 'lead', ts });
81
+ }
82
+ finally {
83
+ closeLedger(db);
84
+ }
85
+ }
86
+ const LOW_RATIO = { input: 2000, output: 100, cache: { read: 100, write: 0 } };
87
+ const HIGH_RATIO = { input: 100, output: 100, cache: { read: 9000, write: 0 } };
88
+ describe('the cache-miss detector', () => {
89
+ it('finds the turn that had no new user turn and read the prefix again', async () => {
90
+ const storage = await seedStorage([
91
+ { id: 'm1', role: 'assistant', at: 1000, tokens: LOW_RATIO },
92
+ { id: 'm2', role: 'assistant', at: 2000, tokens: LOW_RATIO },
93
+ { id: 'm3', role: 'assistant', at: 3000, tokens: HIGH_RATIO },
94
+ { id: 'u1', role: 'user', at: 4000 },
95
+ { id: 'm4', role: 'assistant', at: 5000, tokens: LOW_RATIO },
96
+ ]);
97
+ const db = openLedger(root);
98
+ try {
99
+ recordAssistantMessage(db, {
100
+ id: 'm1',
101
+ sessionID: 'ses_1',
102
+ providerID: 'anthropic',
103
+ modelID: 'claude-sonnet-4-5',
104
+ tokens: { input: 2000, output: 100 },
105
+ }, { rootSessionId: 'ses_root', role: 'builder', ts: '2026-01-01T00:00:00.000Z' });
106
+ const candidates = detectCacheMiss(db, { dataDir: storage });
107
+ expect(candidates).toHaveLength(1);
108
+ expect(candidates[0]?.kind).toBe('cache_miss');
109
+ expect(candidates[0]?.messageId).toBe('m2');
110
+ // The uncached input of the turn.
111
+ expect(candidates[0]?.tokens).toBe(2000);
112
+ expect(candidates[0]?.rootSessionId).toBe('ses_root');
113
+ }
114
+ finally {
115
+ closeLedger(db);
116
+ }
117
+ });
118
+ it('says nothing when the prefix was read from the cache', async () => {
119
+ const storage = await seedStorage([
120
+ { id: 'm1', role: 'assistant', at: 1000, tokens: HIGH_RATIO },
121
+ { id: 'm2', role: 'assistant', at: 2000, tokens: HIGH_RATIO },
122
+ ]);
123
+ const db = openLedger(root);
124
+ try {
125
+ const candidates = detectCacheMiss(db, { dataDir: storage, sessions: ['ses_1'] });
126
+ expect(candidates).toHaveLength(0);
127
+ }
128
+ finally {
129
+ closeLedger(db);
130
+ }
131
+ });
132
+ it('says nothing when a user turn came in between', async () => {
133
+ const storage = await seedStorage([
134
+ { id: 'm1', role: 'assistant', at: 1000, tokens: LOW_RATIO },
135
+ { id: 'u1', role: 'user', at: 2000 },
136
+ { id: 'm2', role: 'assistant', at: 3000, tokens: LOW_RATIO },
137
+ ]);
138
+ const db = openLedger(root);
139
+ try {
140
+ const candidates = detectCacheMiss(db, { dataDir: storage, sessions: ['ses_1'] });
141
+ expect(candidates).toHaveLength(0);
142
+ }
143
+ finally {
144
+ closeLedger(db);
145
+ }
146
+ });
147
+ it('keeps the pair when the user turn carried nothing the user wrote', async () => {
148
+ const storage = await seedStorage([
149
+ { id: 'm1', role: 'assistant', at: 1000, tokens: LOW_RATIO },
150
+ { id: 'u1', role: 'user', at: 2000 },
151
+ { id: 'm2', role: 'assistant', at: 3000, tokens: LOW_RATIO },
152
+ ], [{ messageId: 'u1', type: 'file' }]);
153
+ const db = openLedger(root);
154
+ try {
155
+ const candidates = detectCacheMiss(db, { dataDir: storage, sessions: ['ses_1'] });
156
+ expect(candidates).toHaveLength(1);
157
+ expect(candidates[0]?.messageId).toBe('m2');
158
+ }
159
+ finally {
160
+ closeLedger(db);
161
+ }
162
+ });
163
+ it('writes every signal once, however often the detector runs', async () => {
164
+ const storage = await seedStorage([
165
+ { id: 'm1', role: 'assistant', at: 1000, tokens: LOW_RATIO },
166
+ { id: 'm2', role: 'assistant', at: 2000, tokens: LOW_RATIO },
167
+ ]);
168
+ const db = openLedger(root);
169
+ try {
170
+ const candidates = detectCacheMiss(db, { dataDir: storage, sessions: ['ses_1'] });
171
+ expect(recordWasteRows(db, candidates)).toBe(1);
172
+ expect(recordWasteRows(db, candidates)).toBe(0);
173
+ const rows = db.query('SELECT COUNT(*) AS count FROM waste').get();
174
+ expect(rows.count).toBe(1);
175
+ }
176
+ finally {
177
+ closeLedger(db);
178
+ }
179
+ });
180
+ });
181
+ describe('the no-progress detector', () => {
182
+ it('finds the round that dispatched nothing and changed nothing', async () => {
183
+ await seedBoard([
184
+ { id: 1, from: 'agentsy', to: null, at: '2026-01-01T00:01:00.000Z' },
185
+ { id: 2, from: 'agentsy', to: 'oa-builder', at: '2026-01-01T00:03:00.000Z' },
186
+ { id: 3, from: 'oa-builder', to: null, at: '2026-01-01T00:04:30.000Z' },
187
+ { id: 4, from: 'agentsy', to: null, at: '2026-01-01T00:05:00.000Z' },
188
+ ]);
189
+ leadMessage('l1', '2026-01-01T00:00:00.000Z', 1000);
190
+ leadMessage('l2', '2026-01-01T00:02:00.000Z', 500);
191
+ leadMessage('l3', '2026-01-01T00:04:00.000Z', 700);
192
+ const boardDb = new Database(join(root, 'board.sqlite'), { readonly: true });
193
+ const db = openLedger(root);
194
+ try {
195
+ const candidates = detectNoProgress(db, boardDb, { leadAgent: 'agentsy' });
196
+ expect(candidates).toHaveLength(1);
197
+ expect(candidates[0]?.kind).toBe('no_progress');
198
+ expect(candidates[0]?.tokens).toBe(1000);
199
+ }
200
+ finally {
201
+ closeLedger(db);
202
+ boardDb.close();
203
+ }
204
+ });
205
+ it('says nothing about a round that consumed a result', async () => {
206
+ await seedBoard([{ id: 1, from: 'agentsy', to: null, at: '2026-01-01T00:01:00.000Z' }], [{ id: 1, agent: 'agentsy', at: '2026-01-01T00:00:30.000Z' }]);
207
+ leadMessage('l1', '2026-01-01T00:00:00.000Z', 1000);
208
+ const candidates = detectNoProgressAtPath(openLedger(root), join(root, 'board.sqlite'), {
209
+ leadAgent: 'agentsy',
210
+ });
211
+ expect(candidates).toHaveLength(0);
212
+ });
213
+ it('leaves the rounds that closed before the window alone', async () => {
214
+ await seedBoard([{ id: 1, from: 'agentsy', to: null, at: '2026-01-01T00:01:00.000Z' }]);
215
+ leadMessage('l1', '2026-01-01T00:00:00.000Z', 1000);
216
+ const db = openLedger(root);
217
+ try {
218
+ const candidates = detectNoProgressAtPath(db, join(root, 'board.sqlite'), {
219
+ leadAgent: 'agentsy',
220
+ since: '2026-01-01T00:02:00.000Z',
221
+ });
222
+ expect(candidates).toHaveLength(0);
223
+ }
224
+ finally {
225
+ closeLedger(db);
226
+ }
227
+ });
228
+ });
229
+ describe('the revert scanner', () => {
230
+ it('finds the commit whose lines were taken back', async () => {
231
+ const repo = await mkdtemp(join(tmpdir(), 'openagentsy-repo-'));
232
+ await seedRepo(repo);
233
+ const candidates = scanReverts(repo, '30 days ago', { tokensForTask: () => 2000 });
234
+ expect(candidates).toHaveLength(1);
235
+ expect(candidates[0]?.kind).toBe('reverted_code');
236
+ expect(candidates[0]?.tokens).toBe(2000);
237
+ expect(candidates[0]?.detail).toContain('task-1');
238
+ });
239
+ it('says nothing about a commit whose lines survived', async () => {
240
+ const repo = await mkdtemp(join(tmpdir(), 'openagentsy-repo-'));
241
+ await seedRepo(repo);
242
+ const candidates = scanReverts(repo, '30 days ago', {
243
+ tokensForTask: (taskId) => (taskId === 'task-2' ? 2000 : 0),
244
+ });
245
+ expect(candidates).toHaveLength(1);
246
+ expect(candidates[0]?.detail).toContain('task-1');
247
+ });
248
+ });
249
+ /** A repository with one commit that was taken back and one that was not. */
250
+ async function seedRepo(repo) {
251
+ const git = (...args) => {
252
+ const result = runGit(repo, [
253
+ '-c',
254
+ 'user.email=test@example.com',
255
+ '-c',
256
+ 'user.name=Test',
257
+ '-c',
258
+ 'commit.gpgsign=false',
259
+ ...args,
260
+ ]);
261
+ if (!result.ok)
262
+ throw new Error(result.stderr);
263
+ };
264
+ git('init', '-q');
265
+ git('config', 'user.email', 'test@example.com');
266
+ git('config', 'user.name', 'Test');
267
+ git('config', 'commit.gpgsign', 'false');
268
+ await writeFile(join(repo, 'f.txt'), 'alpha\nbeta\ngamma\n');
269
+ git('add', 'f.txt');
270
+ git('commit', '-q', '-m', 'feat: add the file\n\nRefs: task-1');
271
+ await writeFile(join(repo, 'f.txt'), 'delta\n');
272
+ git('add', 'f.txt');
273
+ git('commit', '-q', '-m', 'chore: rewrite the file');
274
+ await writeFile(join(repo, 'g.txt'), 'keep\n');
275
+ git('add', 'g.txt');
276
+ git('commit', '-q', '-m', 'feat: add the other file\n\nRefs: task-2');
277
+ }
278
+ //# sourceMappingURL=waste.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"waste.test.js","sourceRoot":"","sources":["../src/waste.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,54 @@
1
1
  {
2
2
  "name": "@openagentsy/ledger",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
6
- }
3
+ "version": "0.2.0",
4
+ "author": "Grand Slopulissimo <slopulissimo@voxslopuli.org>",
5
+ "type": "module",
6
+ "exports": {
7
+ ".": "./dist/index.js"
8
+ },
9
+ "types": "./dist/index.d.ts",
10
+ "main": "./dist/index.js",
11
+ "scripts": {
12
+ "build": "tsc -b tsconfig.json",
13
+ "typecheck": "tsc -b tsconfig.json",
14
+ "pricing:snapshot": "bun scripts/fetch-pricing.mjs"
15
+ },
16
+ "dependencies": {
17
+ "@openagentsy/core": "^0.2.0",
18
+ "@openagentsy/footprint": "^0.2.0",
19
+ "zod": "4.6.7"
20
+ },
21
+ "devDependencies": {
22
+ "@types/node": "^24.3.0",
23
+ "bun-types": "^1.4.4",
24
+ "typescript": "^5.9.2"
25
+ },
26
+ "license": "GPL-3.0-or-later",
27
+ "repository": {
28
+ "type": "git",
29
+ "url": "git+https://github.com/voxslopuli/openagentsy.git"
30
+ },
31
+ "homepage": "https://github.com/voxslopuli/openagentsy#readme",
32
+ "bugs": {
33
+ "url": "https://github.com/voxslopuli/openagentsy/issues"
34
+ },
35
+ "engines": {
36
+ "node": ">=22.5.0"
37
+ },
38
+ "publishConfig": {
39
+ "access": "public"
40
+ },
41
+ "description": "The OpenAgentsy usage ledger: tokens, cost, waste and outcomes, and nothing else.",
42
+ "keywords": [
43
+ "agents",
44
+ "ledger",
45
+ "tokens",
46
+ "cost",
47
+ "opencode",
48
+ "usage"
49
+ ],
50
+ "files": [
51
+ "dist",
52
+ "data"
53
+ ]
54
+ }