@veewo/claw 0.1.75 → 0.1.76
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 +843 -129
- package/dist/cli.js.map +1 -1
- package/dist/codex-driver.d.ts +4 -0
- package/dist/codex-driver.js +121 -0
- package/dist/codex-driver.js.map +1 -0
- package/dist/codex-runtime.d.ts +8 -0
- package/dist/codex-runtime.js +51 -0
- package/dist/codex-runtime.js.map +1 -0
- package/dist/codex-transcript.d.ts +1 -0
- package/dist/codex-transcript.js +40 -0
- package/dist/codex-transcript.js.map +1 -0
- package/package.json +2 -2
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import os from "node:os";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
export const CODEX_SDK_VERSION = "0.144.5";
|
|
5
|
+
export function checkCodexRuntime() {
|
|
6
|
+
if (process.env.CLAW_CODEX_RUNTIME_MOCK === "healthy") {
|
|
7
|
+
return { ok: true, sdkEntryPath: "mock-codex-sdk" };
|
|
8
|
+
}
|
|
9
|
+
if (process.env.CLAW_CODEX_RUNTIME_MOCK === "missing") {
|
|
10
|
+
return { ok: false, detail: "The versioned Codex SDK runtime is not installed." };
|
|
11
|
+
}
|
|
12
|
+
const sdkEntryPath = resolveCodexSdkEntryPath();
|
|
13
|
+
if (isHealthyCodexRuntime(sdkEntryPath)) {
|
|
14
|
+
return { ok: true, sdkEntryPath };
|
|
15
|
+
}
|
|
16
|
+
const platformPackage = resolvePlatformPackage();
|
|
17
|
+
return {
|
|
18
|
+
ok: false,
|
|
19
|
+
detail: `Expected @openai/codex-sdk ${CODEX_SDK_VERSION} and ${platformPackage.name} under ${resolveCodexRuntimeRoot()}.`,
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
export function resolveCodexSdkEntryPath() {
|
|
23
|
+
return path.join(resolveCodexRuntimeRoot(), "node_modules", "@openai", "codex-sdk", "dist", "index.js");
|
|
24
|
+
}
|
|
25
|
+
function resolveCodexRuntimeRoot() {
|
|
26
|
+
return path.join(os.homedir(), ".claw-kit", "codex-runtime", CODEX_SDK_VERSION);
|
|
27
|
+
}
|
|
28
|
+
function isHealthyCodexRuntime(sdkEntryPath) {
|
|
29
|
+
if (!fs.existsSync(sdkEntryPath)) {
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
const platformPackage = resolvePlatformPackage();
|
|
33
|
+
const packageJsonPath = path.join(resolveCodexRuntimeRoot(), "node_modules", "@openai", `codex-${platformPackage.target}`, "package.json");
|
|
34
|
+
return fs.existsSync(packageJsonPath);
|
|
35
|
+
}
|
|
36
|
+
function resolvePlatformPackage() {
|
|
37
|
+
const architecture = process.arch === "x64" ? "x64" : process.arch === "arm64" ? "arm64" : null;
|
|
38
|
+
const platform = process.platform === "win32"
|
|
39
|
+
? "win32"
|
|
40
|
+
: process.platform === "darwin"
|
|
41
|
+
? "darwin"
|
|
42
|
+
: process.platform === "linux"
|
|
43
|
+
? "linux"
|
|
44
|
+
: null;
|
|
45
|
+
if (!architecture || !platform) {
|
|
46
|
+
throw new Error(`Unsupported Codex SDK runtime platform: ${process.platform} ${process.arch}`);
|
|
47
|
+
}
|
|
48
|
+
const target = `${platform}-${architecture}`;
|
|
49
|
+
return { name: `@openai/codex-${target}`, target };
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=codex-runtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codex-runtime.js","sourceRoot":"","sources":["../src/codex-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,CAAC,MAAM,iBAAiB,GAAG,SAAS,CAAC;AAQ3C,MAAM,UAAU,iBAAiB;IAC/B,IAAI,OAAO,CAAC,GAAG,CAAC,uBAAuB,KAAK,SAAS,EAAE,CAAC;QACtD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,gBAAgB,EAAE,CAAC;IACtD,CAAC;IACD,IAAI,OAAO,CAAC,GAAG,CAAC,uBAAuB,KAAK,SAAS,EAAE,CAAC;QACtD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,mDAAmD,EAAE,CAAC;IACpF,CAAC;IAED,MAAM,YAAY,GAAG,wBAAwB,EAAE,CAAC;IAChD,IAAI,qBAAqB,CAAC,YAAY,CAAC,EAAE,CAAC;QACxC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;IACpC,CAAC;IACD,MAAM,eAAe,GAAG,sBAAsB,EAAE,CAAC;IACjD,OAAO;QACL,EAAE,EAAE,KAAK;QACT,MAAM,EAAE,8BAA8B,iBAAiB,QAAQ,eAAe,CAAC,IAAI,UAAU,uBAAuB,EAAE,GAAG;KAC1H,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,wBAAwB;IACtC,OAAO,IAAI,CAAC,IAAI,CACd,uBAAuB,EAAE,EACzB,cAAc,EACd,SAAS,EACT,WAAW,EACX,MAAM,EACN,UAAU,CACX,CAAC;AACJ,CAAC;AAED,SAAS,uBAAuB;IAC9B,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,eAAe,EAAE,iBAAiB,CAAC,CAAC;AAClF,CAAC;AAED,SAAS,qBAAqB,CAAC,YAAoB;IACjD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QACjC,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,eAAe,GAAG,sBAAsB,EAAE,CAAC;IACjD,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAC/B,uBAAuB,EAAE,EACzB,cAAc,EACd,SAAS,EACT,SAAS,eAAe,CAAC,MAAM,EAAE,EACjC,cAAc,CACf,CAAC;IACF,OAAO,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;AACxC,CAAC;AAED,SAAS,sBAAsB;IAC7B,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;IAChG,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO;QAC3C,CAAC,CAAC,OAAO;QACT,CAAC,CAAC,OAAO,CAAC,QAAQ,KAAK,QAAQ;YAC7B,CAAC,CAAC,QAAQ;YACV,CAAC,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO;gBAC5B,CAAC,CAAC,OAAO;gBACT,CAAC,CAAC,IAAI,CAAC;IACb,IAAI,CAAC,YAAY,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,2CAA2C,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IACjG,CAAC;IACD,MAAM,MAAM,GAAG,GAAG,QAAQ,IAAI,YAAY,EAAE,CAAC;IAC7C,OAAO,EAAE,IAAI,EAAE,iBAAiB,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC;AACrD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function extractLatestFinalAssistantMessage(transcriptPath: string): string | null;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
export function extractLatestFinalAssistantMessage(transcriptPath) {
|
|
3
|
+
if (!transcriptPath.trim() || !fs.existsSync(transcriptPath)) {
|
|
4
|
+
return null;
|
|
5
|
+
}
|
|
6
|
+
const lines = fs.readFileSync(transcriptPath, "utf-8").split(/\r?\n/);
|
|
7
|
+
for (let index = lines.length - 1; index >= 0; index -= 1) {
|
|
8
|
+
const line = lines[index]?.trim();
|
|
9
|
+
if (!line) {
|
|
10
|
+
continue;
|
|
11
|
+
}
|
|
12
|
+
let record;
|
|
13
|
+
try {
|
|
14
|
+
record = JSON.parse(line);
|
|
15
|
+
}
|
|
16
|
+
catch {
|
|
17
|
+
continue;
|
|
18
|
+
}
|
|
19
|
+
if (record.type !== "response_item"
|
|
20
|
+
|| record.payload?.type !== "message"
|
|
21
|
+
|| record.payload.role !== "assistant"
|
|
22
|
+
|| record.payload.phase !== "final_answer"
|
|
23
|
+
|| !Array.isArray(record.payload.content)) {
|
|
24
|
+
continue;
|
|
25
|
+
}
|
|
26
|
+
const message = record.payload.content
|
|
27
|
+
.filter((item) => (Boolean(item)
|
|
28
|
+
&& typeof item === "object"
|
|
29
|
+
&& "text" in item
|
|
30
|
+
&& typeof item.text === "string"))
|
|
31
|
+
.map((item) => item.text)
|
|
32
|
+
.join("\n")
|
|
33
|
+
.trim();
|
|
34
|
+
if (message) {
|
|
35
|
+
return message;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=codex-transcript.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codex-transcript.js","sourceRoot":"","sources":["../src/codex-transcript.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AAYzB,MAAM,UAAU,kCAAkC,CAAC,cAAsB;IACvE,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;QAC7D,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,KAAK,GAAG,EAAE,CAAC,YAAY,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACtE,KAAK,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QAC1D,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;QAClC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,SAAS;QACX,CAAC;QACD,IAAI,MAAwB,CAAC;QAC7B,IAAI,CAAC;YACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAqB,CAAC;QAChD,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;QACD,IACE,MAAM,CAAC,IAAI,KAAK,eAAe;eAC5B,MAAM,CAAC,OAAO,EAAE,IAAI,KAAK,SAAS;eAClC,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,WAAW;eACnC,MAAM,CAAC,OAAO,CAAC,KAAK,KAAK,cAAc;eACvC,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EACzC,CAAC;YACD,SAAS;QACX,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO;aACnC,MAAM,CAAC,CAAC,IAAI,EAA4C,EAAE,CAAC,CAC1D,OAAO,CAAC,IAAI,CAAC;eACV,OAAO,IAAI,KAAK,QAAQ;eACxB,MAAM,IAAI,IAAI;eACd,OAAQ,IAA2B,CAAC,IAAI,KAAK,QAAQ,CACzD,CAAC;aACD,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;aACxB,IAAI,CAAC,IAAI,CAAC;aACV,IAAI,EAAE,CAAC;QACV,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,OAAO,CAAC;QACjB,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@veewo/claw",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.76",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "CLI for running the .claw workflow: project planning, recall, truth ingestion, and closeout.",
|
|
6
6
|
"keywords": [
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
"claw": "./dist/bin.js"
|
|
32
32
|
},
|
|
33
33
|
"dependencies": {
|
|
34
|
-
"@veewo/claw-core": "0.1.
|
|
34
|
+
"@veewo/claw-core": "0.1.76"
|
|
35
35
|
},
|
|
36
36
|
"scripts": {
|
|
37
37
|
"build": "tsc -p tsconfig.json",
|