@nocoo/pew 1.11.0 → 1.12.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/cli.d.ts.map +1 -1
- package/dist/cli.js +9 -5
- package/dist/cli.js.map +1 -1
- package/dist/commands/notify.d.ts.map +1 -1
- package/dist/commands/notify.js +135 -5
- package/dist/commands/notify.js.map +1 -1
- package/dist/commands/session-sync.d.ts +0 -2
- package/dist/commands/session-sync.d.ts.map +1 -1
- package/dist/commands/session-sync.js +9 -4
- package/dist/commands/session-sync.js.map +1 -1
- package/dist/commands/status.d.ts +1 -0
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +2 -0
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/sync.d.ts +4 -0
- package/dist/commands/sync.d.ts.map +1 -1
- package/dist/commands/sync.js +4 -2
- package/dist/commands/sync.js.map +1 -1
- package/dist/discovery/sources.d.ts +5 -0
- package/dist/discovery/sources.d.ts.map +1 -1
- package/dist/discovery/sources.js +7 -0
- package/dist/discovery/sources.js.map +1 -1
- package/dist/drivers/registry.d.ts +1 -0
- package/dist/drivers/registry.d.ts.map +1 -1
- package/dist/drivers/registry.js +4 -0
- package/dist/drivers/registry.js.map +1 -1
- package/dist/drivers/token/copilot-cli-token-driver.d.ts +15 -0
- package/dist/drivers/token/copilot-cli-token-driver.d.ts.map +1 -0
- package/dist/drivers/token/copilot-cli-token-driver.js +46 -0
- package/dist/drivers/token/copilot-cli-token-driver.js.map +1 -0
- package/dist/drivers/types.d.ts +1 -0
- package/dist/drivers/types.d.ts.map +1 -1
- package/dist/notifier/coordinator.d.ts +14 -10
- package/dist/notifier/coordinator.d.ts.map +1 -1
- package/dist/notifier/coordinator.js +134 -78
- package/dist/notifier/coordinator.js.map +1 -1
- package/dist/notifier/lockfile.d.ts +81 -0
- package/dist/notifier/lockfile.d.ts.map +1 -0
- package/dist/notifier/lockfile.js +150 -0
- package/dist/notifier/lockfile.js.map +1 -0
- package/dist/parsers/copilot-cli.d.ts +23 -0
- package/dist/parsers/copilot-cli.d.ts.map +1 -0
- package/dist/parsers/copilot-cli.js +173 -0
- package/dist/parsers/copilot-cli.js.map +1 -0
- package/dist/utils/paths.d.ts +2 -0
- package/dist/utils/paths.d.ts.map +1 -1
- package/dist/utils/paths.js +2 -0
- package/dist/utils/paths.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
import { createReadStream } from "node:fs";
|
|
2
|
+
import { open, stat } from "node:fs/promises";
|
|
3
|
+
import { createInterface } from "node:readline";
|
|
4
|
+
import { isAllZero, toNonNegInt } from "../utils/token-delta.js";
|
|
5
|
+
/**
|
|
6
|
+
* Parse a GitHub Copilot CLI process log file incrementally from a byte offset.
|
|
7
|
+
*
|
|
8
|
+
* Log format: Each telemetry block starts with a line containing
|
|
9
|
+
* `[Telemetry] cli.telemetry:` followed by a multi-line JSON object.
|
|
10
|
+
* We extract `assistant_usage` events which carry per-request token counts.
|
|
11
|
+
*
|
|
12
|
+
* Token fields:
|
|
13
|
+
* metrics.input_tokens → inputTokens (total, includes cached)
|
|
14
|
+
* metrics.cache_read_tokens → cachedInputTokens
|
|
15
|
+
* metrics.output_tokens → outputTokens
|
|
16
|
+
*/
|
|
17
|
+
export async function parseCopilotCliFile(opts) {
|
|
18
|
+
const { filePath, startOffset } = opts;
|
|
19
|
+
const deltas = [];
|
|
20
|
+
const st = await stat(filePath).catch(() => null);
|
|
21
|
+
if (!st || !st.isFile())
|
|
22
|
+
return { deltas, endOffset: startOffset };
|
|
23
|
+
const fileSize = st.size;
|
|
24
|
+
if (startOffset >= fileSize)
|
|
25
|
+
return { deltas, endOffset: startOffset };
|
|
26
|
+
// Detect line ending width (LF=1, CRLF=2) from the first 4 KB.
|
|
27
|
+
// readline with crlfDelay:Infinity strips both \n and \r\n, but we
|
|
28
|
+
// must account for the actual on-disk bytes to keep offset tracking
|
|
29
|
+
// accurate. Windows-generated logs use \r\n.
|
|
30
|
+
const eolBytes = await detectEolSize(filePath);
|
|
31
|
+
const stream = createReadStream(filePath, {
|
|
32
|
+
start: startOffset,
|
|
33
|
+
encoding: "utf8",
|
|
34
|
+
});
|
|
35
|
+
const rl = createInterface({ input: stream, crlfDelay: Infinity });
|
|
36
|
+
// Timestamp pattern that starts a new log line
|
|
37
|
+
const LOG_LINE_RE = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}/;
|
|
38
|
+
const TELEMETRY_MARKER = "[Telemetry] cli.telemetry:";
|
|
39
|
+
let collectingJson = false;
|
|
40
|
+
let jsonLines = [];
|
|
41
|
+
// Track byte position relative to startOffset for safe endOffset.
|
|
42
|
+
// If the file ends mid-JSON-block, we rewind to the last fully
|
|
43
|
+
// parsed position so the incomplete block gets re-parsed next sync.
|
|
44
|
+
let bytesConsumed = 0;
|
|
45
|
+
let lastCompletedOffset = startOffset;
|
|
46
|
+
/**
|
|
47
|
+
* Try to parse the accumulated JSON lines.
|
|
48
|
+
* Returns true if parse succeeded (or lines were empty), false if
|
|
49
|
+
* the buffer looks incomplete (JSON.parse threw SyntaxError).
|
|
50
|
+
*/
|
|
51
|
+
function tryFlushJson() {
|
|
52
|
+
if (jsonLines.length === 0)
|
|
53
|
+
return true;
|
|
54
|
+
const raw = jsonLines.join("\n");
|
|
55
|
+
try {
|
|
56
|
+
const parsed = JSON.parse(raw);
|
|
57
|
+
if (parsed.kind === "assistant_usage") {
|
|
58
|
+
const delta = extractUsageDelta(parsed);
|
|
59
|
+
if (delta)
|
|
60
|
+
deltas.push(delta);
|
|
61
|
+
}
|
|
62
|
+
jsonLines = [];
|
|
63
|
+
return true;
|
|
64
|
+
}
|
|
65
|
+
catch {
|
|
66
|
+
// Could be incomplete JSON (still accumulating) or truly malformed
|
|
67
|
+
return false;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
try {
|
|
71
|
+
for await (const line of rl) {
|
|
72
|
+
// Add line content bytes + EOL bytes that readline stripped
|
|
73
|
+
bytesConsumed += Buffer.byteLength(line, "utf8") + eolBytes;
|
|
74
|
+
if (LOG_LINE_RE.test(line)) {
|
|
75
|
+
// New log line — flush any in-progress JSON block first
|
|
76
|
+
if (collectingJson) {
|
|
77
|
+
// Force-flush: a new log line means the JSON block ended (or was malformed).
|
|
78
|
+
// tryFlushJson clears jsonLines on success; on failure the block was
|
|
79
|
+
// malformed and we discard it below.
|
|
80
|
+
tryFlushJson();
|
|
81
|
+
jsonLines = [];
|
|
82
|
+
collectingJson = false;
|
|
83
|
+
}
|
|
84
|
+
if (line.includes(TELEMETRY_MARKER)) {
|
|
85
|
+
collectingJson = true;
|
|
86
|
+
// Do NOT advance lastCompletedOffset past the marker line.
|
|
87
|
+
// If the JSON block that follows is incomplete (file truncated),
|
|
88
|
+
// we need to rewind to BEFORE this marker so the next sync
|
|
89
|
+
// re-reads it and re-enters collectingJson mode.
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
// Non-telemetry log line — safe to advance past it
|
|
93
|
+
lastCompletedOffset = startOffset + bytesConsumed;
|
|
94
|
+
}
|
|
95
|
+
continue;
|
|
96
|
+
}
|
|
97
|
+
if (collectingJson) {
|
|
98
|
+
jsonLines.push(line);
|
|
99
|
+
// Attempt JSON.parse after each line containing "}" — this is
|
|
100
|
+
// more robust than brace-depth counting which breaks on braces
|
|
101
|
+
// inside JSON string values.
|
|
102
|
+
if (line.includes("}")) {
|
|
103
|
+
const parsed = tryFlushJson();
|
|
104
|
+
if (parsed) {
|
|
105
|
+
collectingJson = false;
|
|
106
|
+
lastCompletedOffset = startOffset + bytesConsumed;
|
|
107
|
+
}
|
|
108
|
+
// If parse failed, keep accumulating — might be nested object
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
finally {
|
|
114
|
+
rl.close();
|
|
115
|
+
stream.destroy();
|
|
116
|
+
}
|
|
117
|
+
// Do NOT flush trailing incomplete blocks — leave them for next sync.
|
|
118
|
+
// If the file was fully consumed and no block is pending, endOffset
|
|
119
|
+
// equals fileSize. Otherwise endOffset rewinds to the safe point.
|
|
120
|
+
const endOffset = collectingJson && jsonLines.length > 0
|
|
121
|
+
? lastCompletedOffset
|
|
122
|
+
: startOffset + bytesConsumed;
|
|
123
|
+
return { deltas, endOffset };
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Extract a ParsedDelta from an `assistant_usage` telemetry event.
|
|
127
|
+
* Returns null if the event has no usable token data.
|
|
128
|
+
*/
|
|
129
|
+
function extractUsageDelta(event) {
|
|
130
|
+
const props = event.properties;
|
|
131
|
+
const metrics = event.metrics;
|
|
132
|
+
const model = typeof props?.model === "string" && props.model.length > 0
|
|
133
|
+
? props.model
|
|
134
|
+
: "unknown";
|
|
135
|
+
// Prefer created_at from the event; fall back to current time
|
|
136
|
+
const timestamp = typeof event.created_at === "string" && event.created_at.length > 0
|
|
137
|
+
? event.created_at
|
|
138
|
+
: new Date().toISOString();
|
|
139
|
+
const tokens = {
|
|
140
|
+
inputTokens: toNonNegInt(metrics?.input_tokens),
|
|
141
|
+
cachedInputTokens: toNonNegInt(metrics?.cache_read_tokens),
|
|
142
|
+
outputTokens: toNonNegInt(metrics?.output_tokens),
|
|
143
|
+
reasoningOutputTokens: 0,
|
|
144
|
+
};
|
|
145
|
+
if (isAllZero(tokens))
|
|
146
|
+
return null;
|
|
147
|
+
return { source: "copilot-cli", model, timestamp, tokens };
|
|
148
|
+
}
|
|
149
|
+
// ---------------------------------------------------------------------------
|
|
150
|
+
// EOL detection
|
|
151
|
+
// ---------------------------------------------------------------------------
|
|
152
|
+
/**
|
|
153
|
+
* Detect the line ending width of a file by scanning its first 4 KB.
|
|
154
|
+
* Returns 2 for CRLF (`\r\n`), 1 for LF (`\n`).
|
|
155
|
+
* Falls back to 1 (LF) if no newline is found in the probe window.
|
|
156
|
+
*/
|
|
157
|
+
async function detectEolSize(filePath) {
|
|
158
|
+
const fh = await open(filePath, "r");
|
|
159
|
+
try {
|
|
160
|
+
const buf = Buffer.alloc(4096);
|
|
161
|
+
const { bytesRead } = await fh.read(buf, 0, 4096);
|
|
162
|
+
for (let i = 0; i < bytesRead; i++) {
|
|
163
|
+
if (buf[i] === 0x0a) {
|
|
164
|
+
return i > 0 && buf[i - 1] === 0x0d ? 2 : 1;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
return 1;
|
|
168
|
+
}
|
|
169
|
+
finally {
|
|
170
|
+
await fh.close();
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
//# sourceMappingURL=copilot-cli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"copilot-cli.js","sourceRoot":"","sources":["../../src/parsers/copilot-cli.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/paths.d.ts
CHANGED
|
@@ -23,5 +23,7 @@ export declare function resolveDefaultPaths(home?: string): {
|
|
|
23
23
|
openclawDir: string;
|
|
24
24
|
/** VSCode Copilot base dirs (stable + insiders, platform-aware) */
|
|
25
25
|
vscodeCopilotDirs: string[];
|
|
26
|
+
/** GitHub Copilot CLI logs: ~/.copilot/logs */
|
|
27
|
+
copilotCliLogsDir: string;
|
|
26
28
|
};
|
|
27
29
|
//# sourceMappingURL=paths.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/utils/paths.ts"],"names":[],"mappings":"AAwCA;;;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;;IAEjC,mEAAmE;;
|
|
1
|
+
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/utils/paths.ts"],"names":[],"mappings":"AAwCA;;;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;;IAEjC,mEAAmE;;IAEnE,+CAA+C;;EAGlD"}
|
package/dist/utils/paths.js
CHANGED
|
@@ -60,6 +60,8 @@ export function resolveDefaultPaths(home = homedir()) {
|
|
|
60
60
|
openclawDir: join(home, ".openclaw"),
|
|
61
61
|
/** VSCode Copilot base dirs (stable + insiders, platform-aware) */
|
|
62
62
|
vscodeCopilotDirs: resolveVscodeCopilotDirs(home),
|
|
63
|
+
/** GitHub Copilot CLI logs: ~/.copilot/logs */
|
|
64
|
+
copilotCliLogsDir: join(home, ".copilot", "logs"),
|
|
63
65
|
};
|
|
64
66
|
}
|
|
65
67
|
//# sourceMappingURL=paths.js.map
|
package/dist/utils/paths.js.map
CHANGED
|
@@ -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;;;;;;;;;;GAUG;AACH,SAAS,wBAAwB,CAAC,IAAY;IAC5C,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAElC,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,qBAAqB,CAAC,CAAC;QAC1D,OAAO;YACL,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC;YAC1B,IAAI,CAAC,IAAI,EAAE,iBAAiB,EAAE,MAAM,CAAC;SACtC,CAAC;IACJ,CAAC;IAED,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;QACxE,OAAO;YACL,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC;YAC7B,IAAI,CAAC,OAAO,EAAE,iBAAiB,EAAE,MAAM,CAAC;SACzC,CAAC;IACJ,CAAC;IAED,uBAAuB;IACvB,OAAO;QACL,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC;QACrC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,CAAC;KACjD,CAAC;AACJ,CAAC;AAED;;;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;QACpC,mEAAmE;QACnE,iBAAiB,EAAE,wBAAwB,CAAC,IAAI,CAAC;KAClD,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;;;;;;;;;;GAUG;AACH,SAAS,wBAAwB,CAAC,IAAY;IAC5C,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAElC,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,qBAAqB,CAAC,CAAC;QAC1D,OAAO;YACL,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC;YAC1B,IAAI,CAAC,IAAI,EAAE,iBAAiB,EAAE,MAAM,CAAC;SACtC,CAAC;IACJ,CAAC;IAED,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;QACxE,OAAO;YACL,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC;YAC7B,IAAI,CAAC,OAAO,EAAE,iBAAiB,EAAE,MAAM,CAAC;SACzC,CAAC;IACJ,CAAC;IAED,uBAAuB;IACvB,OAAO;QACL,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC;QACrC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,CAAC;KACjD,CAAC;AACJ,CAAC;AAED;;;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;QACpC,mEAAmE;QACnE,iBAAiB,EAAE,wBAAwB,CAAC,IAAI,CAAC;QACjD,+CAA+C;QAC/C,iBAAiB,EAAE,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC;KAClD,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nocoo/pew",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.12.0",
|
|
4
4
|
"description": "The contribution graph for AI-native developers",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
],
|
|
37
37
|
"license": "MIT",
|
|
38
38
|
"engines": {
|
|
39
|
-
"node": ">=
|
|
39
|
+
"node": ">=18.0.0"
|
|
40
40
|
},
|
|
41
41
|
"dependencies": {
|
|
42
42
|
"citty": "^0.1.0",
|