@adecore/agents 0.29.3 → 0.31.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.
- package/dist/chat/acp-backend.d.ts +59 -0
- package/dist/chat/acp-backend.js +407 -0
- package/dist/chat/acp-protocol.d.ts +131 -0
- package/dist/chat/acp-protocol.js +605 -0
- package/dist/chat/codex-transport.d.ts +4 -27
- package/dist/chat/codex-transport.js +4 -185
- package/dist/chat/fixtures/acp-v1-turn.json +240 -0
- package/dist/chat/index.d.ts +2 -0
- package/dist/chat/index.js +1 -0
- package/dist/chat/json-rpc-transport.d.ts +50 -0
- package/dist/chat/json-rpc-transport.js +203 -0
- package/dist/providers/accounts/accounts.d.ts +10 -6
- package/dist/providers/accounts/accounts.js +19 -19
- package/dist/providers/accounts/service.d.ts +3 -0
- package/dist/providers/accounts/service.js +33 -17
- package/dist/providers/accounts/store.d.ts +4 -5
- package/dist/providers/accounts/store.js +12 -12
- package/dist/providers/acp-provider.d.ts +22 -0
- package/dist/providers/acp-provider.js +45 -0
- package/dist/providers/catalog.js +1 -0
- package/dist/providers/index.d.ts +1 -0
- package/dist/providers/index.js +1 -0
- package/dist/providers/provider.d.ts +1 -1
- package/dist/providers/registry.d.ts +1 -0
- package/dist/providers/registry.js +4 -0
- package/dist/testing/fake-acp.d.ts +10 -0
- package/dist/testing/fake-acp.js +262 -0
- package/dist/testing/index.d.ts +1 -0
- package/dist/testing/index.js +1 -0
- package/dist/usage/index-file.d.ts +1 -1
- package/dist/usage/index-file.js +3 -1
- package/dist/usage/index.d.ts +2 -1
- package/dist/usage/index.js +2 -0
- package/dist/usage/limits/monitor.d.ts +3 -1
- package/dist/usage/limits/monitor.js +19 -4
- package/dist/usage/limits/normalize.d.ts +1 -0
- package/dist/usage/limits/normalize.js +2 -1
- package/dist/usage/readers/host-log.d.ts +16 -0
- package/dist/usage/readers/host-log.js +49 -0
- package/dist/usage/roots.js +6 -2
- package/dist/usage/scanner.js +13 -2
- package/package.json +3 -3
- package/src/chat/acp-backend.ts +476 -0
- package/src/chat/acp-protocol.ts +763 -0
- package/src/chat/codex-transport.ts +6 -207
- package/src/chat/fixtures/acp-v1-turn.json +240 -0
- package/src/chat/index.ts +2 -0
- package/src/chat/json-rpc-transport.ts +253 -0
- package/src/providers/accounts/accounts.ts +28 -25
- package/src/providers/accounts/service.ts +49 -18
- package/src/providers/accounts/store.ts +14 -17
- package/src/providers/acp-provider.ts +73 -0
- package/src/providers/catalog.ts +1 -0
- package/src/providers/index.ts +1 -0
- package/src/providers/provider.ts +2 -1
- package/src/providers/registry.ts +5 -0
- package/src/testing/fake-acp.ts +296 -0
- package/src/testing/index.ts +1 -0
- package/src/usage/index-file.ts +3 -2
- package/src/usage/index.ts +2 -1
- package/src/usage/limits/monitor.ts +24 -5
- package/src/usage/limits/normalize.ts +2 -1
- package/src/usage/readers/host-log.ts +72 -0
- package/src/usage/roots.ts +7 -3
- package/src/usage/scanner.ts +16 -5
package/src/usage/scanner.ts
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { createHash, type Hash } from 'node:crypto';
|
|
2
2
|
import { mkdir, open, readFile, readdir, stat } from 'node:fs/promises';
|
|
3
3
|
import { join } from 'node:path';
|
|
4
|
-
import type { UsageRoot } from '@adecore/agent-contracts';
|
|
4
|
+
import type { UsageProvider, UsageRoot } from '@adecore/agent-contracts';
|
|
5
5
|
import { errorText } from '../error-text.ts';
|
|
6
6
|
import { isNotFound, writeAtomic } from '../fs.ts';
|
|
7
7
|
import { decodeIndex, encodeIndex, type IndexedFile, type UsageIndex } from './index-file.ts';
|
|
8
8
|
import { foldByKey, type UsageRecord } from './record.ts';
|
|
9
9
|
import { claudeMightCarryUsage, parseClaudeLine } from './readers/claude.ts';
|
|
10
|
+
import { hostLogMightCarryUsage, parseHostUsageLine } from './readers/host-log.ts';
|
|
10
11
|
import { cloneCodexState, codexMightCarryUsage, createCodexState, parseCodexLine, type CodexParserState } from './readers/codex.ts';
|
|
11
12
|
import { usageRoots, type UsageRootPath } from './roots.ts';
|
|
12
13
|
|
|
@@ -98,7 +99,7 @@ async function listJsonl(dir: string, out: string[] = []): Promise<string[]> {
|
|
|
98
99
|
* after the last newline is a line still being written, so it is parsed for what it is worth and
|
|
99
100
|
* read again next time. The Codex state is snapshotted before that tail for the same reason.
|
|
100
101
|
*/
|
|
101
|
-
function parseChunk(text: string, provider:
|
|
102
|
+
function parseChunk(text: string, provider: UsageProvider, from: number, state: CodexParserState | null): ParsedFile {
|
|
102
103
|
const end = text.lastIndexOf('\n');
|
|
103
104
|
const whole = end === -1 ? '' : text.slice(0, end);
|
|
104
105
|
const tail = text.slice(end + 1);
|
|
@@ -118,8 +119,18 @@ function parseChunk(text: string, provider: 'claude' | 'codex', from: number, st
|
|
|
118
119
|
}
|
|
119
120
|
continue;
|
|
120
121
|
}
|
|
121
|
-
if (
|
|
122
|
-
|
|
122
|
+
if (provider === 'codex') {
|
|
123
|
+
if (codex !== null && codexMightCarryUsage(line)) {
|
|
124
|
+
const record = parseCodexLine(line, codex);
|
|
125
|
+
if (record !== null) {
|
|
126
|
+
records.push(record);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
continue;
|
|
130
|
+
}
|
|
131
|
+
// Claude Code and Codex write transcripts of their own; every other provider is a log its host keeps.
|
|
132
|
+
if (hostLogMightCarryUsage(line)) {
|
|
133
|
+
const record = parseHostUsageLine(line, provider);
|
|
123
134
|
if (record !== null) {
|
|
124
135
|
records.push(record);
|
|
125
136
|
}
|
|
@@ -265,7 +276,7 @@ export class UsageScanner {
|
|
|
265
276
|
return foldByKey(all);
|
|
266
277
|
}
|
|
267
278
|
|
|
268
|
-
private async readFileInto(path: string, provider:
|
|
279
|
+
private async readFileInto(path: string, provider: UsageProvider, accountOf: AccountOf): Promise<boolean> {
|
|
269
280
|
const info = await stat(path);
|
|
270
281
|
const known = this.index.get(path);
|
|
271
282
|
if (known !== undefined && known.provider === provider && known.size === info.size && known.mtimeMs === info.mtimeMs) {
|