devrage 0.0.4 → 0.5.3

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 (39) hide show
  1. package/dist/cli.js +2436 -210
  2. package/dist/cli.js.map +4 -4
  3. package/dist/lib/adapters/amp.d.ts.map +1 -1
  4. package/dist/lib/adapters/amp.js +171 -7
  5. package/dist/lib/adapters/amp.js.map +1 -1
  6. package/dist/lib/adapters/claude.d.ts.map +1 -1
  7. package/dist/lib/adapters/claude.js +147 -49
  8. package/dist/lib/adapters/claude.js.map +1 -1
  9. package/dist/lib/adapters/cline.d.ts.map +1 -1
  10. package/dist/lib/adapters/cline.js +17 -12
  11. package/dist/lib/adapters/cline.js.map +1 -1
  12. package/dist/lib/adapters/codex.d.ts.map +1 -1
  13. package/dist/lib/adapters/codex.js +169 -14
  14. package/dist/lib/adapters/codex.js.map +1 -1
  15. package/dist/lib/adapters/cursor.d.ts +3 -0
  16. package/dist/lib/adapters/cursor.d.ts.map +1 -0
  17. package/dist/lib/adapters/cursor.js +540 -0
  18. package/dist/lib/adapters/cursor.js.map +1 -0
  19. package/dist/lib/adapters/index.d.ts +61 -0
  20. package/dist/lib/adapters/index.d.ts.map +1 -1
  21. package/dist/lib/adapters/index.js +2 -0
  22. package/dist/lib/adapters/index.js.map +1 -1
  23. package/dist/lib/adapters/opencode.d.ts.map +1 -1
  24. package/dist/lib/adapters/opencode.js +96 -16
  25. package/dist/lib/adapters/opencode.js.map +1 -1
  26. package/dist/lib/adapters/pi.d.ts.map +1 -1
  27. package/dist/lib/adapters/pi.js +113 -11
  28. package/dist/lib/adapters/pi.js.map +1 -1
  29. package/dist/lib/adapters/zed.d.ts.map +1 -1
  30. package/dist/lib/adapters/zed.js +18 -11
  31. package/dist/lib/adapters/zed.js.map +1 -1
  32. package/dist/lib/detector/index.d.ts.map +1 -1
  33. package/dist/lib/detector/index.js +12 -6
  34. package/dist/lib/detector/index.js.map +1 -1
  35. package/dist/lib/index.d.ts +1 -1
  36. package/dist/lib/index.d.ts.map +1 -1
  37. package/dist/lib/index.js +1 -1
  38. package/dist/lib/index.js.map +1 -1
  39. package/package.json +3 -1
@@ -20,27 +20,36 @@ export function codexAdapter() {
20
20
  return {
21
21
  name: "codex",
22
22
  async *messages(options) {
23
- yield* walkCodexSessions(CODEX_SESSIONS_DIR, options);
23
+ for await (const file of discoverCodexSessionFiles(CODEX_SESSIONS_DIR)) {
24
+ yield* parseCodexJsonl(file.filePath, { session: file.session, since: options?.since });
25
+ }
26
+ },
27
+ async *usage(options) {
28
+ for await (const file of discoverCodexSessionFiles(CODEX_SESSIONS_DIR)) {
29
+ yield* parseCodexUsageJsonl(file.filePath, {
30
+ session: file.session,
31
+ since: options?.since,
32
+ });
33
+ }
24
34
  },
25
35
  };
26
36
  }
27
- async function* walkCodexSessions(dir, options) {
37
+ async function* discoverCodexSessionFiles(dir) {
28
38
  let entries;
29
39
  try {
30
40
  entries = await readdir(dir);
31
41
  }
32
42
  catch {
33
- return; // Codex not installed or no sessions
43
+ return;
34
44
  }
35
45
  for (const entry of entries) {
36
46
  const fullPath = join(dir, entry);
37
47
  const entryStat = await stat(fullPath);
38
48
  if (entryStat.isDirectory()) {
39
- yield* walkCodexSessions(fullPath, options);
49
+ yield* discoverCodexSessionFiles(fullPath);
40
50
  }
41
51
  else if (entry.endsWith(".jsonl")) {
42
- const session = entry.replace(".jsonl", "");
43
- yield* parseCodexJsonl(fullPath, { session, since: options?.since });
52
+ yield { filePath: fullPath, session: entry.replace(".jsonl", "") };
44
53
  }
45
54
  }
46
55
  }
@@ -50,29 +59,36 @@ async function* parseCodexJsonl(filePath, context) {
50
59
  crlfDelay: Infinity,
51
60
  });
52
61
  for await (const line of rl) {
53
- if (!line.trim())
62
+ if (!line.trim()) {
54
63
  continue;
64
+ }
55
65
  try {
56
66
  const entry = JSON.parse(line);
57
67
  // Only care about response_item entries with user messages
58
- if (entry.type !== "response_item")
68
+ if (entry.type !== "response_item") {
59
69
  continue;
70
+ }
60
71
  const payload = entry.payload;
61
- if (!payload || payload.role !== "user")
72
+ if (!payload || payload.role !== "user") {
62
73
  continue;
74
+ }
63
75
  const text = extractText(payload.content);
64
- if (!text)
76
+ if (!text) {
65
77
  continue;
78
+ }
66
79
  // Skip environment context injections (they start with <environment_context>)
67
- if (text.startsWith("<environment_context>"))
80
+ if (text.startsWith("<environment_context>")) {
68
81
  continue;
82
+ }
69
83
  // Skip permission/sandbox instructions
70
- if (text.startsWith("<permissions instructions>"))
84
+ if (text.startsWith("<permissions instructions>")) {
71
85
  continue;
86
+ }
72
87
  if (context.since && entry.timestamp) {
73
88
  const ts = new Date(entry.timestamp);
74
- if (ts < context.since)
89
+ if (ts < context.since) {
75
90
  continue;
91
+ }
76
92
  }
77
93
  yield {
78
94
  text,
@@ -86,8 +102,9 @@ async function* parseCodexJsonl(filePath, context) {
86
102
  }
87
103
  }
88
104
  function extractText(content) {
89
- if (!Array.isArray(content))
105
+ if (!Array.isArray(content)) {
90
106
  return null;
107
+ }
91
108
  const parts = content
92
109
  .filter((p) => typeof p === "object" &&
93
110
  p !== null &&
@@ -96,4 +113,142 @@ function extractText(content) {
96
113
  .map((p) => p.text);
97
114
  return parts.length > 0 ? parts.join(" ") : null;
98
115
  }
116
+ /** Codex token_count events include both cumulative totals and the last completed response. */
117
+ async function* parseCodexUsageJsonl(filePath, context) {
118
+ const rl = createInterface({
119
+ input: createReadStream(filePath, { encoding: "utf-8" }),
120
+ crlfDelay: Infinity,
121
+ });
122
+ let model;
123
+ let previousTotal = null;
124
+ let previousUsageSignature = null;
125
+ for await (const line of rl) {
126
+ if (!line.trim()) {
127
+ continue;
128
+ }
129
+ try {
130
+ const entry = JSON.parse(line);
131
+ const payload = asRecord(entry["payload"]);
132
+ if (entry["type"] === "turn_context") {
133
+ model = stringValue(payload?.["model"]) ?? model;
134
+ continue;
135
+ }
136
+ if (entry["type"] !== "event_msg" || payload?.["type"] !== "token_count") {
137
+ continue;
138
+ }
139
+ const info = asRecord(payload["info"]);
140
+ if (!info) {
141
+ continue;
142
+ }
143
+ const lastUsageValue = info["last_token_usage"];
144
+ const lastUsage = parseCodexTokenUsage(lastUsageValue);
145
+ const total = parseCodexTokenUsage(info["total_token_usage"]);
146
+ let usage = null;
147
+ if (lastUsageValue !== undefined) {
148
+ if (lastUsage && hasBillableUsage(lastUsage)) {
149
+ const signature = codexUsageSignature(lastUsage, total);
150
+ if (signature !== previousUsageSignature) {
151
+ usage = lastUsage;
152
+ }
153
+ previousUsageSignature = signature;
154
+ }
155
+ }
156
+ else if (total) {
157
+ const delta = previousTotal ? subtractCodexUsage(total, previousTotal) : total;
158
+ if (hasBillableUsage(delta)) {
159
+ usage = delta;
160
+ }
161
+ }
162
+ if (total && hasBillableUsage(total)) {
163
+ previousTotal = total;
164
+ }
165
+ if (!usage) {
166
+ continue;
167
+ }
168
+ const timestamp = stringValue(entry["timestamp"]);
169
+ if (context.since && timestamp) {
170
+ const ts = new Date(timestamp);
171
+ if (ts < context.since) {
172
+ continue;
173
+ }
174
+ }
175
+ const reasoningTokens = Math.min(usage.reasoningOutputTokens, usage.outputTokens);
176
+ yield {
177
+ agent: "codex",
178
+ provider: "openai",
179
+ model,
180
+ timestamp,
181
+ session: context.session,
182
+ inputTokens: Math.max(usage.inputTokens - usage.cachedInputTokens, 0),
183
+ outputTokens: Math.max(usage.outputTokens - reasoningTokens, 0),
184
+ reasoningTokens,
185
+ cacheReadTokens: usage.cachedInputTokens,
186
+ cacheWriteTokens: 0,
187
+ };
188
+ }
189
+ catch {
190
+ // Skip malformed lines
191
+ }
192
+ }
193
+ }
194
+ function parseCodexTokenUsage(value) {
195
+ const usage = asRecord(value);
196
+ if (!usage) {
197
+ return null;
198
+ }
199
+ const hasUsageField = [
200
+ "input_tokens",
201
+ "cached_input_tokens",
202
+ "output_tokens",
203
+ "reasoning_output_tokens",
204
+ "total_tokens",
205
+ ].some((key) => typeof usage[key] === "number" && Number.isFinite(usage[key]));
206
+ if (!hasUsageField) {
207
+ return null;
208
+ }
209
+ return {
210
+ inputTokens: numberValue(usage["input_tokens"]),
211
+ cachedInputTokens: numberValue(usage["cached_input_tokens"]),
212
+ outputTokens: numberValue(usage["output_tokens"]),
213
+ reasoningOutputTokens: numberValue(usage["reasoning_output_tokens"]),
214
+ totalTokens: numberValue(usage["total_tokens"]),
215
+ };
216
+ }
217
+ function subtractCodexUsage(current, previous) {
218
+ return {
219
+ inputTokens: Math.max(current.inputTokens - previous.inputTokens, 0),
220
+ cachedInputTokens: Math.max(current.cachedInputTokens - previous.cachedInputTokens, 0),
221
+ outputTokens: Math.max(current.outputTokens - previous.outputTokens, 0),
222
+ reasoningOutputTokens: Math.max(current.reasoningOutputTokens - previous.reasoningOutputTokens, 0),
223
+ totalTokens: Math.max(current.totalTokens - previous.totalTokens, 0),
224
+ };
225
+ }
226
+ function hasBillableUsage(usage) {
227
+ return (usage.inputTokens + usage.cachedInputTokens + usage.outputTokens + usage.reasoningOutputTokens >
228
+ 0);
229
+ }
230
+ function codexUsageSignature(usage, total) {
231
+ return [
232
+ usage.inputTokens,
233
+ usage.cachedInputTokens,
234
+ usage.outputTokens,
235
+ usage.reasoningOutputTokens,
236
+ total?.inputTokens ?? "",
237
+ total?.cachedInputTokens ?? "",
238
+ total?.outputTokens ?? "",
239
+ total?.reasoningOutputTokens ?? "",
240
+ ].join(":");
241
+ }
242
+ function numberValue(value) {
243
+ return typeof value === "number" && Number.isFinite(value) ? value : 0;
244
+ }
245
+ function stringValue(value) {
246
+ return typeof value === "string" && value.trim() ? value : undefined;
247
+ }
248
+ function asRecord(value) {
249
+ if (typeof value !== "object" || value === null || Array.isArray(value)) {
250
+ return null;
251
+ }
252
+ return value;
253
+ }
99
254
  //# sourceMappingURL=codex.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"codex.js","sourceRoot":"","sources":["../../../src/adapters/codex.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"codex.js","sourceRoot":"","sources":["../../../src/adapters/codex.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { Adapter } from "./index";
2
+ export declare function cursorAdapter(): Adapter;
3
+ //# sourceMappingURL=cursor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cursor.d.ts","sourceRoot":"","sources":["../../../src/adapters/cursor.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAwC,MAAM,SAAS,CAAC;AAmC7E,wBAAgB,aAAa,IAAI,OAAO,CAkBvC"}