@sentropic/agent-stats-core 0.1.0 → 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.
- package/dist/aggregations.d.ts +13 -2
- package/dist/aggregations.d.ts.map +1 -1
- package/dist/aggregations.js +31 -6
- package/dist/aggregations.js.map +1 -1
- package/dist/anomalies.d.ts +2 -2
- package/dist/anomalies.d.ts.map +1 -1
- package/dist/cleanser.d.ts +6 -0
- package/dist/cleanser.d.ts.map +1 -1
- package/dist/cleanser.js +2 -1
- package/dist/cleanser.js.map +1 -1
- package/dist/collect.d.ts +5 -3
- package/dist/collect.d.ts.map +1 -1
- package/dist/collect.js +22 -2
- package/dist/collect.js.map +1 -1
- package/dist/index.d.ts +5 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -2
- package/dist/index.js.map +1 -1
- package/dist/parsers/claude.d.ts.map +1 -1
- package/dist/parsers/claude.js +11 -0
- package/dist/parsers/claude.js.map +1 -1
- package/dist/parsers/codex.d.ts.map +1 -1
- package/dist/parsers/codex.js +35 -36
- package/dist/parsers/codex.js.map +1 -1
- package/dist/parsers/cursor.d.ts +42 -0
- package/dist/parsers/cursor.d.ts.map +1 -0
- package/dist/parsers/cursor.js +222 -0
- package/dist/parsers/cursor.js.map +1 -0
- package/dist/rate-card.d.ts.map +1 -1
- package/dist/rate-card.js +15 -4
- package/dist/rate-card.js.map +1 -1
- package/dist/schema.d.ts +5 -1
- package/dist/schema.d.ts.map +1 -1
- package/dist/schema.js.map +1 -1
- package/dist/secrets.d.ts +40 -9
- package/dist/secrets.d.ts.map +1 -1
- package/dist/secrets.js +96 -10
- package/dist/secrets.js.map +1 -1
- package/dist/series.d.ts +40 -0
- package/dist/series.d.ts.map +1 -0
- package/dist/series.js +51 -0
- package/dist/series.js.map +1 -0
- package/dist/tool-stats.d.ts +21 -0
- package/dist/tool-stats.d.ts.map +1 -0
- package/dist/tool-stats.js +38 -0
- package/dist/tool-stats.js.map +1 -0
- package/package.json +3 -1
package/dist/parsers/codex.js
CHANGED
|
@@ -95,6 +95,14 @@ function normalizeCodexUsage(raw) {
|
|
|
95
95
|
};
|
|
96
96
|
}
|
|
97
97
|
const sha256short = (text) => createHash('sha256').update(text).digest('hex').slice(0, 16);
|
|
98
|
+
/** Map a Codex `originator` to the local surface that produced the session. */
|
|
99
|
+
function codexSurface(originator) {
|
|
100
|
+
if (originator === 'codex_vscode')
|
|
101
|
+
return 'vscode';
|
|
102
|
+
if (originator === 'codex_exec')
|
|
103
|
+
return 'exec';
|
|
104
|
+
return 'cli'; // codex-tui, codex_cli_rs, unknown
|
|
105
|
+
}
|
|
98
106
|
function categorizeCodexTool(name) {
|
|
99
107
|
if (name.startsWith('mcp__') || name.startsWith('mcp_'))
|
|
100
108
|
return 'mcp';
|
|
@@ -145,7 +153,9 @@ export async function* parseCodexRollout(opts) {
|
|
|
145
153
|
sessionId,
|
|
146
154
|
projectCwd,
|
|
147
155
|
kind: 'session_start',
|
|
148
|
-
|
|
156
|
+
// NB: `model_provider` is just "openai" — the real model (gpt-5.x)
|
|
157
|
+
// arrives later in `turn_context` events, so we don't set it here.
|
|
158
|
+
surface: codexSurface(p.originator),
|
|
149
159
|
...(parentId ? { forkedFromId: parentId } : {}),
|
|
150
160
|
...(typeof depth === 'number' ? { subagentDepth: depth } : {}),
|
|
151
161
|
...(p.agent_nickname ? { agentNickname: p.agent_nickname } : {}),
|
|
@@ -155,6 +165,15 @@ export async function* parseCodexRollout(opts) {
|
|
|
155
165
|
startEmitted = true;
|
|
156
166
|
continue;
|
|
157
167
|
}
|
|
168
|
+
if (rec.type === 'turn_context') {
|
|
169
|
+
// The actual model (gpt-5.4, gpt-5.3-codex, gpt-5.5, …) is declared per
|
|
170
|
+
// turn here, not in session_meta. Track it so turns carry the right model
|
|
171
|
+
// and the rate card can estimate cost.
|
|
172
|
+
const p = (rec.payload ?? {});
|
|
173
|
+
if (typeof p.model === 'string' && p.model)
|
|
174
|
+
model = p.model;
|
|
175
|
+
continue;
|
|
176
|
+
}
|
|
158
177
|
if (rec.type === 'event_msg') {
|
|
159
178
|
const p = (rec.payload ?? {});
|
|
160
179
|
switch (p.type) {
|
|
@@ -193,40 +212,13 @@ export async function* parseCodexRollout(opts) {
|
|
|
193
212
|
}
|
|
194
213
|
break;
|
|
195
214
|
}
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
category: 'mcp',
|
|
204
|
-
outputBytes: out,
|
|
205
|
-
};
|
|
206
|
-
break;
|
|
207
|
-
}
|
|
208
|
-
case 'exec_command_end': {
|
|
209
|
-
const out = (p.aggregated_output?.length ?? 0) + (p.stdout?.length ?? 0) + (p.stderr?.length ?? 0);
|
|
210
|
-
const cmdArr = Array.isArray(p.command) ? p.command : [];
|
|
211
|
-
const cmdName = typeof cmdArr[0] === 'string' ? cmdArr[0] : 'shell';
|
|
212
|
-
yield {
|
|
213
|
-
...base,
|
|
214
|
-
kind: 'tool_call',
|
|
215
|
-
name: cmdName,
|
|
216
|
-
category: 'bash',
|
|
217
|
-
outputBytes: out,
|
|
218
|
-
...(typeof p.exit_code === 'number' && p.exit_code !== 0 ? { error: true } : {}),
|
|
219
|
-
};
|
|
220
|
-
break;
|
|
221
|
-
}
|
|
222
|
-
case 'web_search_end':
|
|
223
|
-
yield {
|
|
224
|
-
...base,
|
|
225
|
-
kind: 'tool_call',
|
|
226
|
-
name: 'web_search',
|
|
227
|
-
category: 'native',
|
|
228
|
-
};
|
|
229
|
-
break;
|
|
215
|
+
// NOTE: shell / mcp / web_search tool calls are NOT counted here.
|
|
216
|
+
// The `*_end` records (exec_command_end, mcp_tool_call_end,
|
|
217
|
+
// web_search_end) are execution RESULTS — the actual model-issued tool
|
|
218
|
+
// calls are captured from `response_item` (function_call /
|
|
219
|
+
// custom_tool_call / web_search_call) below. Counting both would
|
|
220
|
+
// double-count (verified across the corpus: every rollout carrying
|
|
221
|
+
// exec_command_end also carries the matching function_call).
|
|
230
222
|
default:
|
|
231
223
|
break;
|
|
232
224
|
}
|
|
@@ -234,7 +226,8 @@ export async function* parseCodexRollout(opts) {
|
|
|
234
226
|
}
|
|
235
227
|
if (rec.type === 'response_item') {
|
|
236
228
|
const p = (rec.payload ?? {});
|
|
237
|
-
if (p.type === 'function_call'
|
|
229
|
+
if ((p.type === 'function_call' || p.type === 'custom_tool_call') &&
|
|
230
|
+
typeof p.name === 'string') {
|
|
238
231
|
yield {
|
|
239
232
|
...base,
|
|
240
233
|
kind: 'tool_call',
|
|
@@ -242,6 +235,12 @@ export async function* parseCodexRollout(opts) {
|
|
|
242
235
|
category: categorizeCodexTool(p.name),
|
|
243
236
|
};
|
|
244
237
|
}
|
|
238
|
+
else if (p.type === 'web_search_call') {
|
|
239
|
+
yield { ...base, kind: 'tool_call', name: 'web_search', category: 'native' };
|
|
240
|
+
}
|
|
241
|
+
else if (p.type === 'tool_search_call') {
|
|
242
|
+
yield { ...base, kind: 'tool_call', name: 'tool_search', category: 'native' };
|
|
243
|
+
}
|
|
245
244
|
continue;
|
|
246
245
|
}
|
|
247
246
|
if (rec.type === 'compacted') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex.js","sourceRoot":"","sources":["../../src/parsers/codex.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"codex.js","sourceRoot":"","sources":["../../src/parsers/codex.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cursor parser. Cursor stores its chat history in a single global SQLite DB
|
|
3
|
+
* (`~/.config/Cursor/User/globalStorage/state.vscdb`, table `cursorDiskKV`):
|
|
4
|
+
* - `composerData:<id>` → a session (createdAt ms, fullConversationHeadersOnly,
|
|
5
|
+
* context with attached file URIs).
|
|
6
|
+
* - `bubbleId:<composerId>:<bubbleId>` → a message (type 1=user, 2=assistant,
|
|
7
|
+
* tokenCount: { inputTokens, outputTokens }).
|
|
8
|
+
*
|
|
9
|
+
* Cursor exposes neither the model nor a cost/credit, so cursor rows carry
|
|
10
|
+
* tokens + sessions + messages only (model `unknown` → estimateCost = 0).
|
|
11
|
+
*
|
|
12
|
+
* The schema is undocumented, so every access is defensive.
|
|
13
|
+
*/
|
|
14
|
+
import Database from 'better-sqlite3';
|
|
15
|
+
import type { SessionEvent } from '../schema.js';
|
|
16
|
+
export interface IndexCursorOptions {
|
|
17
|
+
/** Override `~/.config/Cursor/User`. */
|
|
18
|
+
cursorStateDir?: string;
|
|
19
|
+
since?: Date;
|
|
20
|
+
until?: Date;
|
|
21
|
+
projectCwd?: string;
|
|
22
|
+
}
|
|
23
|
+
export interface CursorIndexEntry {
|
|
24
|
+
sessionId: string;
|
|
25
|
+
createdAt: number;
|
|
26
|
+
ts: string;
|
|
27
|
+
projectCwd: string;
|
|
28
|
+
}
|
|
29
|
+
export declare function defaultCursorDbPath(stateDir?: string): string;
|
|
30
|
+
/**
|
|
31
|
+
* Read composer sessions from the Cursor global DB. Returns metadata only;
|
|
32
|
+
* call `parseCursorComposer` to stream a session's events.
|
|
33
|
+
*/
|
|
34
|
+
export declare function indexCursorSessions(opts?: IndexCursorOptions): CursorIndexEntry[];
|
|
35
|
+
/**
|
|
36
|
+
* Stream the events of one composer session. Needs an open DB handle (so the
|
|
37
|
+
* caller can reuse it across sessions).
|
|
38
|
+
*/
|
|
39
|
+
export declare function parseCursorComposer(db: Database.Database, entry: CursorIndexEntry): SessionEvent[];
|
|
40
|
+
/** Open the DB once and yield events for all matching composer sessions. */
|
|
41
|
+
export declare function collectCursorEvents(opts?: IndexCursorOptions): AsyncGenerator<SessionEvent, void, unknown>;
|
|
42
|
+
//# sourceMappingURL=cursor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cursor.d.ts","sourceRoot":"","sources":["../../src/parsers/cursor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAMH,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAEtC,OAAO,KAAK,EAAE,YAAY,EAAS,MAAM,cAAc,CAAC;AAKxD,MAAM,WAAW,kBAAkB;IACjC,wCAAwC;IACxC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,IAAI,CAAC;IACb,KAAK,CAAC,EAAE,IAAI,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;CACpB;AAUD,wBAAgB,mBAAmB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAE7D;AAmED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,GAAE,kBAAuB,GAAG,gBAAgB,EAAE,CAkCrF;AAmBD;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,KAAK,EAAE,gBAAgB,GACtB,YAAY,EAAE,CA0ChB;AAED,4EAA4E;AAC5E,wBAAuB,mBAAmB,CACxC,IAAI,GAAE,kBAAuB,GAC5B,cAAc,CAAC,YAAY,EAAE,IAAI,EAAE,OAAO,CAAC,CAiB7C"}
|
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cursor parser. Cursor stores its chat history in a single global SQLite DB
|
|
3
|
+
* (`~/.config/Cursor/User/globalStorage/state.vscdb`, table `cursorDiskKV`):
|
|
4
|
+
* - `composerData:<id>` → a session (createdAt ms, fullConversationHeadersOnly,
|
|
5
|
+
* context with attached file URIs).
|
|
6
|
+
* - `bubbleId:<composerId>:<bubbleId>` → a message (type 1=user, 2=assistant,
|
|
7
|
+
* tokenCount: { inputTokens, outputTokens }).
|
|
8
|
+
*
|
|
9
|
+
* Cursor exposes neither the model nor a cost/credit, so cursor rows carry
|
|
10
|
+
* tokens + sessions + messages only (model `unknown` → estimateCost = 0).
|
|
11
|
+
*
|
|
12
|
+
* The schema is undocumented, so every access is defensive.
|
|
13
|
+
*/
|
|
14
|
+
import { createHash } from 'node:crypto';
|
|
15
|
+
import os from 'node:os';
|
|
16
|
+
import path from 'node:path';
|
|
17
|
+
import Database from 'better-sqlite3';
|
|
18
|
+
const sha256short = (text) => createHash('sha256').update(text).digest('hex').slice(0, 16);
|
|
19
|
+
function defaultStateDir() {
|
|
20
|
+
// Env override lets the test suite point at an empty dir so collect() does
|
|
21
|
+
// not read the real ~/.config/Cursor during tests.
|
|
22
|
+
return (process.env['AGENT_STATS_CURSOR_DIR'] ?? path.join(os.homedir(), '.config', 'Cursor', 'User'));
|
|
23
|
+
}
|
|
24
|
+
export function defaultCursorDbPath(stateDir) {
|
|
25
|
+
return path.join(stateDir ?? defaultStateDir(), 'globalStorage', 'state.vscdb');
|
|
26
|
+
}
|
|
27
|
+
function parseJson(v) {
|
|
28
|
+
if (v == null)
|
|
29
|
+
return null;
|
|
30
|
+
const s = typeof v === 'string' ? v : Buffer.isBuffer(v) ? v.toString('utf8') : null;
|
|
31
|
+
if (s == null)
|
|
32
|
+
return null;
|
|
33
|
+
try {
|
|
34
|
+
return JSON.parse(s);
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
/** Recursively collect `file://` URIs / absolute paths from a composer's context. */
|
|
41
|
+
function collectFilePaths(node, out, depth = 0) {
|
|
42
|
+
if (depth > 6 || out.length > 200)
|
|
43
|
+
return;
|
|
44
|
+
if (typeof node === 'string') {
|
|
45
|
+
if (node.startsWith('file:///')) {
|
|
46
|
+
try {
|
|
47
|
+
out.push(decodeURIComponent(node.slice('file://'.length)));
|
|
48
|
+
}
|
|
49
|
+
catch {
|
|
50
|
+
/* ignore */
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
if (Array.isArray(node)) {
|
|
56
|
+
for (const v of node)
|
|
57
|
+
collectFilePaths(v, out, depth + 1);
|
|
58
|
+
}
|
|
59
|
+
else if (node && typeof node === 'object') {
|
|
60
|
+
for (const v of Object.values(node)) {
|
|
61
|
+
collectFilePaths(v, out, depth + 1);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
/** Longest common directory of a set of absolute file paths. */
|
|
66
|
+
function commonDir(paths) {
|
|
67
|
+
if (paths.length === 0)
|
|
68
|
+
return '';
|
|
69
|
+
const split = paths.map((p) => p.split('/'));
|
|
70
|
+
const first = split[0] ?? [];
|
|
71
|
+
let i = 0;
|
|
72
|
+
for (; i < first.length; i++) {
|
|
73
|
+
const seg = first[i];
|
|
74
|
+
if (!split.every((s) => s[i] === seg))
|
|
75
|
+
break;
|
|
76
|
+
}
|
|
77
|
+
const dir = first.slice(0, i).join('/');
|
|
78
|
+
// Drop a trailing filename component (has a dot, no further children agreed on).
|
|
79
|
+
return dir;
|
|
80
|
+
}
|
|
81
|
+
function projectFromComposer(composer) {
|
|
82
|
+
const paths = [];
|
|
83
|
+
collectFilePaths(composer['context'], paths);
|
|
84
|
+
collectFilePaths(composer['allAttachedFileCodeChunksUris'], paths);
|
|
85
|
+
if (paths.length === 0)
|
|
86
|
+
return '';
|
|
87
|
+
const dir = commonDir(paths);
|
|
88
|
+
// If the common prefix is itself a file (single file selected), use its dir.
|
|
89
|
+
const last = dir.split('/').pop() ?? '';
|
|
90
|
+
return last.includes('.') ? dir.slice(0, dir.lastIndexOf('/')) : dir;
|
|
91
|
+
}
|
|
92
|
+
function matchesProject(cwd, filter) {
|
|
93
|
+
if (!filter)
|
|
94
|
+
return true;
|
|
95
|
+
if (filter.endsWith('/'))
|
|
96
|
+
return cwd.startsWith(filter);
|
|
97
|
+
return cwd === filter;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Read composer sessions from the Cursor global DB. Returns metadata only;
|
|
101
|
+
* call `parseCursorComposer` to stream a session's events.
|
|
102
|
+
*/
|
|
103
|
+
export function indexCursorSessions(opts = {}) {
|
|
104
|
+
const dbPath = defaultCursorDbPath(opts.cursorStateDir);
|
|
105
|
+
let db;
|
|
106
|
+
try {
|
|
107
|
+
db = new Database(dbPath, { readonly: true, fileMustExist: true });
|
|
108
|
+
}
|
|
109
|
+
catch {
|
|
110
|
+
return [];
|
|
111
|
+
}
|
|
112
|
+
try {
|
|
113
|
+
const rows = db
|
|
114
|
+
.prepare("SELECT key, value FROM cursorDiskKV WHERE key LIKE 'composerData:%'")
|
|
115
|
+
.all();
|
|
116
|
+
const entries = [];
|
|
117
|
+
for (const row of rows) {
|
|
118
|
+
const o = parseJson(row.value);
|
|
119
|
+
if (!o || typeof o !== 'object')
|
|
120
|
+
continue;
|
|
121
|
+
const composer = o;
|
|
122
|
+
const id = typeof composer['composerId'] === 'string'
|
|
123
|
+
? composer['composerId']
|
|
124
|
+
: row.key.slice('composerData:'.length);
|
|
125
|
+
const createdAt = typeof composer['createdAt'] === 'number' ? composer['createdAt'] : 0;
|
|
126
|
+
if (createdAt <= 0)
|
|
127
|
+
continue;
|
|
128
|
+
const when = new Date(createdAt);
|
|
129
|
+
if (opts.since && when < opts.since)
|
|
130
|
+
continue;
|
|
131
|
+
if (opts.until && when > opts.until)
|
|
132
|
+
continue;
|
|
133
|
+
const projectCwd = projectFromComposer(composer);
|
|
134
|
+
if (!matchesProject(projectCwd, opts.projectCwd))
|
|
135
|
+
continue;
|
|
136
|
+
entries.push({ sessionId: id, createdAt, ts: when.toISOString(), projectCwd });
|
|
137
|
+
}
|
|
138
|
+
return entries.sort((a, b) => a.createdAt - b.createdAt);
|
|
139
|
+
}
|
|
140
|
+
finally {
|
|
141
|
+
db.close();
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
function bubbleUsage(b) {
|
|
145
|
+
const tc = b.tokenCount ?? {};
|
|
146
|
+
return {
|
|
147
|
+
newInputTokens: tc.inputTokens ?? 0,
|
|
148
|
+
cachedInputTokens: 0,
|
|
149
|
+
cacheWriteTokens: 0,
|
|
150
|
+
outputTokens: tc.outputTokens ?? 0,
|
|
151
|
+
reasoningTokens: 0,
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Stream the events of one composer session. Needs an open DB handle (so the
|
|
156
|
+
* caller can reuse it across sessions).
|
|
157
|
+
*/
|
|
158
|
+
export function parseCursorComposer(db, entry) {
|
|
159
|
+
const events = [];
|
|
160
|
+
const base = {
|
|
161
|
+
tool: 'cursor',
|
|
162
|
+
sessionId: entry.sessionId,
|
|
163
|
+
projectCwd: entry.projectCwd,
|
|
164
|
+
ts: entry.ts,
|
|
165
|
+
};
|
|
166
|
+
events.push({ ...base, kind: 'session_start', surface: 'cursor', isSubagent: false });
|
|
167
|
+
const composerRow = db
|
|
168
|
+
.prepare('SELECT value FROM cursorDiskKV WHERE key = ?')
|
|
169
|
+
.get(`composerData:${entry.sessionId}`);
|
|
170
|
+
const composer = (parseJson(composerRow?.value) ?? {});
|
|
171
|
+
const headers = Array.isArray(composer['fullConversationHeadersOnly'])
|
|
172
|
+
? composer['fullConversationHeadersOnly']
|
|
173
|
+
: [];
|
|
174
|
+
const getBubble = db.prepare('SELECT value FROM cursorDiskKV WHERE key = ?');
|
|
175
|
+
for (const h of headers) {
|
|
176
|
+
const bubbleId = h?.bubbleId;
|
|
177
|
+
if (!bubbleId)
|
|
178
|
+
continue;
|
|
179
|
+
const row = getBubble.get(`bubbleId:${entry.sessionId}:${bubbleId}`);
|
|
180
|
+
const b = parseJson(row?.value);
|
|
181
|
+
if (!b || typeof b !== 'object')
|
|
182
|
+
continue;
|
|
183
|
+
if (b.type === 1) {
|
|
184
|
+
const text = typeof b.text === 'string' ? b.text : '';
|
|
185
|
+
events.push({
|
|
186
|
+
...base,
|
|
187
|
+
kind: 'user_prompt',
|
|
188
|
+
textLength: text.length,
|
|
189
|
+
textHash: sha256short(text),
|
|
190
|
+
});
|
|
191
|
+
}
|
|
192
|
+
else if (b.type === 2) {
|
|
193
|
+
events.push({ ...base, kind: 'turn', model: 'unknown', usage: bubbleUsage(b) });
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
events.push({ ...base, kind: 'session_end' });
|
|
197
|
+
return events;
|
|
198
|
+
}
|
|
199
|
+
/** Open the DB once and yield events for all matching composer sessions. */
|
|
200
|
+
export async function* collectCursorEvents(opts = {}) {
|
|
201
|
+
const entries = indexCursorSessions(opts);
|
|
202
|
+
if (entries.length === 0)
|
|
203
|
+
return;
|
|
204
|
+
const dbPath = defaultCursorDbPath(opts.cursorStateDir);
|
|
205
|
+
let db;
|
|
206
|
+
try {
|
|
207
|
+
db = new Database(dbPath, { readonly: true, fileMustExist: true });
|
|
208
|
+
}
|
|
209
|
+
catch {
|
|
210
|
+
return;
|
|
211
|
+
}
|
|
212
|
+
try {
|
|
213
|
+
for (const entry of entries) {
|
|
214
|
+
for (const ev of parseCursorComposer(db, entry))
|
|
215
|
+
yield ev;
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
finally {
|
|
219
|
+
db.close();
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
//# sourceMappingURL=cursor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cursor.js","sourceRoot":"","sources":["../../src/parsers/cursor.ts"],"names":[],"mappings":"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"}
|
package/dist/rate-card.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rate-card.d.ts","sourceRoot":"","sources":["../src/rate-card.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,MAAM,YAAY,GAAG,eAAe,GAAG,kBAAkB,GAAG,SAAS,CAAC;AAE5E,gDAAgD;AAChD,MAAM,WAAW,UAAU;IACzB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,gBAAgB,EAAE,MAAM,CAAC;IACzB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,YAAY,CAAC;CACxB;AAED,eAAO,MAAM,UAAU,EAAE,UAMxB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"rate-card.d.ts","sourceRoot":"","sources":["../src/rate-card.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,MAAM,YAAY,GAAG,eAAe,GAAG,kBAAkB,GAAG,SAAS,CAAC;AAE5E,gDAAgD;AAChD,MAAM,WAAW,UAAU;IACzB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,gBAAgB,EAAE,MAAM,CAAC;IACzB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,YAAY,CAAC;CACxB;AAED,eAAO,MAAM,UAAU,EAAE,UAMxB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAgFxD,CAAC;AAEF;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAqB,GACnD,UAAU,CAgBZ;AAED,iEAAiE;AACjE,wBAAgB,YAAY,CAC1B,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,UAAU,GAChB;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,YAAY,CAAA;CAAE,CAQ5C"}
|
package/dist/rate-card.js
CHANGED
|
@@ -87,6 +87,16 @@ export const DEFAULT_RATE_CARD = {
|
|
|
87
87
|
outputPerMillion: 7500, // $75
|
|
88
88
|
currency: 'claude_usd_cents',
|
|
89
89
|
},
|
|
90
|
+
// Current generation. Same published Opus tier as 4-7 ($15 / $75); kept as an
|
|
91
|
+
// explicit entry (not a fallback) since it carries a large share of usage.
|
|
92
|
+
// Re-verify against Anthropic's pricing page if the Opus list price changes.
|
|
93
|
+
'claude-opus-4-8': {
|
|
94
|
+
newInputPerMillion: 1500, // $15
|
|
95
|
+
cachedPerMillion: 150, // $1.50 (cache_read 10%)
|
|
96
|
+
cacheWritePerMillion: 1875, // $18.75 (cache_creation 1.25×)
|
|
97
|
+
outputPerMillion: 7500, // $75
|
|
98
|
+
currency: 'claude_usd_cents',
|
|
99
|
+
},
|
|
90
100
|
'claude-sonnet-4-6': {
|
|
91
101
|
newInputPerMillion: 300,
|
|
92
102
|
cachedPerMillion: 30,
|
|
@@ -117,12 +127,13 @@ export function resolveRates(model, card = DEFAULT_RATE_CARD) {
|
|
|
117
127
|
if (model.startsWith(key))
|
|
118
128
|
return card[key];
|
|
119
129
|
}
|
|
120
|
-
// common families
|
|
121
|
-
|
|
130
|
+
// common families — also catch the bare short aliases (`opus`, `sonnet`,
|
|
131
|
+
// `haiku`) that Claude Code sometimes records instead of the full id.
|
|
132
|
+
if (model.startsWith('claude-haiku') || model === 'haiku')
|
|
122
133
|
return card['claude-haiku-4-5-20251001'];
|
|
123
|
-
if (model.startsWith('claude-sonnet'))
|
|
134
|
+
if (model.startsWith('claude-sonnet') || model === 'sonnet')
|
|
124
135
|
return card['claude-sonnet-4-6'];
|
|
125
|
-
if (model.startsWith('claude-opus'))
|
|
136
|
+
if (model.startsWith('claude-opus') || model === 'opus')
|
|
126
137
|
return card['claude-opus-4-7'];
|
|
127
138
|
return ZERO_RATES;
|
|
128
139
|
}
|
package/dist/rate-card.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rate-card.js","sourceRoot":"","sources":["../src/rate-card.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAeH,MAAM,CAAC,MAAM,UAAU,GAAe;IACpC,kBAAkB,EAAE,CAAC;IACrB,gBAAgB,EAAE,CAAC;IACnB,oBAAoB,EAAE,CAAC;IACvB,gBAAgB,EAAE,CAAC;IACnB,QAAQ,EAAE,SAAS;CACpB,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAA+B;IAC3D,qDAAqD;IACrD,SAAS,EAAE;QACT,kBAAkB,EAAE,GAAG;QACvB,gBAAgB,EAAE,IAAI;QACtB,oBAAoB,EAAE,CAAC;QACvB,gBAAgB,EAAE,GAAG;QACrB,QAAQ,EAAE,eAAe;KAC1B;IACD,SAAS,EAAE;QACT,kBAAkB,EAAE,IAAI;QACxB,gBAAgB,EAAE,IAAI;QACtB,oBAAoB,EAAE,CAAC;QACvB,gBAAgB,EAAE,GAAG;QACrB,QAAQ,EAAE,eAAe;KAC1B;IACD,cAAc,EAAE;QACd,kBAAkB,EAAE,KAAK;QACzB,gBAAgB,EAAE,KAAK;QACvB,oBAAoB,EAAE,CAAC;QACvB,gBAAgB,EAAE,GAAG;QACrB,QAAQ,EAAE,eAAe;KAC1B;IACD,eAAe,EAAE;QACf,kBAAkB,EAAE,KAAK;QACzB,gBAAgB,EAAE,KAAK;QACvB,oBAAoB,EAAE,CAAC;QACvB,gBAAgB,EAAE,GAAG;QACrB,QAAQ,EAAE,eAAe;KAC1B;IACD,qBAAqB,EAAE;QACrB,sEAAsE;QACtE,qEAAqE;QACrE,kBAAkB,EAAE,KAAK;QACzB,gBAAgB,EAAE,KAAK;QACvB,oBAAoB,EAAE,CAAC;QACvB,gBAAgB,EAAE,GAAG;QACrB,QAAQ,EAAE,eAAe;KAC1B;IACD,mBAAmB,EAAE;QACnB,wEAAwE;QACxE,kBAAkB,EAAE,KAAK;QACzB,gBAAgB,EAAE,KAAK;QACvB,oBAAoB,EAAE,CAAC;QACvB,gBAAgB,EAAE,GAAG;QACrB,QAAQ,EAAE,eAAe;KAC1B;IAED,2DAA2D;IAC3D,iBAAiB,EAAE;QACjB,kBAAkB,EAAE,IAAI,EAAE,MAAM;QAChC,gBAAgB,EAAE,GAAG,EAAE,yBAAyB;QAChD,oBAAoB,EAAE,IAAI,EAAE,gCAAgC;QAC5D,gBAAgB,EAAE,IAAI,EAAE,MAAM;QAC9B,QAAQ,EAAE,kBAAkB;KAC7B;IACD,mBAAmB,EAAE;QACnB,kBAAkB,EAAE,GAAG;QACvB,gBAAgB,EAAE,EAAE;QACpB,oBAAoB,EAAE,GAAG;QACzB,gBAAgB,EAAE,IAAI;QACtB,QAAQ,EAAE,kBAAkB;KAC7B;IACD,2BAA2B,EAAE;QAC3B,kBAAkB,EAAE,GAAG;QACvB,gBAAgB,EAAE,EAAE;QACpB,oBAAoB,EAAE,GAAG;QACzB,gBAAgB,EAAE,GAAG;QACrB,QAAQ,EAAE,kBAAkB;KAC7B;CACF,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,YAAY,CAC1B,KAAyB,EACzB,OAAmC,iBAAiB;IAEpD,IAAI,CAAC,KAAK;QAAE,OAAO,UAAU,CAAC;IAC9B,IAAI,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC;IAEpC,kFAAkF;IAClF,wCAAwC;IACxC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACpC,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC,GAAG,CAAE,CAAC;IAC/C,CAAC;IACD,
|
|
1
|
+
{"version":3,"file":"rate-card.js","sourceRoot":"","sources":["../src/rate-card.ts"],"names":[],"mappings":"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"}
|
package/dist/schema.d.ts
CHANGED
|
@@ -10,7 +10,9 @@
|
|
|
10
10
|
* - All timestamps are ISO 8601 UTC. Parsers MUST normalize.
|
|
11
11
|
* - `kind` is the discriminant; the union is exhaustive (use `assertNever`).
|
|
12
12
|
*/
|
|
13
|
-
export type Tool = 'claude' | 'codex';
|
|
13
|
+
export type Tool = 'claude' | 'codex' | 'cursor';
|
|
14
|
+
/** Which local surface produced the session (mainly to split Codex). */
|
|
15
|
+
export type Surface = 'cli' | 'vscode' | 'exec' | 'cursor';
|
|
14
16
|
/**
|
|
15
17
|
* Token usage breakdown for a single turn.
|
|
16
18
|
* Pricing semantics (typical providers, May 2026):
|
|
@@ -49,6 +51,8 @@ export interface SessionStartEvent extends EventBase {
|
|
|
49
51
|
/** Codex: nickname auto-assigned to subagents (philosopher names). */
|
|
50
52
|
agentNickname?: string;
|
|
51
53
|
cliVersion?: string;
|
|
54
|
+
/** Local surface (Codex CLI/VSCode/exec, or Cursor), derived from originator. */
|
|
55
|
+
surface?: Surface;
|
|
52
56
|
/** True if originated from a parent thread (Codex fork or Claude Task). */
|
|
53
57
|
isSubagent: boolean;
|
|
54
58
|
}
|
package/dist/schema.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,MAAM,MAAM,IAAI,GAAG,QAAQ,GAAG,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,MAAM,MAAM,IAAI,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEjD,wEAAwE;AACxE,MAAM,MAAM,OAAO,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAC;AAE3D;;;;;;;;GAQG;AACH,MAAM,WAAW,KAAK;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,eAAO,MAAM,UAAU,EAAE,KAMxB,CAAC;AAEF,wBAAgB,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,GAAG,KAAK,CAQlD;AAED,4DAA4D;AAC5D,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,KAAK,GAAG,MAAM,CAEjD;AAED,6CAA6C;AAC7C,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,IAAI,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,8CAA8C;AAC9C,MAAM,WAAW,iBAAkB,SAAQ,SAAS;IAClD,IAAI,EAAE,eAAe,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oEAAoE;IACpE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,yDAAyD;IACzD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,sEAAsE;IACtE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iFAAiF;IACjF,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,2EAA2E;IAC3E,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,4CAA4C;AAC5C,MAAM,WAAW,eAAgB,SAAQ,SAAS;IAChD,IAAI,EAAE,aAAa,CAAC;CACrB;AAED;;;GAGG;AACH,MAAM,WAAW,SAAU,SAAQ,SAAS;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,KAAK,CAAC;IACb,0EAA0E;IAC1E,UAAU,CAAC,EAAE,KAAK,CAAC;IACnB,8DAA8D;IAC9D,SAAS,CAAC,EAAE;QACV,cAAc,EAAE,MAAM,CAAC;QACvB,gBAAgB,EAAE,MAAM,CAAC;KAC1B,CAAC;CACH;AAED,gCAAgC;AAChC,MAAM,WAAW,eAAgB,SAAQ,SAAS;IAChD,IAAI,EAAE,aAAa,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,gDAAgD;IAChD,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,4DAA4D;AAC5D,MAAM,WAAW,aAAc,SAAQ,SAAS;IAC9C,IAAI,EAAE,WAAW,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;IAC7D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,wCAAwC;AACxC,MAAM,WAAW,gBAAiB,SAAQ,SAAS;IACjD,IAAI,EAAE,cAAc,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,6CAA6C;AAC7C,MAAM,WAAW,eAAgB,SAAQ,SAAS;IAChD,IAAI,EAAE,YAAY,CAAC;CACpB;AAED,+CAA+C;AAC/C,MAAM,MAAM,YAAY,GACpB,iBAAiB,GACjB,eAAe,GACf,SAAS,GACT,eAAe,GACf,aAAa,GACb,gBAAgB,GAChB,eAAe,CAAC;AAEpB;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,IAAI,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,KAAK,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,oDAAoD;IACpD,YAAY,CAAC,EAAE;QACb,cAAc,EAAE,MAAM,CAAC;QACvB,gBAAgB,EAAE,MAAM,CAAC;KAC1B,CAAC;CACH;AAED,4CAA4C;AAC5C,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,6CAA6C;IAC7C,IAAI,EAAE,MAAM,CAAC;IACb,wEAAwE;IACxE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACnC;AAED,0CAA0C;AAC1C,wBAAgB,WAAW,CAAC,CAAC,EAAE,KAAK,GAAG,KAAK,CAE3C"}
|
package/dist/schema.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAwBH,MAAM,CAAC,MAAM,UAAU,GAAU;IAC/B,cAAc,EAAE,CAAC;IACjB,iBAAiB,EAAE,CAAC;IACpB,gBAAgB,EAAE,CAAC;IACnB,YAAY,EAAE,CAAC;IACf,eAAe,EAAE,CAAC;CACnB,CAAC;AAEF,MAAM,UAAU,QAAQ,CAAC,CAAQ,EAAE,CAAQ;IACzC,OAAO;QACL,cAAc,EAAE,CAAC,CAAC,cAAc,GAAG,CAAC,CAAC,cAAc;QACnD,iBAAiB,EAAE,CAAC,CAAC,iBAAiB,GAAG,CAAC,CAAC,iBAAiB;QAC5D,gBAAgB,EAAE,CAAC,CAAC,gBAAgB,GAAG,CAAC,CAAC,gBAAgB;QACzD,YAAY,EAAE,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC,YAAY;QAC7C,eAAe,EAAE,CAAC,CAAC,eAAe,GAAG,CAAC,CAAC,eAAe;KACvD,CAAC;AACJ,CAAC;AAED,4DAA4D;AAC5D,MAAM,UAAU,gBAAgB,CAAC,CAAQ;IACvC,OAAO,CAAC,CAAC,cAAc,GAAG,CAAC,CAAC,iBAAiB,GAAG,CAAC,CAAC,gBAAgB,CAAC;AACrE,CAAC;AA4HD,0CAA0C;AAC1C,MAAM,UAAU,WAAW,CAAC,CAAQ;IAClC,MAAM,IAAI,KAAK,CAAC,mBAAmB,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAC1D,CAAC"}
|
package/dist/secrets.d.ts
CHANGED
|
@@ -1,24 +1,55 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Secret scanning. Combines two sources:
|
|
3
|
+
* 1. secretlint preset-recommend (28 rules: AWS, Anthropic, OpenAI, GitHub,
|
|
4
|
+
* GitLab, Slack, Stripe, JWT, private keys, …) — the generic baseline.
|
|
5
|
+
* 2. Optional **custom patterns** (regexes), e.g. an organisation's internal
|
|
6
|
+
* token formats that the generic rules don't know about. These are loaded
|
|
7
|
+
* from a small YAML file (see `loadSecretPatterns`).
|
|
3
8
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
9
|
+
* Returns match ranges so callers can redact in place (cleanser) or report
|
|
10
|
+
* them (audit). The two sources are merged and overlapping ranges are kept
|
|
11
|
+
* once so a string is never double-redacted.
|
|
7
12
|
*/
|
|
8
13
|
export interface SecretMatch {
|
|
9
14
|
/** UTF-16 code unit offset where the secret starts in the source string. */
|
|
10
15
|
start: number;
|
|
11
16
|
/** Exclusive end offset. */
|
|
12
17
|
end: number;
|
|
13
|
-
/** Rule id reporting the match (e.g. `@secretlint/secretlint-rule-aws
|
|
18
|
+
/** Rule id reporting the match (e.g. `@secretlint/secretlint-rule-aws`, or
|
|
19
|
+
* `custom:<id>` for a user pattern). */
|
|
14
20
|
ruleId: string;
|
|
15
21
|
/** Human-readable message. */
|
|
16
22
|
message: string;
|
|
17
23
|
}
|
|
24
|
+
/** A user-supplied secret pattern (regex). */
|
|
25
|
+
export interface CustomSecretPattern {
|
|
26
|
+
/** Short identifier, surfaced in the redaction tag as `custom:<id>`. */
|
|
27
|
+
id: string;
|
|
28
|
+
/** JavaScript regular-expression source. */
|
|
29
|
+
pattern: string;
|
|
30
|
+
/** Regex flags; `g` is always enforced. Default `''`. */
|
|
31
|
+
flags?: string;
|
|
32
|
+
}
|
|
33
|
+
export interface ScanOptions {
|
|
34
|
+
/** Logical file path passed to secretlint (affects nothing material). */
|
|
35
|
+
filePath?: string;
|
|
36
|
+
/** Extra regex patterns to apply on top of the preset rules. */
|
|
37
|
+
customPatterns?: CustomSecretPattern[];
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Load custom secret patterns from a YAML file. Accepts either a top-level
|
|
41
|
+
* list, or a `patterns:` key holding the list:
|
|
42
|
+
*
|
|
43
|
+
* - id: sentropic-token
|
|
44
|
+
* pattern: "stp_[A-Za-z0-9]{32}"
|
|
45
|
+
* flags: ""
|
|
46
|
+
*
|
|
47
|
+
* Invalid entries are skipped defensively (bad regex, missing fields).
|
|
48
|
+
*/
|
|
49
|
+
export declare function loadSecretPatterns(filePath: string): CustomSecretPattern[];
|
|
18
50
|
/**
|
|
19
|
-
* Scan a single string for secrets
|
|
20
|
-
* looks suspicious. Safe
|
|
21
|
-
* short-circuits.
|
|
51
|
+
* Scan a single string for secrets (preset rules + optional custom patterns).
|
|
52
|
+
* Returns an empty array if nothing looks suspicious. Safe on empty strings.
|
|
22
53
|
*/
|
|
23
|
-
export declare function scanString(text: string,
|
|
54
|
+
export declare function scanString(text: string, opts?: ScanOptions): Promise<SecretMatch[]>;
|
|
24
55
|
//# sourceMappingURL=secrets.d.ts.map
|
package/dist/secrets.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"secrets.d.ts","sourceRoot":"","sources":["../src/secrets.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"secrets.d.ts","sourceRoot":"","sources":["../src/secrets.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AASH,MAAM,WAAW,WAAW;IAC1B,4EAA4E;IAC5E,KAAK,EAAE,MAAM,CAAC;IACd,4BAA4B;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ;6CACyC;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,8BAA8B;IAC9B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,8CAA8C;AAC9C,MAAM,WAAW,mBAAmB;IAClC,wEAAwE;IACxE,EAAE,EAAE,MAAM,CAAC;IACX,4CAA4C;IAC5C,OAAO,EAAE,MAAM,CAAC;IAChB,yDAAyD;IACzD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAWD,MAAM,WAAW,WAAW;IAC1B,yEAAyE;IACzE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gEAAgE;IAChE,cAAc,CAAC,EAAE,mBAAmB,EAAE,CAAC;CACxC;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,mBAAmB,EAAE,CAyB1E;AAwCD;;;GAGG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,WAAgB,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAsB7F"}
|