codex-task 0.2.0
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/.codex-plugin/plugin.json +36 -0
- package/LICENSE +21 -0
- package/README.md +273 -0
- package/README.zh-CN.md +209 -0
- package/THIRD_PARTY_NOTICES.md +37 -0
- package/dist/api.d.ts +8 -0
- package/dist/api.d.ts.map +1 -0
- package/dist/api.js +355 -0
- package/dist/api.js.map +1 -0
- package/dist/backends/direct/auth.d.ts +14 -0
- package/dist/backends/direct/auth.d.ts.map +1 -0
- package/dist/backends/direct/auth.js +152 -0
- package/dist/backends/direct/auth.js.map +1 -0
- package/dist/backends/direct/http.d.ts +12 -0
- package/dist/backends/direct/http.d.ts.map +1 -0
- package/dist/backends/direct/http.js +62 -0
- package/dist/backends/direct/http.js.map +1 -0
- package/dist/backends/direct/identity.d.ts +11 -0
- package/dist/backends/direct/identity.d.ts.map +1 -0
- package/dist/backends/direct/identity.js +89 -0
- package/dist/backends/direct/identity.js.map +1 -0
- package/dist/backends/direct/index.d.ts +15 -0
- package/dist/backends/direct/index.d.ts.map +1 -0
- package/dist/backends/direct/index.js +201 -0
- package/dist/backends/direct/index.js.map +1 -0
- package/dist/backends/direct/models.d.ts +14 -0
- package/dist/backends/direct/models.d.ts.map +1 -0
- package/dist/backends/direct/models.js +83 -0
- package/dist/backends/direct/models.js.map +1 -0
- package/dist/backends/direct/protocol.d.ts +24 -0
- package/dist/backends/direct/protocol.d.ts.map +1 -0
- package/dist/backends/direct/protocol.js +131 -0
- package/dist/backends/direct/protocol.js.map +1 -0
- package/dist/backends/direct/sse.d.ts +15 -0
- package/dist/backends/direct/sse.d.ts.map +1 -0
- package/dist/backends/direct/sse.js +93 -0
- package/dist/backends/direct/sse.js.map +1 -0
- package/dist/backends/sdk.d.ts +54 -0
- package/dist/backends/sdk.d.ts.map +1 -0
- package/dist/backends/sdk.js +173 -0
- package/dist/backends/sdk.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +224 -0
- package/dist/cli.js.map +1 -0
- package/dist/config.d.ts +29 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +77 -0
- package/dist/config.js.map +1 -0
- package/dist/doctor.d.ts +3 -0
- package/dist/doctor.d.ts.map +1 -0
- package/dist/doctor.js +94 -0
- package/dist/doctor.js.map +1 -0
- package/dist/errors.d.ts +16 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +30 -0
- package/dist/errors.js.map +1 -0
- package/dist/events.d.ts +10 -0
- package/dist/events.d.ts.map +1 -0
- package/dist/events.js +30 -0
- package/dist/events.js.map +1 -0
- package/dist/fs-utils.d.ts +7 -0
- package/dist/fs-utils.d.ts.map +1 -0
- package/dist/fs-utils.js +56 -0
- package/dist/fs-utils.js.map +1 -0
- package/dist/images.d.ts +18 -0
- package/dist/images.d.ts.map +1 -0
- package/dist/images.js +102 -0
- package/dist/images.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/dist/paths.d.ts +14 -0
- package/dist/paths.d.ts.map +1 -0
- package/dist/paths.js +61 -0
- package/dist/paths.js.map +1 -0
- package/dist/skill.d.ts +2 -0
- package/dist/skill.d.ts.map +1 -0
- package/dist/skill.js +6 -0
- package/dist/skill.js.map +1 -0
- package/dist/state.d.ts +20 -0
- package/dist/state.d.ts.map +1 -0
- package/dist/state.js +134 -0
- package/dist/state.js.map +1 -0
- package/dist/types.d.ts +167 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/package.json +89 -0
- package/skills/codex-task/SKILL.md +79 -0
- package/skills/codex-task/agents/openai.yaml +4 -0
package/dist/config.js
ADDED
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
2
|
+
import { appPaths, defaultCodexHome, legacyAppPaths } from "./paths.js";
|
|
3
|
+
import { CodexTaskError } from "./errors.js";
|
|
4
|
+
const DEFAULT_CONFIG = {
|
|
5
|
+
codexHome: defaultCodexHome(),
|
|
6
|
+
directReasoning: "medium",
|
|
7
|
+
directTextTimeoutMs: 10 * 60 * 1000,
|
|
8
|
+
directImageTimeoutMs: 15 * 60 * 1000,
|
|
9
|
+
sdkTimeoutMs: 30 * 60 * 1000,
|
|
10
|
+
retries: 3,
|
|
11
|
+
tempTtlMs: 24 * 60 * 60 * 1000,
|
|
12
|
+
pendingTaskTtlMs: 7 * 24 * 60 * 60 * 1000,
|
|
13
|
+
tempMaxBytes: 1024 * 1024 * 1024,
|
|
14
|
+
};
|
|
15
|
+
function readUserConfig() {
|
|
16
|
+
const path = [appPaths().configPath, legacyAppPaths().configPath].find((candidate) => existsSync(candidate));
|
|
17
|
+
if (!path)
|
|
18
|
+
return {};
|
|
19
|
+
try {
|
|
20
|
+
return JSON.parse(readFileSync(path, "utf8"));
|
|
21
|
+
}
|
|
22
|
+
catch (error) {
|
|
23
|
+
throw new CodexTaskError("INVALID_CONFIG", `Could not parse ${path}`, {
|
|
24
|
+
exitCode: 2,
|
|
25
|
+
cause: error,
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
function envValue(name, legacyName) {
|
|
30
|
+
return process.env[name] ?? process.env[legacyName];
|
|
31
|
+
}
|
|
32
|
+
function envNumber(name, legacyName) {
|
|
33
|
+
const raw = envValue(name, legacyName);
|
|
34
|
+
if (raw === undefined || raw === "")
|
|
35
|
+
return undefined;
|
|
36
|
+
const value = Number(raw);
|
|
37
|
+
if (!Number.isFinite(value) || value < 0) {
|
|
38
|
+
throw new CodexTaskError("INVALID_CONFIG", `${name} must be a non-negative number`, {
|
|
39
|
+
exitCode: 2,
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
return value;
|
|
43
|
+
}
|
|
44
|
+
export function loadConfig(overrides = {}) {
|
|
45
|
+
const user = readUserConfig();
|
|
46
|
+
const env = {
|
|
47
|
+
codexHome: envValue("CODEX_TASK_CODEX_HOME", "CODEXERRAND_CODEX_HOME"),
|
|
48
|
+
directModel: envValue("CODEX_TASK_MODEL", "CODEXERRAND_MODEL"),
|
|
49
|
+
directReasoning: envValue("CODEX_TASK_REASONING", "CODEXERRAND_REASONING"),
|
|
50
|
+
directTextTimeoutMs: envNumber("CODEX_TASK_TEXT_TIMEOUT_MS", "CODEXERRAND_TEXT_TIMEOUT_MS"),
|
|
51
|
+
directImageTimeoutMs: envNumber("CODEX_TASK_IMAGE_TIMEOUT_MS", "CODEXERRAND_IMAGE_TIMEOUT_MS"),
|
|
52
|
+
sdkTimeoutMs: envNumber("CODEX_TASK_SDK_TIMEOUT_MS", "CODEXERRAND_SDK_TIMEOUT_MS"),
|
|
53
|
+
retries: envNumber("CODEX_TASK_RETRIES", "CODEXERRAND_RETRIES"),
|
|
54
|
+
proxy: envValue("CODEX_TASK_PROXY", "CODEXERRAND_PROXY"),
|
|
55
|
+
tempTtlMs: envNumber("CODEX_TASK_TEMP_TTL_MS", "CODEXERRAND_TEMP_TTL_MS"),
|
|
56
|
+
pendingTaskTtlMs: envNumber("CODEX_TASK_PENDING_TTL_MS", "CODEXERRAND_PENDING_TTL_MS"),
|
|
57
|
+
tempMaxBytes: envNumber("CODEX_TASK_TEMP_MAX_BYTES", "CODEXERRAND_TEMP_MAX_BYTES"),
|
|
58
|
+
};
|
|
59
|
+
const merged = { ...DEFAULT_CONFIG, ...user, ...stripUndefined(env), ...stripUndefined(overrides) };
|
|
60
|
+
return {
|
|
61
|
+
codexHome: merged.codexHome ?? DEFAULT_CONFIG.codexHome,
|
|
62
|
+
directModel: merged.directModel,
|
|
63
|
+
directReasoning: merged.directReasoning ?? DEFAULT_CONFIG.directReasoning,
|
|
64
|
+
directTextTimeoutMs: merged.directTextTimeoutMs ?? DEFAULT_CONFIG.directTextTimeoutMs,
|
|
65
|
+
directImageTimeoutMs: merged.directImageTimeoutMs ?? DEFAULT_CONFIG.directImageTimeoutMs,
|
|
66
|
+
sdkTimeoutMs: merged.sdkTimeoutMs ?? DEFAULT_CONFIG.sdkTimeoutMs,
|
|
67
|
+
retries: merged.retries ?? DEFAULT_CONFIG.retries,
|
|
68
|
+
proxy: merged.proxy,
|
|
69
|
+
tempTtlMs: merged.tempTtlMs ?? DEFAULT_CONFIG.tempTtlMs,
|
|
70
|
+
pendingTaskTtlMs: merged.pendingTaskTtlMs ?? DEFAULT_CONFIG.pendingTaskTtlMs,
|
|
71
|
+
tempMaxBytes: merged.tempMaxBytes ?? DEFAULT_CONFIG.tempMaxBytes,
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
function stripUndefined(value) {
|
|
75
|
+
return Object.fromEntries(Object.entries(value).filter(([, item]) => item !== undefined));
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/doctor.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAe,YAAY,EAAE,MAAM,YAAY,CAAC;AAsB5D,wBAAgB,SAAS,CAAC,SAAS,SAAqB,GAAG,YAAY,CAqEtE"}
|
package/dist/doctor.js
ADDED
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { execFileSync } from "node:child_process";
|
|
2
|
+
import { readFileSync } from "node:fs";
|
|
3
|
+
import { dirname, join } from "node:path";
|
|
4
|
+
import { fileURLToPath } from "node:url";
|
|
5
|
+
import { appPaths, defaultCodexHome } from "./paths.js";
|
|
6
|
+
import { directTransportAvailable } from "./backends/direct/http.js";
|
|
7
|
+
import { inspectDirectAuth } from "./backends/direct/auth.js";
|
|
8
|
+
import { resolveDirectImageModel, resolveDirectModel } from "./backends/direct/models.js";
|
|
9
|
+
function codexVersion() {
|
|
10
|
+
try {
|
|
11
|
+
return execFileSync("codex", ["--version"], { timeout: 3000, encoding: "utf8" }).trim();
|
|
12
|
+
}
|
|
13
|
+
catch {
|
|
14
|
+
return undefined;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
function sdkVersion() {
|
|
18
|
+
try {
|
|
19
|
+
const entry = fileURLToPath(import.meta.resolve("@openai/codex-sdk"));
|
|
20
|
+
const packageJson = JSON.parse(readFileSync(join(dirname(dirname(entry)), "package.json"), "utf8"));
|
|
21
|
+
return packageJson.version;
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
return undefined;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
export function runDoctor(codexHome = defaultCodexHome()) {
|
|
28
|
+
const paths = appPaths();
|
|
29
|
+
const checks = [];
|
|
30
|
+
const transport = directTransportAvailable();
|
|
31
|
+
checks.push({
|
|
32
|
+
name: "direct-transport",
|
|
33
|
+
status: transport ? "ok" : "warning",
|
|
34
|
+
message: transport
|
|
35
|
+
? "Native Direct transport is available"
|
|
36
|
+
: "Native Direct transport is unavailable; SDK backend can still be used",
|
|
37
|
+
});
|
|
38
|
+
const auth = inspectDirectAuth(codexHome);
|
|
39
|
+
checks.push({
|
|
40
|
+
name: "codex-oauth",
|
|
41
|
+
status: auth.found && auth.valid ? "ok" : auth.found ? "warning" : "error",
|
|
42
|
+
message: auth.message,
|
|
43
|
+
details: auth.expiresAt ? { expiresAt: new Date(auth.expiresAt).toISOString() } : undefined,
|
|
44
|
+
});
|
|
45
|
+
try {
|
|
46
|
+
const model = resolveDirectModel(codexHome, undefined, "medium");
|
|
47
|
+
const imageModel = resolveDirectImageModel(codexHome, undefined, "medium");
|
|
48
|
+
checks.push({
|
|
49
|
+
name: "direct-model",
|
|
50
|
+
status: "ok",
|
|
51
|
+
message: `${model.model} via ${model.useResponsesLite ? "Responses Lite" : "classic Responses"}`,
|
|
52
|
+
details: {
|
|
53
|
+
source: model.source,
|
|
54
|
+
reasoning: model.reasoning,
|
|
55
|
+
imageModel: imageModel.model.model,
|
|
56
|
+
imageFallbackFrom: imageModel.replacedLiteModel,
|
|
57
|
+
},
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
catch (error) {
|
|
61
|
+
checks.push({
|
|
62
|
+
name: "direct-model",
|
|
63
|
+
status: "error",
|
|
64
|
+
message: error instanceof Error ? error.message : String(error),
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
const cliVersion = codexVersion();
|
|
68
|
+
checks.push({
|
|
69
|
+
name: "codex-cli",
|
|
70
|
+
status: cliVersion ? "ok" : "warning",
|
|
71
|
+
message: cliVersion ?? "codex executable is not on PATH; the bundled SDK binary may still work",
|
|
72
|
+
});
|
|
73
|
+
const version = sdkVersion();
|
|
74
|
+
checks.push({
|
|
75
|
+
name: "codex-sdk",
|
|
76
|
+
status: version ? "ok" : "error",
|
|
77
|
+
message: version ? `@openai/codex-sdk ${version}` : "@openai/codex-sdk is unavailable",
|
|
78
|
+
});
|
|
79
|
+
return {
|
|
80
|
+
ok: checks.every((check) => check.status !== "error"),
|
|
81
|
+
platform: `${process.platform}/${process.arch}`,
|
|
82
|
+
nodeVersion: process.version,
|
|
83
|
+
checks,
|
|
84
|
+
paths: {
|
|
85
|
+
codexHome,
|
|
86
|
+
config: paths.configPath,
|
|
87
|
+
state: paths.stateDir,
|
|
88
|
+
cache: paths.cacheDir,
|
|
89
|
+
temp: paths.tempDir,
|
|
90
|
+
tasks: paths.tasksDir,
|
|
91
|
+
},
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=doctor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"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"}
|
package/dist/errors.d.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export declare class CodexTaskError extends Error {
|
|
2
|
+
readonly code: string;
|
|
3
|
+
readonly retryable: boolean;
|
|
4
|
+
readonly exitCode: number;
|
|
5
|
+
readonly details?: unknown;
|
|
6
|
+
constructor(code: string, message: string, options?: {
|
|
7
|
+
retryable?: boolean;
|
|
8
|
+
exitCode?: number;
|
|
9
|
+
details?: unknown;
|
|
10
|
+
cause?: unknown;
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
export declare function usageError(message: string, details?: unknown): CodexTaskError;
|
|
14
|
+
export declare function asCodexTaskError(error: unknown): CodexTaskError;
|
|
15
|
+
export declare function isAbortError(error: unknown): boolean;
|
|
16
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,cAAe,SAAQ,KAAK;IACvC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;gBAGzB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,OAAO,GAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAO;CAS/F;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,cAAc,CAE7E;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,cAAc,CAM/D;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAKpD"}
|
package/dist/errors.js
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export class CodexTaskError extends Error {
|
|
2
|
+
code;
|
|
3
|
+
retryable;
|
|
4
|
+
exitCode;
|
|
5
|
+
details;
|
|
6
|
+
constructor(code, message, options = {}) {
|
|
7
|
+
super(message, { cause: options.cause });
|
|
8
|
+
this.name = "CodexTaskError";
|
|
9
|
+
this.code = code;
|
|
10
|
+
this.retryable = options.retryable ?? false;
|
|
11
|
+
this.exitCode = options.exitCode ?? 1;
|
|
12
|
+
this.details = options.details;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
export function usageError(message, details) {
|
|
16
|
+
return new CodexTaskError("USAGE_ERROR", message, { exitCode: 2, details });
|
|
17
|
+
}
|
|
18
|
+
export function asCodexTaskError(error) {
|
|
19
|
+
if (error instanceof CodexTaskError)
|
|
20
|
+
return error;
|
|
21
|
+
if (error instanceof Error) {
|
|
22
|
+
return new CodexTaskError("UNEXPECTED_ERROR", error.message, { cause: error });
|
|
23
|
+
}
|
|
24
|
+
return new CodexTaskError("UNEXPECTED_ERROR", String(error));
|
|
25
|
+
}
|
|
26
|
+
export function isAbortError(error) {
|
|
27
|
+
return ((error instanceof Error && error.name === "AbortError") ||
|
|
28
|
+
(error instanceof CodexTaskError && (error.code === "CANCELLED" || error.code === "TIMEOUT")));
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,cAAe,SAAQ,KAAK;IAC9B,IAAI,CAAS;IACb,SAAS,CAAU;IACnB,QAAQ,CAAS;IACjB,OAAO,CAAW;IAE3B,YACE,IAAY,EACZ,OAAe,EACf,UAA0F,EAAE;QAE5F,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,KAAK,CAAC;QAC5C,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IACjC,CAAC;CACF;AAED,MAAM,UAAU,UAAU,CAAC,OAAe,EAAE,OAAiB;IAC3D,OAAO,IAAI,cAAc,CAAC,aAAa,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;AAC9E,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,IAAI,KAAK,YAAY,cAAc;QAAE,OAAO,KAAK,CAAC;IAClD,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,OAAO,IAAI,cAAc,CAAC,kBAAkB,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IACjF,CAAC;IACD,OAAO,IAAI,cAAc,CAAC,kBAAkB,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAc;IACzC,OAAO,CACL,CAAC,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,CAAC;QACvD,CAAC,KAAK,YAAY,cAAc,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,WAAW,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAC9F,CAAC;AACJ,CAAC"}
|
package/dist/events.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { TaskEvent } from "./types.js";
|
|
2
|
+
export declare class EventQueue implements AsyncIterable<TaskEvent> {
|
|
3
|
+
private readonly values;
|
|
4
|
+
private readonly waiters;
|
|
5
|
+
private done;
|
|
6
|
+
push(event: TaskEvent): void;
|
|
7
|
+
close(): void;
|
|
8
|
+
[Symbol.asyncIterator](): AsyncIterator<TaskEvent>;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=events.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,qBAAa,UAAW,YAAW,aAAa,CAAC,SAAS,CAAC;IACzD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmB;IAC1C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA0D;IAClF,OAAO,CAAC,IAAI,CAAS;IAErB,IAAI,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAM5B,KAAK,IAAI,IAAI;IAKb,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,SAAS,CAAC;CAUnD"}
|
package/dist/events.js
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export class EventQueue {
|
|
2
|
+
values = [];
|
|
3
|
+
waiters = [];
|
|
4
|
+
done = false;
|
|
5
|
+
push(event) {
|
|
6
|
+
const waiter = this.waiters.shift();
|
|
7
|
+
if (waiter)
|
|
8
|
+
waiter({ value: event, done: false });
|
|
9
|
+
else
|
|
10
|
+
this.values.push(event);
|
|
11
|
+
}
|
|
12
|
+
close() {
|
|
13
|
+
this.done = true;
|
|
14
|
+
for (const waiter of this.waiters.splice(0))
|
|
15
|
+
waiter({ value: undefined, done: true });
|
|
16
|
+
}
|
|
17
|
+
[Symbol.asyncIterator]() {
|
|
18
|
+
return {
|
|
19
|
+
next: async () => {
|
|
20
|
+
const value = this.values.shift();
|
|
21
|
+
if (value)
|
|
22
|
+
return { value, done: false };
|
|
23
|
+
if (this.done)
|
|
24
|
+
return { value: undefined, done: true };
|
|
25
|
+
return new Promise((resolve) => this.waiters.push(resolve));
|
|
26
|
+
},
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=events.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,UAAU;IACJ,MAAM,GAAgB,EAAE,CAAC;IACzB,OAAO,GAAuD,EAAE,CAAC;IAC1E,IAAI,GAAG,KAAK,CAAC;IAErB,IAAI,CAAC,KAAgB;QACnB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACpC,IAAI,MAAM;YAAE,MAAM,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;;YAC7C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IAED,KAAK;QACH,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;YAAE,MAAM,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IACxF,CAAC;IAED,CAAC,MAAM,CAAC,aAAa,CAAC;QACpB,OAAO;YACL,IAAI,EAAE,KAAK,IAAI,EAAE;gBACf,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;gBAClC,IAAI,KAAK;oBAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;gBACzC,IAAI,IAAI,CAAC,IAAI;oBAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;gBACvD,OAAO,IAAI,OAAO,CAA4B,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;YACzF,CAAC;SACF,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare function ensureDir(path: string): void;
|
|
2
|
+
export declare function atomicWrite(path: string, data: string | Buffer, mode?: number): void;
|
|
3
|
+
export declare function withFileLock<T>(lockPath: string, action: () => Promise<T>, options?: {
|
|
4
|
+
timeoutMs?: number;
|
|
5
|
+
staleMs?: number;
|
|
6
|
+
}): Promise<T>;
|
|
7
|
+
//# sourceMappingURL=fs-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fs-utils.d.ts","sourceRoot":"","sources":["../src/fs-utils.ts"],"names":[],"mappings":"AAKA,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAE5C;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,IAAI,SAAQ,GAAG,IAAI,CAKnF;AAED,wBAAsB,YAAY,CAAC,CAAC,EAClC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACxB,OAAO,GAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAO,GACrD,OAAO,CAAC,CAAC,CAAC,CAqCZ"}
|
package/dist/fs-utils.js
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { mkdirSync, openSync, closeSync, unlinkSync, writeFileSync, renameSync, statSync } from "node:fs";
|
|
2
|
+
import { dirname } from "node:path";
|
|
3
|
+
import { randomUUID } from "node:crypto";
|
|
4
|
+
import { CodexTaskError } from "./errors.js";
|
|
5
|
+
export function ensureDir(path) {
|
|
6
|
+
mkdirSync(path, { recursive: true, mode: 0o700 });
|
|
7
|
+
}
|
|
8
|
+
export function atomicWrite(path, data, mode = 0o600) {
|
|
9
|
+
ensureDir(dirname(path));
|
|
10
|
+
const tempPath = `${path}.${process.pid}.${randomUUID()}.tmp`;
|
|
11
|
+
writeFileSync(tempPath, data, { mode });
|
|
12
|
+
renameSync(tempPath, path);
|
|
13
|
+
}
|
|
14
|
+
export async function withFileLock(lockPath, action, options = {}) {
|
|
15
|
+
ensureDir(dirname(lockPath));
|
|
16
|
+
const timeoutMs = options.timeoutMs ?? 10_000;
|
|
17
|
+
const staleMs = options.staleMs ?? 30_000;
|
|
18
|
+
const startedAt = Date.now();
|
|
19
|
+
let descriptor;
|
|
20
|
+
while (descriptor === undefined) {
|
|
21
|
+
try {
|
|
22
|
+
descriptor = openSync(lockPath, "wx", 0o600);
|
|
23
|
+
}
|
|
24
|
+
catch (error) {
|
|
25
|
+
const code = error.code;
|
|
26
|
+
if (code !== "EEXIST")
|
|
27
|
+
throw error;
|
|
28
|
+
try {
|
|
29
|
+
if (Date.now() - statSync(lockPath).mtimeMs > staleMs)
|
|
30
|
+
unlinkSync(lockPath);
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
// Another process may have released it.
|
|
34
|
+
}
|
|
35
|
+
if (Date.now() - startedAt > timeoutMs) {
|
|
36
|
+
throw new CodexTaskError("LOCK_TIMEOUT", `Timed out waiting for ${lockPath}`, {
|
|
37
|
+
retryable: true,
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
await new Promise((resolve) => setTimeout(resolve, 75));
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
try {
|
|
44
|
+
return await action();
|
|
45
|
+
}
|
|
46
|
+
finally {
|
|
47
|
+
closeSync(descriptor);
|
|
48
|
+
try {
|
|
49
|
+
unlinkSync(lockPath);
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
52
|
+
// Best effort.
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=fs-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fs-utils.js","sourceRoot":"","sources":["../src/fs-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC1G,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,UAAU,SAAS,CAAC,IAAY;IACpC,SAAS,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAY,EAAE,IAAqB,EAAE,IAAI,GAAG,KAAK;IAC3E,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACzB,MAAM,QAAQ,GAAG,GAAG,IAAI,IAAI,OAAO,CAAC,GAAG,IAAI,UAAU,EAAE,MAAM,CAAC;IAC9D,aAAa,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IACxC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AAC7B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,QAAgB,EAChB,MAAwB,EACxB,UAAoD,EAAE;IAEtD,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC7B,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,MAAM,CAAC;IAC9C,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,MAAM,CAAC;IAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,IAAI,UAA8B,CAAC;IAEnC,OAAO,UAAU,KAAK,SAAS,EAAE,CAAC;QAChC,IAAI,CAAC;YACH,UAAU,GAAG,QAAQ,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QAC/C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,GAAI,KAA+B,CAAC,IAAI,CAAC;YACnD,IAAI,IAAI,KAAK,QAAQ;gBAAE,MAAM,KAAK,CAAC;YACnC,IAAI,CAAC;gBACH,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,OAAO,GAAG,OAAO;oBAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;YAC9E,CAAC;YAAC,MAAM,CAAC;gBACP,wCAAwC;YAC1C,CAAC;YACD,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,GAAG,SAAS,EAAE,CAAC;gBACvC,MAAM,IAAI,cAAc,CAAC,cAAc,EAAE,yBAAyB,QAAQ,EAAE,EAAE;oBAC5E,SAAS,EAAE,IAAI;iBAChB,CAAC,CAAC;YACL,CAAC;YACD,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;IAED,IAAI,CAAC;QACH,OAAO,MAAM,MAAM,EAAE,CAAC;IACxB,CAAC;YAAS,CAAC;QACT,SAAS,CAAC,UAAU,CAAC,CAAC;QACtB,IAAI,CAAC;YACH,UAAU,CAAC,QAAQ,CAAC,CAAC;QACvB,CAAC;QAAC,MAAM,CAAC;YACP,eAAe;QACjB,CAAC;IACH,CAAC;AACH,CAAC"}
|
package/dist/images.d.ts
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { Artifact, ImageOptions } from "./types.js";
|
|
2
|
+
export interface ValidatedImageOptions {
|
|
3
|
+
count: number;
|
|
4
|
+
concurrency: number;
|
|
5
|
+
size: string;
|
|
6
|
+
quality: "auto" | "low" | "medium" | "high";
|
|
7
|
+
background: "auto" | "opaque" | "transparent";
|
|
8
|
+
imagePaths: string[];
|
|
9
|
+
overwrite: boolean;
|
|
10
|
+
}
|
|
11
|
+
export declare function validateImageOptions(options: ImageOptions): ValidatedImageOptions;
|
|
12
|
+
export declare function imageMimeType(path: string): string;
|
|
13
|
+
export declare function outputPathForImage(taskId: string, output: string | undefined, index: number, count: number): {
|
|
14
|
+
path: string;
|
|
15
|
+
temporary: boolean;
|
|
16
|
+
};
|
|
17
|
+
export declare function writePngArtifact(taskId: string, buffer: Buffer, output: string | undefined, index: number, count: number, overwrite: boolean): Artifact;
|
|
18
|
+
//# sourceMappingURL=images.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"images.d.ts","sourceRoot":"","sources":["../src/images.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAazD,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC5C,UAAU,EAAE,MAAM,GAAG,QAAQ,GAAG,aAAa,CAAC;IAC9C,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,YAAY,GAAG,qBAAqB,CAiDjF;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAIlD;AAED,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,GACZ;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,CActC;AAED,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,OAAO,GACjB,QAAQ,CAcV"}
|
package/dist/images.js
ADDED
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { existsSync, statSync } from "node:fs";
|
|
2
|
+
import { basename, dirname, extname, join, resolve } from "node:path";
|
|
3
|
+
import { appPaths } from "./paths.js";
|
|
4
|
+
import { atomicWrite, ensureDir } from "./fs-utils.js";
|
|
5
|
+
import { usageError } from "./errors.js";
|
|
6
|
+
const MIME_BY_EXTENSION = {
|
|
7
|
+
".png": "image/png",
|
|
8
|
+
".jpg": "image/jpeg",
|
|
9
|
+
".jpeg": "image/jpeg",
|
|
10
|
+
".webp": "image/webp",
|
|
11
|
+
".gif": "image/gif",
|
|
12
|
+
};
|
|
13
|
+
const MAX_IMAGE_BYTES = 20 * 1024 * 1024;
|
|
14
|
+
const MAX_TOTAL_IMAGE_BYTES = 50 * 1024 * 1024;
|
|
15
|
+
export function validateImageOptions(options) {
|
|
16
|
+
const count = options.count ?? 1;
|
|
17
|
+
const concurrency = options.concurrency ?? 1;
|
|
18
|
+
const size = options.size ?? "auto";
|
|
19
|
+
const quality = options.quality ?? "auto";
|
|
20
|
+
const background = options.background ?? "auto";
|
|
21
|
+
const imagePaths = options.imagePaths ?? [];
|
|
22
|
+
if (!Number.isInteger(count) || count < 1 || count > 10) {
|
|
23
|
+
throw usageError("count must be an integer from 1 to 10");
|
|
24
|
+
}
|
|
25
|
+
if (!Number.isInteger(concurrency) || concurrency < 1 || concurrency > 3) {
|
|
26
|
+
throw usageError("concurrency must be an integer from 1 to 3");
|
|
27
|
+
}
|
|
28
|
+
if (imagePaths.length > 5)
|
|
29
|
+
throw usageError("at most 5 reference images are supported");
|
|
30
|
+
if (!/^(auto|[1-9]\d{0,3}x[1-9]\d{0,3})$/.test(size)) {
|
|
31
|
+
throw usageError("size must be auto or WIDTHxHEIGHT");
|
|
32
|
+
}
|
|
33
|
+
if (size !== "auto") {
|
|
34
|
+
const [width, height] = size.split("x").map(Number);
|
|
35
|
+
if (!width || !height || Math.max(width, height) > 3840) {
|
|
36
|
+
throw usageError("image width and height must be at most 3840");
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
let totalBytes = 0;
|
|
40
|
+
for (const path of imagePaths) {
|
|
41
|
+
if (!existsSync(path))
|
|
42
|
+
throw usageError(`reference image does not exist: ${path}`);
|
|
43
|
+
const extension = extname(path).toLowerCase();
|
|
44
|
+
if (!MIME_BY_EXTENSION[extension]) {
|
|
45
|
+
throw usageError(`unsupported image type for ${path}; use png, jpg, jpeg, webp, or gif`);
|
|
46
|
+
}
|
|
47
|
+
const bytes = statSync(path).size;
|
|
48
|
+
if (bytes > MAX_IMAGE_BYTES)
|
|
49
|
+
throw usageError(`reference image exceeds 20 MiB: ${path}`);
|
|
50
|
+
totalBytes += bytes;
|
|
51
|
+
}
|
|
52
|
+
if (totalBytes > MAX_TOTAL_IMAGE_BYTES) {
|
|
53
|
+
throw usageError("reference images exceed the 50 MiB total limit");
|
|
54
|
+
}
|
|
55
|
+
return {
|
|
56
|
+
count,
|
|
57
|
+
concurrency,
|
|
58
|
+
size,
|
|
59
|
+
quality,
|
|
60
|
+
background,
|
|
61
|
+
imagePaths: imagePaths.map((path) => resolve(path)),
|
|
62
|
+
overwrite: options.overwrite ?? false,
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
export function imageMimeType(path) {
|
|
66
|
+
const mime = MIME_BY_EXTENSION[extname(path).toLowerCase()];
|
|
67
|
+
if (!mime)
|
|
68
|
+
throw usageError(`unsupported image type: ${path}`);
|
|
69
|
+
return mime;
|
|
70
|
+
}
|
|
71
|
+
export function outputPathForImage(taskId, output, index, count) {
|
|
72
|
+
if (!output) {
|
|
73
|
+
return { path: join(appPaths().tempDir, taskId, `image-${index + 1}.png`), temporary: true };
|
|
74
|
+
}
|
|
75
|
+
const absolute = resolve(output);
|
|
76
|
+
const extension = extname(absolute).toLowerCase();
|
|
77
|
+
if (extension === ".png") {
|
|
78
|
+
if (count === 1)
|
|
79
|
+
return { path: absolute, temporary: false };
|
|
80
|
+
return {
|
|
81
|
+
path: join(dirname(absolute), `${basename(absolute, extension)}-${index + 1}.png`),
|
|
82
|
+
temporary: false,
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
return { path: join(absolute, `image-${index + 1}.png`), temporary: false };
|
|
86
|
+
}
|
|
87
|
+
export function writePngArtifact(taskId, buffer, output, index, count, overwrite) {
|
|
88
|
+
const target = outputPathForImage(taskId, output, index, count);
|
|
89
|
+
if (existsSync(target.path) && !overwrite) {
|
|
90
|
+
throw usageError(`output already exists: ${target.path}; pass --overwrite to replace it`);
|
|
91
|
+
}
|
|
92
|
+
ensureDir(dirname(target.path));
|
|
93
|
+
atomicWrite(target.path, buffer, 0o600);
|
|
94
|
+
return {
|
|
95
|
+
path: target.path,
|
|
96
|
+
kind: "image",
|
|
97
|
+
mimeType: "image/png",
|
|
98
|
+
sizeBytes: buffer.byteLength,
|
|
99
|
+
expiresAt: target.temporary ? new Date(Date.now() + 24 * 60 * 60 * 1000).toISOString() : undefined,
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=images.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"images.js","sourceRoot":"","sources":["../src/images.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { dispatch, generateImage, generateText, resumeTask, runTask, streamTaskEvents, } from "./api.js";
|
|
2
|
+
export { loadConfig, type ResolvedConfig, type UserConfig } from "./config.js";
|
|
3
|
+
export { runDoctor } from "./doctor.js";
|
|
4
|
+
export { runGarbageCollection } from "./state.js";
|
|
5
|
+
export { CodexTaskError } from "./errors.js";
|
|
6
|
+
export type * from "./types.js";
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,aAAa,EACb,YAAY,EACZ,UAAU,EACV,OAAO,EACP,gBAAgB,GACjB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,UAAU,EAAE,KAAK,cAAc,EAAE,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AAC/E,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,mBAAmB,YAAY,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { dispatch, generateImage, generateText, resumeTask, runTask, streamTaskEvents, } from "./api.js";
|
|
2
|
+
export { loadConfig } from "./config.js";
|
|
3
|
+
export { runDoctor } from "./doctor.js";
|
|
4
|
+
export { runGarbageCollection } from "./state.js";
|
|
5
|
+
export { CodexTaskError } from "./errors.js";
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,aAAa,EACb,YAAY,EACZ,UAAU,EACV,OAAO,EACP,gBAAgB,GACjB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,UAAU,EAAwC,MAAM,aAAa,CAAC;AAC/E,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC"}
|
package/dist/paths.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export interface AppPaths {
|
|
2
|
+
configDir: string;
|
|
3
|
+
stateDir: string;
|
|
4
|
+
cacheDir: string;
|
|
5
|
+
tempDir: string;
|
|
6
|
+
tasksDir: string;
|
|
7
|
+
identityPath: string;
|
|
8
|
+
configPath: string;
|
|
9
|
+
}
|
|
10
|
+
export declare function defaultCodexHome(): string;
|
|
11
|
+
export declare function appPaths(env?: NodeJS.ProcessEnv): AppPaths;
|
|
12
|
+
/** Read-only compatibility paths for users migrating from CodexErrand. */
|
|
13
|
+
export declare function legacyAppPaths(env?: NodeJS.ProcessEnv): AppPaths;
|
|
14
|
+
//# sourceMappingURL=paths.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,QAAQ;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAmDD,wBAAgB,QAAQ,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,QAAQ,CAEvE;AAED,0EAA0E;AAC1E,wBAAgB,cAAc,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,QAAQ,CAE7E"}
|
package/dist/paths.js
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { homedir, platform, tmpdir } from "node:os";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
export function defaultCodexHome() {
|
|
4
|
+
return process.env["CODEX_HOME"] ?? join(homedir(), ".codex");
|
|
5
|
+
}
|
|
6
|
+
function namedAppPaths(name, override, env) {
|
|
7
|
+
if (override) {
|
|
8
|
+
const configDir = join(override, "config");
|
|
9
|
+
const stateDir = join(override, "state");
|
|
10
|
+
const cacheDir = join(override, "cache");
|
|
11
|
+
const tempDir = join(override, "temp");
|
|
12
|
+
return {
|
|
13
|
+
configDir,
|
|
14
|
+
stateDir,
|
|
15
|
+
cacheDir,
|
|
16
|
+
tempDir,
|
|
17
|
+
tasksDir: join(stateDir, "tasks"),
|
|
18
|
+
identityPath: join(stateDir, "identity.json"),
|
|
19
|
+
configPath: join(configDir, "config.json"),
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
const home = homedir();
|
|
23
|
+
let configDir;
|
|
24
|
+
let stateDir;
|
|
25
|
+
let cacheDir;
|
|
26
|
+
if (platform() === "darwin") {
|
|
27
|
+
configDir = join(home, "Library", "Application Support", name);
|
|
28
|
+
stateDir = configDir;
|
|
29
|
+
cacheDir = join(home, "Library", "Caches", name);
|
|
30
|
+
}
|
|
31
|
+
else if (platform() === "win32") {
|
|
32
|
+
const appData = env["APPDATA"] ?? join(home, "AppData", "Roaming");
|
|
33
|
+
const localAppData = env["LOCALAPPDATA"] ?? join(home, "AppData", "Local");
|
|
34
|
+
configDir = join(appData, name);
|
|
35
|
+
stateDir = join(localAppData, name, "state");
|
|
36
|
+
cacheDir = join(localAppData, name, "cache");
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
configDir = join(env["XDG_CONFIG_HOME"] ?? join(home, ".config"), name);
|
|
40
|
+
stateDir = join(env["XDG_STATE_HOME"] ?? join(home, ".local", "state"), name);
|
|
41
|
+
cacheDir = join(env["XDG_CACHE_HOME"] ?? join(home, ".cache"), name);
|
|
42
|
+
}
|
|
43
|
+
const tempDir = join(tmpdir(), name);
|
|
44
|
+
return {
|
|
45
|
+
configDir,
|
|
46
|
+
stateDir,
|
|
47
|
+
cacheDir,
|
|
48
|
+
tempDir,
|
|
49
|
+
tasksDir: join(stateDir, "tasks"),
|
|
50
|
+
identityPath: join(stateDir, "identity.json"),
|
|
51
|
+
configPath: join(configDir, "config.json"),
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
export function appPaths(env = process.env) {
|
|
55
|
+
return namedAppPaths("codex-task", env["CODEX_TASK_HOME"], env);
|
|
56
|
+
}
|
|
57
|
+
/** Read-only compatibility paths for users migrating from CodexErrand. */
|
|
58
|
+
export function legacyAppPaths(env = process.env) {
|
|
59
|
+
return namedAppPaths("codexerrand", env["CODEXERRAND_HOME"], env);
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=paths.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"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"}
|
package/dist/skill.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill.d.ts","sourceRoot":"","sources":["../src/skill.ts"],"names":[],"mappings":"AAGA,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C"}
|