coding-tool-x 3.3.3 → 3.3.4
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/web/assets/{Analytics-DtR00OYP.js → Analytics-B6CWdkhx.js} +1 -1
- package/dist/web/assets/{ConfigTemplates-DWiSFOp5.js → ConfigTemplates-BW6LEgd8.js} +1 -1
- package/dist/web/assets/{Home-DUu2mGb6.js → Home-B2B2gS2-.js} +1 -1
- package/dist/web/assets/{PluginManager-DsJ1KtNr.js → PluginManager-Bqc7ldY-.js} +1 -1
- package/dist/web/assets/{ProjectList-CzTJaBJb.js → ProjectList-BFdZZm_8.js} +1 -1
- package/dist/web/assets/{SessionList-D1ovPZ0I.js → SessionList-B_Tp37kM.js} +1 -1
- package/dist/web/assets/{SkillManager-DqpDTc2c.js → SkillManager-ul2rcS3o.js} +1 -1
- package/dist/web/assets/{WorkspaceManager-Dj28-3G5.js → WorkspaceManager-Dp5Jvdtu.js} +1 -1
- package/dist/web/assets/index-CSBDZxYn.js +2 -0
- package/dist/web/assets/index-DxRneGyu.css +1 -0
- package/dist/web/index.html +2 -2
- package/package.json +1 -1
- package/src/server/api/claude-hooks.js +26 -3
- package/src/server/api/codex-sessions.js +6 -5
- package/src/server/api/sessions.js +36 -6
- package/src/server/opencode-proxy-server.js +11 -1
- package/src/server/services/codex-parser.js +31 -4
- package/src/server/services/opencode-sessions.js +28 -3
- package/dist/web/assets/index-CaKktouI.js +0 -2
- package/dist/web/assets/index-DZjDFGqR.css +0 -1
|
@@ -63,11 +63,22 @@ function extractSessionMeta(lines) {
|
|
|
63
63
|
*/
|
|
64
64
|
function extractMessages(lines) {
|
|
65
65
|
const messages = [];
|
|
66
|
+
let currentTurnModel = null;
|
|
67
|
+
let lastAssistantModel = null;
|
|
66
68
|
|
|
67
69
|
lines.forEach(line => {
|
|
70
|
+
if (line.type === 'turn_context') {
|
|
71
|
+
const model = line.payload?.model;
|
|
72
|
+
if (typeof model === 'string' && model.trim()) {
|
|
73
|
+
currentTurnModel = model.trim();
|
|
74
|
+
}
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
|
|
68
78
|
if (line.type !== 'response_item') return;
|
|
69
79
|
|
|
70
80
|
const payload = line.payload;
|
|
81
|
+
const resolvedModel = payload?.model || currentTurnModel || lastAssistantModel || null;
|
|
71
82
|
|
|
72
83
|
// 用户/助手消息
|
|
73
84
|
if (payload.type === 'message') {
|
|
@@ -81,8 +92,12 @@ function extractMessages(lines) {
|
|
|
81
92
|
messages.push({
|
|
82
93
|
role: payload.role,
|
|
83
94
|
content: text,
|
|
84
|
-
timestamp: line.timestamp
|
|
95
|
+
timestamp: line.timestamp,
|
|
96
|
+
model: payload.role === 'assistant' ? resolvedModel : null
|
|
85
97
|
});
|
|
98
|
+
if (payload.role === 'assistant' && resolvedModel) {
|
|
99
|
+
lastAssistantModel = resolvedModel;
|
|
100
|
+
}
|
|
86
101
|
}
|
|
87
102
|
}
|
|
88
103
|
|
|
@@ -101,8 +116,12 @@ function extractMessages(lines) {
|
|
|
101
116
|
name: payload.name,
|
|
102
117
|
arguments: parsedArguments,
|
|
103
118
|
callId: payload.call_id,
|
|
104
|
-
timestamp: line.timestamp
|
|
119
|
+
timestamp: line.timestamp,
|
|
120
|
+
model: resolvedModel
|
|
105
121
|
});
|
|
122
|
+
if (resolvedModel) {
|
|
123
|
+
lastAssistantModel = resolvedModel;
|
|
124
|
+
}
|
|
106
125
|
}
|
|
107
126
|
|
|
108
127
|
// 工具输出
|
|
@@ -119,8 +138,12 @@ function extractMessages(lines) {
|
|
|
119
138
|
role: 'tool_output',
|
|
120
139
|
callId: payload.call_id,
|
|
121
140
|
output: parsedOutput,
|
|
122
|
-
timestamp: line.timestamp
|
|
141
|
+
timestamp: line.timestamp,
|
|
142
|
+
model: resolvedModel
|
|
123
143
|
});
|
|
144
|
+
if (resolvedModel) {
|
|
145
|
+
lastAssistantModel = resolvedModel;
|
|
146
|
+
}
|
|
124
147
|
}
|
|
125
148
|
|
|
126
149
|
// 推理内容
|
|
@@ -135,8 +158,12 @@ function extractMessages(lines) {
|
|
|
135
158
|
messages.push({
|
|
136
159
|
role: 'reasoning',
|
|
137
160
|
content: text,
|
|
138
|
-
timestamp: line.timestamp
|
|
161
|
+
timestamp: line.timestamp,
|
|
162
|
+
model: resolvedModel
|
|
139
163
|
});
|
|
164
|
+
if (resolvedModel) {
|
|
165
|
+
lastAssistantModel = resolvedModel;
|
|
166
|
+
}
|
|
140
167
|
}
|
|
141
168
|
}
|
|
142
169
|
});
|
|
@@ -359,7 +359,19 @@ function getSessionRowsByProjectId(projectId) {
|
|
|
359
359
|
s.time_created,
|
|
360
360
|
s.time_updated,
|
|
361
361
|
s.time_compacting,
|
|
362
|
-
s.time_archived
|
|
362
|
+
s.time_archived,
|
|
363
|
+
(
|
|
364
|
+
COALESCE((
|
|
365
|
+
SELECT SUM(length(CAST(COALESCE(m.data, '') AS BLOB)))
|
|
366
|
+
FROM message m
|
|
367
|
+
WHERE m.session_id = s.id
|
|
368
|
+
), 0) +
|
|
369
|
+
COALESCE((
|
|
370
|
+
SELECT SUM(length(CAST(COALESCE(p.data, '') AS BLOB)))
|
|
371
|
+
FROM part p
|
|
372
|
+
WHERE p.session_id = s.id
|
|
373
|
+
), 0)
|
|
374
|
+
) AS size
|
|
363
375
|
FROM session s
|
|
364
376
|
WHERE s.project_id = ${sqlQuote(projectId)}
|
|
365
377
|
AND s.time_archived IS NULL
|
|
@@ -387,7 +399,19 @@ function getSessionRowById(sessionId) {
|
|
|
387
399
|
s.time_created,
|
|
388
400
|
s.time_updated,
|
|
389
401
|
s.time_compacting,
|
|
390
|
-
s.time_archived
|
|
402
|
+
s.time_archived,
|
|
403
|
+
(
|
|
404
|
+
COALESCE((
|
|
405
|
+
SELECT SUM(length(CAST(COALESCE(m.data, '') AS BLOB)))
|
|
406
|
+
FROM message m
|
|
407
|
+
WHERE m.session_id = s.id
|
|
408
|
+
), 0) +
|
|
409
|
+
COALESCE((
|
|
410
|
+
SELECT SUM(length(CAST(COALESCE(p.data, '') AS BLOB)))
|
|
411
|
+
FROM part p
|
|
412
|
+
WHERE p.session_id = s.id
|
|
413
|
+
), 0)
|
|
414
|
+
) AS size
|
|
391
415
|
FROM session s
|
|
392
416
|
WHERE s.id = ${sqlQuote(sessionId)}
|
|
393
417
|
LIMIT 1
|
|
@@ -426,11 +450,12 @@ function getPartRowsBySessionId(sessionId) {
|
|
|
426
450
|
}
|
|
427
451
|
|
|
428
452
|
function normalizeSession(session, projectId = null) {
|
|
453
|
+
const size = Number(session?.size);
|
|
429
454
|
return {
|
|
430
455
|
sessionId: session.id,
|
|
431
456
|
projectName: projectId || session.project_id,
|
|
432
457
|
mtime: toIsoTime(session.time_updated) || new Date().toISOString(),
|
|
433
|
-
size: 0,
|
|
458
|
+
size: Number.isFinite(size) && size > 0 ? size : 0,
|
|
434
459
|
filePath: '',
|
|
435
460
|
gitBranch: null,
|
|
436
461
|
firstMessage: session.title || session.slug || null,
|