@veewo/claw 0.2.25 → 0.2.26
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 +34 -132
- package/dist/cli.js.map +1 -1
- package/dist/report-collector-registry.d.ts +20 -0
- package/dist/report-collector-registry.js +42 -0
- package/dist/report-collector-registry.js.map +1 -0
- package/package.json +3 -3
- package/dist/codex-transcript.d.ts +0 -7
- package/dist/codex-transcript.js +0 -313
- package/dist/codex-transcript.js.map +0 -1
- package/dist/dsh-capture.d.ts +0 -22
- package/dist/dsh-capture.js +0 -34
- package/dist/dsh-capture.js.map +0 -1
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export type ReportCollectorHost = "codex" | "dsh" | "cindy";
|
|
2
|
+
/** Adapter-local executable registration. Its output remains opaque to claw-kit. */
|
|
3
|
+
export type ReportCollectorDescriptor = {
|
|
4
|
+
host: ReportCollectorHost;
|
|
5
|
+
executable: string;
|
|
6
|
+
args: string[];
|
|
7
|
+
};
|
|
8
|
+
type ReportCollectionRequest = {
|
|
9
|
+
host: ReportCollectorHost;
|
|
10
|
+
sessionId: string;
|
|
11
|
+
projectRoot: string;
|
|
12
|
+
planPath: string;
|
|
13
|
+
canonicalReportPath: string;
|
|
14
|
+
stagingReportPath: string;
|
|
15
|
+
startedAt?: string;
|
|
16
|
+
};
|
|
17
|
+
export declare function registerReportCollector(projectRoot: string, descriptor: ReportCollectorDescriptor): void;
|
|
18
|
+
/** Invoke the adapter collector and publish its staging file without inspecting its content. */
|
|
19
|
+
export declare function collectReport(input: Omit<ReportCollectionRequest, "stagingReportPath">): void;
|
|
20
|
+
export {};
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { spawnSync } from "node:child_process";
|
|
4
|
+
import { randomUUID } from "node:crypto";
|
|
5
|
+
function collectorPath(projectRoot, host) {
|
|
6
|
+
return path.join(projectRoot, ".claw", "runtime", "report-collectors", `${host}.json`);
|
|
7
|
+
}
|
|
8
|
+
export function registerReportCollector(projectRoot, descriptor) {
|
|
9
|
+
if (!path.isAbsolute(descriptor.executable) || descriptor.args.some((arg) => typeof arg !== "string")) {
|
|
10
|
+
throw new Error("REPORT_COLLECTOR_INVALID: collector executable must be absolute and arguments must be strings.");
|
|
11
|
+
}
|
|
12
|
+
const target = collectorPath(projectRoot, descriptor.host);
|
|
13
|
+
fs.mkdirSync(path.dirname(target), { recursive: true });
|
|
14
|
+
fs.writeFileSync(target, `${JSON.stringify(descriptor, null, 2)}\n`, "utf8");
|
|
15
|
+
}
|
|
16
|
+
/** Invoke the adapter collector and publish its staging file without inspecting its content. */
|
|
17
|
+
export function collectReport(input) {
|
|
18
|
+
const descriptorPath = collectorPath(input.projectRoot, input.host);
|
|
19
|
+
if (!fs.existsSync(descriptorPath))
|
|
20
|
+
throw new Error(`REPORT_COLLECTOR_UNREGISTERED: ${input.host}`);
|
|
21
|
+
const descriptor = JSON.parse(fs.readFileSync(descriptorPath, "utf8"));
|
|
22
|
+
if (descriptor.host !== input.host || !path.isAbsolute(descriptor.executable)) {
|
|
23
|
+
throw new Error(`REPORT_COLLECTOR_INCOMPATIBLE: ${input.host}`);
|
|
24
|
+
}
|
|
25
|
+
const stagingDir = path.join(path.dirname(input.canonicalReportPath), ".runtime", "report-captures");
|
|
26
|
+
fs.mkdirSync(stagingDir, { recursive: true });
|
|
27
|
+
const stagingReportPath = path.join(stagingDir, `${randomUUID()}.report`);
|
|
28
|
+
try {
|
|
29
|
+
const result = spawnSync(descriptor.executable, descriptor.args, {
|
|
30
|
+
input: JSON.stringify({ ...input, stagingReportPath }), encoding: "utf8", windowsHide: true, timeout: 30_000,
|
|
31
|
+
});
|
|
32
|
+
if (result.error || result.status !== 0)
|
|
33
|
+
throw new Error(`REPORT_COLLECTOR_FAILED: ${input.host}`);
|
|
34
|
+
if (!fs.existsSync(stagingReportPath))
|
|
35
|
+
throw new Error(`REPORT_COLLECTOR_FAILED: ${input.host} produced no report.`);
|
|
36
|
+
fs.copyFileSync(stagingReportPath, input.canonicalReportPath);
|
|
37
|
+
}
|
|
38
|
+
finally {
|
|
39
|
+
fs.rmSync(stagingReportPath, { force: true });
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=report-collector-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"report-collector-registry.js","sourceRoot":"","sources":["../src/report-collector-registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAqBzC,SAAS,aAAa,CAAC,WAAmB,EAAE,IAAyB;IACnE,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,GAAG,IAAI,OAAO,CAAC,CAAC;AACzF,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,WAAmB,EAAE,UAAqC;IAChG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,EAAE,CAAC;QACtG,MAAM,IAAI,KAAK,CAAC,gGAAgG,CAAC,CAAC;IACpH,CAAC;IACD,MAAM,MAAM,GAAG,aAAa,CAAC,WAAW,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;IAC3D,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACxD,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC/E,CAAC;AAED,gGAAgG;AAChG,MAAM,UAAU,aAAa,CAAC,KAAyD;IACrF,MAAM,cAAc,GAAG,aAAa,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IACpE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IACpG,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,cAAc,EAAE,MAAM,CAAC,CAA8B,CAAC;IACpG,IAAI,UAAU,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9E,MAAM,IAAI,KAAK,CAAC,kCAAkC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IAClE,CAAC;IACD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,mBAAmB,CAAC,EAAE,UAAU,EAAE,iBAAiB,CAAC,CAAC;IACrG,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,UAAU,EAAE,SAAS,CAAC,CAAC;IAC1E,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,SAAS,CAAC,UAAU,CAAC,UAAU,EAAE,UAAU,CAAC,IAAI,EAAE;YAC/D,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,KAAK,EAAE,iBAAiB,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM;SAC7G,CAAC,CAAC;QACH,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QACnG,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,KAAK,CAAC,IAAI,sBAAsB,CAAC,CAAC;QACrH,EAAE,CAAC,YAAY,CAAC,iBAAiB,EAAE,KAAK,CAAC,mBAAmB,CAAC,CAAC;IAChE,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,MAAM,CAAC,iBAAiB,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAChD,CAAC;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@veewo/claw",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.26",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "CLI for running the .claw workflow: project planning, recall, truth ingestion, and closeout.",
|
|
6
6
|
"keywords": [
|
|
@@ -31,8 +31,8 @@
|
|
|
31
31
|
"claw": "./dist/bin.js"
|
|
32
32
|
},
|
|
33
33
|
"dependencies": {
|
|
34
|
-
"@veewo/claw-client": "0.2.
|
|
35
|
-
"@veewo/claw-core": "0.2.
|
|
34
|
+
"@veewo/claw-client": "0.2.26",
|
|
35
|
+
"@veewo/claw-core": "0.2.26"
|
|
36
36
|
},
|
|
37
37
|
"exports": {
|
|
38
38
|
"./session-daemon": "./dist/session-daemon-entry.js"
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
export declare function findCodexTranscriptPath(sessionId: string, codexHome?: string): string | null;
|
|
2
|
-
export type TaskDoneConclusion = {
|
|
3
|
-
turnId: string;
|
|
4
|
-
message: string;
|
|
5
|
-
};
|
|
6
|
-
export declare function extractTaskDoneConclusions(transcriptPath: string, targetTurnId?: string, startedAt?: string, planPath?: string): TaskDoneConclusion[];
|
|
7
|
-
export declare function extractLatestFinalAssistantMessage(transcriptPath: string, targetTurnId?: string): string | null;
|
package/dist/codex-transcript.js
DELETED
|
@@ -1,313 +0,0 @@
|
|
|
1
|
-
import fs from "node:fs";
|
|
2
|
-
import os from "node:os";
|
|
3
|
-
import path from "node:path";
|
|
4
|
-
export function findCodexTranscriptPath(sessionId, codexHome = process.env.CODEX_HOME || path.join(os.homedir(), ".codex")) {
|
|
5
|
-
const normalized = sessionId.trim().toLowerCase();
|
|
6
|
-
if (!normalized)
|
|
7
|
-
return null;
|
|
8
|
-
const sessionsRoot = path.join(codexHome, "sessions");
|
|
9
|
-
if (!fs.existsSync(sessionsRoot))
|
|
10
|
-
return null;
|
|
11
|
-
const queue = [{ directory: sessionsRoot, depth: 0 }];
|
|
12
|
-
const matches = [];
|
|
13
|
-
while (queue.length > 0) {
|
|
14
|
-
const current = queue.shift();
|
|
15
|
-
for (const entry of fs.readdirSync(current.directory, { withFileTypes: true })) {
|
|
16
|
-
const candidate = path.join(current.directory, entry.name);
|
|
17
|
-
if (entry.isDirectory() && current.depth < 4) {
|
|
18
|
-
queue.push({ directory: candidate, depth: current.depth + 1 });
|
|
19
|
-
continue;
|
|
20
|
-
}
|
|
21
|
-
if (!entry.isFile() || !entry.name.toLowerCase().endsWith(".jsonl") || !entry.name.toLowerCase().includes(normalized)) {
|
|
22
|
-
continue;
|
|
23
|
-
}
|
|
24
|
-
matches.push({ file: candidate, modifiedAt: fs.statSync(candidate).mtimeMs });
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
matches.sort((left, right) => right.modifiedAt - left.modifiedAt);
|
|
28
|
-
return matches[0]?.file ?? null;
|
|
29
|
-
}
|
|
30
|
-
export function extractTaskDoneConclusions(transcriptPath, targetTurnId, startedAt, planPath) {
|
|
31
|
-
if (!transcriptPath.trim() || !fs.existsSync(transcriptPath)) {
|
|
32
|
-
return [];
|
|
33
|
-
}
|
|
34
|
-
const latestAssistantByTurn = new Map();
|
|
35
|
-
const conclusions = [];
|
|
36
|
-
const seen = new Set();
|
|
37
|
-
const startedAtMs = startedAt ? Date.parse(startedAt) : Number.NaN;
|
|
38
|
-
const lines = readTranscriptTurnLines(transcriptPath, targetTurnId);
|
|
39
|
-
const eligibleTurns = new Set();
|
|
40
|
-
if (Number.isFinite(startedAtMs)) {
|
|
41
|
-
for (const line of lines) {
|
|
42
|
-
try {
|
|
43
|
-
const record = JSON.parse(line);
|
|
44
|
-
const turnId = readTurnId(record);
|
|
45
|
-
if (turnId
|
|
46
|
-
&& typeof record.timestamp === "string"
|
|
47
|
-
&& Date.parse(record.timestamp) >= startedAtMs) {
|
|
48
|
-
eligibleTurns.add(turnId);
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
catch {
|
|
52
|
-
// Ignore incomplete transcript lines while the parent turn is still active.
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
for (const line of lines) {
|
|
57
|
-
let record;
|
|
58
|
-
try {
|
|
59
|
-
record = JSON.parse(line);
|
|
60
|
-
}
|
|
61
|
-
catch {
|
|
62
|
-
continue;
|
|
63
|
-
}
|
|
64
|
-
if (record.type !== "response_item") {
|
|
65
|
-
continue;
|
|
66
|
-
}
|
|
67
|
-
const turnId = readTurnId(record);
|
|
68
|
-
if (!turnId || (targetTurnId && turnId !== targetTurnId)) {
|
|
69
|
-
continue;
|
|
70
|
-
}
|
|
71
|
-
if (Number.isFinite(startedAtMs) && eligibleTurns.size > 0 && !eligibleTurns.has(turnId)) {
|
|
72
|
-
continue;
|
|
73
|
-
}
|
|
74
|
-
if (record.payload?.type === "message" && record.payload.role === "assistant") {
|
|
75
|
-
const message = readTextItems(record.payload.content);
|
|
76
|
-
if (message) {
|
|
77
|
-
latestAssistantByTurn.set(turnId, message);
|
|
78
|
-
}
|
|
79
|
-
continue;
|
|
80
|
-
}
|
|
81
|
-
if (record.payload?.type !== "custom_tool_call_output"
|
|
82
|
-
&& record.payload?.type !== "function_call_output") {
|
|
83
|
-
continue;
|
|
84
|
-
}
|
|
85
|
-
const output = readOutputText(record.payload.output);
|
|
86
|
-
if (containsNewPlanCreate(output, planPath)) {
|
|
87
|
-
break;
|
|
88
|
-
}
|
|
89
|
-
const conclusion = latestAssistantByTurn.get(turnId);
|
|
90
|
-
if (!conclusion) {
|
|
91
|
-
continue;
|
|
92
|
-
}
|
|
93
|
-
for (const _marker of extractTaskDoneMarkers(output)) {
|
|
94
|
-
const key = `${turnId}\n${conclusion}`;
|
|
95
|
-
if (seen.has(key)) {
|
|
96
|
-
continue;
|
|
97
|
-
}
|
|
98
|
-
seen.add(key);
|
|
99
|
-
conclusions.push({
|
|
100
|
-
turnId,
|
|
101
|
-
message: conclusion,
|
|
102
|
-
});
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
return conclusions;
|
|
106
|
-
}
|
|
107
|
-
function containsNewPlanCreate(text, planPath) {
|
|
108
|
-
for (const candidate of jsonObjectCandidates(text)) {
|
|
109
|
-
let value;
|
|
110
|
-
try {
|
|
111
|
-
value = JSON.parse(candidate);
|
|
112
|
-
}
|
|
113
|
-
catch {
|
|
114
|
-
continue;
|
|
115
|
-
}
|
|
116
|
-
if (!isSuccessfulPlanCreate(value))
|
|
117
|
-
continue;
|
|
118
|
-
const createdPlanPath = readPlanPath(value);
|
|
119
|
-
if (!createdPlanPath || !planPath)
|
|
120
|
-
return true;
|
|
121
|
-
if (path.resolve(createdPlanPath) !== path.resolve(planPath))
|
|
122
|
-
return true;
|
|
123
|
-
}
|
|
124
|
-
return false;
|
|
125
|
-
}
|
|
126
|
-
function isSuccessfulPlanCreate(value) {
|
|
127
|
-
if (!value || typeof value !== "object" || Array.isArray(value))
|
|
128
|
-
return false;
|
|
129
|
-
const record = value;
|
|
130
|
-
if (record.ok === true && record.command === "plan.create")
|
|
131
|
-
return true;
|
|
132
|
-
return Object.values(record).some((item) => isSuccessfulPlanCreate(item));
|
|
133
|
-
}
|
|
134
|
-
function readPlanPath(value) {
|
|
135
|
-
if (!value || typeof value !== "object")
|
|
136
|
-
return "";
|
|
137
|
-
if (Array.isArray(value)) {
|
|
138
|
-
for (const item of value) {
|
|
139
|
-
const found = readPlanPath(item);
|
|
140
|
-
if (found)
|
|
141
|
-
return found;
|
|
142
|
-
}
|
|
143
|
-
return "";
|
|
144
|
-
}
|
|
145
|
-
const record = value;
|
|
146
|
-
if (typeof record.planPath === "string" && record.planPath.trim())
|
|
147
|
-
return record.planPath.trim();
|
|
148
|
-
for (const item of Object.values(record)) {
|
|
149
|
-
const found = readPlanPath(item);
|
|
150
|
-
if (found)
|
|
151
|
-
return found;
|
|
152
|
-
}
|
|
153
|
-
return "";
|
|
154
|
-
}
|
|
155
|
-
export function extractLatestFinalAssistantMessage(transcriptPath, targetTurnId) {
|
|
156
|
-
if (!transcriptPath.trim() || !fs.existsSync(transcriptPath)) {
|
|
157
|
-
return null;
|
|
158
|
-
}
|
|
159
|
-
const lines = readTranscriptTurnLines(transcriptPath, targetTurnId);
|
|
160
|
-
for (let index = lines.length - 1; index >= 0; index -= 1) {
|
|
161
|
-
const line = lines[index]?.trim();
|
|
162
|
-
if (!line) {
|
|
163
|
-
continue;
|
|
164
|
-
}
|
|
165
|
-
let record;
|
|
166
|
-
try {
|
|
167
|
-
record = JSON.parse(line);
|
|
168
|
-
}
|
|
169
|
-
catch {
|
|
170
|
-
continue;
|
|
171
|
-
}
|
|
172
|
-
if (record.type !== "response_item"
|
|
173
|
-
|| record.payload?.type !== "message"
|
|
174
|
-
|| record.payload.role !== "assistant"
|
|
175
|
-
|| record.payload.phase !== "final_answer"
|
|
176
|
-
|| !Array.isArray(record.payload.content)) {
|
|
177
|
-
continue;
|
|
178
|
-
}
|
|
179
|
-
const message = record.payload.content
|
|
180
|
-
.filter((item) => (Boolean(item)
|
|
181
|
-
&& typeof item === "object"
|
|
182
|
-
&& "text" in item
|
|
183
|
-
&& typeof item.text === "string"))
|
|
184
|
-
.map((item) => item.text)
|
|
185
|
-
.join("\n")
|
|
186
|
-
.trim();
|
|
187
|
-
if (message) {
|
|
188
|
-
return message;
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
return null;
|
|
192
|
-
}
|
|
193
|
-
function readTranscriptTurnLines(transcriptPath, targetTurnId) {
|
|
194
|
-
const lines = fs.readFileSync(transcriptPath, "utf-8").split(/\r?\n/);
|
|
195
|
-
if (!targetTurnId) {
|
|
196
|
-
return lines;
|
|
197
|
-
}
|
|
198
|
-
const contexts = [];
|
|
199
|
-
for (let index = 0; index < lines.length; index += 1) {
|
|
200
|
-
const line = lines[index];
|
|
201
|
-
if (!line?.includes('"type":"turn_context"')) {
|
|
202
|
-
continue;
|
|
203
|
-
}
|
|
204
|
-
try {
|
|
205
|
-
const record = JSON.parse(line);
|
|
206
|
-
const turnId = record.type === "turn_context" && typeof record.payload?.turn_id === "string"
|
|
207
|
-
? record.payload.turn_id
|
|
208
|
-
: "";
|
|
209
|
-
if (turnId) {
|
|
210
|
-
contexts.push({ index, turnId });
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
|
-
catch {
|
|
214
|
-
continue;
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
let position = -1;
|
|
218
|
-
for (let index = contexts.length - 1; index >= 0; index -= 1) {
|
|
219
|
-
if (contexts[index]?.turnId === targetTurnId) {
|
|
220
|
-
position = index;
|
|
221
|
-
break;
|
|
222
|
-
}
|
|
223
|
-
}
|
|
224
|
-
if (position < 0) {
|
|
225
|
-
return lines;
|
|
226
|
-
}
|
|
227
|
-
let first = position;
|
|
228
|
-
while (first > 0 && contexts[first - 1]?.turnId === targetTurnId) {
|
|
229
|
-
first -= 1;
|
|
230
|
-
}
|
|
231
|
-
let last = position;
|
|
232
|
-
while (last + 1 < contexts.length && contexts[last + 1]?.turnId === targetTurnId) {
|
|
233
|
-
last += 1;
|
|
234
|
-
}
|
|
235
|
-
const start = contexts[first].index;
|
|
236
|
-
const end = contexts[last + 1]?.index ?? lines.length;
|
|
237
|
-
return lines.slice(start, end);
|
|
238
|
-
}
|
|
239
|
-
function readTurnId(record) {
|
|
240
|
-
const value = record.payload?.internal_chat_message_metadata_passthrough?.turn_id;
|
|
241
|
-
return typeof value === "string" && value.trim() ? value.trim() : null;
|
|
242
|
-
}
|
|
243
|
-
function readTextItems(value) {
|
|
244
|
-
if (!Array.isArray(value)) {
|
|
245
|
-
return "";
|
|
246
|
-
}
|
|
247
|
-
return value
|
|
248
|
-
.filter((item) => (Boolean(item)
|
|
249
|
-
&& typeof item === "object"
|
|
250
|
-
&& "text" in item
|
|
251
|
-
&& typeof item.text === "string"))
|
|
252
|
-
.map((item) => item.text)
|
|
253
|
-
.join("\n")
|
|
254
|
-
.trim();
|
|
255
|
-
}
|
|
256
|
-
function readOutputText(value) {
|
|
257
|
-
if (typeof value === "string") {
|
|
258
|
-
return value;
|
|
259
|
-
}
|
|
260
|
-
return readTextItems(value);
|
|
261
|
-
}
|
|
262
|
-
function extractTaskDoneMarkers(text) {
|
|
263
|
-
const markers = [];
|
|
264
|
-
for (const candidate of jsonObjectCandidates(text)) {
|
|
265
|
-
let value;
|
|
266
|
-
try {
|
|
267
|
-
value = JSON.parse(candidate);
|
|
268
|
-
}
|
|
269
|
-
catch {
|
|
270
|
-
continue;
|
|
271
|
-
}
|
|
272
|
-
collectTaskDoneMarkers(value, markers);
|
|
273
|
-
}
|
|
274
|
-
return markers;
|
|
275
|
-
}
|
|
276
|
-
function collectTaskDoneMarkers(value, markers) {
|
|
277
|
-
if (!value || typeof value !== "object" || Array.isArray(value)) {
|
|
278
|
-
return;
|
|
279
|
-
}
|
|
280
|
-
const record = value;
|
|
281
|
-
if (record.ok === true && record.command === "task.done") {
|
|
282
|
-
markers.push(true);
|
|
283
|
-
}
|
|
284
|
-
}
|
|
285
|
-
function jsonObjectCandidates(text) {
|
|
286
|
-
const results = [];
|
|
287
|
-
for (let start = text.indexOf("{"); start >= 0; start = text.indexOf("{", start + 1)) {
|
|
288
|
-
let depth = 0;
|
|
289
|
-
let quoted = false;
|
|
290
|
-
let escaped = false;
|
|
291
|
-
for (let index = start; index < text.length; index += 1) {
|
|
292
|
-
const character = text[index];
|
|
293
|
-
if (quoted) {
|
|
294
|
-
if (escaped)
|
|
295
|
-
escaped = false;
|
|
296
|
-
else if (character === "\\")
|
|
297
|
-
escaped = true;
|
|
298
|
-
else if (character === '"')
|
|
299
|
-
quoted = false;
|
|
300
|
-
}
|
|
301
|
-
else if (character === '"')
|
|
302
|
-
quoted = true;
|
|
303
|
-
else if (character === "{")
|
|
304
|
-
depth += 1;
|
|
305
|
-
else if (character === "}" && --depth === 0) {
|
|
306
|
-
results.push(text.slice(start, index + 1));
|
|
307
|
-
break;
|
|
308
|
-
}
|
|
309
|
-
}
|
|
310
|
-
}
|
|
311
|
-
return results;
|
|
312
|
-
}
|
|
313
|
-
//# sourceMappingURL=codex-transcript.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"codex-transcript.js","sourceRoot":"","sources":["../src/codex-transcript.ts"],"names":[],"mappings":"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"}
|
package/dist/dsh-capture.d.ts
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* DSH report capture hand-off. The dsh-adapter plugin owns reading the DSH
|
|
3
|
-
* session log; at turn stop it writes the extracted final message and task
|
|
4
|
-
* conclusions to a capture file the CLI's `knowledge claim` dsh branch reads,
|
|
5
|
-
* mirroring the Codex transcript hand-off but with an adapter-written JSON
|
|
6
|
-
* payload instead of a raw host transcript.
|
|
7
|
-
*/
|
|
8
|
-
export type DshKnowledgeCapture = {
|
|
9
|
-
sessionId: string;
|
|
10
|
-
turnId?: string;
|
|
11
|
-
message?: string;
|
|
12
|
-
taskConclusions?: Array<{
|
|
13
|
-
turnId: string;
|
|
14
|
-
message: string;
|
|
15
|
-
}>;
|
|
16
|
-
};
|
|
17
|
-
/** Windows user-local capture root (matches the claw session-daemon layout). */
|
|
18
|
-
export declare function dshCaptureRoot(env?: NodeJS.ProcessEnv): string;
|
|
19
|
-
/** The capture file path for one DSH session id. */
|
|
20
|
-
export declare function findDshCapturePath(sessionId: string, env?: NodeJS.ProcessEnv): string;
|
|
21
|
-
/** Read an adapter-written capture payload, or null when absent/invalid. */
|
|
22
|
-
export declare function readDshKnowledgeCapture(sessionId: string, env?: NodeJS.ProcessEnv): DshKnowledgeCapture | null;
|
package/dist/dsh-capture.js
DELETED
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import fs from "node:fs";
|
|
2
|
-
import os from "node:os";
|
|
3
|
-
import path from "node:path";
|
|
4
|
-
/** Windows user-local capture root (matches the claw session-daemon layout). */
|
|
5
|
-
export function dshCaptureRoot(env = process.env) {
|
|
6
|
-
const localAppData = env.LOCALAPPDATA
|
|
7
|
-
?? (process.platform === "win32"
|
|
8
|
-
? path.join(os.homedir(), "AppData", "Local")
|
|
9
|
-
: path.join(os.homedir(), ".local", "share"));
|
|
10
|
-
return env.CLAW_DSH_CAPTURE_DIR ?? path.join(localAppData, "claw", "dsh-capture");
|
|
11
|
-
}
|
|
12
|
-
/** The capture file path for one DSH session id. */
|
|
13
|
-
export function findDshCapturePath(sessionId, env = process.env) {
|
|
14
|
-
return path.join(dshCaptureRoot(env), `${sessionId.trim()}.json`);
|
|
15
|
-
}
|
|
16
|
-
/** Read an adapter-written capture payload, or null when absent/invalid. */
|
|
17
|
-
export function readDshKnowledgeCapture(sessionId, env = process.env) {
|
|
18
|
-
const capturePath = findDshCapturePath(sessionId, env);
|
|
19
|
-
if (!fs.existsSync(capturePath))
|
|
20
|
-
return null;
|
|
21
|
-
try {
|
|
22
|
-
const parsed = JSON.parse(fs.readFileSync(capturePath, "utf8"));
|
|
23
|
-
if (!parsed
|
|
24
|
-
|| typeof parsed !== "object"
|
|
25
|
-
|| typeof parsed.sessionId !== "string") {
|
|
26
|
-
return null;
|
|
27
|
-
}
|
|
28
|
-
return parsed;
|
|
29
|
-
}
|
|
30
|
-
catch {
|
|
31
|
-
return null;
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
//# sourceMappingURL=dsh-capture.js.map
|
package/dist/dsh-capture.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dsh-capture.js","sourceRoot":"","sources":["../src/dsh-capture.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAiB7B,gFAAgF;AAChF,MAAM,UAAU,cAAc,CAC5B,MAAyB,OAAO,CAAC,GAAG;IAEpC,MAAM,YAAY,GAAG,GAAG,CAAC,YAAY;WAChC,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO;YAC9B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC;YAC7C,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;IAClD,OAAO,GAAG,CAAC,oBAAoB,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC;AACpF,CAAC;AAED,oDAAoD;AACpD,MAAM,UAAU,kBAAkB,CAChC,SAAiB,EACjB,MAAyB,OAAO,CAAC,GAAG;IAEpC,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,GAAG,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACpE,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,uBAAuB,CACrC,SAAiB,EACjB,MAAyB,OAAO,CAAC,GAAG;IAEpC,MAAM,WAAW,GAAG,kBAAkB,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IACvD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAY,CAAC;QAC3E,IACE,CAAC,MAAM;eACJ,OAAO,MAAM,KAAK,QAAQ;eAC1B,OAAQ,MAAkC,CAAC,SAAS,KAAK,QAAQ,EACpE,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,MAA6B,CAAC;IACvC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
|