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.
- package/dist/cli.js +2436 -210
- package/dist/cli.js.map +4 -4
- package/dist/lib/adapters/amp.d.ts.map +1 -1
- package/dist/lib/adapters/amp.js +171 -7
- package/dist/lib/adapters/amp.js.map +1 -1
- package/dist/lib/adapters/claude.d.ts.map +1 -1
- package/dist/lib/adapters/claude.js +147 -49
- package/dist/lib/adapters/claude.js.map +1 -1
- package/dist/lib/adapters/cline.d.ts.map +1 -1
- package/dist/lib/adapters/cline.js +17 -12
- package/dist/lib/adapters/cline.js.map +1 -1
- package/dist/lib/adapters/codex.d.ts.map +1 -1
- package/dist/lib/adapters/codex.js +169 -14
- package/dist/lib/adapters/codex.js.map +1 -1
- package/dist/lib/adapters/cursor.d.ts +3 -0
- package/dist/lib/adapters/cursor.d.ts.map +1 -0
- package/dist/lib/adapters/cursor.js +540 -0
- package/dist/lib/adapters/cursor.js.map +1 -0
- package/dist/lib/adapters/index.d.ts +61 -0
- package/dist/lib/adapters/index.d.ts.map +1 -1
- package/dist/lib/adapters/index.js +2 -0
- package/dist/lib/adapters/index.js.map +1 -1
- package/dist/lib/adapters/opencode.d.ts.map +1 -1
- package/dist/lib/adapters/opencode.js +96 -16
- package/dist/lib/adapters/opencode.js.map +1 -1
- package/dist/lib/adapters/pi.d.ts.map +1 -1
- package/dist/lib/adapters/pi.js +113 -11
- package/dist/lib/adapters/pi.js.map +1 -1
- package/dist/lib/adapters/zed.d.ts.map +1 -1
- package/dist/lib/adapters/zed.js +18 -11
- package/dist/lib/adapters/zed.js.map +1 -1
- package/dist/lib/detector/index.d.ts.map +1 -1
- package/dist/lib/detector/index.js +12 -6
- package/dist/lib/detector/index.js.map +1 -1
- package/dist/lib/index.d.ts +1 -1
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/index.js +1 -1
- package/dist/lib/index.js.map +1 -1
- package/package.json +3 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"amp.d.ts","sourceRoot":"","sources":["../../../src/adapters/amp.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"amp.d.ts","sourceRoot":"","sources":["../../../src/adapters/amp.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAwC,MAAM,SAAS,CAAC;AAgB7E,wBAAgB,UAAU,IAAI,OAAO,CA8FpC"}
|
package/dist/lib/adapters/amp.js
CHANGED
|
@@ -30,21 +30,27 @@ export function ampAdapter() {
|
|
|
30
30
|
const filePath = join(threadsDir, file);
|
|
31
31
|
const threadId = file.replace(".json", "");
|
|
32
32
|
try {
|
|
33
|
-
const
|
|
34
|
-
|
|
35
|
-
if (!thread.messages || !Array.isArray(thread.messages))
|
|
33
|
+
const thread = await readAmpThread(filePath);
|
|
34
|
+
if (!thread) {
|
|
36
35
|
continue;
|
|
36
|
+
}
|
|
37
|
+
if (!thread.messages || !Array.isArray(thread.messages)) {
|
|
38
|
+
continue;
|
|
39
|
+
}
|
|
37
40
|
for (const msg of thread.messages) {
|
|
38
|
-
if (msg.role !== "user")
|
|
41
|
+
if (msg.role !== "user") {
|
|
39
42
|
continue;
|
|
43
|
+
}
|
|
40
44
|
const text = extractText(msg.content);
|
|
41
|
-
if (!text)
|
|
45
|
+
if (!text) {
|
|
42
46
|
continue;
|
|
47
|
+
}
|
|
43
48
|
const timestamp = msg.timestamp ?? msg.createdAt ?? undefined;
|
|
44
49
|
if (options?.since && timestamp) {
|
|
45
50
|
const ts = new Date(timestamp);
|
|
46
|
-
if (ts < options.since)
|
|
51
|
+
if (ts < options.since) {
|
|
47
52
|
continue;
|
|
53
|
+
}
|
|
48
54
|
}
|
|
49
55
|
yield {
|
|
50
56
|
text,
|
|
@@ -58,11 +64,49 @@ export function ampAdapter() {
|
|
|
58
64
|
}
|
|
59
65
|
}
|
|
60
66
|
},
|
|
67
|
+
async *usage(options) {
|
|
68
|
+
const threadsDir = getAmpThreadsDir();
|
|
69
|
+
let files;
|
|
70
|
+
try {
|
|
71
|
+
files = await readdir(threadsDir);
|
|
72
|
+
}
|
|
73
|
+
catch {
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
for (const file of files.filter((f) => f.endsWith(".json"))) {
|
|
77
|
+
const filePath = join(threadsDir, file);
|
|
78
|
+
const threadId = file.replace(".json", "");
|
|
79
|
+
try {
|
|
80
|
+
const thread = await readAmpThread(filePath);
|
|
81
|
+
if (!thread?.usageLedger) {
|
|
82
|
+
continue;
|
|
83
|
+
}
|
|
84
|
+
for (const record of extractAmpUsageRecords(thread.usageLedger, threadId)) {
|
|
85
|
+
if (options?.since && record.timestamp) {
|
|
86
|
+
const ts = new Date(record.timestamp);
|
|
87
|
+
if (ts < options.since) {
|
|
88
|
+
continue;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
yield record;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
catch {
|
|
95
|
+
// Skip malformed files
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
},
|
|
61
99
|
};
|
|
62
100
|
}
|
|
101
|
+
async function readAmpThread(filePath) {
|
|
102
|
+
const raw = await readFile(filePath, "utf-8");
|
|
103
|
+
const parsed = JSON.parse(raw);
|
|
104
|
+
return asRecord(parsed) ? parsed : null;
|
|
105
|
+
}
|
|
63
106
|
function extractText(content) {
|
|
64
|
-
if (typeof content === "string")
|
|
107
|
+
if (typeof content === "string") {
|
|
65
108
|
return content;
|
|
109
|
+
}
|
|
66
110
|
if (Array.isArray(content)) {
|
|
67
111
|
const parts = content
|
|
68
112
|
.filter((p) => typeof p === "object" && p !== null && typeof p.text === "string")
|
|
@@ -71,4 +115,124 @@ function extractText(content) {
|
|
|
71
115
|
}
|
|
72
116
|
return null;
|
|
73
117
|
}
|
|
118
|
+
function extractAmpUsageRecords(usageLedger, threadId) {
|
|
119
|
+
const records = [];
|
|
120
|
+
collectAmpUsage(usageLedger, threadId, records, {});
|
|
121
|
+
return records;
|
|
122
|
+
}
|
|
123
|
+
function collectAmpUsage(value, threadId, records, context, depth = 0) {
|
|
124
|
+
if (depth > 12) {
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
if (Array.isArray(value)) {
|
|
128
|
+
for (const item of value) {
|
|
129
|
+
collectAmpUsage(item, threadId, records, context, depth + 1);
|
|
130
|
+
}
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
const record = asRecord(value);
|
|
134
|
+
if (!record) {
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
const nextContext = {
|
|
138
|
+
provider: stringField(record, ["provider", "providerID", "providerId"]) ?? context.provider,
|
|
139
|
+
model: stringField(record, ["model", "modelID", "modelId"]) ?? context.model,
|
|
140
|
+
timestamp: timestampField(record) ?? context.timestamp,
|
|
141
|
+
};
|
|
142
|
+
const usageSource = firstRecordField(record, ["usage", "tokens", "tokenUsage"]) ?? record;
|
|
143
|
+
const rawInputTokens = tokenField(usageSource, ["inputTokens", "input_tokens", "promptTokens"]);
|
|
144
|
+
const outputTokens = tokenField(usageSource, [
|
|
145
|
+
"outputTokens",
|
|
146
|
+
"output_tokens",
|
|
147
|
+
"completionTokens",
|
|
148
|
+
]);
|
|
149
|
+
const reasoningTokens = tokenField(usageSource, ["reasoningTokens", "reasoning_output_tokens"]);
|
|
150
|
+
const cachedInputSubset = tokenField(usageSource, ["cachedInputTokens", "cached_input_tokens"]);
|
|
151
|
+
const cacheReadTokens = tokenField(usageSource, [
|
|
152
|
+
"cacheReadTokens",
|
|
153
|
+
"cache_read_tokens",
|
|
154
|
+
"cacheReadInputTokens",
|
|
155
|
+
"cache_read_input_tokens",
|
|
156
|
+
"cachedInputTokens",
|
|
157
|
+
"cached_input_tokens",
|
|
158
|
+
]);
|
|
159
|
+
const inputTokens = Math.max(rawInputTokens - cachedInputSubset, 0);
|
|
160
|
+
const cacheWriteTokens = tokenField(usageSource, [
|
|
161
|
+
"cacheWriteTokens",
|
|
162
|
+
"cache_write_tokens",
|
|
163
|
+
"cacheCreationInputTokens",
|
|
164
|
+
"cache_creation_input_tokens",
|
|
165
|
+
"cacheWriteInputTokens",
|
|
166
|
+
"cache_write_input_tokens",
|
|
167
|
+
]);
|
|
168
|
+
const billedCost = tokenField(record, [
|
|
169
|
+
"cost",
|
|
170
|
+
"totalCost",
|
|
171
|
+
"total_cost",
|
|
172
|
+
"billedCost",
|
|
173
|
+
"billed_cost",
|
|
174
|
+
]);
|
|
175
|
+
if (inputTokens + outputTokens + reasoningTokens + cacheReadTokens + cacheWriteTokens + billedCost >
|
|
176
|
+
0) {
|
|
177
|
+
records.push({
|
|
178
|
+
agent: "amp",
|
|
179
|
+
provider: nextContext.provider,
|
|
180
|
+
model: nextContext.model,
|
|
181
|
+
timestamp: nextContext.timestamp,
|
|
182
|
+
session: threadId,
|
|
183
|
+
billedCost,
|
|
184
|
+
inputTokens,
|
|
185
|
+
outputTokens,
|
|
186
|
+
reasoningTokens,
|
|
187
|
+
cacheReadTokens,
|
|
188
|
+
cacheWriteTokens,
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
for (const child of Object.values(record)) {
|
|
192
|
+
if (child !== usageSource && typeof child === "object" && child !== null) {
|
|
193
|
+
collectAmpUsage(child, threadId, records, nextContext, depth + 1);
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
function firstRecordField(record, fields) {
|
|
198
|
+
for (const field of fields) {
|
|
199
|
+
const value = asRecord(record[field]);
|
|
200
|
+
if (value) {
|
|
201
|
+
return value;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
return null;
|
|
205
|
+
}
|
|
206
|
+
function stringField(record, fields) {
|
|
207
|
+
for (const field of fields) {
|
|
208
|
+
const value = record[field];
|
|
209
|
+
if (typeof value === "string" && value.trim()) {
|
|
210
|
+
return value;
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
return undefined;
|
|
214
|
+
}
|
|
215
|
+
function timestampField(record) {
|
|
216
|
+
const value = stringField(record, ["timestamp", "createdAt", "time", "date"]);
|
|
217
|
+
if (value) {
|
|
218
|
+
const date = new Date(value);
|
|
219
|
+
return Number.isFinite(date.getTime()) ? date.toISOString() : undefined;
|
|
220
|
+
}
|
|
221
|
+
return undefined;
|
|
222
|
+
}
|
|
223
|
+
function tokenField(record, fields) {
|
|
224
|
+
for (const field of fields) {
|
|
225
|
+
const value = record[field];
|
|
226
|
+
if (typeof value === "number" && Number.isFinite(value)) {
|
|
227
|
+
return value;
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
return 0;
|
|
231
|
+
}
|
|
232
|
+
function asRecord(value) {
|
|
233
|
+
if (typeof value !== "object" || value === null || Array.isArray(value)) {
|
|
234
|
+
return null;
|
|
235
|
+
}
|
|
236
|
+
return value;
|
|
237
|
+
}
|
|
74
238
|
//# sourceMappingURL=amp.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"amp.js","sourceRoot":"","sources":["../../../src/adapters/amp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC;;;;;;;;GAQG;AAEH,SAAS,gBAAgB;IACvB,OAAO,IAAI,
|
|
1
|
+
{"version":3,"file":"amp.js","sourceRoot":"","sources":["../../../src/adapters/amp.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../../src/adapters/claude.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../../src/adapters/claude.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAwC,MAAM,SAAS,CAAC;AAc7E,wBAAgB,aAAa,IAAI,OAAO,CAcvC"}
|
|
@@ -17,52 +17,60 @@ export function claudeAdapter() {
|
|
|
17
17
|
return {
|
|
18
18
|
name: "claude",
|
|
19
19
|
async *messages(options) {
|
|
20
|
-
const
|
|
21
|
-
|
|
22
|
-
try {
|
|
23
|
-
projectDirs = await readdir(projectsDir);
|
|
20
|
+
for await (const file of discoverClaudeJsonlFiles()) {
|
|
21
|
+
yield* parseClaudeJsonl(file.filePath, { ...file, since: options?.since });
|
|
24
22
|
}
|
|
25
|
-
|
|
26
|
-
|
|
23
|
+
},
|
|
24
|
+
async *usage(options) {
|
|
25
|
+
for await (const file of discoverClaudeJsonlFiles()) {
|
|
26
|
+
yield* parseClaudeUsageJsonl(file.filePath, { ...file, since: options?.since });
|
|
27
27
|
}
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
28
|
+
},
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
async function* discoverClaudeJsonlFiles() {
|
|
32
|
+
let projectDirs;
|
|
33
|
+
try {
|
|
34
|
+
projectDirs = await readdir(CLAUDE_DIR);
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
for (const projectDir of projectDirs) {
|
|
40
|
+
const projectPath = join(CLAUDE_DIR, projectDir);
|
|
41
|
+
const projectStat = await stat(projectPath);
|
|
42
|
+
if (!projectStat.isDirectory()) {
|
|
43
|
+
continue;
|
|
44
|
+
}
|
|
45
|
+
const entries = await readdir(projectPath);
|
|
46
|
+
const jsonlFiles = entries.filter((f) => f.endsWith(".jsonl"));
|
|
47
|
+
for (const file of jsonlFiles) {
|
|
48
|
+
yield {
|
|
49
|
+
filePath: join(projectPath, file),
|
|
50
|
+
session: file.replace(".jsonl", ""),
|
|
51
|
+
project: projectDir,
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
// Also check for subagent JSONL files in session subdirectories
|
|
55
|
+
const subdirs = entries.filter((f) => !f.includes("."));
|
|
56
|
+
for (const subdir of subdirs) {
|
|
57
|
+
const subagentsDir = join(projectPath, subdir, "subagents");
|
|
58
|
+
try {
|
|
59
|
+
const subFiles = await readdir(subagentsDir);
|
|
60
|
+
const subJsonl = subFiles.filter((f) => f.endsWith(".jsonl"));
|
|
61
|
+
for (const file of subJsonl) {
|
|
62
|
+
yield {
|
|
63
|
+
filePath: join(subagentsDir, file),
|
|
64
|
+
session: `${subdir}/${file.replace(".jsonl", "")}`,
|
|
40
65
|
project: projectDir,
|
|
41
|
-
|
|
42
|
-
});
|
|
43
|
-
}
|
|
44
|
-
// Also check for subagent JSONL files in session subdirectories
|
|
45
|
-
const subdirs = entries.filter((f) => !f.includes("."));
|
|
46
|
-
for (const subdir of subdirs) {
|
|
47
|
-
const subagentsDir = join(projectPath, subdir, "subagents");
|
|
48
|
-
try {
|
|
49
|
-
const subFiles = await readdir(subagentsDir);
|
|
50
|
-
const subJsonl = subFiles.filter((f) => f.endsWith(".jsonl"));
|
|
51
|
-
for (const file of subJsonl) {
|
|
52
|
-
yield* parseClaudeJsonl(join(subagentsDir, file), {
|
|
53
|
-
session: `${subdir}/${file.replace(".jsonl", "")}`,
|
|
54
|
-
project: projectDir,
|
|
55
|
-
since: options?.since,
|
|
56
|
-
});
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
catch {
|
|
60
|
-
// No subagents directory, skip
|
|
61
|
-
}
|
|
66
|
+
};
|
|
62
67
|
}
|
|
63
68
|
}
|
|
64
|
-
|
|
65
|
-
|
|
69
|
+
catch {
|
|
70
|
+
// No subagents directory, skip
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
66
74
|
}
|
|
67
75
|
async function* parseClaudeJsonl(filePath, context) {
|
|
68
76
|
const rl = createInterface({
|
|
@@ -70,18 +78,21 @@ async function* parseClaudeJsonl(filePath, context) {
|
|
|
70
78
|
crlfDelay: Infinity,
|
|
71
79
|
});
|
|
72
80
|
for await (const line of rl) {
|
|
73
|
-
if (!line.trim())
|
|
81
|
+
if (!line.trim()) {
|
|
74
82
|
continue;
|
|
83
|
+
}
|
|
75
84
|
try {
|
|
76
85
|
const entry = JSON.parse(line);
|
|
77
86
|
const text = extractUserText(entry);
|
|
78
|
-
if (!text)
|
|
87
|
+
if (!text) {
|
|
79
88
|
continue;
|
|
89
|
+
}
|
|
80
90
|
const timestamp = extractTimestamp(entry);
|
|
81
91
|
if (context.since && timestamp) {
|
|
82
92
|
const ts = new Date(timestamp);
|
|
83
|
-
if (ts < context.since)
|
|
93
|
+
if (ts < context.since) {
|
|
84
94
|
continue;
|
|
95
|
+
}
|
|
85
96
|
}
|
|
86
97
|
yield {
|
|
87
98
|
text,
|
|
@@ -99,15 +110,17 @@ function extractUserText(entry) {
|
|
|
99
110
|
// Format: { "type": "user", "message": { "role": "user", "content": "..." } }
|
|
100
111
|
if (entry["type"] === "user") {
|
|
101
112
|
const message = entry["message"];
|
|
102
|
-
if (!message)
|
|
113
|
+
if (!message) {
|
|
103
114
|
return null;
|
|
115
|
+
}
|
|
104
116
|
return contentToString(message["content"]);
|
|
105
117
|
}
|
|
106
118
|
// Legacy format: { "type": "human", "message": { "content": [...] } }
|
|
107
119
|
if (entry["type"] === "human") {
|
|
108
120
|
const message = entry["message"];
|
|
109
|
-
if (!message)
|
|
121
|
+
if (!message) {
|
|
110
122
|
return null;
|
|
123
|
+
}
|
|
111
124
|
return contentToString(message["content"]);
|
|
112
125
|
}
|
|
113
126
|
// Flat format: { "role": "user", "content": "..." }
|
|
@@ -117,8 +130,9 @@ function extractUserText(entry) {
|
|
|
117
130
|
return null;
|
|
118
131
|
}
|
|
119
132
|
function contentToString(content) {
|
|
120
|
-
if (typeof content === "string")
|
|
133
|
+
if (typeof content === "string") {
|
|
121
134
|
return content;
|
|
135
|
+
}
|
|
122
136
|
if (Array.isArray(content)) {
|
|
123
137
|
const parts = content
|
|
124
138
|
.filter((p) => typeof p === "object" && p !== null && p.type === "text")
|
|
@@ -128,10 +142,94 @@ function contentToString(content) {
|
|
|
128
142
|
return null;
|
|
129
143
|
}
|
|
130
144
|
function extractTimestamp(entry) {
|
|
131
|
-
if (typeof entry["timestamp"] === "string")
|
|
145
|
+
if (typeof entry["timestamp"] === "string") {
|
|
132
146
|
return entry["timestamp"];
|
|
133
|
-
|
|
147
|
+
}
|
|
148
|
+
if (typeof entry["createdAt"] === "string") {
|
|
134
149
|
return entry["createdAt"];
|
|
150
|
+
}
|
|
135
151
|
return null;
|
|
136
152
|
}
|
|
153
|
+
/** Claude Code repeats assistant rows while streaming, so request/message IDs are deduped. */
|
|
154
|
+
async function* parseClaudeUsageJsonl(filePath, context) {
|
|
155
|
+
const rl = createInterface({
|
|
156
|
+
input: createReadStream(filePath, { encoding: "utf-8" }),
|
|
157
|
+
crlfDelay: Infinity,
|
|
158
|
+
});
|
|
159
|
+
const seen = new Set();
|
|
160
|
+
for await (const line of rl) {
|
|
161
|
+
if (!line.trim()) {
|
|
162
|
+
continue;
|
|
163
|
+
}
|
|
164
|
+
try {
|
|
165
|
+
const entry = JSON.parse(line);
|
|
166
|
+
const message = asRecord(entry["message"]);
|
|
167
|
+
if (!message || entry["type"] !== "assistant" || message["role"] !== "assistant") {
|
|
168
|
+
continue;
|
|
169
|
+
}
|
|
170
|
+
const usage = asRecord(message["usage"]);
|
|
171
|
+
if (!usage) {
|
|
172
|
+
continue;
|
|
173
|
+
}
|
|
174
|
+
const model = stringValue(message["model"]);
|
|
175
|
+
const timestamp = extractTimestamp(entry) ?? undefined;
|
|
176
|
+
if (context.since && timestamp) {
|
|
177
|
+
const ts = new Date(timestamp);
|
|
178
|
+
if (ts < context.since) {
|
|
179
|
+
continue;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
const inputTokens = numberValue(usage["input_tokens"]);
|
|
183
|
+
const outputTokens = numberValue(usage["output_tokens"]);
|
|
184
|
+
const cacheReadTokens = numberValue(usage["cache_read_input_tokens"]);
|
|
185
|
+
const cacheWriteTokens = cacheCreationTokens(usage);
|
|
186
|
+
if (inputTokens + outputTokens + cacheReadTokens + cacheWriteTokens === 0) {
|
|
187
|
+
continue;
|
|
188
|
+
}
|
|
189
|
+
const dedupeKey = stringValue(entry["requestId"]) ??
|
|
190
|
+
stringValue(message["id"]) ??
|
|
191
|
+
`${context.session}:${timestamp ?? ""}:${model ?? "unknown"}:${inputTokens}:${outputTokens}`;
|
|
192
|
+
if (seen.has(dedupeKey)) {
|
|
193
|
+
continue;
|
|
194
|
+
}
|
|
195
|
+
seen.add(dedupeKey);
|
|
196
|
+
yield {
|
|
197
|
+
agent: "claude",
|
|
198
|
+
provider: "anthropic",
|
|
199
|
+
model,
|
|
200
|
+
timestamp,
|
|
201
|
+
session: context.session,
|
|
202
|
+
inputTokens,
|
|
203
|
+
outputTokens,
|
|
204
|
+
reasoningTokens: 0,
|
|
205
|
+
cacheReadTokens,
|
|
206
|
+
cacheWriteTokens,
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
catch {
|
|
210
|
+
// Skip malformed lines
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
function cacheCreationTokens(usage) {
|
|
215
|
+
const explicit = numberValue(usage["cache_creation_input_tokens"]);
|
|
216
|
+
if (explicit > 0) {
|
|
217
|
+
return explicit;
|
|
218
|
+
}
|
|
219
|
+
const cacheCreation = asRecord(usage["cache_creation"]);
|
|
220
|
+
return (numberValue(cacheCreation?.["ephemeral_1h_input_tokens"]) +
|
|
221
|
+
numberValue(cacheCreation?.["ephemeral_5m_input_tokens"]));
|
|
222
|
+
}
|
|
223
|
+
function numberValue(value) {
|
|
224
|
+
return typeof value === "number" && Number.isFinite(value) ? value : 0;
|
|
225
|
+
}
|
|
226
|
+
function stringValue(value) {
|
|
227
|
+
return typeof value === "string" && value.trim() ? value : undefined;
|
|
228
|
+
}
|
|
229
|
+
function asRecord(value) {
|
|
230
|
+
if (typeof value !== "object" || value === null || Array.isArray(value)) {
|
|
231
|
+
return null;
|
|
232
|
+
}
|
|
233
|
+
return value;
|
|
234
|
+
}
|
|
137
235
|
//# sourceMappingURL=claude.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude.js","sourceRoot":"","sources":["../../../src/adapters/claude.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC;;;;;;;;GAQG;AAEH,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;AAE1D,MAAM,UAAU,aAAa;IAC3B,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,KAAK,CAAC,CAAC,QAAQ,CAAC,OAAwB;YACtC,MAAM,
|
|
1
|
+
{"version":3,"file":"claude.js","sourceRoot":"","sources":["../../../src/adapters/claude.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC;;;;;;;;GAQG;AAEH,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;AAE1D,MAAM,UAAU,aAAa;IAC3B,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,KAAK,CAAC,CAAC,QAAQ,CAAC,OAAwB;YACtC,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,wBAAwB,EAAE,EAAE,CAAC;gBACpD,KAAK,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;YAC7E,CAAC;QACH,CAAC;QACD,KAAK,CAAC,CAAC,KAAK,CAAC,OAAwB;YACnC,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,wBAAwB,EAAE,EAAE,CAAC;gBACpD,KAAK,CAAC,CAAC,qBAAqB,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;YAClF,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC;AAED,KAAK,SAAS,CAAC,CAAC,wBAAwB;IAKtC,IAAI,WAAqB,CAAC;IAC1B,IAAI,CAAC;QACH,WAAW,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC;IAC1C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO;IACT,CAAC;IAED,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QACrC,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QACjD,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,CAAC;QAC5C,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,EAAE,CAAC;YAC/B,SAAS;QACX,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,CAAC;QAC3C,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;QAE/D,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;YAC9B,MAAM;gBACJ,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC;gBACjC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;gBACnC,OAAO,EAAE,UAAU;aACpB,CAAC;QACJ,CAAC;QAED,gEAAgE;QAChE,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;QACxD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;YAC5D,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,CAAC;gBAC7C,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAC9D,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;oBAC5B,MAAM;wBACJ,QAAQ,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC;wBAClC,OAAO,EAAE,GAAG,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE;wBAClD,OAAO,EAAE,UAAU;qBACpB,CAAC;gBACJ,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,+BAA+B;YACjC,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED,KAAK,SAAS,CAAC,CAAC,gBAAgB,CAC9B,QAAgB,EAChB,OAA2D;IAE3D,MAAM,EAAE,GAAG,eAAe,CAAC;QACzB,KAAK,EAAE,gBAAgB,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;QACxD,SAAS,EAAE,QAAQ;KACpB,CAAC,CAAC;IAEH,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,EAAE,EAAE,CAAC;QAC5B,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YACjB,SAAS;QACX,CAAC;QAED,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAA4B,CAAC;YAC1D,MAAM,IAAI,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;YACpC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,SAAS;YACX,CAAC;YAED,MAAM,SAAS,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;YAC1C,IAAI,OAAO,CAAC,KAAK,IAAI,SAAS,EAAE,CAAC;gBAC/B,MAAM,EAAE,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC/B,IAAI,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;oBACvB,SAAS;gBACX,CAAC;YACH,CAAC;YAED,MAAM;gBACJ,IAAI;gBACJ,SAAS,EAAE,SAAS,IAAI,SAAS;gBACjC,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,OAAO,EAAE,OAAO,CAAC,OAAO;aACzB,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,uBAAuB;QACzB,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,KAA8B;IACrD,8EAA8E;IAC9E,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,MAAM,EAAE,CAAC;QAC7B,MAAM,OAAO,GAAG,KAAK,CAAC,SAAS,CAAwC,CAAC;QACxE,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;IAC7C,CAAC;IAED,sEAAsE;IACtE,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,OAAO,EAAE,CAAC;QAC9B,MAAM,OAAO,GAAG,KAAK,CAAC,SAAS,CAAwC,CAAC;QACxE,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;IAC7C,CAAC;IAED,oDAAoD;IACpD,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,MAAM,EAAE,CAAC;QAC7B,OAAO,eAAe,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;IAC3C,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,eAAe,CAAC,OAAgB;IACvC,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAChC,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,OAAO;aAClB,MAAM,CACL,CAAC,CAAC,EAAuC,EAAE,CACzC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,CAC3D;aACA,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACtB,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACnD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,gBAAgB,CAAC,KAA8B;IACtD,IAAI,OAAO,KAAK,CAAC,WAAW,CAAC,KAAK,QAAQ,EAAE,CAAC;QAC3C,OAAO,KAAK,CAAC,WAAW,CAAC,CAAC;IAC5B,CAAC;IACD,IAAI,OAAO,KAAK,CAAC,WAAW,CAAC,KAAK,QAAQ,EAAE,CAAC;QAC3C,OAAO,KAAK,CAAC,WAAW,CAAC,CAAC;IAC5B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,8FAA8F;AAC9F,KAAK,SAAS,CAAC,CAAC,qBAAqB,CACnC,QAAgB,EAChB,OAA2D;IAE3D,MAAM,EAAE,GAAG,eAAe,CAAC;QACzB,KAAK,EAAE,gBAAgB,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;QACxD,SAAS,EAAE,QAAQ;KACpB,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAE/B,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,EAAE,EAAE,CAAC;QAC5B,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YACjB,SAAS;QACX,CAAC;QAED,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAA4B,CAAC;YAC1D,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;YAC3C,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,WAAW,EAAE,CAAC;gBACjF,SAAS;YACX,CAAC;YAED,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;YACzC,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,SAAS;YACX,CAAC;YAED,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;YAC5C,MAAM,SAAS,GAAG,gBAAgB,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC;YACvD,IAAI,OAAO,CAAC,KAAK,IAAI,SAAS,EAAE,CAAC;gBAC/B,MAAM,EAAE,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC/B,IAAI,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;oBACvB,SAAS;gBACX,CAAC;YACH,CAAC;YAED,MAAM,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC;YACvD,MAAM,YAAY,GAAG,WAAW,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC;YACzD,MAAM,eAAe,GAAG,WAAW,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC,CAAC;YACtE,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;YACpD,IAAI,WAAW,GAAG,YAAY,GAAG,eAAe,GAAG,gBAAgB,KAAK,CAAC,EAAE,CAAC;gBAC1E,SAAS;YACX,CAAC;YAED,MAAM,SAAS,GACb,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;gBAC/B,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBAC1B,GAAG,OAAO,CAAC,OAAO,IAAI,SAAS,IAAI,EAAE,IAAI,KAAK,IAAI,SAAS,IAAI,WAAW,IAAI,YAAY,EAAE,CAAC;YAC/F,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;gBACxB,SAAS;YACX,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAEpB,MAAM;gBACJ,KAAK,EAAE,QAAQ;gBACf,QAAQ,EAAE,WAAW;gBACrB,KAAK;gBACL,SAAS;gBACT,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,WAAW;gBACX,YAAY;gBACZ,eAAe,EAAE,CAAC;gBAClB,eAAe;gBACf,gBAAgB;aACjB,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,uBAAuB;QACzB,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,mBAAmB,CAAC,KAA8B;IACzD,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC,CAAC;IACnE,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;QACjB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,MAAM,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC;IACxD,OAAO,CACL,WAAW,CAAC,aAAa,EAAE,CAAC,2BAA2B,CAAC,CAAC;QACzD,WAAW,CAAC,aAAa,EAAE,CAAC,2BAA2B,CAAC,CAAC,CAC1D,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,KAAc;IACjC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACzE,CAAC;AAED,SAAS,WAAW,CAAC,KAAc;IACjC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACvE,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACxE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,KAAgC,CAAC;AAC1C,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cline.d.ts","sourceRoot":"","sources":["../../../src/adapters/cline.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAA2B,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"cline.d.ts","sourceRoot":"","sources":["../../../src/adapters/cline.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAA2B,MAAM,SAAS,CAAC;AA0EhE,wBAAgB,YAAY,IAAI,OAAO,CA+DtC"}
|
|
@@ -27,14 +27,16 @@ function getClineTaskDirs() {
|
|
|
27
27
|
for (const basePath of vscodePaths) {
|
|
28
28
|
for (const extId of extensionIds) {
|
|
29
29
|
const tasksDir = join(basePath, extId, "tasks");
|
|
30
|
-
if (existsSync(tasksDir))
|
|
30
|
+
if (existsSync(tasksDir)) {
|
|
31
31
|
dirs.push(tasksDir);
|
|
32
|
+
}
|
|
32
33
|
}
|
|
33
34
|
}
|
|
34
35
|
// Standalone CLI path
|
|
35
36
|
const clineStandalone = join(homedir(), ".cline", "data", "tasks");
|
|
36
|
-
if (existsSync(clineStandalone))
|
|
37
|
+
if (existsSync(clineStandalone)) {
|
|
37
38
|
dirs.push(clineStandalone);
|
|
39
|
+
}
|
|
38
40
|
return dirs;
|
|
39
41
|
}
|
|
40
42
|
function getVSCodeGlobalStoragePaths() {
|
|
@@ -69,27 +71,32 @@ export function clineAdapter() {
|
|
|
69
71
|
for (const taskId of taskIds) {
|
|
70
72
|
const taskDir = join(tasksDir, taskId);
|
|
71
73
|
const taskStat = await stat(taskDir).catch(() => null);
|
|
72
|
-
if (!taskStat?.isDirectory())
|
|
74
|
+
if (!taskStat?.isDirectory()) {
|
|
73
75
|
continue;
|
|
76
|
+
}
|
|
74
77
|
const historyFile = join(taskDir, "api_conversation_history.json");
|
|
75
78
|
try {
|
|
76
79
|
const raw = await readFile(historyFile, "utf-8");
|
|
77
80
|
const messages = JSON.parse(raw);
|
|
78
|
-
if (!Array.isArray(messages))
|
|
81
|
+
if (!Array.isArray(messages)) {
|
|
79
82
|
continue;
|
|
83
|
+
}
|
|
80
84
|
for (const msg of messages) {
|
|
81
|
-
if (msg.role !== "user")
|
|
85
|
+
if (msg.role !== "user") {
|
|
82
86
|
continue;
|
|
87
|
+
}
|
|
83
88
|
const text = extractText(msg.content);
|
|
84
|
-
if (!text)
|
|
89
|
+
if (!text) {
|
|
85
90
|
continue;
|
|
91
|
+
}
|
|
86
92
|
// Cline doesn't store per-message timestamps in the conversation file
|
|
87
93
|
// Use the task metadata file for approximate timing
|
|
88
94
|
const timestamp = msg.ts ?? undefined;
|
|
89
95
|
if (options?.since && timestamp) {
|
|
90
96
|
const ts = new Date(timestamp);
|
|
91
|
-
if (ts < options.since)
|
|
97
|
+
if (ts < options.since) {
|
|
92
98
|
continue;
|
|
99
|
+
}
|
|
93
100
|
}
|
|
94
101
|
yield {
|
|
95
102
|
text,
|
|
@@ -106,14 +113,12 @@ export function clineAdapter() {
|
|
|
106
113
|
};
|
|
107
114
|
}
|
|
108
115
|
function extractText(content) {
|
|
109
|
-
if (typeof content === "string")
|
|
116
|
+
if (typeof content === "string") {
|
|
110
117
|
return content;
|
|
118
|
+
}
|
|
111
119
|
if (Array.isArray(content)) {
|
|
112
120
|
const parts = content
|
|
113
|
-
.filter((p) => typeof p === "object" &&
|
|
114
|
-
p !== null &&
|
|
115
|
-
p.type === "text" &&
|
|
116
|
-
typeof p.text === "string")
|
|
121
|
+
.filter((p) => typeof p === "object" && p !== null && p.type === "text" && typeof p.text === "string")
|
|
117
122
|
.map((p) => p.text);
|
|
118
123
|
return parts.length > 0 ? parts.join(" ") : null;
|
|
119
124
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cline.js","sourceRoot":"","sources":["../../../src/adapters/cline.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC;;;;;;;;;;;;;;;;GAgBG;AAEH,SAAS,gBAAgB;IACvB,MAAM,IAAI,GAAa,EAAE,CAAC;IAE1B,0BAA0B;IAC1B,MAAM,WAAW,GAAG,2BAA2B,EAAE,CAAC;IAClD,MAAM,YAAY,GAAG,CAAC,wBAAwB,EAAE,4BAA4B,CAAC,CAAC;IAE9E,KAAK,MAAM,QAAQ,IAAI,WAAW,EAAE,CAAC;QACnC,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE,CAAC;YACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;YAChD,IAAI,UAAU,CAAC,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"cline.js","sourceRoot":"","sources":["../../../src/adapters/cline.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex.d.ts","sourceRoot":"","sources":["../../../src/adapters/codex.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"codex.d.ts","sourceRoot":"","sources":["../../../src/adapters/codex.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAwC,MAAM,SAAS,CAAC;AAiB7E,wBAAgB,YAAY,IAAI,OAAO,CAiBtC"}
|