devchain-cli 0.17.0 → 0.17.2
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/node_modules/@devchain/codebase-overview/tsconfig.tsbuildinfo +1 -1
- package/dist/node_modules/@devchain/shared/tsconfig.tsbuildinfo +1 -1
- package/dist/server/app.main.module.js +2 -0
- package/dist/server/app.main.module.js.map +1 -1
- package/dist/server/app.normal.module.js +2 -0
- package/dist/server/app.normal.module.js.map +1 -1
- package/dist/server/modules/events/catalog/broadcast-registry.js +19 -12
- package/dist/server/modules/events/catalog/broadcast-registry.js.map +1 -1
- package/dist/server/modules/events/catalog/index.d.ts +23 -3
- package/dist/server/modules/events/catalog/session.transcript.updated.d.ts +23 -3
- package/dist/server/modules/events/catalog/session.transcript.updated.js +41 -19
- package/dist/server/modules/events/catalog/session.transcript.updated.js.map +1 -1
- package/dist/server/modules/metrics/controllers/metrics.controller.d.ts +6 -0
- package/dist/server/modules/metrics/controllers/metrics.controller.js +38 -0
- package/dist/server/modules/metrics/controllers/metrics.controller.js.map +1 -0
- package/dist/server/modules/metrics/helpers/byte-accounting.helper.d.ts +17 -0
- package/dist/server/modules/metrics/helpers/byte-accounting.helper.js +88 -0
- package/dist/server/modules/metrics/helpers/byte-accounting.helper.js.map +1 -0
- package/dist/server/modules/metrics/metrics.module.d.ts +2 -0
- package/dist/server/modules/metrics/metrics.module.js +23 -0
- package/dist/server/modules/metrics/metrics.module.js.map +1 -0
- package/dist/server/modules/metrics/services/metrics.service.d.ts +20 -0
- package/dist/server/modules/metrics/services/metrics.service.js +241 -0
- package/dist/server/modules/metrics/services/metrics.service.js.map +1 -0
- package/dist/server/modules/metrics/types/metrics.types.d.ts +100 -0
- package/dist/server/modules/metrics/types/metrics.types.js +3 -0
- package/dist/server/modules/metrics/types/metrics.types.js.map +1 -0
- package/dist/server/modules/projects/helpers/profile-mapping.helpers.d.ts +5 -3
- package/dist/server/modules/projects/helpers/profile-mapping.helpers.js +25 -13
- package/dist/server/modules/projects/helpers/profile-mapping.helpers.js.map +1 -1
- package/dist/server/modules/projects/helpers/project-import.js +9 -7
- package/dist/server/modules/projects/helpers/project-import.js.map +1 -1
- package/dist/server/modules/projects/helpers/template-loader.js +11 -9
- package/dist/server/modules/projects/helpers/template-loader.js.map +1 -1
- package/dist/server/modules/projects/template-codec/codec-registry.js.map +1 -1
- package/dist/server/modules/projects/template-codec/codecs/agents.codec.d.ts +1 -1
- package/dist/server/modules/projects/template-codec/codecs/agents.codec.js +4 -4
- package/dist/server/modules/projects/template-codec/codecs/agents.codec.js.map +1 -1
- package/dist/server/modules/projects/template-codec/codecs/profiles.codec.d.ts +1 -1
- package/dist/server/modules/projects/template-codec/codecs/profiles.codec.js +27 -8
- package/dist/server/modules/projects/template-codec/codecs/profiles.codec.js.map +1 -1
- package/dist/server/modules/projects/template-codec/codecs/watchers.codec.js +1 -1
- package/dist/server/modules/projects/template-codec/codecs/watchers.codec.js.map +1 -1
- package/dist/server/modules/projects/template-codec/import-context.d.ts +6 -1
- package/dist/server/modules/projects/template-codec/import-context.js.map +1 -1
- package/dist/server/modules/projects/template-codec/template-section-codec.d.ts +2 -3
- package/dist/server/modules/session-reader/adapters/antigravity-session-reader.adapter.d.ts +6 -0
- package/dist/server/modules/session-reader/adapters/antigravity-session-reader.adapter.js +66 -0
- package/dist/server/modules/session-reader/adapters/antigravity-session-reader.adapter.js.map +1 -1
- package/dist/server/modules/session-reader/adapters/claude-session-reader.adapter.d.ts +5 -0
- package/dist/server/modules/session-reader/adapters/claude-session-reader.adapter.js +12 -0
- package/dist/server/modules/session-reader/adapters/claude-session-reader.adapter.js.map +1 -1
- package/dist/server/modules/session-reader/adapters/codex-session-reader.adapter.d.ts +5 -0
- package/dist/server/modules/session-reader/adapters/codex-session-reader.adapter.js +12 -0
- package/dist/server/modules/session-reader/adapters/codex-session-reader.adapter.js.map +1 -1
- package/dist/server/modules/session-reader/adapters/copilot-session-reader.adapter.d.ts +5 -0
- package/dist/server/modules/session-reader/adapters/copilot-session-reader.adapter.js +12 -0
- package/dist/server/modules/session-reader/adapters/copilot-session-reader.adapter.js.map +1 -1
- package/dist/server/modules/session-reader/adapters/opencode-session-reader.adapter.d.ts +5 -0
- package/dist/server/modules/session-reader/adapters/opencode-session-reader.adapter.js +15 -0
- package/dist/server/modules/session-reader/adapters/opencode-session-reader.adapter.js.map +1 -1
- package/dist/server/modules/session-reader/adapters/session-reader-adapter.interface.d.ts +10 -0
- package/dist/server/modules/session-reader/adapters/session-reader-adapter.interface.js +28 -1
- package/dist/server/modules/session-reader/adapters/session-reader-adapter.interface.js.map +1 -1
- package/dist/server/modules/session-reader/controllers/session-reader.controller.d.ts +10 -4
- package/dist/server/modules/session-reader/controllers/session-reader.controller.js +18 -19
- package/dist/server/modules/session-reader/controllers/session-reader.controller.js.map +1 -1
- package/dist/server/modules/session-reader/data/pricing.json +206 -0
- package/dist/server/modules/session-reader/parsers/claude-jsonl.parser.d.ts +1 -0
- package/dist/server/modules/session-reader/parsers/claude-jsonl.parser.js +7 -3
- package/dist/server/modules/session-reader/parsers/claude-jsonl.parser.js.map +1 -1
- package/dist/server/modules/session-reader/parsers/codex-jsonl.parser.d.ts +1 -0
- package/dist/server/modules/session-reader/parsers/codex-jsonl.parser.js +22 -11
- package/dist/server/modules/session-reader/parsers/codex-jsonl.parser.js.map +1 -1
- package/dist/server/modules/session-reader/parsers/copilot-jsonl.parser.d.ts +1 -0
- package/dist/server/modules/session-reader/parsers/copilot-jsonl.parser.js +21 -9
- package/dist/server/modules/session-reader/parsers/copilot-jsonl.parser.js.map +1 -1
- package/dist/server/modules/session-reader/readers/opencode-sqlite.reader.d.ts +5 -1
- package/dist/server/modules/session-reader/readers/opencode-sqlite.reader.js +102 -0
- package/dist/server/modules/session-reader/readers/opencode-sqlite.reader.js.map +1 -1
- package/dist/server/modules/session-reader/services/session-cache.service.d.ts +71 -4
- package/dist/server/modules/session-reader/services/session-cache.service.js +427 -68
- package/dist/server/modules/session-reader/services/session-cache.service.js.map +1 -1
- package/dist/server/modules/session-reader/services/session-reader.service.d.ts +21 -4
- package/dist/server/modules/session-reader/services/session-reader.service.js +126 -40
- package/dist/server/modules/session-reader/services/session-reader.service.js.map +1 -1
- package/dist/server/modules/session-reader/services/transcript-cursor.d.ts +1 -1
- package/dist/server/modules/session-reader/services/transcript-cursor.js +2 -2
- package/dist/server/modules/session-reader/services/transcript-cursor.js.map +1 -1
- package/dist/server/modules/session-reader/services/transcript-watcher.service.d.ts +2 -0
- package/dist/server/modules/session-reader/services/transcript-watcher.service.js +61 -11
- package/dist/server/modules/session-reader/services/transcript-watcher.service.js.map +1 -1
- package/dist/server/modules/session-reader/session-reader.module.js +3 -1
- package/dist/server/modules/session-reader/session-reader.module.js.map +1 -1
- package/dist/server/modules/sessions/services/session-runtime/__test-utils__/pipeline-harness.d.ts +4 -4
- package/dist/server/modules/sessions/services/session-runtime/__test-utils__/pipeline-harness.js +11 -5
- package/dist/server/modules/sessions/services/session-runtime/__test-utils__/pipeline-harness.js.map +1 -1
- package/dist/server/modules/sessions/services/session-runtime/session-restore-pipeline.service.d.ts +3 -1
- package/dist/server/modules/sessions/services/session-runtime/session-restore-pipeline.service.js +11 -2
- package/dist/server/modules/sessions/services/session-runtime/session-restore-pipeline.service.js.map +1 -1
- package/dist/server/modules/terminal/dtos/ws-envelope.dto.d.ts +140 -1
- package/dist/server/modules/terminal/dtos/ws-envelope.dto.js +59 -2
- package/dist/server/modules/terminal/dtos/ws-envelope.dto.js.map +1 -1
- package/dist/server/modules/terminal/gateways/terminal.gateway.d.ts +33 -1
- package/dist/server/modules/terminal/gateways/terminal.gateway.js +471 -61
- package/dist/server/modules/terminal/gateways/terminal.gateway.js.map +1 -1
- package/dist/server/modules/terminal/services/process-executor/fake-process-executor.d.ts +1 -0
- package/dist/server/modules/terminal/services/process-executor/fake-process-executor.js +1 -0
- package/dist/server/modules/terminal/services/process-executor/fake-process-executor.js.map +1 -1
- package/dist/server/modules/terminal/services/pty.service.d.ts +8 -3
- package/dist/server/modules/terminal/services/pty.service.js +11 -2
- package/dist/server/modules/terminal/services/pty.service.js.map +1 -1
- package/dist/server/modules/terminal/services/terminal-io/capture.js +2 -0
- package/dist/server/modules/terminal/services/terminal-io/capture.js.map +1 -1
- package/dist/server/modules/terminal/services/terminal-io/delivery.d.ts +1 -0
- package/dist/server/modules/terminal/services/terminal-io/delivery.js.map +1 -1
- package/dist/server/modules/terminal/services/terminal-io/terminal-io.service.js +28 -1
- package/dist/server/modules/terminal/services/terminal-io/terminal-io.service.js.map +1 -1
- package/dist/server/modules/terminal/services/terminal-key-input/terminal-key-input.facade.d.ts +6 -0
- package/dist/server/modules/terminal/services/terminal-key-input/terminal-key-input.facade.js +26 -1
- package/dist/server/modules/terminal/services/terminal-key-input/terminal-key-input.facade.js.map +1 -1
- package/dist/server/modules/terminal/services/terminal-seed.service.d.ts +27 -3
- package/dist/server/modules/terminal/services/terminal-seed.service.js +75 -19
- package/dist/server/modules/terminal/services/terminal-seed.service.js.map +1 -1
- package/dist/server/modules/terminal/services/terminal-send-scheduler.service.d.ts +73 -0
- package/dist/server/modules/terminal/services/terminal-send-scheduler.service.js +387 -0
- package/dist/server/modules/terminal/services/terminal-send-scheduler.service.js.map +1 -0
- package/dist/server/modules/terminal/services/terminal-session/terminal-session.d.ts +4 -10
- package/dist/server/modules/terminal/services/terminal-session/terminal-session.js +20 -48
- package/dist/server/modules/terminal/services/terminal-session/terminal-session.js.map +1 -1
- package/dist/server/modules/terminal/services/terminal-socket-drain.adapter.d.ts +10 -0
- package/dist/server/modules/terminal/services/terminal-socket-drain.adapter.js +75 -0
- package/dist/server/modules/terminal/services/terminal-socket-drain.adapter.js.map +1 -0
- package/dist/server/modules/terminal/services/terminal-stream.service.d.ts +53 -6
- package/dist/server/modules/terminal/services/terminal-stream.service.js +190 -35
- package/dist/server/modules/terminal/services/terminal-stream.service.js.map +1 -1
- package/dist/server/modules/terminal/terminal.module.js +7 -0
- package/dist/server/modules/terminal/terminal.module.js.map +1 -1
- package/dist/server/templates/3-agents-dev.json +97 -93
- package/dist/server/templates/teams-dev.json +174 -160
- package/dist/server/tsconfig.tsbuildinfo +1 -1
- package/dist/server/ui/assets/{ReviewDetailPage-Dd40lXMW.js → ReviewDetailPage-C5BI5FSx.js} +1 -1
- package/dist/server/ui/assets/{ReviewsPage-CBSbsimJ.js → ReviewsPage-C4V7MJQc.js} +1 -1
- package/dist/server/ui/assets/index-BSx7QxmM.css +32 -0
- package/dist/server/ui/assets/index-nwIXVn_B.js +1142 -0
- package/dist/server/ui/assets/{useReviewSubscription-CpDyx3vJ.js → useReviewSubscription-Bd1R13V5.js} +1 -1
- package/dist/server/ui/index.html +2 -2
- package/dist/templates/3-agents-dev.json +97 -93
- package/dist/templates/teams-dev.json +174 -160
- package/package.json +16 -5
- package/dist/server/ui/assets/index-COvyD_66.css +0 -32
- package/dist/server/ui/assets/index-DtIjl-Lt.js +0 -1113
|
@@ -51,6 +51,7 @@ const common_1 = require("@nestjs/common");
|
|
|
51
51
|
const fs = __importStar(require("node:fs/promises"));
|
|
52
52
|
const os = __importStar(require("node:os"));
|
|
53
53
|
const path = __importStar(require("node:path"));
|
|
54
|
+
const session_reader_adapter_interface_1 = require("./session-reader-adapter.interface");
|
|
54
55
|
const pricing_interface_1 = require("../services/pricing.interface");
|
|
55
56
|
const error_types_1 = require("../../../common/errors/error-types");
|
|
56
57
|
const antigravity_transcript_reader_1 = require("../readers/antigravity-transcript.reader");
|
|
@@ -61,6 +62,17 @@ const CONVERSATIONS_DIR = 'conversations';
|
|
|
61
62
|
const HISTORY_FILE = 'history.jsonl';
|
|
62
63
|
const LAST_CONVERSATIONS_FILE = 'cache/last_conversations.json';
|
|
63
64
|
const DISCOVERY_WINDOW_MS = 120_000;
|
|
65
|
+
const AGY_EXACT_SUMMARY_FIELDS = [
|
|
66
|
+
'inputTokens',
|
|
67
|
+
'outputTokens',
|
|
68
|
+
'cacheReadTokens',
|
|
69
|
+
'cacheCreationTokens',
|
|
70
|
+
'totalTokens',
|
|
71
|
+
'totalContextTokens',
|
|
72
|
+
'contextWindowTokens',
|
|
73
|
+
'costUsd',
|
|
74
|
+
'primaryModel',
|
|
75
|
+
];
|
|
64
76
|
let AntigravitySessionReaderAdapter = AntigravitySessionReaderAdapter_1 = class AntigravitySessionReaderAdapter {
|
|
65
77
|
constructor(pricingService) {
|
|
66
78
|
this.pricingService = pricingService;
|
|
@@ -116,6 +128,60 @@ let AntigravitySessionReaderAdapter = AntigravitySessionReaderAdapter_1 = class
|
|
|
116
128
|
this.applyTokenMetrics(session, dbPath, convId);
|
|
117
129
|
return session;
|
|
118
130
|
}
|
|
131
|
+
async getSummary(sourceRef) {
|
|
132
|
+
const convId = this.requireConversationId(sourceRef.providerSessionId);
|
|
133
|
+
const dbPath = this.resolveDbPath(sourceRef);
|
|
134
|
+
const decoded = this.metricsReader.decode(dbPath, convId);
|
|
135
|
+
const model = decoded.modelId ?? decoded.displayName ?? '';
|
|
136
|
+
const mapping = (0, antigravity_model_pricing_1.mapAgyModelToPricing)(decoded.displayName, decoded.modelId);
|
|
137
|
+
let costUsd = 0;
|
|
138
|
+
let contextWindowTokens = 200_000;
|
|
139
|
+
const warnings = [...decoded.warnings];
|
|
140
|
+
if (mapping?.isFree) {
|
|
141
|
+
contextWindowTokens = mapping.freeContextWindow ?? contextWindowTokens;
|
|
142
|
+
}
|
|
143
|
+
else if (mapping?.pricingKey) {
|
|
144
|
+
costUsd = this.pricingService.calculateMessageCost(mapping.pricingKey, decoded.inputTokens, decoded.outputTokens, decoded.cacheReadTokens, decoded.cacheCreationTokens);
|
|
145
|
+
contextWindowTokens = this.pricingService.getContextWindowSize(mapping.pricingKey);
|
|
146
|
+
}
|
|
147
|
+
else if (model) {
|
|
148
|
+
warnings.push(`agy metrics: no pricing mapping for model "${model}" — cost reported as $0`);
|
|
149
|
+
}
|
|
150
|
+
const totalTokens = decoded.inputTokens +
|
|
151
|
+
decoded.outputTokens +
|
|
152
|
+
decoded.cacheReadTokens +
|
|
153
|
+
decoded.cacheCreationTokens;
|
|
154
|
+
const metrics = {
|
|
155
|
+
inputTokens: decoded.inputTokens,
|
|
156
|
+
outputTokens: decoded.outputTokens,
|
|
157
|
+
cacheReadTokens: decoded.cacheReadTokens,
|
|
158
|
+
cacheCreationTokens: decoded.cacheCreationTokens,
|
|
159
|
+
totalTokens,
|
|
160
|
+
totalContextConsumption: decoded.inputTokens,
|
|
161
|
+
compactionCount: 0,
|
|
162
|
+
phaseBreakdowns: [
|
|
163
|
+
{
|
|
164
|
+
phaseNumber: 1,
|
|
165
|
+
contribution: decoded.inputTokens,
|
|
166
|
+
peakTokens: decoded.lastContextTokens,
|
|
167
|
+
},
|
|
168
|
+
],
|
|
169
|
+
visibleContextTokens: 0,
|
|
170
|
+
totalContextTokens: decoded.lastContextTokens,
|
|
171
|
+
contextWindowTokens,
|
|
172
|
+
costUsd,
|
|
173
|
+
primaryModel: model,
|
|
174
|
+
durationMs: 0,
|
|
175
|
+
messageCount: decoded.generationCount * 2,
|
|
176
|
+
isOngoing: true,
|
|
177
|
+
};
|
|
178
|
+
return {
|
|
179
|
+
metrics,
|
|
180
|
+
warnings: warnings.length > 0 ? warnings : undefined,
|
|
181
|
+
exactFields: AGY_EXACT_SUMMARY_FIELDS,
|
|
182
|
+
approximateFields: session_reader_adapter_interface_1.EXACT_SUMMARY_FIELDS.filter((field) => !AGY_EXACT_SUMMARY_FIELDS.includes(field)),
|
|
183
|
+
};
|
|
184
|
+
}
|
|
119
185
|
async parseIncremental(filePath, _options, sourceRef) {
|
|
120
186
|
const convId = this.requireConversationId(sourceRef?.providerSessionId);
|
|
121
187
|
const dbPath = this.resolveDbPath(sourceRef, filePath);
|
package/dist/server/modules/session-reader/adapters/antigravity-session-reader.adapter.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"antigravity-session-reader.adapter.js","sourceRoot":"","sources":["../../../../src/modules/session-reader/adapters/antigravity-session-reader.adapter.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"antigravity-session-reader.adapter.js","sourceRoot":"","sources":["../../../../src/modules/session-reader/adapters/antigravity-session-reader.adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,6 +15,11 @@ export declare class ClaudeSessionReaderAdapter implements SessionReaderAdapter
|
|
|
15
15
|
getWatchPaths(projectRoot: string): string[];
|
|
16
16
|
calculateCost(entries: unknown[], model: string): number;
|
|
17
17
|
parseFullSession(filePath: string): Promise<UnifiedSession>;
|
|
18
|
+
getSummary(sourceRef: import('./session-reader-adapter.interface').SessionSourceRef): Promise<{
|
|
19
|
+
metrics: import("../dtos/unified-session.types").UnifiedMetrics;
|
|
20
|
+
warnings: string[] | undefined;
|
|
21
|
+
exactFields: readonly ["inputTokens", "outputTokens", "cacheReadTokens", "cacheCreationTokens", "totalTokens", "totalContextConsumption", "compactionCount", "phaseBreakdowns", "visibleContextTokens", "totalContextTokens", "contextWindowTokens", "contextBreakdown", "costUsd", "nativeCost", "primaryModel", "modelsUsed", "durationMs", "messageCount", "isOngoing"];
|
|
22
|
+
}>;
|
|
18
23
|
private encodeProjectPath;
|
|
19
24
|
private statFile;
|
|
20
25
|
private getFileSize;
|
|
@@ -51,6 +51,7 @@ const common_1 = require("@nestjs/common");
|
|
|
51
51
|
const fs = __importStar(require("node:fs/promises"));
|
|
52
52
|
const path = __importStar(require("node:path"));
|
|
53
53
|
const os = __importStar(require("node:os"));
|
|
54
|
+
const session_reader_adapter_interface_1 = require("./session-reader-adapter.interface");
|
|
54
55
|
const claude_jsonl_parser_1 = require("../parsers/claude-jsonl.parser");
|
|
55
56
|
const pricing_interface_1 = require("../services/pricing.interface");
|
|
56
57
|
const CLAUDE_ROOT = '.claude/projects/';
|
|
@@ -169,6 +170,17 @@ let ClaudeSessionReaderAdapter = ClaudeSessionReaderAdapter_1 = class ClaudeSess
|
|
|
169
170
|
warnings: result.warnings,
|
|
170
171
|
};
|
|
171
172
|
}
|
|
173
|
+
async getSummary(sourceRef) {
|
|
174
|
+
const result = await (0, claude_jsonl_parser_1.parseClaudeJsonl)(sourceRef.filePath, {
|
|
175
|
+
pricingService: this.pricingService,
|
|
176
|
+
retainMessages: false,
|
|
177
|
+
});
|
|
178
|
+
return {
|
|
179
|
+
metrics: result.metrics,
|
|
180
|
+
warnings: result.warnings,
|
|
181
|
+
exactFields: session_reader_adapter_interface_1.EXACT_SUMMARY_FIELDS,
|
|
182
|
+
};
|
|
183
|
+
}
|
|
172
184
|
encodeProjectPath(projectRoot) {
|
|
173
185
|
return projectRoot.replace(/\//g, '-');
|
|
174
186
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-session-reader.adapter.js","sourceRoot":"","sources":["../../../../src/modules/session-reader/adapters/claude-session-reader.adapter.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAA4D;AAC5D,qDAAuC;AACvC,gDAAkC;AAClC,4CAA8B;
|
|
1
|
+
{"version":3,"file":"claude-session-reader.adapter.js","sourceRoot":"","sources":["../../../../src/modules/session-reader/adapters/claude-session-reader.adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,6 +21,11 @@ export declare class CodexSessionReaderAdapter implements SessionReaderAdapter {
|
|
|
21
21
|
getWatchPaths(_projectRoot: string): string[];
|
|
22
22
|
calculateCost(entries: unknown[], model: string): number;
|
|
23
23
|
parseFullSession(filePath: string): Promise<UnifiedSession>;
|
|
24
|
+
getSummary(sourceRef: import('./session-reader-adapter.interface').SessionSourceRef): Promise<{
|
|
25
|
+
metrics: import("../dtos/unified-session.types").UnifiedMetrics;
|
|
26
|
+
warnings: string[] | undefined;
|
|
27
|
+
exactFields: readonly ["inputTokens", "outputTokens", "cacheReadTokens", "cacheCreationTokens", "totalTokens", "totalContextConsumption", "compactionCount", "phaseBreakdowns", "visibleContextTokens", "totalContextTokens", "contextWindowTokens", "contextBreakdown", "costUsd", "nativeCost", "primaryModel", "modelsUsed", "durationMs", "messageCount", "isOngoing"];
|
|
28
|
+
}>;
|
|
24
29
|
extractCandidateMetadata(content: string): TranscriptCandidateMetadata | undefined;
|
|
25
30
|
private extractProviderSessionIdFromContent;
|
|
26
31
|
extractProviderSessionIdFromFile(filePath: string): Promise<string | null>;
|
|
@@ -52,6 +52,7 @@ const common_1 = require("@nestjs/common");
|
|
|
52
52
|
const fs = __importStar(require("node:fs/promises"));
|
|
53
53
|
const path = __importStar(require("node:path"));
|
|
54
54
|
const os = __importStar(require("node:os"));
|
|
55
|
+
const session_reader_adapter_interface_1 = require("./session-reader-adapter.interface");
|
|
55
56
|
const codex_jsonl_parser_1 = require("../parsers/codex-jsonl.parser");
|
|
56
57
|
const pricing_interface_1 = require("../services/pricing.interface");
|
|
57
58
|
const CODEX_ROOT = '.codex/sessions/';
|
|
@@ -187,6 +188,17 @@ let CodexSessionReaderAdapter = CodexSessionReaderAdapter_1 = class CodexSession
|
|
|
187
188
|
warnings: result.warnings,
|
|
188
189
|
};
|
|
189
190
|
}
|
|
191
|
+
async getSummary(sourceRef) {
|
|
192
|
+
const result = await (0, codex_jsonl_parser_1.parseCodexJsonl)(sourceRef.filePath, {
|
|
193
|
+
pricingService: this.pricingService,
|
|
194
|
+
retainMessages: false,
|
|
195
|
+
});
|
|
196
|
+
return {
|
|
197
|
+
metrics: result.metrics,
|
|
198
|
+
warnings: result.warnings,
|
|
199
|
+
exactFields: session_reader_adapter_interface_1.EXACT_SUMMARY_FIELDS,
|
|
200
|
+
};
|
|
201
|
+
}
|
|
190
202
|
extractCandidateMetadata(content) {
|
|
191
203
|
const meta = parseCodexSessionMeta(content);
|
|
192
204
|
return meta.providerSessionId || meta.timestamp || meta.workspacePath ? meta : undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex-session-reader.adapter.js","sourceRoot":"","sources":["../../../../src/modules/session-reader/adapters/codex-session-reader.adapter.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"codex-session-reader.adapter.js","sourceRoot":"","sources":["../../../../src/modules/session-reader/adapters/codex-session-reader.adapter.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwEA,0EAOC;AA/ED,2CAA4D;AAC5D,qDAAuC;AACvC,gDAAkC;AAClC,4CAA8B;AAS9B,yFAA0E;AAE1E,sEAAgE;AAChE,qEAA8F;AAE9F,MAAM,UAAU,GAAG,kBAAkB,CAAC;AACtC,MAAM,8BAA8B,GAAG,CAAC,GAAG,IAAI,CAAC;AAchD,SAAS,qBAAqB,CAAC,OAAe;IAC5C,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;QACrB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,CAOtD,CAAC;QACF,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;YAClC,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;QAC7B,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,EAAE,SAAS,CAAC;QAC3C,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC;QAE/B,OAAO;YACL,iBAAiB,EAAE,OAAO,EAAE,KAAK,QAAQ,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS;YAClF,SAAS,EACP,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;YACtF,aAAa,EAAE,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS;SAClF,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAQD,SAAgB,+BAA+B,CAAC,OAAe;IAC7D,MAAM,IAAI,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAC5C,OAAO;QACL,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,IAAI,IAAI;QACjD,aAAa,EAAE,IAAI,CAAC,SAAS,IAAI,IAAI;QACrC,OAAO,EAAE,IAAI,CAAC,aAAa,IAAI,IAAI;KACpC,CAAC;AACJ,CAAC;AAGM,IAAM,yBAAyB,iCAA/B,MAAM,yBAAyB;IAOpC,YAAqC,cAAwD;QAAvC,mBAAc,GAAd,cAAc,CAAyB;QANpF,iBAAY,GAAG,OAAO,CAAC;QACvB,oBAAe,GAAG,OAAgB,CAAC;QAE3B,WAAM,GAAG,IAAI,eAAM,CAAC,2BAAyB,CAAC,IAAI,CAAC,CAAC;QAInE,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;IAC5D,CAAC;IAOD,KAAK,CAAC,mBAAmB,CAAC,OAAgC;QACxD,MAAM,OAAO,GAAsB,EAAE,CAAC;QAGtC,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;YAC3B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;YACzD,IAAI,IAAI,EAAE,CAAC;gBACT,MAAM,iBAAiB,GACrB,CAAC,MAAM,IAAI,CAAC,gCAAgC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oBAC5D,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACvC,IAAI,iBAAiB,EAAE,CAAC;oBACtB,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;gBAC7C,CAAC;gBACD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACnB,OAAO,OAAO,CAAC;YACjB,CAAC;YACD,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,EAAE,cAAc,EAAE,OAAO,CAAC,cAAc,EAAE,EAC1C,6EAA6E,CAC9E,CAAC;QACJ,CAAC;QAGD,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QACzD,MAAM,IAAI,CAAC,mBAAmB,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QAGtD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QAEhG,OAAO,OAAO,CAAC;IACjB,CAAC;IAKD,KAAK,CAAC,gBAAgB,CAAC,QAAgB,EAAE,OAAsB;QAC7D,MAAM,MAAM,GAAG,MAAM,IAAA,oCAAe,EAAC,QAAQ,EAAE;YAC7C,WAAW,EAAE,OAAO,EAAE,WAAW;YACjC,UAAU,EAAE,OAAO,EAAE,UAAU;YAC/B,gBAAgB,EAAE,OAAO,EAAE,gBAAgB,IAAI,IAAI;YACnD,cAAc,EAAE,IAAI,CAAC,cAAc;SACpC,CAAC,CAAC;QAEH,OAAO;YACL,OAAO,EAAE,KAAK;YACd,cAAc,EAAE,MAAM,CAAC,SAAS;YAChC,YAAY,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM;YACpC,OAAO,EAAE,MAAM,CAAC,QAAQ;YACxB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,QAAQ,EAAE,MAAM,CAAC,QAAQ;SAC1B,CAAC;IACJ,CAAC;IAKD,KAAK,CAAC,gBAAgB,CAAC,QAAgB,EAAE,OAAqB;QAC5D,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAClD,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,CAAC,CAAC;QAE3C,IAAI,UAAU,IAAI,QAAQ,EAAE,CAAC;YAC3B,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,cAAc,EAAE,UAAU;gBAC1B,YAAY,EAAE,CAAC;gBACf,OAAO,EAAE,EAAE;aACZ,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,IAAA,oCAAe,EAAC,QAAQ,EAAE;YAC7C,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,UAAU;YACV,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,IAAI,IAAI;YAClD,cAAc,EAAE,IAAI,CAAC,cAAc;SACpC,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,GAAG,QAAQ,CAAC;QAE5C,OAAO;YACL,OAAO;YACP,cAAc,EAAE,MAAM,CAAC,SAAS;YAChC,YAAY,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM;YACpC,OAAO,EAAE,MAAM,CAAC,QAAQ;YACxB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,QAAQ,EAAE,MAAM,CAAC,QAAQ;SAC1B,CAAC;IACJ,CAAC;IAKD,aAAa,CAAC,YAAoB;QAChC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;IAC/C,CAAC;IAKD,aAAa,CAAC,OAAkB,EAAE,KAAa;QAC7C,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,GAAG,GAAG,KAEX,CAAC;YACF,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;gBACd,SAAS,IAAI,IAAI,CAAC,cAAc,CAAC,oBAAoB,CACnD,KAAK,EACL,GAAG,CAAC,KAAK,CAAC,KAAK,EACf,GAAG,CAAC,KAAK,CAAC,MAAM,EAChB,GAAG,CAAC,KAAK,CAAC,SAAS,EACnB,GAAG,CAAC,KAAK,CAAC,aAAa,CACxB,CAAC;YACJ,CAAC;QACH,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAKD,KAAK,CAAC,gBAAgB,CAAC,QAAgB;QACrC,MAAM,MAAM,GAAG,MAAM,IAAA,oCAAe,EAAC,QAAQ,EAAE;YAC7C,cAAc,EAAE,IAAI,CAAC,cAAc;SACpC,CAAC,CAAC;QAIH,MAAM,EAAE,GACN,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAE3F,OAAO;YACL,EAAE;YACF,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,QAAQ;YACR,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,SAAS;YACnC,QAAQ,EAAE,MAAM,CAAC,QAAQ;SAC1B,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,SAAwE;QACvF,MAAM,MAAM,GAAG,MAAM,IAAA,oCAAe,EAAC,SAAS,CAAC,QAAQ,EAAE;YACvD,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,cAAc,EAAE,KAAK;SACtB,CAAC,CAAC;QACH,OAAO;YACL,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,WAAW,EAAE,uDAAoB;SAClC,CAAC;IACJ,CAAC;IAOD,wBAAwB,CAAC,OAAe;QACtC,MAAM,IAAI,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;QAC5C,OAAO,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3F,CAAC;IAMO,mCAAmC,CAAC,OAAe;QACzD,OAAO,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,EAAE,iBAAiB,CAAC;IACnE,CAAC;IAOD,KAAK,CAAC,gCAAgC,CAAC,QAAgB;QACrD,IAAI,MAAM,GAAyB,IAAI,CAAC;QACxC,IAAI,CAAC;YACH,MAAM,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;YACtC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;YAC5D,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YACrE,IAAI,SAAS,KAAK,CAAC,EAAE,CAAC;gBACpB,OAAO,IAAI,CAAC;YACd,CAAC;YACD,OAAO,CACL,IAAI,CAAC,mCAAmC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBACxF,IAAI,CACL,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;gBAAS,CAAC;YACT,MAAM,MAAM,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAUO,gBAAgB,CAAC,QAAgB;QACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAEnD,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAC1B,8FAA8F,CAC/F,CAAC;QACF,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;IAC5B,CAAC;IAKO,KAAK,CAAC,mBAAmB,CAC/B,OAAe,EACf,OAA0B,EAC1B,KAAK,GAAG,CAAC;QAGT,IAAI,KAAK,GAAG,CAAC;YAAE,OAAO;QAEtB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;YACnE,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;gBAChD,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;oBACxB,MAAM,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;gBAC/D,CAAC;qBAAM,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC3D,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;oBAC3C,IAAI,IAAI,EAAE,CAAC;wBACT,MAAM,iBAAiB,GACrB,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC;4BAC/B,CAAC,MAAM,IAAI,CAAC,gCAAgC,CAAC,QAAQ,CAAC,CAAC,CAAC;wBAC1D,IAAI,iBAAiB,EAAE,CAAC;4BACtB,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;wBAC7C,CAAC;wBACD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACrB,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACvD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,yCAAyC,CAAC,CAAC;YAClF,CAAC;QACH,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,QAAQ,CAAC,QAAgB;QACrC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACrC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;gBAAE,OAAO,IAAI,CAAC;YAChC,OAAO;gBACL,QAAQ;gBACR,YAAY,EAAE,IAAI,CAAC,YAAY;gBAC/B,SAAS,EAAE,IAAI,CAAC,IAAI;gBACpB,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;aACvC,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,WAAW,CAAC,QAAgB;QACxC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACrC,OAAO,IAAI,CAAC,IAAI,CAAC;QACnB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;CACF,CAAA;AAlSY,8DAAyB;oCAAzB,yBAAyB;IADrC,IAAA,mBAAU,GAAE;IAQE,WAAA,IAAA,eAAM,EAAC,mCAAe,CAAC,CAAA;;GAPzB,yBAAyB,CAkSrC"}
|
|
@@ -16,6 +16,11 @@ export declare class CopilotSessionReaderAdapter implements SessionReaderAdapter
|
|
|
16
16
|
getWatchPaths(_projectRoot: string): string[];
|
|
17
17
|
calculateCost(entries: unknown[], model: string): number;
|
|
18
18
|
parseFullSession(filePath: string): Promise<UnifiedSession>;
|
|
19
|
+
getSummary(sourceRef: import('./session-reader-adapter.interface').SessionSourceRef): Promise<{
|
|
20
|
+
metrics: import("../dtos/unified-session.types").UnifiedMetrics;
|
|
21
|
+
warnings: string[] | undefined;
|
|
22
|
+
exactFields: readonly ["inputTokens", "outputTokens", "cacheReadTokens", "cacheCreationTokens", "totalTokens", "totalContextConsumption", "compactionCount", "phaseBreakdowns", "visibleContextTokens", "totalContextTokens", "contextWindowTokens", "contextBreakdown", "costUsd", "nativeCost", "primaryModel", "modelsUsed", "durationMs", "messageCount", "isOngoing"];
|
|
23
|
+
}>;
|
|
19
24
|
private deriveEventsPath;
|
|
20
25
|
private statFile;
|
|
21
26
|
private getFileSize;
|
|
@@ -51,6 +51,7 @@ const common_1 = require("@nestjs/common");
|
|
|
51
51
|
const fs = __importStar(require("node:fs/promises"));
|
|
52
52
|
const path = __importStar(require("node:path"));
|
|
53
53
|
const os = __importStar(require("node:os"));
|
|
54
|
+
const session_reader_adapter_interface_1 = require("./session-reader-adapter.interface");
|
|
54
55
|
const copilot_jsonl_parser_1 = require("../parsers/copilot-jsonl.parser");
|
|
55
56
|
const pricing_interface_1 = require("../services/pricing.interface");
|
|
56
57
|
const COPILOT_ROOT = '.copilot/session-state/';
|
|
@@ -153,6 +154,17 @@ let CopilotSessionReaderAdapter = CopilotSessionReaderAdapter_1 = class CopilotS
|
|
|
153
154
|
warnings: result.warnings,
|
|
154
155
|
};
|
|
155
156
|
}
|
|
157
|
+
async getSummary(sourceRef) {
|
|
158
|
+
const result = await (0, copilot_jsonl_parser_1.parseCopilotJsonl)(sourceRef.filePath, {
|
|
159
|
+
pricingService: this.pricingService,
|
|
160
|
+
retainMessages: false,
|
|
161
|
+
});
|
|
162
|
+
return {
|
|
163
|
+
metrics: result.metrics,
|
|
164
|
+
warnings: result.warnings,
|
|
165
|
+
exactFields: session_reader_adapter_interface_1.EXACT_SUMMARY_FIELDS,
|
|
166
|
+
};
|
|
167
|
+
}
|
|
156
168
|
deriveEventsPath(sessionId) {
|
|
157
169
|
return path.join(this.homeDir, COPILOT_ROOT, sessionId, EVENTS_FILENAME);
|
|
158
170
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"copilot-session-reader.adapter.js","sourceRoot":"","sources":["../../../../src/modules/session-reader/adapters/copilot-session-reader.adapter.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAA4D;AAC5D,qDAAuC;AACvC,gDAAkC;AAClC,4CAA8B;
|
|
1
|
+
{"version":3,"file":"copilot-session-reader.adapter.js","sourceRoot":"","sources":["../../../../src/modules/session-reader/adapters/copilot-session-reader.adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,6 +14,11 @@ export declare class OpenCodeSessionReaderAdapter implements SessionReaderAdapte
|
|
|
14
14
|
discoverSessionFile(context: SessionDiscoveryContext): Promise<SessionFileInfo[]>;
|
|
15
15
|
getFreshnessToken(sourceRef: SessionSourceRef): Promise<unknown>;
|
|
16
16
|
parseFullSession(filePath: string, sourceRef?: SessionSourceRef): Promise<UnifiedSession>;
|
|
17
|
+
getSummary(sourceRef: SessionSourceRef): Promise<{
|
|
18
|
+
metrics: import("../dtos/unified-session.types").UnifiedMetrics;
|
|
19
|
+
exactFields: ("totalTokens" | "inputTokens" | "outputTokens" | "costUsd" | "messageCount" | "durationMs" | "cacheReadTokens" | "cacheCreationTokens" | "totalContextConsumption" | "compactionCount" | "phaseBreakdowns" | "visibleContextTokens" | "totalContextTokens" | "contextWindowTokens" | "contextBreakdown" | "nativeCost" | "primaryModel" | "modelsUsed" | "isOngoing")[];
|
|
20
|
+
approximateFields: readonly ["visibleContextTokens", "totalContextConsumption", "phaseBreakdowns"];
|
|
21
|
+
}>;
|
|
17
22
|
parseIncremental(filePath: string, _options: ParseOptions, sourceRef?: SessionSourceRef): Promise<IncrementalResult>;
|
|
18
23
|
parseSessionFile(_filePath: string, _options?: ParseOptions): Promise<IncrementalResult>;
|
|
19
24
|
getWatchPaths(_projectRoot: string): string[];
|
|
@@ -50,12 +50,18 @@ exports.OpenCodeSessionReaderAdapter = void 0;
|
|
|
50
50
|
const common_1 = require("@nestjs/common");
|
|
51
51
|
const os = __importStar(require("node:os"));
|
|
52
52
|
const path = __importStar(require("node:path"));
|
|
53
|
+
const session_reader_adapter_interface_1 = require("./session-reader-adapter.interface");
|
|
53
54
|
const pricing_interface_1 = require("../services/pricing.interface");
|
|
54
55
|
const error_types_1 = require("../../../common/errors/error-types");
|
|
55
56
|
const opencode_sqlite_reader_1 = require("../readers/opencode-sqlite.reader");
|
|
56
57
|
const OPENCODE_ROOT = '.local/share/opencode';
|
|
57
58
|
const OPENCODE_DB_FILE = 'opencode.db';
|
|
58
59
|
const DISCOVERY_WINDOW_MS = 120_000;
|
|
60
|
+
const APPROXIMATE_SUMMARY_FIELDS = [
|
|
61
|
+
'visibleContextTokens',
|
|
62
|
+
'totalContextConsumption',
|
|
63
|
+
'phaseBreakdowns',
|
|
64
|
+
];
|
|
59
65
|
let OpenCodeSessionReaderAdapter = OpenCodeSessionReaderAdapter_1 = class OpenCodeSessionReaderAdapter {
|
|
60
66
|
constructor(pricingService) {
|
|
61
67
|
this.pricingService = pricingService;
|
|
@@ -103,6 +109,15 @@ let OpenCodeSessionReaderAdapter = OpenCodeSessionReaderAdapter_1 = class OpenCo
|
|
|
103
109
|
const { session } = this.reader.readSession(this.resolveDbPath(sourceRef, filePath), providerSessionId);
|
|
104
110
|
return session;
|
|
105
111
|
}
|
|
112
|
+
async getSummary(sourceRef) {
|
|
113
|
+
const providerSessionId = this.requireSessionId(sourceRef.providerSessionId);
|
|
114
|
+
const { metrics } = this.reader.readSummary(this.resolveDbPath(sourceRef), providerSessionId);
|
|
115
|
+
return {
|
|
116
|
+
metrics,
|
|
117
|
+
exactFields: session_reader_adapter_interface_1.EXACT_SUMMARY_FIELDS.filter((field) => !APPROXIMATE_SUMMARY_FIELDS.includes(field)),
|
|
118
|
+
approximateFields: APPROXIMATE_SUMMARY_FIELDS,
|
|
119
|
+
};
|
|
120
|
+
}
|
|
106
121
|
async parseIncremental(filePath, _options, sourceRef) {
|
|
107
122
|
const providerSessionId = this.requireSessionId(sourceRef?.providerSessionId);
|
|
108
123
|
const { session, sizeBytes } = this.reader.readSession(this.resolveDbPath(sourceRef, filePath), providerSessionId);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opencode-session-reader.adapter.js","sourceRoot":"","sources":["../../../../src/modules/session-reader/adapters/opencode-session-reader.adapter.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYA,2CAA4D;AAC5D,4CAA8B;AAC9B,gDAAkC;
|
|
1
|
+
{"version":3,"file":"opencode-session-reader.adapter.js","sourceRoot":"","sources":["../../../../src/modules/session-reader/adapters/opencode-session-reader.adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,8 @@ export interface SessionSourceRef {
|
|
|
8
8
|
export declare function defaultFileFreshnessToken(sourceRef: SessionSourceRef): Promise<{
|
|
9
9
|
mtimeMs: number;
|
|
10
10
|
size: number;
|
|
11
|
+
dev: number;
|
|
12
|
+
ino: number;
|
|
11
13
|
}>;
|
|
12
14
|
export interface SessionDiscoveryContext {
|
|
13
15
|
projectRoot: string;
|
|
@@ -41,6 +43,13 @@ export interface TranscriptCandidateMetadata {
|
|
|
41
43
|
workspacePath?: string;
|
|
42
44
|
timestamp?: string;
|
|
43
45
|
}
|
|
46
|
+
export interface AdapterSummaryResult {
|
|
47
|
+
metrics: UnifiedMetrics;
|
|
48
|
+
warnings?: string[];
|
|
49
|
+
exactFields: readonly (keyof UnifiedMetrics)[];
|
|
50
|
+
approximateFields?: readonly (keyof UnifiedMetrics)[];
|
|
51
|
+
}
|
|
52
|
+
export declare const EXACT_SUMMARY_FIELDS: readonly ["inputTokens", "outputTokens", "cacheReadTokens", "cacheCreationTokens", "totalTokens", "totalContextConsumption", "compactionCount", "phaseBreakdowns", "visibleContextTokens", "totalContextTokens", "contextWindowTokens", "contextBreakdown", "costUsd", "nativeCost", "primaryModel", "modelsUsed", "durationMs", "messageCount", "isOngoing"];
|
|
44
53
|
export interface SessionReaderAdapter {
|
|
45
54
|
readonly providerName: string;
|
|
46
55
|
readonly incrementalMode: 'delta' | 'snapshot';
|
|
@@ -52,6 +61,7 @@ export interface SessionReaderAdapter {
|
|
|
52
61
|
getWatchPaths(projectRoot: string): string[];
|
|
53
62
|
calculateCost(entries: unknown[], model: string): number;
|
|
54
63
|
parseFullSession(filePath: string, sourceRef?: SessionSourceRef): Promise<UnifiedSession>;
|
|
64
|
+
getSummary?(sourceRef: SessionSourceRef): Promise<AdapterSummaryResult | null>;
|
|
55
65
|
getFreshnessToken?(sourceRef: SessionSourceRef): Promise<unknown>;
|
|
56
66
|
extractCandidateMetadata?(content: string): TranscriptCandidateMetadata | undefined;
|
|
57
67
|
extractContentTimestamp?(content: string): Date | null;
|
|
@@ -33,10 +33,37 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.EXACT_SUMMARY_FIELDS = void 0;
|
|
36
37
|
exports.defaultFileFreshnessToken = defaultFileFreshnessToken;
|
|
37
38
|
const fs = __importStar(require("node:fs/promises"));
|
|
38
39
|
async function defaultFileFreshnessToken(sourceRef) {
|
|
39
40
|
const stat = await fs.stat(sourceRef.filePath);
|
|
40
|
-
return {
|
|
41
|
+
return {
|
|
42
|
+
mtimeMs: stat.mtime.getTime(),
|
|
43
|
+
size: stat.size,
|
|
44
|
+
dev: stat.dev,
|
|
45
|
+
ino: stat.ino,
|
|
46
|
+
};
|
|
41
47
|
}
|
|
48
|
+
exports.EXACT_SUMMARY_FIELDS = [
|
|
49
|
+
'inputTokens',
|
|
50
|
+
'outputTokens',
|
|
51
|
+
'cacheReadTokens',
|
|
52
|
+
'cacheCreationTokens',
|
|
53
|
+
'totalTokens',
|
|
54
|
+
'totalContextConsumption',
|
|
55
|
+
'compactionCount',
|
|
56
|
+
'phaseBreakdowns',
|
|
57
|
+
'visibleContextTokens',
|
|
58
|
+
'totalContextTokens',
|
|
59
|
+
'contextWindowTokens',
|
|
60
|
+
'contextBreakdown',
|
|
61
|
+
'costUsd',
|
|
62
|
+
'nativeCost',
|
|
63
|
+
'primaryModel',
|
|
64
|
+
'modelsUsed',
|
|
65
|
+
'durationMs',
|
|
66
|
+
'messageCount',
|
|
67
|
+
'isOngoing',
|
|
68
|
+
];
|
|
42
69
|
//# sourceMappingURL=session-reader-adapter.interface.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-reader-adapter.interface.js","sourceRoot":"","sources":["../../../../src/modules/session-reader/adapters/session-reader-adapter.interface.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"session-reader-adapter.interface.js","sourceRoot":"","sources":["../../../../src/modules/session-reader/adapters/session-reader-adapter.interface.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgDA,8DAUC;AAlDD,qDAAuC;AAwChC,KAAK,UAAU,yBAAyB,CAC7C,SAA2B;IAE3B,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IAC/C,OAAO;QACL,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;QAC7B,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,GAAG,EAAE,IAAI,CAAC,GAAG;KACd,CAAC;AACJ,CAAC;AAiGY,QAAA,oBAAoB,GAAG;IAClC,aAAa;IACb,cAAc;IACd,iBAAiB;IACjB,qBAAqB;IACrB,aAAa;IACb,yBAAyB;IACzB,iBAAiB;IACjB,iBAAiB;IACjB,sBAAsB;IACtB,oBAAoB;IACpB,qBAAqB;IACrB,kBAAkB;IAClB,SAAS;IACT,YAAY;IACZ,cAAc;IACd,YAAY;IACZ,YAAY;IACZ,cAAc;IACd,WAAW;CACyC,CAAC"}
|
|
@@ -1,8 +1,13 @@
|
|
|
1
|
+
import { OnModuleInit } from '@nestjs/common';
|
|
1
2
|
import { SessionReaderService } from '../services/session-reader.service';
|
|
2
|
-
|
|
3
|
+
import { MetricsService } from '../../metrics/services/metrics.service';
|
|
4
|
+
import { SessionCacheService } from '../services/session-cache.service';
|
|
5
|
+
export declare class SessionReaderController implements OnModuleInit {
|
|
3
6
|
private readonly sessionReaderService;
|
|
4
|
-
private readonly
|
|
5
|
-
|
|
7
|
+
private readonly metricsService;
|
|
8
|
+
private readonly sessionCacheService;
|
|
9
|
+
constructor(sessionReaderService: SessionReaderService, metricsService: MetricsService, sessionCacheService: SessionCacheService);
|
|
10
|
+
onModuleInit(): void;
|
|
6
11
|
getTranscript(id: string, maxLen?: string): Promise<Record<string, unknown> | {
|
|
7
12
|
cursor: string;
|
|
8
13
|
messages: Record<string, unknown>[];
|
|
@@ -23,9 +28,10 @@ export declare class SessionReaderController {
|
|
|
23
28
|
totalCount: number;
|
|
24
29
|
}>;
|
|
25
30
|
getTranscriptChunk(id: string, chunkId: string): Promise<Record<string, unknown>>;
|
|
26
|
-
getTranscriptTail(id: string, since?: string): Promise<{
|
|
31
|
+
getTranscriptTail(id: string, since?: string): Promise<import("../services/session-reader.service").TranscriptTailFullRefetchRequiredResponse | {
|
|
27
32
|
deltaChunks: Record<string, unknown>[];
|
|
28
33
|
deltaMessages: Record<string, unknown>[];
|
|
34
|
+
kind: "delta";
|
|
29
35
|
cursor: string;
|
|
30
36
|
replaceFromChunkId: string | null;
|
|
31
37
|
replaceFromChunkIndex: number;
|
|
@@ -21,6 +21,8 @@ const transcript_truncation_1 = require("../services/transcript-truncation");
|
|
|
21
21
|
const transcript_serialization_1 = require("../services/transcript-serialization");
|
|
22
22
|
const error_types_1 = require("../../../common/errors/error-types");
|
|
23
23
|
const logger_1 = require("../../../common/logging/logger");
|
|
24
|
+
const metrics_service_1 = require("../../metrics/services/metrics.service");
|
|
25
|
+
const session_cache_service_1 = require("../services/session-cache.service");
|
|
24
26
|
const logger = (0, logger_1.createLogger)('SessionReaderController');
|
|
25
27
|
const SessionIdParamSchema = zod_1.z.string().uuid('Session ID must be a valid UUID');
|
|
26
28
|
const ToolCallIdParamSchema = zod_1.z.string().min(1, 'toolCallId is required');
|
|
@@ -53,14 +55,17 @@ const TranscriptQuerySchema = zod_1.z.object({
|
|
|
53
55
|
])
|
|
54
56
|
.optional(),
|
|
55
57
|
});
|
|
56
|
-
const DTO_CACHE_MAX_ENTRIES = 20;
|
|
57
58
|
function enrichmentFingerprint(session) {
|
|
58
59
|
return `${session.providerName}:${session.metrics.contextWindowTokens ?? 0}`;
|
|
59
60
|
}
|
|
60
61
|
let SessionReaderController = class SessionReaderController {
|
|
61
|
-
constructor(sessionReaderService) {
|
|
62
|
+
constructor(sessionReaderService, metricsService, sessionCacheService) {
|
|
62
63
|
this.sessionReaderService = sessionReaderService;
|
|
63
|
-
this.
|
|
64
|
+
this.metricsService = metricsService;
|
|
65
|
+
this.sessionCacheService = sessionCacheService;
|
|
66
|
+
}
|
|
67
|
+
onModuleInit() {
|
|
68
|
+
this.metricsService.registerCacheStatsProvider('dto', () => this.sessionCacheService.getDtoCacheStats(), () => this.sessionCacheService.getDtoRetainedRoots());
|
|
64
69
|
}
|
|
65
70
|
async getTranscript(id, maxLen) {
|
|
66
71
|
logger.info({ sessionId: id, maxToolResultLength: maxLen }, 'GET /api/sessions/:id/transcript');
|
|
@@ -71,12 +76,8 @@ let SessionReaderController = class SessionReaderController {
|
|
|
71
76
|
const tTotal = performance.now();
|
|
72
77
|
const { session, timing } = await this.sessionReaderService.getTranscriptWithTimings(sessionId, { maxToolResultLength });
|
|
73
78
|
const fingerprint = enrichmentFingerprint(session);
|
|
74
|
-
const dtoCached = this.
|
|
75
|
-
if (dtoCached
|
|
76
|
-
dtoCached.lastSize === timing.fileSizeBytes &&
|
|
77
|
-
dtoCached.lastMtime === timing.fileMtimeMs &&
|
|
78
|
-
dtoCached.maxToolResultLength === maxToolResultLength &&
|
|
79
|
-
dtoCached.enrichmentFingerprint === fingerprint) {
|
|
79
|
+
const dtoCached = this.sessionCacheService.getDto(sessionId, maxToolResultLength, fingerprint);
|
|
80
|
+
if (dtoCached) {
|
|
80
81
|
const totalMs = performance.now() - tTotal;
|
|
81
82
|
logger.info({
|
|
82
83
|
sessionId,
|
|
@@ -102,25 +103,18 @@ let SessionReaderController = class SessionReaderController {
|
|
|
102
103
|
}
|
|
103
104
|
const tSerialize = performance.now();
|
|
104
105
|
const chunks = session.chunks ?? [];
|
|
105
|
-
const cursor = (0, transcript_cursor_1.encodeCursor)(timing.
|
|
106
|
+
const cursor = (0, transcript_cursor_1.encodeCursor)(timing.sourceVersion, session.messages.length, chunks.length);
|
|
106
107
|
const result = { ...this.serializeTranscript(session), cursor };
|
|
107
108
|
const serializeTranscriptMs = performance.now() - tSerialize;
|
|
108
109
|
const serializedJson = JSON.stringify(result);
|
|
109
110
|
const responseBytes = Buffer.byteLength(serializedJson, 'utf8');
|
|
110
111
|
const totalMs = performance.now() - tTotal;
|
|
111
|
-
this.
|
|
112
|
+
this.sessionCacheService.setDto(sessionId, {
|
|
112
113
|
result: result,
|
|
113
114
|
responseBytes,
|
|
114
|
-
lastSize: timing.fileSizeBytes,
|
|
115
|
-
lastMtime: timing.fileMtimeMs,
|
|
116
115
|
maxToolResultLength,
|
|
117
116
|
enrichmentFingerprint: fingerprint,
|
|
118
117
|
});
|
|
119
|
-
if (this.dtoCache.size > DTO_CACHE_MAX_ENTRIES) {
|
|
120
|
-
const oldest = this.dtoCache.keys().next().value;
|
|
121
|
-
if (oldest !== undefined)
|
|
122
|
-
this.dtoCache.delete(oldest);
|
|
123
|
-
}
|
|
124
118
|
const semanticStepCount = chunks.reduce((sum, chunk) => {
|
|
125
119
|
if (chunk.type === 'ai' && 'semanticSteps' in chunk) {
|
|
126
120
|
return sum + chunk.semanticSteps.length;
|
|
@@ -221,6 +215,9 @@ let SessionReaderController = class SessionReaderController {
|
|
|
221
215
|
if (result === null) {
|
|
222
216
|
throw new common_1.NotFoundException('Cursor expired — full transcript fetch required');
|
|
223
217
|
}
|
|
218
|
+
if (result.kind === 'full-refetch-required') {
|
|
219
|
+
return result;
|
|
220
|
+
}
|
|
224
221
|
return {
|
|
225
222
|
...result,
|
|
226
223
|
deltaChunks: result.deltaChunks.map((chunk) => (0, transcript_serialization_1.serializeChunk)(chunk)),
|
|
@@ -334,7 +331,9 @@ __decorate([
|
|
|
334
331
|
], SessionReaderController.prototype, "getTranscriptToolResult", null);
|
|
335
332
|
exports.SessionReaderController = SessionReaderController = __decorate([
|
|
336
333
|
(0, common_1.Controller)('api/sessions'),
|
|
337
|
-
__metadata("design:paramtypes", [session_reader_service_1.SessionReaderService
|
|
334
|
+
__metadata("design:paramtypes", [session_reader_service_1.SessionReaderService,
|
|
335
|
+
metrics_service_1.MetricsService,
|
|
336
|
+
session_cache_service_1.SessionCacheService])
|
|
338
337
|
], SessionReaderController);
|
|
339
338
|
function round2(ms) {
|
|
340
339
|
return Math.round(ms * 100) / 100;
|