@nocoo/pew 0.4.0 → 0.6.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.
Files changed (88) hide show
  1. package/dist/cli.d.ts.map +1 -1
  2. package/dist/cli.js +117 -8
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/session-sync.d.ts +62 -0
  5. package/dist/commands/session-sync.d.ts.map +1 -0
  6. package/dist/commands/session-sync.js +443 -0
  7. package/dist/commands/session-sync.js.map +1 -0
  8. package/dist/commands/session-upload.d.ts +39 -0
  9. package/dist/commands/session-upload.d.ts.map +1 -0
  10. package/dist/commands/session-upload.js +45 -0
  11. package/dist/commands/session-upload.js.map +1 -0
  12. package/dist/commands/status.d.ts +9 -0
  13. package/dist/commands/status.d.ts.map +1 -1
  14. package/dist/commands/status.js +22 -11
  15. package/dist/commands/status.js.map +1 -1
  16. package/dist/commands/sync.d.ts +12 -0
  17. package/dist/commands/sync.d.ts.map +1 -1
  18. package/dist/commands/sync.js +159 -3
  19. package/dist/commands/sync.js.map +1 -1
  20. package/dist/commands/upload-engine.d.ts +63 -0
  21. package/dist/commands/upload-engine.d.ts.map +1 -0
  22. package/dist/commands/upload-engine.js +164 -0
  23. package/dist/commands/upload-engine.js.map +1 -0
  24. package/dist/commands/upload.d.ts +5 -21
  25. package/dist/commands/upload.d.ts.map +1 -1
  26. package/dist/commands/upload.js +11 -144
  27. package/dist/commands/upload.js.map +1 -1
  28. package/dist/discovery/sources.d.ts +5 -0
  29. package/dist/discovery/sources.d.ts.map +1 -1
  30. package/dist/discovery/sources.js +7 -0
  31. package/dist/discovery/sources.js.map +1 -1
  32. package/dist/parsers/claude-session.d.ts +19 -0
  33. package/dist/parsers/claude-session.d.ts.map +1 -0
  34. package/dist/parsers/claude-session.js +131 -0
  35. package/dist/parsers/claude-session.js.map +1 -0
  36. package/dist/parsers/codex-session.d.ts +24 -0
  37. package/dist/parsers/codex-session.d.ts.map +1 -0
  38. package/dist/parsers/codex-session.js +140 -0
  39. package/dist/parsers/codex-session.js.map +1 -0
  40. package/dist/parsers/codex.d.ts +37 -0
  41. package/dist/parsers/codex.d.ts.map +1 -0
  42. package/dist/parsers/codex.js +136 -0
  43. package/dist/parsers/codex.js.map +1 -0
  44. package/dist/parsers/gemini-session.d.ts +19 -0
  45. package/dist/parsers/gemini-session.d.ts.map +1 -0
  46. package/dist/parsers/gemini-session.js +103 -0
  47. package/dist/parsers/gemini-session.js.map +1 -0
  48. package/dist/parsers/openclaw-session.d.ts +20 -0
  49. package/dist/parsers/openclaw-session.d.ts.map +1 -0
  50. package/dist/parsers/openclaw-session.js +122 -0
  51. package/dist/parsers/openclaw-session.js.map +1 -0
  52. package/dist/parsers/opencode-session.d.ts +15 -0
  53. package/dist/parsers/opencode-session.d.ts.map +1 -0
  54. package/dist/parsers/opencode-session.js +131 -0
  55. package/dist/parsers/opencode-session.js.map +1 -0
  56. package/dist/parsers/opencode-sqlite-db.d.ts +29 -0
  57. package/dist/parsers/opencode-sqlite-db.d.ts.map +1 -0
  58. package/dist/parsers/opencode-sqlite-db.js +71 -0
  59. package/dist/parsers/opencode-sqlite-db.js.map +1 -0
  60. package/dist/parsers/opencode-sqlite-session.d.ts +32 -0
  61. package/dist/parsers/opencode-sqlite-session.d.ts.map +1 -0
  62. package/dist/parsers/opencode-sqlite-session.js +121 -0
  63. package/dist/parsers/opencode-sqlite-session.js.map +1 -0
  64. package/dist/parsers/opencode-sqlite.d.ts +53 -0
  65. package/dist/parsers/opencode-sqlite.d.ts.map +1 -0
  66. package/dist/parsers/opencode-sqlite.js +104 -0
  67. package/dist/parsers/opencode-sqlite.js.map +1 -0
  68. package/dist/storage/base-queue.d.ts +40 -0
  69. package/dist/storage/base-queue.d.ts.map +1 -0
  70. package/dist/storage/base-queue.js +89 -0
  71. package/dist/storage/base-queue.js.map +1 -0
  72. package/dist/storage/local-queue.d.ts +4 -24
  73. package/dist/storage/local-queue.d.ts.map +1 -1
  74. package/dist/storage/local-queue.js +5 -64
  75. package/dist/storage/local-queue.js.map +1 -1
  76. package/dist/storage/session-cursor-store.d.ts +14 -0
  77. package/dist/storage/session-cursor-store.d.ts.map +1 -0
  78. package/dist/storage/session-cursor-store.js +34 -0
  79. package/dist/storage/session-cursor-store.js.map +1 -0
  80. package/dist/storage/session-queue.d.ts +10 -0
  81. package/dist/storage/session-queue.d.ts.map +1 -0
  82. package/dist/storage/session-queue.js +11 -0
  83. package/dist/storage/session-queue.js.map +1 -0
  84. package/dist/utils/paths.d.ts +4 -0
  85. package/dist/utils/paths.d.ts.map +1 -1
  86. package/dist/utils/paths.js +5 -0
  87. package/dist/utils/paths.js.map +1 -1
  88. package/package.json +1 -1
@@ -1,70 +1,11 @@
1
- import { readFile, writeFile, appendFile, mkdir } from "node:fs/promises";
2
- import { join } from "node:path";
3
- const QUEUE_FILE = "queue.jsonl";
4
- const STATE_FILE = "queue.state.json";
1
+ import { BaseQueue } from "./base-queue.js";
5
2
  /**
6
- * Append-only local queue for usage records.
7
- * Records are stored as JSONL, and an offset file tracks upload progress.
3
+ * Append-only local queue for token usage records.
4
+ * Thin wrapper around BaseQueue with token-specific file names.
8
5
  */
9
- export class LocalQueue {
10
- queuePath;
11
- statePath;
12
- dir;
6
+ export class LocalQueue extends BaseQueue {
13
7
  constructor(storeDir) {
14
- this.dir = storeDir;
15
- this.queuePath = join(storeDir, QUEUE_FILE);
16
- this.statePath = join(storeDir, STATE_FILE);
17
- }
18
- /** Ensure the directory exists */
19
- async ensureDir() {
20
- await mkdir(this.dir, { recursive: true });
21
- }
22
- /** Append a single record to the queue */
23
- async append(record) {
24
- await this.ensureDir();
25
- await appendFile(this.queuePath, JSON.stringify(record) + "\n");
26
- }
27
- /** Append multiple records to the queue in a single write */
28
- async appendBatch(records) {
29
- if (records.length === 0)
30
- return;
31
- await this.ensureDir();
32
- const data = records.map((r) => JSON.stringify(r)).join("\n") + "\n";
33
- await appendFile(this.queuePath, data);
34
- }
35
- /**
36
- * Read records from the queue starting at a byte offset.
37
- * Returns parsed records and the new offset (end of file).
38
- */
39
- async readFromOffset(offset) {
40
- let raw;
41
- try {
42
- raw = await readFile(this.queuePath, "utf-8");
43
- }
44
- catch {
45
- return { records: [], newOffset: 0 };
46
- }
47
- const slice = raw.slice(offset);
48
- const lines = slice.split("\n").filter((line) => line.trim().length > 0);
49
- const records = lines.map((line) => JSON.parse(line));
50
- const newOffset = Buffer.byteLength(raw, "utf-8");
51
- return { records, newOffset };
52
- }
53
- /** Save the upload byte offset to the state file */
54
- async saveOffset(offset) {
55
- await this.ensureDir();
56
- await writeFile(this.statePath, JSON.stringify({ offset }) + "\n");
57
- }
58
- /** Load the upload byte offset. Returns 0 if not found or corrupted. */
59
- async loadOffset() {
60
- try {
61
- const raw = await readFile(this.statePath, "utf-8");
62
- const state = JSON.parse(raw);
63
- return state.offset ?? 0;
64
- }
65
- catch {
66
- return 0;
67
- }
8
+ super(storeDir, "queue.jsonl", "queue.state.json");
68
9
  }
69
10
  }
70
11
  //# sourceMappingURL=local-queue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"local-queue.js","sourceRoot":"","sources":["../../src/storage/local-queue.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"local-queue.js","sourceRoot":"","sources":["../../src/storage/local-queue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG5C;;;GAGG;AACH,MAAM,OAAO,UAAW,SAAQ,SAAsB;IACpD,YAAY,QAAgB;QAC1B,KAAK,CAAC,QAAQ,EAAE,aAAa,EAAE,kBAAkB,CAAC,CAAC;IACrD,CAAC;CACF"}
@@ -0,0 +1,14 @@
1
+ import type { SessionCursorState } from "@pew/core";
2
+ /**
3
+ * Persists session file cursors (mtime + size dual-check) to disk.
4
+ * Stored at ~/.config/pew/session-cursors.json
5
+ */
6
+ export declare class SessionCursorStore {
7
+ readonly filePath: string;
8
+ constructor(storeDir: string);
9
+ /** Load cursor state from disk. Returns empty state if file doesn't exist or is corrupted. */
10
+ load(): Promise<SessionCursorState>;
11
+ /** Save cursor state to disk, creating the directory if needed. */
12
+ save(state: SessionCursorState): Promise<void>;
13
+ }
14
+ //# sourceMappingURL=session-cursor-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-cursor-store.d.ts","sourceRoot":"","sources":["../../src/storage/session-cursor-store.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AASpD;;;GAGG;AACH,qBAAa,kBAAkB;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;gBAEd,QAAQ,EAAE,MAAM;IAI5B,8FAA8F;IACxF,IAAI,IAAI,OAAO,CAAC,kBAAkB,CAAC;IASzC,mEAAmE;IAC7D,IAAI,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;CAKrD"}
@@ -0,0 +1,34 @@
1
+ import { readFile, writeFile, mkdir } from "node:fs/promises";
2
+ import { join, dirname } from "node:path";
3
+ const CURSORS_FILE = "session-cursors.json";
4
+ /** Creates a fresh empty session cursor state */
5
+ function emptyCursorState() {
6
+ return { version: 1, files: {}, updatedAt: null };
7
+ }
8
+ /**
9
+ * Persists session file cursors (mtime + size dual-check) to disk.
10
+ * Stored at ~/.config/pew/session-cursors.json
11
+ */
12
+ export class SessionCursorStore {
13
+ filePath;
14
+ constructor(storeDir) {
15
+ this.filePath = join(storeDir, CURSORS_FILE);
16
+ }
17
+ /** Load cursor state from disk. Returns empty state if file doesn't exist or is corrupted. */
18
+ async load() {
19
+ try {
20
+ const raw = await readFile(this.filePath, "utf-8");
21
+ return JSON.parse(raw);
22
+ }
23
+ catch {
24
+ return emptyCursorState();
25
+ }
26
+ }
27
+ /** Save cursor state to disk, creating the directory if needed. */
28
+ async save(state) {
29
+ const dir = dirname(this.filePath);
30
+ await mkdir(dir, { recursive: true });
31
+ await writeFile(this.filePath, JSON.stringify(state, null, 2) + "\n");
32
+ }
33
+ }
34
+ //# sourceMappingURL=session-cursor-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-cursor-store.js","sourceRoot":"","sources":["../../src/storage/session-cursor-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAG1C,MAAM,YAAY,GAAG,sBAAsB,CAAC;AAE5C,iDAAiD;AACjD,SAAS,gBAAgB;IACvB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;AACpD,CAAC;AAED;;;GAGG;AACH,MAAM,OAAO,kBAAkB;IACpB,QAAQ,CAAS;IAE1B,YAAY,QAAgB;QAC1B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IAC/C,CAAC;IAED,8FAA8F;IAC9F,KAAK,CAAC,IAAI;QACR,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACnD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAuB,CAAC;QAC/C,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,gBAAgB,EAAE,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,mEAAmE;IACnE,KAAK,CAAC,IAAI,CAAC,KAAyB;QAClC,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACnC,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACtC,MAAM,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IACxE,CAAC;CACF"}
@@ -0,0 +1,10 @@
1
+ import { BaseQueue } from "./base-queue.js";
2
+ import type { SessionQueueRecord } from "@pew/core";
3
+ /**
4
+ * Append-only local queue for session records.
5
+ * Thin wrapper around BaseQueue with session-specific file names.
6
+ */
7
+ export declare class SessionQueue extends BaseQueue<SessionQueueRecord> {
8
+ constructor(storeDir: string);
9
+ }
10
+ //# sourceMappingURL=session-queue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-queue.d.ts","sourceRoot":"","sources":["../../src/storage/session-queue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAEpD;;;GAGG;AACH,qBAAa,YAAa,SAAQ,SAAS,CAAC,kBAAkB,CAAC;gBACjD,QAAQ,EAAE,MAAM;CAG7B"}
@@ -0,0 +1,11 @@
1
+ import { BaseQueue } from "./base-queue.js";
2
+ /**
3
+ * Append-only local queue for session records.
4
+ * Thin wrapper around BaseQueue with session-specific file names.
5
+ */
6
+ export class SessionQueue extends BaseQueue {
7
+ constructor(storeDir) {
8
+ super(storeDir, "session-queue.jsonl", "session-queue.state.json");
9
+ }
10
+ }
11
+ //# sourceMappingURL=session-queue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-queue.js","sourceRoot":"","sources":["../../src/storage/session-queue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG5C;;;GAGG;AACH,MAAM,OAAO,YAAa,SAAQ,SAA6B;IAC7D,YAAY,QAAgB;QAC1B,KAAK,CAAC,QAAQ,EAAE,qBAAqB,EAAE,0BAA0B,CAAC,CAAC;IACrE,CAAC;CACF"}
@@ -7,10 +7,14 @@ export declare function resolveDefaultPaths(home?: string): {
7
7
  stateDir: string;
8
8
  /** Claude Code data: ~/.claude */
9
9
  claudeDir: string;
10
+ /** Codex CLI sessions: ~/.codex/sessions (or $CODEX_HOME/sessions) */
11
+ codexSessionsDir: string;
10
12
  /** Gemini CLI data: ~/.gemini */
11
13
  geminiDir: string;
12
14
  /** OpenCode message storage: ~/.local/share/opencode/storage/message */
13
15
  openCodeMessageDir: string;
16
+ /** OpenCode SQLite database: ~/.local/share/opencode/opencode.db */
17
+ openCodeDbPath: string;
14
18
  /** OpenClaw data: ~/.openclaw */
15
19
  openclawDir: string;
16
20
  };
@@ -1 +1 @@
1
- {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/utils/paths.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,SAAY;IAEhD,0CAA0C;;IAE1C,kCAAkC;;IAElC,iCAAiC;;IAEjC,wEAAwE;;IASxE,iCAAiC;;EAGpC"}
1
+ {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/utils/paths.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,SAAY;IAGhD,0CAA0C;;IAE1C,kCAAkC;;IAElC,sEAAsE;;IAEtE,iCAAiC;;IAEjC,wEAAwE;;IASxE,oEAAoE;;IAEpE,iCAAiC;;EAGpC"}
@@ -5,15 +5,20 @@ import { join } from "node:path";
5
5
  * All paths can be overridden for testing.
6
6
  */
7
7
  export function resolveDefaultPaths(home = homedir()) {
8
+ const codexHome = process.env.CODEX_HOME || join(home, ".codex");
8
9
  return {
9
10
  /** Pew state directory: ~/.config/pew/ */
10
11
  stateDir: join(home, ".config", "pew"),
11
12
  /** Claude Code data: ~/.claude */
12
13
  claudeDir: join(home, ".claude"),
14
+ /** Codex CLI sessions: ~/.codex/sessions (or $CODEX_HOME/sessions) */
15
+ codexSessionsDir: join(codexHome, "sessions"),
13
16
  /** Gemini CLI data: ~/.gemini */
14
17
  geminiDir: join(home, ".gemini"),
15
18
  /** OpenCode message storage: ~/.local/share/opencode/storage/message */
16
19
  openCodeMessageDir: join(home, ".local", "share", "opencode", "storage", "message"),
20
+ /** OpenCode SQLite database: ~/.local/share/opencode/opencode.db */
21
+ openCodeDbPath: join(home, ".local", "share", "opencode", "opencode.db"),
17
22
  /** OpenClaw data: ~/.openclaw */
18
23
  openclawDir: join(home, ".openclaw"),
19
24
  };
@@ -1 +1 @@
1
- {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/utils/paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAI,GAAG,OAAO,EAAE;IAClD,OAAO;QACL,0CAA0C;QAC1C,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC;QACtC,kCAAkC;QAClC,SAAS,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC;QAChC,iCAAiC;QACjC,SAAS,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC;QAChC,wEAAwE;QACxE,kBAAkB,EAAE,IAAI,CACtB,IAAI,EACJ,QAAQ,EACR,OAAO,EACP,UAAU,EACV,SAAS,EACT,SAAS,CACV;QACD,iCAAiC;QACjC,WAAW,EAAE,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC;KACrC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/utils/paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAI,GAAG,OAAO,EAAE;IAClD,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACjE,OAAO;QACL,0CAA0C;QAC1C,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC;QACtC,kCAAkC;QAClC,SAAS,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC;QAChC,sEAAsE;QACtE,gBAAgB,EAAE,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC;QAC7C,iCAAiC;QACjC,SAAS,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC;QAChC,wEAAwE;QACxE,kBAAkB,EAAE,IAAI,CACtB,IAAI,EACJ,QAAQ,EACR,OAAO,EACP,UAAU,EACV,SAAS,EACT,SAAS,CACV;QACD,oEAAoE;QACpE,cAAc,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,aAAa,CAAC;QACxE,iCAAiC;QACjC,WAAW,EAAE,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC;KACrC,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nocoo/pew",
3
- "version": "0.4.0",
3
+ "version": "0.6.1",
4
4
  "description": "Track token usage from your local AI coding tools",
5
5
  "type": "module",
6
6
  "bin": {