@nocoo/pew 1.4.0 → 1.5.1
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/bin.js +0 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +34 -22
- package/dist/cli.js.map +1 -1
- package/dist/commands/login.d.ts +1 -1
- package/dist/commands/login.js +1 -1
- package/dist/commands/session-sync.js +3 -3
- package/dist/commands/session-sync.js.map +1 -1
- package/dist/commands/session-upload.d.ts +2 -2
- package/dist/commands/session-upload.d.ts.map +1 -1
- package/dist/commands/session-upload.js +1 -1
- package/dist/commands/session-upload.js.map +1 -1
- package/dist/commands/sync.js +3 -3
- package/dist/commands/sync.js.map +1 -1
- package/dist/commands/upload-engine.d.ts +2 -2
- package/dist/commands/upload-engine.js +1 -1
- package/dist/commands/upload.d.ts +2 -2
- package/dist/commands/upload.d.ts.map +1 -1
- package/dist/commands/upload.js +1 -1
- package/dist/commands/upload.js.map +1 -1
- package/dist/drivers/registry.d.ts.map +1 -1
- package/dist/drivers/registry.js +6 -6
- package/dist/drivers/registry.js.map +1 -1
- package/dist/drivers/token/opencode-json-token-driver.d.ts.map +1 -1
- package/dist/drivers/token/opencode-json-token-driver.js +0 -3
- package/dist/drivers/token/opencode-json-token-driver.js.map +1 -1
- package/dist/drivers/token/opencode-sqlite-token-driver.d.ts +2 -2
- package/dist/drivers/token/opencode-sqlite-token-driver.d.ts.map +1 -1
- package/dist/drivers/token/opencode-sqlite-token-driver.js +1 -1
- package/dist/notifier/coordinator.js +3 -1
- package/dist/notifier/coordinator.js.map +1 -1
- package/dist/notifier/openclaw-hook.js +1 -1
- package/dist/notifier/registry.js +19 -19
- package/dist/notifier/registry.js.map +1 -1
- package/dist/parsers/claude-session.d.ts.map +1 -1
- package/dist/parsers/claude-session.js.map +1 -1
- package/dist/parsers/claude.d.ts.map +1 -1
- package/dist/parsers/claude.js +1 -14
- package/dist/parsers/claude.js.map +1 -1
- package/dist/parsers/codex.d.ts.map +1 -1
- package/dist/parsers/codex.js +1 -14
- package/dist/parsers/codex.js.map +1 -1
- package/dist/parsers/gemini.d.ts.map +1 -1
- package/dist/parsers/gemini.js +2 -15
- package/dist/parsers/gemini.js.map +1 -1
- package/dist/parsers/openclaw.d.ts.map +1 -1
- package/dist/parsers/openclaw.js +4 -10
- package/dist/parsers/openclaw.js.map +1 -1
- package/dist/parsers/opencode-session.d.ts.map +1 -1
- package/dist/parsers/opencode-session.js +1 -12
- package/dist/parsers/opencode-session.js.map +1 -1
- package/dist/parsers/opencode-sqlite-db.d.ts +2 -1
- package/dist/parsers/opencode-sqlite-db.d.ts.map +1 -1
- package/dist/parsers/opencode-sqlite-db.js +68 -7
- package/dist/parsers/opencode-sqlite-db.js.map +1 -1
- package/dist/parsers/opencode-sqlite-session.d.ts +1 -1
- package/dist/parsers/opencode-sqlite-session.d.ts.map +1 -1
- package/dist/parsers/opencode-sqlite-session.js +2 -13
- package/dist/parsers/opencode-sqlite-session.js.map +1 -1
- package/dist/parsers/opencode-sqlite.d.ts +1 -1
- package/dist/parsers/opencode-sqlite.d.ts.map +1 -1
- package/dist/parsers/opencode-sqlite.js +4 -9
- package/dist/parsers/opencode-sqlite.js.map +1 -1
- package/dist/parsers/opencode.d.ts +0 -5
- package/dist/parsers/opencode.d.ts.map +1 -1
- package/dist/parsers/opencode.js +2 -26
- package/dist/parsers/opencode.js.map +1 -1
- package/dist/parsers/vscode-copilot.d.ts.map +1 -1
- package/dist/parsers/vscode-copilot.js +1 -7
- package/dist/parsers/vscode-copilot.js.map +1 -1
- package/dist/utils/hash-project-ref.d.ts +1 -1
- package/dist/utils/hash-project-ref.js +1 -1
- package/dist/utils/paths.d.ts +3 -3
- package/dist/utils/paths.js +3 -3
- package/dist/utils/time.d.ts +6 -0
- package/dist/utils/time.d.ts.map +1 -0
- package/dist/utils/time.js +13 -0
- package/dist/utils/time.js.map +1 -0
- package/dist/utils/token-delta.d.ts +6 -0
- package/dist/utils/token-delta.d.ts.map +1 -0
- package/dist/utils/token-delta.js +15 -0
- package/dist/utils/token-delta.js.map +1 -0
- package/package.json +4 -1
|
@@ -1,20 +1,78 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { createRequire } from "node:module";
|
|
2
|
+
/**
|
|
3
|
+
* Unified SQLite database interface that works across Bun and Node.js runtimes.
|
|
4
|
+
* - In Bun: uses native bun:sqlite (fast, zero deps)
|
|
5
|
+
* - In Node.js (>= 22.5): uses built-in node:sqlite (zero deps)
|
|
6
|
+
*
|
|
7
|
+
* No native/compiled dependencies are required — both paths use
|
|
8
|
+
* platform-provided SQLite bindings.
|
|
9
|
+
*
|
|
10
|
+
* NOTE: The package ships as ESM ("type": "module"), so bare `require()` is
|
|
11
|
+
* not defined when Node.js loads the compiled .js files. We use
|
|
12
|
+
* `createRequire(import.meta.url)` to get a CJS-compatible require that
|
|
13
|
+
* works in both ESM and CJS contexts. Bun supports require() everywhere,
|
|
14
|
+
* but we use createRequire uniformly for consistency.
|
|
15
|
+
*/
|
|
16
|
+
const esmRequire = createRequire(import.meta.url);
|
|
17
|
+
// Cache the resolved SQLite implementation
|
|
18
|
+
let cachedSqliteImpl = null;
|
|
19
|
+
let sqliteLoadAttempted = false;
|
|
20
|
+
/**
|
|
21
|
+
* Synchronously get a SQLite database opener.
|
|
22
|
+
* Uses bun:sqlite under Bun, node:sqlite under Node.js (>= 22.5).
|
|
23
|
+
* Returns null if neither is available.
|
|
24
|
+
*/
|
|
25
|
+
function getSqliteOpener() {
|
|
26
|
+
if (sqliteLoadAttempted)
|
|
27
|
+
return cachedSqliteImpl;
|
|
28
|
+
sqliteLoadAttempted = true;
|
|
29
|
+
const isBun = typeof globalThis.Bun !== "undefined";
|
|
30
|
+
if (isBun) {
|
|
31
|
+
// Bun: use bun:sqlite (synchronous require works in Bun)
|
|
32
|
+
try {
|
|
33
|
+
const { Database } = esmRequire("bun:sqlite");
|
|
34
|
+
cachedSqliteImpl = (dbPath) => new Database(dbPath, { readonly: true });
|
|
35
|
+
return cachedSqliteImpl;
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
// bun:sqlite not available (shouldn't happen in Bun)
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
// Node.js >= 22.5: use built-in node:sqlite (experimental but stable API).
|
|
43
|
+
// DatabaseSync is the synchronous interface — matches bun:sqlite's API shape.
|
|
44
|
+
// Option is `readOnly` (camelCase), not `readonly` like bun:sqlite.
|
|
45
|
+
try {
|
|
46
|
+
const { DatabaseSync } = esmRequire("node:sqlite");
|
|
47
|
+
cachedSqliteImpl = (dbPath) => new DatabaseSync(dbPath, { readOnly: true });
|
|
48
|
+
return cachedSqliteImpl;
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
// node:sqlite not available (Node.js < 22.5)
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return null;
|
|
55
|
+
}
|
|
2
56
|
/**
|
|
3
57
|
* Open an OpenCode SQLite database in read-only mode
|
|
4
58
|
* and return a queryMessages function for use with parseOpenCodeSqlite().
|
|
5
59
|
*
|
|
6
|
-
* Uses bun:sqlite
|
|
60
|
+
* Uses bun:sqlite under Bun runtime and node:sqlite under Node.js (>= 22.5)
|
|
61
|
+
* for cross-runtime SQLite access with zero native dependencies.
|
|
7
62
|
* Returns null if the database cannot be opened.
|
|
8
63
|
*/
|
|
9
64
|
export function openMessageDb(dbPath) {
|
|
65
|
+
const opener = getSqliteOpener();
|
|
66
|
+
if (!opener)
|
|
67
|
+
return null;
|
|
10
68
|
let db;
|
|
11
69
|
try {
|
|
12
|
-
db =
|
|
70
|
+
db = opener(dbPath);
|
|
13
71
|
}
|
|
14
72
|
catch {
|
|
15
73
|
return null;
|
|
16
74
|
}
|
|
17
|
-
const stmt = db.
|
|
75
|
+
const stmt = db.prepare(`SELECT id, session_id, time_created, json_extract(data, '$.role') as role, data
|
|
18
76
|
FROM message
|
|
19
77
|
WHERE time_created >= ?
|
|
20
78
|
ORDER BY time_created ASC`);
|
|
@@ -30,14 +88,17 @@ export function openMessageDb(dbPath) {
|
|
|
30
88
|
* Returns null if the database cannot be opened.
|
|
31
89
|
*/
|
|
32
90
|
export function openSessionDb(dbPath) {
|
|
91
|
+
const opener = getSqliteOpener();
|
|
92
|
+
if (!opener)
|
|
93
|
+
return null;
|
|
33
94
|
let db;
|
|
34
95
|
try {
|
|
35
|
-
db =
|
|
96
|
+
db = opener(dbPath);
|
|
36
97
|
}
|
|
37
98
|
catch {
|
|
38
99
|
return null;
|
|
39
100
|
}
|
|
40
|
-
const sessionStmt = db.
|
|
101
|
+
const sessionStmt = db.prepare(`SELECT id, project_id, title, time_created, time_updated
|
|
41
102
|
FROM session
|
|
42
103
|
WHERE time_updated >= ?
|
|
43
104
|
ORDER BY time_updated ASC`);
|
|
@@ -53,7 +114,7 @@ export function openSessionDb(dbPath) {
|
|
|
53
114
|
for (let i = 0; i < sessionIds.length; i += CHUNK_SIZE) {
|
|
54
115
|
const chunk = sessionIds.slice(i, i + CHUNK_SIZE);
|
|
55
116
|
const placeholders = chunk.map(() => "?").join(",");
|
|
56
|
-
const stmt = db.
|
|
117
|
+
const stmt = db.prepare(`SELECT session_id, json_extract(data, '$.role') as role, time_created, data
|
|
57
118
|
FROM message
|
|
58
119
|
WHERE session_id IN (${placeholders})
|
|
59
120
|
ORDER BY time_created ASC`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opencode-sqlite-db.js","sourceRoot":"","sources":["../../src/parsers/opencode-sqlite-db.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"opencode-sqlite-db.js","sourceRoot":"","sources":["../../src/parsers/opencode-sqlite-db.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Queries the `session` and `message` tables from opencode.db
|
|
5
5
|
* to produce SessionSnapshot records. Uses dependency injection
|
|
6
|
-
* (pre-fetched rows) for testability without
|
|
6
|
+
* (pre-fetched rows) for testability without native SQLite.
|
|
7
7
|
*/
|
|
8
8
|
import type { SessionSnapshot } from "@pew/core";
|
|
9
9
|
/** Row shape from the session table */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opencode-sqlite-session.d.ts","sourceRoot":"","sources":["../../src/parsers/opencode-sqlite-session.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAU,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"opencode-sqlite-session.d.ts","sourceRoot":"","sources":["../../src/parsers/opencode-sqlite-session.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAU,MAAM,WAAW,CAAC;AAIzD,uCAAuC;AACvC,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,oEAAoE;AACpE,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;;GAMG;AACH,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,UAAU,EAAE,EACtB,QAAQ,EAAE,iBAAiB,EAAE,GAC5B,eAAe,EAAE,CAuGnB"}
|
|
@@ -3,21 +3,10 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Queries the `session` and `message` tables from opencode.db
|
|
5
5
|
* to produce SessionSnapshot records. Uses dependency injection
|
|
6
|
-
* (pre-fetched rows) for testability without
|
|
6
|
+
* (pre-fetched rows) for testability without native SQLite.
|
|
7
7
|
*/
|
|
8
8
|
import { hashProjectRef } from "../utils/hash-project-ref.js";
|
|
9
|
-
|
|
10
|
-
* Coerce an epoch value to milliseconds.
|
|
11
|
-
* Values < 1e12 are treated as seconds and multiplied by 1000.
|
|
12
|
-
*/
|
|
13
|
-
function coerceEpochMs(v) {
|
|
14
|
-
const n = Number(v);
|
|
15
|
-
if (!Number.isFinite(n) || n <= 0)
|
|
16
|
-
return 0;
|
|
17
|
-
if (n < 1e12)
|
|
18
|
-
return Math.floor(n * 1000);
|
|
19
|
-
return Math.floor(n);
|
|
20
|
-
}
|
|
9
|
+
import { coerceEpochMs } from "../utils/time.js";
|
|
21
10
|
/**
|
|
22
11
|
* Collect session snapshots from pre-fetched SQLite rows.
|
|
23
12
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opencode-sqlite-session.js","sourceRoot":"","sources":["../../src/parsers/opencode-sqlite-session.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"opencode-sqlite-session.js","sourceRoot":"","sources":["../../src/parsers/opencode-sqlite-session.ts"],"names":[],"mappings":"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"}
|
|
@@ -34,7 +34,7 @@ export type QueryMessagesFn = (lastTimeCreated: number) => MessageRow[];
|
|
|
34
34
|
* Unlike the JSON file parser, no diffTotals is needed — each SQLite row
|
|
35
35
|
* is an independent message with absolute token values.
|
|
36
36
|
*
|
|
37
|
-
* The `queryMessages` function is injected to decouple from
|
|
37
|
+
* The `queryMessages` function is injected to decouple from the native SQLite module
|
|
38
38
|
* for testability. Use `openMessageDb()` from `opencode-sqlite-db.ts` to
|
|
39
39
|
* create the real adapter at runtime.
|
|
40
40
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opencode-sqlite.d.ts","sourceRoot":"","sources":["../../src/parsers/opencode-sqlite.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"opencode-sqlite.d.ts","sourceRoot":"","sources":["../../src/parsers/opencode-sqlite.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAK/C,iDAAiD;AACjD,MAAM,WAAW,oBAAoB;IACnC,sDAAsD;IACtD,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,oDAAoD;IACpD,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACzB,yDAAyD;IACzD,cAAc,EAAE,MAAM,CAAC;IACvB,2DAA2D;IAC3D,KAAK,EAAE,MAAM,CAAC;CACf;AAED,uCAAuC;AACvC,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,kEAAkE;IAClE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;GAKG;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,eAAe,EAAE,MAAM,KAAK,UAAU,EAAE,CAAC;AAExE;;;;;;;;;;;GAWG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,UAAU,EAAE,GACjB,IAAI,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAsDrC;AAED;;;;;GAKG;AACH,wBAAsB,mBAAmB,CAAC,IAAI,EAAE;IAC9C,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,eAAe,CAAC;CACjC,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAgChC"}
|
|
@@ -1,12 +1,7 @@
|
|
|
1
1
|
import { stat } from "node:fs/promises";
|
|
2
|
-
import { normalizeOpenCodeTokens
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
return (d.inputTokens === 0 &&
|
|
6
|
-
d.cachedInputTokens === 0 &&
|
|
7
|
-
d.outputTokens === 0 &&
|
|
8
|
-
d.reasoningOutputTokens === 0);
|
|
9
|
-
}
|
|
2
|
+
import { normalizeOpenCodeTokens } from "./opencode.js";
|
|
3
|
+
import { isAllZero } from "../utils/token-delta.js";
|
|
4
|
+
import { coerceEpochMs } from "../utils/time.js";
|
|
10
5
|
/**
|
|
11
6
|
* Parse message rows from OpenCode's SQLite database for token usage records.
|
|
12
7
|
*
|
|
@@ -15,7 +10,7 @@ function isAllZero(d) {
|
|
|
15
10
|
* Unlike the JSON file parser, no diffTotals is needed — each SQLite row
|
|
16
11
|
* is an independent message with absolute token values.
|
|
17
12
|
*
|
|
18
|
-
* The `queryMessages` function is injected to decouple from
|
|
13
|
+
* The `queryMessages` function is injected to decouple from the native SQLite module
|
|
19
14
|
* for testability. Use `openMessageDb()` from `opencode-sqlite-db.ts` to
|
|
20
15
|
* create the real adapter at runtime.
|
|
21
16
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opencode-sqlite.js","sourceRoot":"","sources":["../../src/parsers/opencode-sqlite.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAGxC,OAAO,EAAE,uBAAuB,EAAE,
|
|
1
|
+
{"version":3,"file":"opencode-sqlite.js","sourceRoot":"","sources":["../../src/parsers/opencode-sqlite.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAGxC,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAgCjD;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,uBAAuB,CACrC,IAAkB;IAElB,MAAM,MAAM,GAAkB,EAAE,CAAC;IACjC,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;IACtC,IAAI,cAAc,GAAG,CAAC,CAAC;IAEvB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,oCAAoC;QACpC,IAAI,GAAG,CAAC,YAAY,GAAG,cAAc,EAAE,CAAC;YACtC,cAAc,GAAG,GAAG,CAAC,YAAY,CAAC;QACpC,CAAC;QAED,uEAAuE;QACvE,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW;YAAE,SAAS;QAEvC,kBAAkB;QAClB,IAAI,GAA4B,CAAC;QACjC,IAAI,CAAC;YACH,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;QAED,8BAA8B;QAC9B,WAAW,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;QAE/C,mBAAmB;QACnB,MAAM,MAAM,GAAG,uBAAuB,CACpC,GAAG,CAAC,MAAwC,CAC7C,CAAC;QACF,IAAI,CAAC,MAAM,IAAI,SAAS,CAAC,MAAM,CAAC;YAAE,SAAS;QAE3C,wDAAwD;QACxD,MAAM,IAAI,GAAG,GAAG,CAAC,IAA2C,CAAC;QAC7D,MAAM,WAAW,GACf,aAAa,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACjE,IAAI,CAAC,WAAW;YAAE,SAAS;QAE3B,gBAAgB;QAChB,MAAM,KAAK,GACT,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ;YAC7B,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE;YACpB,CAAC,CAAC,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ;gBAC7B,CAAC,CAAE,GAAG,CAAC,KAAgB,CAAC,IAAI,EAAE;gBAC9B,CAAC,CAAC,SAAS,CAAC;QAElB,MAAM,CAAC,IAAI,CAAC;YACV,MAAM,EAAE,UAAoB;YAC5B,KAAK;YACL,SAAS,EAAE,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE;YAC9C,MAAM;SACP,CAAC,CAAC;IACL,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,CAAC;AACjD,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,IAIzC;IACC,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC;IAExD,MAAM,KAAK,GAAyB;QAClC,MAAM,EAAE,EAAE;QACV,WAAW,EAAE,IAAI,GAAG,EAAE;QACtB,cAAc,EAAE,CAAC;QACjB,KAAK,EAAE,CAAC;KACT,CAAC;IAEF,8CAA8C;IAC9C,IAAI,SAAiB,CAAC;IACtB,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9B,SAAS,GAAG,EAAE,CAAC,GAAG,CAAC;IACrB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,IAAkB,CAAC;IACvB,IAAI,CAAC;QACH,IAAI,GAAG,aAAa,CAAC,eAAe,CAAC,CAAC;IACxC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,MAAM,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAC;IAC7C,OAAO,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;AACzC,CAAC"}
|
|
@@ -6,11 +6,6 @@ export interface OpenCodeFileResult {
|
|
|
6
6
|
messageKey: string | null;
|
|
7
7
|
lastTotals: TokenDelta | null;
|
|
8
8
|
}
|
|
9
|
-
/**
|
|
10
|
-
* Coerce an epoch value to milliseconds.
|
|
11
|
-
* Values < 1e12 are treated as seconds and multiplied by 1000.
|
|
12
|
-
*/
|
|
13
|
-
export declare function coerceEpochMs(v: unknown): number;
|
|
14
9
|
/**
|
|
15
10
|
* Normalize OpenCode's token object to our TokenDelta format.
|
|
16
11
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opencode.d.ts","sourceRoot":"","sources":["../../src/parsers/opencode.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAU,UAAU,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"opencode.d.ts","sourceRoot":"","sources":["../../src/parsers/opencode.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAU,UAAU,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAK/C,uDAAuD;AACvD,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,WAAW,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;CAC/B;AAED;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,GACjD,UAAU,GAAG,IAAI,CAanB;AAED;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE;IAC5C,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;CAC/B,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAwE9B"}
|
package/dist/parsers/opencode.js
CHANGED
|
@@ -1,24 +1,7 @@
|
|
|
1
1
|
import { readFile } from "node:fs/promises";
|
|
2
2
|
import { diffTotals } from "./gemini.js";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
const n = Number(v);
|
|
6
|
-
if (!Number.isFinite(n) || n < 0)
|
|
7
|
-
return 0;
|
|
8
|
-
return Math.floor(n);
|
|
9
|
-
}
|
|
10
|
-
/**
|
|
11
|
-
* Coerce an epoch value to milliseconds.
|
|
12
|
-
* Values < 1e12 are treated as seconds and multiplied by 1000.
|
|
13
|
-
*/
|
|
14
|
-
export function coerceEpochMs(v) {
|
|
15
|
-
const n = Number(v);
|
|
16
|
-
if (!Number.isFinite(n) || n <= 0)
|
|
17
|
-
return 0;
|
|
18
|
-
if (n < 1e12)
|
|
19
|
-
return Math.floor(n * 1000);
|
|
20
|
-
return Math.floor(n);
|
|
21
|
-
}
|
|
3
|
+
import { isAllZero, toNonNegInt } from "../utils/token-delta.js";
|
|
4
|
+
import { coerceEpochMs } from "../utils/time.js";
|
|
22
5
|
/**
|
|
23
6
|
* Normalize OpenCode's token object to our TokenDelta format.
|
|
24
7
|
*
|
|
@@ -41,13 +24,6 @@ export function normalizeOpenCodeTokens(tokens) {
|
|
|
41
24
|
reasoningOutputTokens: toNonNegInt(tokens.reasoning),
|
|
42
25
|
};
|
|
43
26
|
}
|
|
44
|
-
/** Check if a TokenDelta is all zeros */
|
|
45
|
-
function isAllZero(d) {
|
|
46
|
-
return (d.inputTokens === 0 &&
|
|
47
|
-
d.cachedInputTokens === 0 &&
|
|
48
|
-
d.outputTokens === 0 &&
|
|
49
|
-
d.reasoningOutputTokens === 0);
|
|
50
|
-
}
|
|
51
27
|
/**
|
|
52
28
|
* Parse a single OpenCode message JSON file.
|
|
53
29
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opencode.js","sourceRoot":"","sources":["../../src/parsers/opencode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAG5C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"opencode.js","sourceRoot":"","sources":["../../src/parsers/opencode.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vscode-copilot.d.ts","sourceRoot":"","sources":["../../src/parsers/vscode-copilot.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAMH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"vscode-copilot.d.ts","sourceRoot":"","sources":["../../src/parsers/vscode-copilot.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAMH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAO/C,yDAAyD;AACzD,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,+DAA+D;AAC/D,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,sDAAsD;AACtD,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,iFAAiF;IACjF,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACzC,gEAAgE;IAChE,uBAAuB,EAAE,MAAM,EAAE,CAAC;IAClC,0EAA0E;IAC1E,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;CACnC;AAED,2DAA2D;AAC3D,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,qEAAqE;IACrE,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACzC,4EAA4E;IAC5E,uBAAuB,EAAE,MAAM,EAAE,CAAC;CACnC;AA6BD;;;;;;;;GAQG;AACH,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,sBAAsB,GAC3B,OAAO,CAAC,uBAAuB,CAAC,CAgNlC"}
|
|
@@ -22,6 +22,7 @@
|
|
|
22
22
|
import { createReadStream } from "node:fs";
|
|
23
23
|
import { stat } from "node:fs/promises";
|
|
24
24
|
import { createInterface } from "node:readline";
|
|
25
|
+
import { toNonNegInt } from "../utils/token-delta.js";
|
|
25
26
|
// ---------------------------------------------------------------------------
|
|
26
27
|
// Helpers
|
|
27
28
|
// ---------------------------------------------------------------------------
|
|
@@ -29,13 +30,6 @@ import { createInterface } from "node:readline";
|
|
|
29
30
|
function normalizeModelId(raw) {
|
|
30
31
|
return raw.startsWith("copilot/") ? raw.slice(8) : raw;
|
|
31
32
|
}
|
|
32
|
-
/** Coerce to non-negative integer, returning 0 for invalid values */
|
|
33
|
-
function toNonNegInt(v) {
|
|
34
|
-
const n = Number(v);
|
|
35
|
-
if (!Number.isFinite(n) || n < 0)
|
|
36
|
-
return 0;
|
|
37
|
-
return Math.floor(n);
|
|
38
|
-
}
|
|
39
33
|
/** Extract modelId and timestamp from a request object */
|
|
40
34
|
function extractRequestMeta(req) {
|
|
41
35
|
const rawModelId = req.modelId;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vscode-copilot.js","sourceRoot":"","sources":["../../src/parsers/vscode-copilot.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"vscode-copilot.js","sourceRoot":"","sources":["../../src/parsers/vscode-copilot.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Privacy-safe project reference hashing.
|
|
3
3
|
*
|
|
4
4
|
* All project references are SHA-256 hashed before upload to ensure
|
|
5
|
-
*
|
|
5
|
+
* pew never transmits plaintext project names, paths, or other
|
|
6
6
|
* identifying information. The hash is truncated to 16 hex chars
|
|
7
7
|
* (64 bits) — enough for uniqueness, short enough for display.
|
|
8
8
|
*
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Privacy-safe project reference hashing.
|
|
3
3
|
*
|
|
4
4
|
* All project references are SHA-256 hashed before upload to ensure
|
|
5
|
-
*
|
|
5
|
+
* pew never transmits plaintext project names, paths, or other
|
|
6
6
|
* identifying information. The hash is truncated to 16 hex chars
|
|
7
7
|
* (64 bits) — enough for uniqueness, short enough for display.
|
|
8
8
|
*
|
package/dist/utils/paths.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Resolve default paths for
|
|
2
|
+
* Resolve default paths for pew state and AI tool data.
|
|
3
3
|
* All paths can be overridden for testing.
|
|
4
4
|
*/
|
|
5
5
|
export declare function resolveDefaultPaths(home?: string): {
|
|
6
|
-
/**
|
|
6
|
+
/** pew state directory: ~/.config/pew/ */
|
|
7
7
|
stateDir: string;
|
|
8
|
-
/**
|
|
8
|
+
/** pew bin directory: ~/.config/pew/bin/ */
|
|
9
9
|
binDir: string;
|
|
10
10
|
/** notify.cjs path: ~/.config/pew/bin/notify.cjs */
|
|
11
11
|
notifyPath: string;
|
package/dist/utils/paths.js
CHANGED
|
@@ -34,15 +34,15 @@ function resolveVscodeCopilotDirs(home) {
|
|
|
34
34
|
];
|
|
35
35
|
}
|
|
36
36
|
/**
|
|
37
|
-
* Resolve default paths for
|
|
37
|
+
* Resolve default paths for pew state and AI tool data.
|
|
38
38
|
* All paths can be overridden for testing.
|
|
39
39
|
*/
|
|
40
40
|
export function resolveDefaultPaths(home = homedir()) {
|
|
41
41
|
const codexHome = process.env.CODEX_HOME || join(home, ".codex");
|
|
42
42
|
return {
|
|
43
|
-
/**
|
|
43
|
+
/** pew state directory: ~/.config/pew/ */
|
|
44
44
|
stateDir: join(home, ".config", "pew"),
|
|
45
|
-
/**
|
|
45
|
+
/** pew bin directory: ~/.config/pew/bin/ */
|
|
46
46
|
binDir: join(home, ".config", "pew", "bin"),
|
|
47
47
|
/** notify.cjs path: ~/.config/pew/bin/notify.cjs */
|
|
48
48
|
notifyPath: join(home, ".config", "pew", "bin", "notify.cjs"),
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"time.d.ts","sourceRoot":"","sources":["../../src/utils/time.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,CAKhD"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Coerce an epoch value to milliseconds.
|
|
3
|
+
* Values < 1e12 are treated as seconds and multiplied by 1000.
|
|
4
|
+
*/
|
|
5
|
+
export function coerceEpochMs(v) {
|
|
6
|
+
const n = Number(v);
|
|
7
|
+
if (!Number.isFinite(n) || n <= 0)
|
|
8
|
+
return 0;
|
|
9
|
+
if (n < 1e12)
|
|
10
|
+
return Math.floor(n * 1000);
|
|
11
|
+
return Math.floor(n);
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=time.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"time.js","sourceRoot":"","sources":["../../src/utils/time.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,CAAU;IACtC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACpB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,CAAC,CAAC;IAC5C,IAAI,CAAC,GAAG,IAAI;QAAE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAC1C,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACvB,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { TokenDelta } from "@pew/core";
|
|
2
|
+
/** Coerce to non-negative integer, returning 0 for invalid values */
|
|
3
|
+
export declare function toNonNegInt(v: unknown): number;
|
|
4
|
+
/** Check if a TokenDelta is all zeros */
|
|
5
|
+
export declare function isAllZero(delta: TokenDelta): boolean;
|
|
6
|
+
//# sourceMappingURL=token-delta.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token-delta.d.ts","sourceRoot":"","sources":["../../src/utils/token-delta.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE5C,qEAAqE;AACrE,wBAAgB,WAAW,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,CAI9C;AAED,yCAAyC;AACzC,wBAAgB,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAOpD"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/** Coerce to non-negative integer, returning 0 for invalid values */
|
|
2
|
+
export function toNonNegInt(v) {
|
|
3
|
+
const n = Number(v);
|
|
4
|
+
if (!Number.isFinite(n) || n < 0)
|
|
5
|
+
return 0;
|
|
6
|
+
return Math.floor(n);
|
|
7
|
+
}
|
|
8
|
+
/** Check if a TokenDelta is all zeros */
|
|
9
|
+
export function isAllZero(delta) {
|
|
10
|
+
return (delta.inputTokens === 0 &&
|
|
11
|
+
delta.cachedInputTokens === 0 &&
|
|
12
|
+
delta.outputTokens === 0 &&
|
|
13
|
+
delta.reasoningOutputTokens === 0);
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=token-delta.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token-delta.js","sourceRoot":"","sources":["../../src/utils/token-delta.ts"],"names":[],"mappings":"AAEA,qEAAqE;AACrE,MAAM,UAAU,WAAW,CAAC,CAAU;IACpC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACpB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,CAAC,CAAC;IAC3C,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACvB,CAAC;AAED,yCAAyC;AACzC,MAAM,UAAU,SAAS,CAAC,KAAiB;IACzC,OAAO,CACL,KAAK,CAAC,WAAW,KAAK,CAAC;QACvB,KAAK,CAAC,iBAAiB,KAAK,CAAC;QAC7B,KAAK,CAAC,YAAY,KAAK,CAAC;QACxB,KAAK,CAAC,qBAAqB,KAAK,CAAC,CAClC,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nocoo/pew",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.5.1",
|
|
4
4
|
"description": "The contribution graph for AI-native developers",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -35,6 +35,9 @@
|
|
|
35
35
|
"cli"
|
|
36
36
|
],
|
|
37
37
|
"license": "MIT",
|
|
38
|
+
"engines": {
|
|
39
|
+
"node": ">=22.5.0"
|
|
40
|
+
},
|
|
38
41
|
"dependencies": {
|
|
39
42
|
"citty": "^0.1.0",
|
|
40
43
|
"consola": "^3.4.0",
|