@nocoo/pew 0.6.0 → 0.7.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 (84) hide show
  1. package/dist/cli.d.ts.map +1 -1
  2. package/dist/cli.js +179 -1
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/init.d.ts +38 -0
  5. package/dist/commands/init.d.ts.map +1 -0
  6. package/dist/commands/init.js +73 -0
  7. package/dist/commands/init.js.map +1 -0
  8. package/dist/commands/notify.d.ts +11 -0
  9. package/dist/commands/notify.d.ts.map +1 -0
  10. package/dist/commands/notify.js +28 -0
  11. package/dist/commands/notify.js.map +1 -0
  12. package/dist/commands/session-upload.d.ts +6 -22
  13. package/dist/commands/session-upload.d.ts.map +1 -1
  14. package/dist/commands/session-upload.js +12 -144
  15. package/dist/commands/session-upload.js.map +1 -1
  16. package/dist/commands/status.d.ts +4 -0
  17. package/dist/commands/status.d.ts.map +1 -1
  18. package/dist/commands/status.js +1 -0
  19. package/dist/commands/status.js.map +1 -1
  20. package/dist/commands/uninstall.d.ts +39 -0
  21. package/dist/commands/uninstall.d.ts.map +1 -0
  22. package/dist/commands/uninstall.js +107 -0
  23. package/dist/commands/uninstall.js.map +1 -0
  24. package/dist/commands/upload-engine.d.ts +63 -0
  25. package/dist/commands/upload-engine.d.ts.map +1 -0
  26. package/dist/commands/upload-engine.js +164 -0
  27. package/dist/commands/upload-engine.js.map +1 -0
  28. package/dist/commands/upload.d.ts +5 -21
  29. package/dist/commands/upload.d.ts.map +1 -1
  30. package/dist/commands/upload.js +11 -144
  31. package/dist/commands/upload.js.map +1 -1
  32. package/dist/notifier/claude-hook.d.ts +18 -0
  33. package/dist/notifier/claude-hook.d.ts.map +1 -0
  34. package/dist/notifier/claude-hook.js +226 -0
  35. package/dist/notifier/claude-hook.js.map +1 -0
  36. package/dist/notifier/codex-notifier.d.ts +19 -0
  37. package/dist/notifier/codex-notifier.d.ts.map +1 -0
  38. package/dist/notifier/codex-notifier.js +258 -0
  39. package/dist/notifier/codex-notifier.js.map +1 -0
  40. package/dist/notifier/coordinator.d.ts +29 -0
  41. package/dist/notifier/coordinator.d.ts.map +1 -0
  42. package/dist/notifier/coordinator.js +176 -0
  43. package/dist/notifier/coordinator.js.map +1 -0
  44. package/dist/notifier/gemini-hook.d.ts +18 -0
  45. package/dist/notifier/gemini-hook.d.ts.map +1 -0
  46. package/dist/notifier/gemini-hook.js +243 -0
  47. package/dist/notifier/gemini-hook.js.map +1 -0
  48. package/dist/notifier/notify-handler.d.ts +41 -0
  49. package/dist/notifier/notify-handler.d.ts.map +1 -0
  50. package/dist/notifier/notify-handler.js +172 -0
  51. package/dist/notifier/notify-handler.js.map +1 -0
  52. package/dist/notifier/openclaw-hook.d.ts +28 -0
  53. package/dist/notifier/openclaw-hook.d.ts.map +1 -0
  54. package/dist/notifier/openclaw-hook.js +272 -0
  55. package/dist/notifier/openclaw-hook.js.map +1 -0
  56. package/dist/notifier/opencode-plugin.d.ts +20 -0
  57. package/dist/notifier/opencode-plugin.d.ts.map +1 -0
  58. package/dist/notifier/opencode-plugin.js +106 -0
  59. package/dist/notifier/opencode-plugin.js.map +1 -0
  60. package/dist/notifier/paths.d.ts +21 -0
  61. package/dist/notifier/paths.d.ts.map +1 -0
  62. package/dist/notifier/paths.js +36 -0
  63. package/dist/notifier/paths.js.map +1 -0
  64. package/dist/notifier/registry.d.ts +21 -0
  65. package/dist/notifier/registry.d.ts.map +1 -0
  66. package/dist/notifier/registry.js +145 -0
  67. package/dist/notifier/registry.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-queue.d.ts +3 -21
  77. package/dist/storage/session-queue.d.ts.map +1 -1
  78. package/dist/storage/session-queue.js +4 -58
  79. package/dist/storage/session-queue.js.map +1 -1
  80. package/dist/utils/paths.d.ts +4 -0
  81. package/dist/utils/paths.d.ts.map +1 -1
  82. package/dist/utils/paths.js +4 -0
  83. package/dist/utils/paths.js.map +1 -1
  84. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/notifier/registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Generic append-only JSONL queue with byte-offset tracking.
3
+ *
4
+ * Records are stored as newline-delimited JSON. A separate state file
5
+ * tracks how far the upload cursor has progressed (in bytes).
6
+ *
7
+ * Bug fixes over the original LocalQueue/SessionQueue:
8
+ * - readFromOffset uses Buffer slicing (byte offset) instead of String.slice
9
+ * (character offset), which broke on non-ASCII content.
10
+ * - Per-line JSON.parse error handling: corrupted lines are skipped instead
11
+ * of blocking all subsequent records.
12
+ */
13
+ export declare class BaseQueue<T> {
14
+ readonly queuePath: string;
15
+ private readonly statePath;
16
+ private readonly dir;
17
+ constructor(storeDir: string, queueFile: string, stateFile: string);
18
+ /** Ensure the directory exists */
19
+ private ensureDir;
20
+ /** Append a single record to the queue */
21
+ append(record: T): Promise<void>;
22
+ /** Append multiple records to the queue in a single write */
23
+ appendBatch(records: T[]): Promise<void>;
24
+ /**
25
+ * Read records from the queue starting at a byte offset.
26
+ * Returns parsed records and the new offset (end of file in bytes).
27
+ *
28
+ * - Uses Buffer for slicing to correctly handle multi-byte UTF-8 characters.
29
+ * - Skips lines that fail JSON.parse instead of throwing.
30
+ */
31
+ readFromOffset(offset: number): Promise<{
32
+ records: T[];
33
+ newOffset: number;
34
+ }>;
35
+ /** Save the upload byte offset to the state file */
36
+ saveOffset(offset: number): Promise<void>;
37
+ /** Load the upload byte offset. Returns 0 if not found or corrupted. */
38
+ loadOffset(): Promise<number>;
39
+ }
40
+ //# sourceMappingURL=base-queue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-queue.d.ts","sourceRoot":"","sources":["../../src/storage/base-queue.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;GAWG;AACH,qBAAa,SAAS,CAAC,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;gBAEjB,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAMlE,kCAAkC;YACpB,SAAS;IAIvB,0CAA0C;IACpC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAKtC,6DAA6D;IACvD,WAAW,CAAC,OAAO,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAO9C;;;;;;OAMG;IACG,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;QAC5C,OAAO,EAAE,CAAC,EAAE,CAAC;QACb,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IA0BF,oDAAoD;IAC9C,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK/C,wEAAwE;IAClE,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;CASpC"}
@@ -0,0 +1,89 @@
1
+ import { readFile, writeFile, appendFile, mkdir } from "node:fs/promises";
2
+ import { join } from "node:path";
3
+ /**
4
+ * Generic append-only JSONL queue with byte-offset tracking.
5
+ *
6
+ * Records are stored as newline-delimited JSON. A separate state file
7
+ * tracks how far the upload cursor has progressed (in bytes).
8
+ *
9
+ * Bug fixes over the original LocalQueue/SessionQueue:
10
+ * - readFromOffset uses Buffer slicing (byte offset) instead of String.slice
11
+ * (character offset), which broke on non-ASCII content.
12
+ * - Per-line JSON.parse error handling: corrupted lines are skipped instead
13
+ * of blocking all subsequent records.
14
+ */
15
+ export class BaseQueue {
16
+ queuePath;
17
+ statePath;
18
+ dir;
19
+ constructor(storeDir, queueFile, stateFile) {
20
+ this.dir = storeDir;
21
+ this.queuePath = join(storeDir, queueFile);
22
+ this.statePath = join(storeDir, stateFile);
23
+ }
24
+ /** Ensure the directory exists */
25
+ async ensureDir() {
26
+ await mkdir(this.dir, { recursive: true });
27
+ }
28
+ /** Append a single record to the queue */
29
+ async append(record) {
30
+ await this.ensureDir();
31
+ await appendFile(this.queuePath, JSON.stringify(record) + "\n");
32
+ }
33
+ /** Append multiple records to the queue in a single write */
34
+ async appendBatch(records) {
35
+ if (records.length === 0)
36
+ return;
37
+ await this.ensureDir();
38
+ const data = records.map((r) => JSON.stringify(r)).join("\n") + "\n";
39
+ await appendFile(this.queuePath, data);
40
+ }
41
+ /**
42
+ * Read records from the queue starting at a byte offset.
43
+ * Returns parsed records and the new offset (end of file in bytes).
44
+ *
45
+ * - Uses Buffer for slicing to correctly handle multi-byte UTF-8 characters.
46
+ * - Skips lines that fail JSON.parse instead of throwing.
47
+ */
48
+ async readFromOffset(offset) {
49
+ let buf;
50
+ try {
51
+ buf = await readFile(this.queuePath);
52
+ }
53
+ catch {
54
+ return { records: [], newOffset: 0 };
55
+ }
56
+ const slice = buf.subarray(offset);
57
+ const text = slice.toString("utf-8");
58
+ const lines = text.split("\n").filter((line) => line.trim().length > 0);
59
+ const records = [];
60
+ for (const line of lines) {
61
+ try {
62
+ records.push(JSON.parse(line));
63
+ }
64
+ catch {
65
+ // Skip corrupted lines — log would be nice but we keep it silent
66
+ // to avoid coupling to a logger. The line is simply lost.
67
+ }
68
+ }
69
+ const newOffset = buf.byteLength;
70
+ return { records, newOffset };
71
+ }
72
+ /** Save the upload byte offset to the state file */
73
+ async saveOffset(offset) {
74
+ await this.ensureDir();
75
+ await writeFile(this.statePath, JSON.stringify({ offset }) + "\n");
76
+ }
77
+ /** Load the upload byte offset. Returns 0 if not found or corrupted. */
78
+ async loadOffset() {
79
+ try {
80
+ const raw = await readFile(this.statePath, "utf-8");
81
+ const state = JSON.parse(raw);
82
+ return state.offset ?? 0;
83
+ }
84
+ catch {
85
+ return 0;
86
+ }
87
+ }
88
+ }
89
+ //# sourceMappingURL=base-queue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-queue.js","sourceRoot":"","sources":["../../src/storage/base-queue.ts"],"names":[],"mappings":"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"}
@@ -1,30 +1,10 @@
1
+ import { BaseQueue } from "./base-queue.js";
1
2
  import type { QueueRecord } from "@pew/core";
2
3
  /**
3
- * Append-only local queue for usage records.
4
- * Records are stored as JSONL, and an offset file tracks upload progress.
4
+ * Append-only local queue for token usage records.
5
+ * Thin wrapper around BaseQueue with token-specific file names.
5
6
  */
6
- export declare class LocalQueue {
7
- readonly queuePath: string;
8
- private readonly statePath;
9
- private readonly dir;
7
+ export declare class LocalQueue extends BaseQueue<QueueRecord> {
10
8
  constructor(storeDir: string);
11
- /** Ensure the directory exists */
12
- private ensureDir;
13
- /** Append a single record to the queue */
14
- append(record: QueueRecord): Promise<void>;
15
- /** Append multiple records to the queue in a single write */
16
- appendBatch(records: QueueRecord[]): Promise<void>;
17
- /**
18
- * Read records from the queue starting at a byte offset.
19
- * Returns parsed records and the new offset (end of file).
20
- */
21
- readFromOffset(offset: number): Promise<{
22
- records: QueueRecord[];
23
- newOffset: number;
24
- }>;
25
- /** Save the upload byte offset to the state file */
26
- saveOffset(offset: number): Promise<void>;
27
- /** Load the upload byte offset. Returns 0 if not found or corrupted. */
28
- loadOffset(): Promise<number>;
29
9
  }
30
10
  //# sourceMappingURL=local-queue.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"local-queue.d.ts","sourceRoot":"","sources":["../../src/storage/local-queue.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAK7C;;;GAGG;AACH,qBAAa,UAAU;IACrB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;gBAEjB,QAAQ,EAAE,MAAM;IAM5B,kCAAkC;YACpB,SAAS;IAIvB,0CAA0C;IACpC,MAAM,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAKhD,6DAA6D;IACvD,WAAW,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAOxD;;;OAGG;IACG,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;QAC5C,OAAO,EAAE,WAAW,EAAE,CAAC;QACvB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IAgBF,oDAAoD;IAC9C,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ/C,wEAAwE;IAClE,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;CASpC"}
1
+ {"version":3,"file":"local-queue.d.ts","sourceRoot":"","sources":["../../src/storage/local-queue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAE7C;;;GAGG;AACH,qBAAa,UAAW,SAAQ,SAAS,CAAC,WAAW,CAAC;gBACxC,QAAQ,EAAE,MAAM;CAG7B"}
@@ -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"}
@@ -1,28 +1,10 @@
1
+ import { BaseQueue } from "./base-queue.js";
1
2
  import type { SessionQueueRecord } from "@pew/core";
2
3
  /**
3
4
  * Append-only local queue for session records.
4
- * Mirrors LocalQueue but uses separate files and SessionQueueRecord type.
5
+ * Thin wrapper around BaseQueue with session-specific file names.
5
6
  */
6
- export declare class SessionQueue {
7
- readonly queuePath: string;
8
- private readonly statePath;
9
- private readonly dir;
7
+ export declare class SessionQueue extends BaseQueue<SessionQueueRecord> {
10
8
  constructor(storeDir: string);
11
- /** Ensure the directory exists */
12
- private ensureDir;
13
- /** Append multiple records to the queue in a single write */
14
- appendBatch(records: SessionQueueRecord[]): Promise<void>;
15
- /**
16
- * Read records from the queue starting at a byte offset.
17
- * Returns parsed records and the new offset (end of file).
18
- */
19
- readFromOffset(offset: number): Promise<{
20
- records: SessionQueueRecord[];
21
- newOffset: number;
22
- }>;
23
- /** Save the upload byte offset to the state file */
24
- saveOffset(offset: number): Promise<void>;
25
- /** Load the upload byte offset. Returns 0 if not found or corrupted. */
26
- loadOffset(): Promise<number>;
27
9
  }
28
10
  //# sourceMappingURL=session-queue.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"session-queue.d.ts","sourceRoot":"","sources":["../../src/storage/session-queue.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAKpD;;;GAGG;AACH,qBAAa,YAAY;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;gBAEjB,QAAQ,EAAE,MAAM;IAM5B,kCAAkC;YACpB,SAAS;IAIvB,6DAA6D;IACvD,WAAW,CAAC,OAAO,EAAE,kBAAkB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAO/D;;;OAGG;IACG,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;QAC5C,OAAO,EAAE,kBAAkB,EAAE,CAAC;QAC9B,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IAkBF,oDAAoD;IAC9C,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK/C,wEAAwE;IAClE,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;CASpC"}
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"}
@@ -1,65 +1,11 @@
1
- import { readFile, writeFile, appendFile, mkdir } from "node:fs/promises";
2
- import { join } from "node:path";
3
- const QUEUE_FILE = "session-queue.jsonl";
4
- const STATE_FILE = "session-queue.state.json";
1
+ import { BaseQueue } from "./base-queue.js";
5
2
  /**
6
3
  * Append-only local queue for session records.
7
- * Mirrors LocalQueue but uses separate files and SessionQueueRecord type.
4
+ * Thin wrapper around BaseQueue with session-specific file names.
8
5
  */
9
- export class SessionQueue {
10
- queuePath;
11
- statePath;
12
- dir;
6
+ export class SessionQueue 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 multiple records to the queue in a single write */
23
- async appendBatch(records) {
24
- if (records.length === 0)
25
- return;
26
- await this.ensureDir();
27
- const data = records.map((r) => JSON.stringify(r)).join("\n") + "\n";
28
- await appendFile(this.queuePath, data);
29
- }
30
- /**
31
- * Read records from the queue starting at a byte offset.
32
- * Returns parsed records and the new offset (end of file).
33
- */
34
- async readFromOffset(offset) {
35
- let raw;
36
- try {
37
- raw = await readFile(this.queuePath, "utf-8");
38
- }
39
- catch {
40
- return { records: [], newOffset: 0 };
41
- }
42
- const slice = raw.slice(offset);
43
- const lines = slice.split("\n").filter((line) => line.trim().length > 0);
44
- const records = lines.map((line) => JSON.parse(line));
45
- const newOffset = Buffer.byteLength(raw, "utf-8");
46
- return { records, newOffset };
47
- }
48
- /** Save the upload byte offset to the state file */
49
- async saveOffset(offset) {
50
- await this.ensureDir();
51
- await writeFile(this.statePath, JSON.stringify({ offset }) + "\n");
52
- }
53
- /** Load the upload byte offset. Returns 0 if not found or corrupted. */
54
- async loadOffset() {
55
- try {
56
- const raw = await readFile(this.statePath, "utf-8");
57
- const state = JSON.parse(raw);
58
- return state.offset ?? 0;
59
- }
60
- catch {
61
- return 0;
62
- }
8
+ super(storeDir, "session-queue.jsonl", "session-queue.state.json");
63
9
  }
64
10
  }
65
11
  //# sourceMappingURL=session-queue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"session-queue.js","sourceRoot":"","sources":["../../src/storage/session-queue.ts"],"names":[],"mappings":"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"}
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"}
@@ -5,6 +5,10 @@
5
5
  export declare function resolveDefaultPaths(home?: string): {
6
6
  /** Pew state directory: ~/.config/pew/ */
7
7
  stateDir: string;
8
+ /** Pew bin directory: ~/.config/pew/bin/ */
9
+ binDir: string;
10
+ /** notify.cjs path: ~/.config/pew/bin/notify.cjs */
11
+ notifyPath: string;
8
12
  /** Claude Code data: ~/.claude */
9
13
  claudeDir: string;
10
14
  /** Codex CLI sessions: ~/.codex/sessions (or $CODEX_HOME/sessions) */
@@ -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;IAGhD,0CAA0C;;IAE1C,kCAAkC;;IAElC,sEAAsE;;IAEtE,iCAAiC;;IAEjC,wEAAwE;;IASxE,oEAAoE;;IAEpE,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,4CAA4C;;IAE5C,oDAAoD;;IAEpD,kCAAkC;;IAElC,sEAAsE;;IAEtE,iCAAiC;;IAEjC,wEAAwE;;IASxE,oEAAoE;;IAEpE,iCAAiC;;EAGpC"}
@@ -9,6 +9,10 @@ export function resolveDefaultPaths(home = homedir()) {
9
9
  return {
10
10
  /** Pew state directory: ~/.config/pew/ */
11
11
  stateDir: join(home, ".config", "pew"),
12
+ /** Pew bin directory: ~/.config/pew/bin/ */
13
+ binDir: join(home, ".config", "pew", "bin"),
14
+ /** notify.cjs path: ~/.config/pew/bin/notify.cjs */
15
+ notifyPath: join(home, ".config", "pew", "bin", "notify.cjs"),
12
16
  /** Claude Code data: ~/.claude */
13
17
  claudeDir: join(home, ".claude"),
14
18
  /** Codex CLI sessions: ~/.codex/sessions (or $CODEX_HOME/sessions) */
@@ -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,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"}
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,4CAA4C;QAC5C,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC;QAC3C,oDAAoD;QACpD,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,CAAC;QAC7D,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.6.0",
3
+ "version": "0.7.0",
4
4
  "description": "Track token usage from your local AI coding tools",
5
5
  "type": "module",
6
6
  "bin": {