speccore 8.3.251 → 8.3.252
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/commands/analyze.d.ts.map +1 -1
- package/dist/commands/analyze.js +31 -0
- package/dist/commands/analyze.js.map +1 -1
- package/dist/utils/ai-trace.d.ts +3 -0
- package/dist/utils/ai-trace.d.ts.map +1 -0
- package/dist/utils/ai-trace.js +49 -0
- package/dist/utils/ai-trace.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai-trace.d.ts","sourceRoot":"","sources":["../../src/utils/ai-trace.ts"],"names":[],"mappings":"AAiBA,MAAM,MAAM,YAAY,GAAG,YAAY,GAAG,UAAU,GAAG,YAAY,GAAG,YAAY,CAAC;AAanF,wBAAsB,aAAa,CACjC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,YAAY,EACnB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAgBxB"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.recordAiTrace = recordAiTrace;
|
|
4
|
+
/**
|
|
5
|
+
* AI 交互轨迹记录器(飞行记录仪)
|
|
6
|
+
*
|
|
7
|
+
* 三段接力(CLI 发 Prompt → AI 生成 → --apply 落盘)的可观测性底座:
|
|
8
|
+
* 每个环节都留下结构化物证,出问题时一查便知——
|
|
9
|
+
* 1. prompt-out:发给 AI 的内容原文(含长度/模式/标记),回答「给 AI 的内容是什么」
|
|
10
|
+
* 2. apply-in:AI 回传的原文(解析前,格式错误也留档),回答「AI 回了什么」
|
|
11
|
+
* 3. apply-fail:回传了但没解析出内容,区分「AI 没给」与「给了但被解析丢弃」
|
|
12
|
+
* 4. apply-done:落盘结果(文件清单、字节数),回答「写入有没有问题」
|
|
13
|
+
*
|
|
14
|
+
* 轨迹落盘 .speccore/local/ai-trace/{迭代}/{日期}.jsonl(一行一条),不进 git。
|
|
15
|
+
* v8.3.252+
|
|
16
|
+
*/
|
|
17
|
+
const fs_extra_1 = require("fs-extra");
|
|
18
|
+
const path_1 = require("path");
|
|
19
|
+
const task_utils_1 = require("./task-utils");
|
|
20
|
+
const TRACE_ROOT = 'ai-trace';
|
|
21
|
+
/** 大字段单条上限(防止 prompt/回传原文撑爆磁盘) */
|
|
22
|
+
const MAX_FIELD_CHARS = 200000;
|
|
23
|
+
function capField(v) {
|
|
24
|
+
if (typeof v === 'string' && v.length > MAX_FIELD_CHARS) {
|
|
25
|
+
return { __truncated__: true, head: v.slice(0, MAX_FIELD_CHARS), tail: v.slice(-1000) };
|
|
26
|
+
}
|
|
27
|
+
return v;
|
|
28
|
+
}
|
|
29
|
+
async function recordAiTrace(iter, event, payload) {
|
|
30
|
+
try {
|
|
31
|
+
const root = await (0, task_utils_1.findProjectRoot)();
|
|
32
|
+
if (!root)
|
|
33
|
+
return null;
|
|
34
|
+
const dir = (0, path_1.join)(root, '.speccore', 'local', TRACE_ROOT, iter);
|
|
35
|
+
await (0, fs_extra_1.ensureDir)(dir);
|
|
36
|
+
const day = new Date().toISOString().slice(0, 10);
|
|
37
|
+
const safePayload = {};
|
|
38
|
+
for (const [k, v] of Object.entries(payload))
|
|
39
|
+
safePayload[k] = capField(v);
|
|
40
|
+
const line = JSON.stringify({ ts: new Date().toISOString(), event, ...safePayload });
|
|
41
|
+
const fp = (0, path_1.join)(dir, `${day}.jsonl`);
|
|
42
|
+
await (0, fs_extra_1.appendFile)(fp, line + '\n', 'utf-8');
|
|
43
|
+
return fp;
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=ai-trace.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai-trace.js","sourceRoot":"","sources":["../../src/utils/ai-trace.ts"],"names":[],"mappings":";;AA8BA,sCAoBC;AAlDD;;;;;;;;;;;;GAYG;AACH,uCAAiD;AACjD,+BAA4B;AAC5B,6CAA+C;AAI/C,MAAM,UAAU,GAAG,UAAU,CAAC;AAC9B,kCAAkC;AAClC,MAAM,eAAe,GAAG,MAAO,CAAC;AAEhC,SAAS,QAAQ,CAAC,CAAU;IAC1B,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,GAAG,eAAe,EAAE,CAAC;QACxD,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,eAAe,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;IAC1F,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAEM,KAAK,UAAU,aAAa,CACjC,IAAY,EACZ,KAAmB,EACnB,OAAgC;IAEhC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,IAAA,4BAAe,GAAE,CAAC;QACrC,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC;QACvB,MAAM,GAAG,GAAG,IAAA,WAAI,EAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;QAC/D,MAAM,IAAA,oBAAS,EAAC,GAAG,CAAC,CAAC;QACrB,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAClD,MAAM,WAAW,GAA4B,EAAE,CAAC;QAChD,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;YAAE,WAAW,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC3E,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,GAAG,WAAW,EAAE,CAAC,CAAC;QACrF,MAAM,EAAE,GAAG,IAAA,WAAI,EAAC,GAAG,EAAE,GAAG,GAAG,QAAQ,CAAC,CAAC;QACrC,MAAM,IAAA,qBAAU,EAAC,EAAE,EAAE,IAAI,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;QAC3C,OAAO,EAAE,CAAC;IACZ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
|